信息系統(tǒng)的程序編碼_第1頁
信息系統(tǒng)的程序編碼_第2頁
信息系統(tǒng)的程序編碼_第3頁
信息系統(tǒng)的程序編碼_第4頁
信息系統(tǒng)的程序編碼_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

信息系統(tǒng)的程序編碼第1頁,課件共24頁,創(chuàng)作于2023年2月教學(xué)內(nèi)容編碼的目的;程序設(shè)計語言成分、層次、特性和分類及對程序設(shè)計語言的選擇;程序的編碼風(fēng)格問題;程序的效率問題;程序設(shè)計的途徑以及程序設(shè)計工具。教學(xué)要求

1.熟練掌握:程序設(shè)計語言的選擇;程序的編碼風(fēng)格。

2.一般掌握:程序設(shè)計語言成分、層次、特性和分類;程序的效率問題。

3.了解:程序設(shè)計的途徑以及程序設(shè)計工具。2第2頁,課件共24頁,創(chuàng)作于2023年2月

8.1編碼的目的編碼的目的是使用選定的程序設(shè)計語言,把模塊的過程描述翻譯為用該語言書寫的源程序。

8.2程序設(shè)計語言

1.程序設(shè)計語言的基本成分要了解一種程序設(shè)計語言,首先必須了解它的基本成分,程序設(shè)計語言的基本成分包括下面四部分:(1)數(shù)據(jù)部分:程序中能構(gòu)造的數(shù)據(jù)類型,用以描述程序中使用的各種類型的數(shù)據(jù),如變量、數(shù)組、指針、文件等。(2)運算部分:程序中允許執(zhí)行的運算,用以描述程序中所需執(zhí)行的運算。(3)控制部分:程序中允許使用的控制結(jié)構(gòu),用它們構(gòu)造程序的控制邏輯。(4)傳輸部分:程序中用以傳輸數(shù)據(jù)的方式,如輸入/輸出語句。

3第3頁,課件共24頁,創(chuàng)作于2023年2月

2.程序設(shè)計語言的三個層次(1)語法語法是指用來表示構(gòu)成語言的各個記號間的組合規(guī)則。語法不涉及這些記號的含義,也不涉及使用者。(2)語義語義是指用來表示按照各種表示方法所表示的各個記號的特定含義,但它不涉及使用者。(3)語用語用是指表示構(gòu)成語言的各個記號和使用者之間的關(guān)系。4第4頁,課件共24頁,創(chuàng)作于2023年2月

3.程序設(shè)計語言的特性

1)心理特性所謂程序設(shè)計語言的心理特性,就是指能夠影響編程者心理的語言性能。這種影響主要表現(xiàn)在以下幾個方面:(1)

歧義性

(2)簡潔性

(3)局部性和順序性

2)工程特性語言的工程特性主要體現(xiàn)在以下幾個方面。

(1)可移植性

(2)語言編譯器的實現(xiàn)效率

(3)開發(fā)工具的支持

(4)可維護性

3)技術(shù)特性在確定了系統(tǒng)開發(fā)項目的需求后,根據(jù)項目的特性選擇具有相應(yīng)技術(shù)特性的程序設(shè)計語言對保證系統(tǒng)的質(zhì)量具有非常重要的作用。5第5頁,課件共24頁,創(chuàng)作于2023年2月

4.程序設(shè)計語言的分類通??蓪⒊绦蛟O(shè)計語言分為面向機器語言和高級語言兩大類。

1)面向機器語言面向機器語言包括機器語言和匯編語言兩種。

2)高級語言高級語言按其應(yīng)用特點的不同,可分為通用語言和專用語言兩大類。

(1)通用語言通用語言是指可用于解決各類問題、可廣泛應(yīng)用于各個領(lǐng)域的程序設(shè)計語言。

(2)專用語言專用語言是為了解決某類特殊領(lǐng)域的問題而專門設(shè)計的具有獨特語法形式的程序設(shè)計語言。目前還有一種按代(Generation)劃分程序設(shè)計語言的方法:第一代語言(如機器語言、匯編語言)、第二代語言(如FORTRAN、COBOL)、第三代語言(如Pascal、C、C++)和第四代語言(如SQL)。6第6頁,課件共24頁,創(chuàng)作于2023年2月

5.程序設(shè)計語言的選擇在選擇程序設(shè)計語言時通常要考慮以下一些因素。

1)項目的應(yīng)用領(lǐng)域

2)系統(tǒng)開發(fā)的方法

3)系統(tǒng)的運行環(huán)境

4)算法和數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性

5)系統(tǒng)開發(fā)人員的知識

6)系統(tǒng)用戶的要求

7)工程的規(guī)模

8)可以得到的軟件開發(fā)工具

9)系統(tǒng)的可移植性要求

7第7頁,課件共24頁,創(chuàng)作于2023年2月

8.3程序的編程風(fēng)格所謂編碼風(fēng)格就是程序員在編寫程序時遵循的具體準(zhǔn)則和習(xí)慣做法。為了寫出好程序應(yīng)該遵循在下述四個方面的規(guī)則。

①源程序文檔化

②數(shù)據(jù)說明

③語句結(jié)構(gòu)

④輸入/輸出方法8第8頁,課件共24頁,創(chuàng)作于2023年2月

1.源程序文檔化編寫源程序文檔化的原則為:

1)使用恰當(dāng)?shù)臉?biāo)識符命名標(biāo)識符即符號名,包括模塊名、變量名、常量名、標(biāo)號名、子程序名、數(shù)據(jù)區(qū)名以及緩沖區(qū)名等。為了便于閱讀程序時對標(biāo)識符作用進行正確的理解,標(biāo)識符的命名應(yīng)注意以下幾個問題:

(1)選用具有實際含義的標(biāo)識符,例如,表示次數(shù)的量用Times,表示總量的用Total,表示平均值的用Average,表示和的量用Sum等。

(2)為了便于程序的輸入,標(biāo)識符的名字不宜過長。

(3)為了便于區(qū)分,不同的標(biāo)識符不要取過于相似的名字。9第9頁,課件共24頁,創(chuàng)作于2023年2月

2)程序應(yīng)加注釋注釋分序言性注釋和功能性注釋。(1)序言性注釋一般置于每個模塊的起始部分,主要內(nèi)容有:①說明每個模塊的用途和功能。②說明模塊的接口即調(diào)用形式、參數(shù)描述及從屬模塊的清單。③數(shù)據(jù)描述:指重要數(shù)據(jù)的名稱、用途、限制、約束及其他信息。④開發(fā)歷史:指設(shè)計者、審閱者姓名及日期,修改說明及日期。(2)功能性注釋一般嵌在源程序體中,用以描述其后的語句或程序段是在做什么工作,或是執(zhí)行了下面的語句會怎么樣。另外在書寫功能性注釋,還要注意以下幾點:①

注釋用來說明程序段,而不是每一行程序都要加注釋。②

使用空行或縮進或括號,以便很容易區(qū)分注釋和程序。③

注釋要正確。④

修改了程序也應(yīng)相應(yīng)地去修改注釋。10第10頁,課件共24頁,創(chuàng)作于2023年2月

3)用好空格、空行和移行提高視覺組織恰當(dāng)?shù)乩每崭?,可以突出運算的優(yōu)先性,避免發(fā)生運算的錯誤。自然的程序段之間可用空行隔開;移行也叫做向右縮格,它是指程序中的各行不必都在左端對齊,都從第一格起排列,這樣做使程序完全分不清層次關(guān)系。特別是對于選擇語句和循環(huán)語句,把其中的程序段語句向右做階梯式移行,可以使程序的邏輯結(jié)構(gòu)更加清晰。11第11頁,課件共24頁,創(chuàng)作于2023年2月

2.數(shù)據(jù)說明在設(shè)計階段已經(jīng)確定了數(shù)據(jù)結(jié)構(gòu)的組織及其復(fù)雜性。在編寫程序時,則需要注意數(shù)據(jù)說明的風(fēng)格。為了使數(shù)據(jù)定義更易于理解和維護,可以參考下述的一些指導(dǎo)原則:(1)數(shù)據(jù)說明的次序應(yīng)當(dāng)規(guī)范化如在FORTRAN程序中數(shù)據(jù)說明次序為:①常量說明②簡單變量類型說明③數(shù)組說明④公用數(shù)據(jù)塊說明⑤所有的文件說明在簡單變量類型說明中還可進一步要求,如可按下面順序排列:①整型量說明②實型量說明③字符量說明④邏輯量說明12第12頁,課件共24頁,創(chuàng)作于2023年2月

(2)說明語句中變量安排要有序化當(dāng)多個變量名在一個說明語句中說明時,應(yīng)當(dāng)對這些變量按字母的順序(a~z)排列。帶標(biāo)號的全程數(shù)據(jù)(如FORTRAN的公用塊)也應(yīng)當(dāng)按字母的順序排列。例如,把

INTEGERsize,length,width,cost,price

寫成

INTEGERcost,length,price,size,width(3)使用注釋說明復(fù)雜數(shù)據(jù)結(jié)構(gòu)如果設(shè)計了一個復(fù)雜的數(shù)據(jù)結(jié)構(gòu),應(yīng)當(dāng)使用注釋來說明在程序?qū)崿F(xiàn)時這個數(shù)據(jù)結(jié)構(gòu)的固有特點。例如,對PL/1的鏈表結(jié)構(gòu)和PASCAL中用戶自定義的數(shù)據(jù)類型,都應(yīng)當(dāng)在注釋中做必要的補充說明。13第13頁,課件共24頁,創(chuàng)作于2023年2月

3.語句構(gòu)造在構(gòu)造語句時需注意以下問題:

1)在一行內(nèi)只寫一條語句,并且采取適當(dāng)?shù)囊菩懈袷?,使程序的邏輯和功能變得更加明確。許多程序設(shè)計語言允許在一行內(nèi)寫多個語句,但這種方式會使程序可讀性變差,因而不可取。

2)程序編寫首先應(yīng)當(dāng)考慮清晰性,不要刻意追求技巧性,使程序顯得過于緊湊。

3)對復(fù)雜的表達式應(yīng)加上必要的括號使表達更加清晰。

4)由于人的一般思維方式對邏輯非運算不太適應(yīng),因此在條件表達式中應(yīng)盡量不要使用否定的邏輯表示。

5)為了不破壞結(jié)構(gòu)化程序設(shè)計中結(jié)構(gòu)的清晰性,盡量只采用三種基本的控制結(jié)構(gòu)來編寫程序,在程序中應(yīng)盡量不使用強制轉(zhuǎn)移語句GOTO。

6)避免使用臨時變量而使可讀性下降。

7)避免使用空的ELSE語句和IF…THENIF…的語句,這種結(jié)構(gòu)容易使讀者產(chǎn)生誤解。14第14頁,課件共24頁,創(chuàng)作于2023年2月

8)為了便于程序的理解,不要書寫太復(fù)雜的條件,嵌套的重數(shù)也不宜過多。

9)為了縮短程序的代碼,在程序中應(yīng)盡可能地使用編譯系統(tǒng)提供的標(biāo)準(zhǔn)函數(shù)。對于程序中需要重復(fù)出現(xiàn)的代碼段,應(yīng)將其用獨立模塊(函數(shù)或過程)實現(xiàn)。

10)除非對效率有特殊要求,程序編寫要做到清晰第一,效率第二。不要為了追求效率而喪失了清晰性。程序效率的提高主要應(yīng)通過選擇高效的算法來實現(xiàn)。

11)首先要保證程序正確,然后才要求提高速度。反過來說,在使程序高速運行時,首先要保證它是正確的。

12)不要修補不好的程序,要重新編寫。也不要一味地追求代碼的復(fù)用,要重新組織。

13)對太大的程序,要分塊編寫、測試,然后再集成。15第15頁,課件共24頁,創(chuàng)作于2023年2月

4.輸入和輸出

1)輸入為了使用戶能方便地進行數(shù)據(jù)的輸入,應(yīng)注意以下幾點:

(1)輸入方式應(yīng)力求簡單,盡量避免給用戶帶來不必要的麻煩。

(2)交互式輸入數(shù)據(jù)時應(yīng)有必要的提示信息,提示信息可包括:輸入請求、數(shù)據(jù)的格式及可選范圍等。

(3)程序應(yīng)對輸入數(shù)據(jù)的合法性進行檢查。

(4)若用戶輸入某些數(shù)據(jù)后可能會產(chǎn)生嚴(yán)重后果,應(yīng)給用戶輸出必要的提示并在必要的時候要求用戶確認(rèn)。

(5)當(dāng)需要輸入一批數(shù)據(jù)時,不要以記數(shù)方式控制數(shù)據(jù)的輸入個數(shù),而應(yīng)以特殊標(biāo)記作為數(shù)據(jù)輸入結(jié)束的標(biāo)志。

(6)應(yīng)根據(jù)系統(tǒng)的特點和用戶的習(xí)慣設(shè)計出令用戶滿意的輸入方式。16第16頁,課件共24頁,創(chuàng)作于2023年2月

2)輸出設(shè)計數(shù)據(jù)輸出方式時應(yīng)注意以下幾點:

(1)輸出數(shù)據(jù)的格式應(yīng)清晰、美觀。如對大量數(shù)據(jù)采用表格的形式輸出,可以使用戶一目了然。

(2)輸出數(shù)據(jù)時要加上必要的提示信息。例如,表格的輸出一定要帶有表頭,用以說明表格中各項數(shù)據(jù)的含義。17第17頁,課件共24頁,創(chuàng)作于2023年2月

8.4程序的效率問題程序效率是指程序的執(zhí)行速度及程序占用的存儲空間。下面給出討論程序效率的幾條準(zhǔn)則:

(1)效率是一個性能要求,目標(biāo)在需求分析給出。(2)追求效率應(yīng)建立在不損害程序可讀性或可靠性基礎(chǔ)之上,要先使程序正確、清晰,再提高程序效率。

(3)提高程序效率的根本途徑在于選擇良好的設(shè)計方法、良好的數(shù)據(jù)結(jié)構(gòu)與算法,而不是靠編程時對程序語句做調(diào)整。在滿足上述準(zhǔn)則的基礎(chǔ)上,依照下述一些方法來提高程序的效率。18第18頁,課件共24頁,創(chuàng)作于2023年2月

1.算法對效率的影響源程序的效率與詳細設(shè)計階段確定的算法的效率直接有關(guān),在將詳細設(shè)計翻譯轉(zhuǎn)換成源程序代碼后,算法效率則反映為對程序的執(zhí)行速度和存儲容量的要求。在設(shè)計向程序轉(zhuǎn)換的過程中,有下面一些指導(dǎo)原則可以幫助提高效率:

(1)在編程序前,盡可能化簡有關(guān)的算術(shù)表達式和邏輯表達式;(2)仔細檢查算法中嵌套的循環(huán),盡可能將某些語句或表達式移到循環(huán)外面;(3)盡量避免使用多維數(shù)組;(4)盡量避免使用指針和復(fù)雜的表;(5)采用“快速”的算術(shù)運算;(6)不要混淆數(shù)據(jù)類型,避免在表達式中出現(xiàn)類型混雜;(7)盡量用整數(shù)算術(shù)表達式和布爾表達式;(8)許多編譯程序具有“優(yōu)化”功能,可以自動生成高效率的目標(biāo)代碼。19第19頁,課件共24頁,創(chuàng)作于2023年2月

2.影響存儲器效率的因素提高存儲器效率的關(guān)鍵是程序的簡單性,用于優(yōu)化存儲空間使用的指導(dǎo)原則有:

(1)對于變動頻繁的數(shù)據(jù)最好采用動態(tài)存儲;

(2)可根據(jù)需要采用存儲單元共享等節(jié)約空間的技術(shù);

(3)選用具有緊縮存儲器特性的編譯程序,在必要時甚至可采用匯編語言;

(4)采用結(jié)構(gòu)化程序設(shè)計,將程序劃分為大小合適的模塊。一個模塊或若干個關(guān)系密切的模塊的大小最好與操作系統(tǒng)頁面的容量相匹配,以減少頁面調(diào)度的次數(shù),提高存儲效率。20第20頁,課件共24頁,創(chuàng)作于2023年2月

3.影響輸入/輸出的因素輸入/輸出可分為兩種類型:

l

面向人(操作員)的輸入/輸出

l

面向設(shè)備的輸入/輸出關(guān)于面向設(shè)備的輸入/輸出,下面提出了一些提高輸入/輸出效率的指導(dǎo)原則:(1)輸入/輸出的請求應(yīng)當(dāng)最小化;(2)對于所有的輸入/輸出操作,安排適當(dāng)?shù)木彌_區(qū),以減少頻繁的信息交換;(3)對輔助存儲(例如磁盤),選擇盡可能簡單的、可接受的存取方法;(4)對輔助存儲的輸入/輸出,應(yīng)當(dāng)成塊傳輸;(5)對終端或打印機的輸入/輸出應(yīng)考慮設(shè)備特性,盡可能改善輸入/輸出的質(zhì)量和速度;(6)任何不易理解的、對改善輸入/輸出效果關(guān)系不大的措施都是不可取的;(7)任何不易理解的所謂“超高效”的輸入/輸出是毫無價值的;(8)好的輸入/輸出程序設(shè)計風(fēng)格對提高輸入/輸出效率會有明顯的效果。21第21頁,課件共24頁,創(chuàng)作于2023年2月

8.5程序設(shè)計途徑

8.5.1程序設(shè)計方法論目前主要有兩種程序設(shè)計方法,分別稱為自頂向下的程序開發(fā)方法和自底向上的程序開發(fā)方法。使用自頂向下的方法開發(fā)程序,程序員首先實現(xiàn)軟件結(jié)構(gòu)的最高層次,用“存根”代表較低層次的模塊,所謂存根就是簡化模擬較低層次模塊功能的虛擬子程序。實現(xiàn)了軟件結(jié)構(gòu)的一個層次之后,再用類似方法實現(xiàn)下一個層次,如此繼續(xù)下去直到最終用程序設(shè)計語言實現(xiàn)了最低層為止。自底向上的方法和上述開發(fā)過程相反,從最底層開始構(gòu)造系統(tǒng),直至最終實現(xiàn)了最高層次的設(shè)計為止。一般說來,用自頂向下的開發(fā)方法得到的程序可讀性較好,可靠性也較高;用自底向上的開發(fā)方法得到的程序往往局部是優(yōu)化的,系統(tǒng)的整體結(jié)構(gòu)性較差。但是,采用自底向上的開發(fā)方法能夠及早發(fā)現(xiàn)關(guān)鍵算法是否可行,發(fā)生較大返工的可能性較小。22第22頁,課件共24頁,創(chuàng)作于2023年2月

8.5.2程序設(shè)計自動化為了高效低成本地生產(chǎn)出高度可靠的程序代碼,人們研究出一類特殊的程序,用它們能生成用戶需要的程序,這也就是程序設(shè)計自動化的概念。目前至少有三種不同途徑可以實現(xiàn)程序設(shè)計自動化。第一種途徑是使用某種方式精確地定義用戶的需求,經(jīng)檢驗后由一個專門的程序把對用戶需求的定義轉(zhuǎn)變成程序代碼。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論