




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1,第8章 信息系統(tǒng)的程序編碼,2,教學內容 編碼的目的;程序設計語言成分、層次、特性和分類及對程序設計語言的選擇;程序的編碼風格問題;程序的效率問題;程序設計的途徑以及程序設計工具。 教學要求 1熟練掌握:程序設計語言的選擇;程序的編碼風格。 2一般掌握:程序設計語言成分、層次、特性和分類;程序的效率問題。 3了解:程序設計的途徑以及程序設計工具。,3,8.1 編碼的目的 編碼的目的是使用選定的程序設計語言,把模塊的過程描述翻譯為用該語言書寫的源程序。 8.2 程序設計語言 1程序設計語言的基本成分 要了解一種程序設計語言,首先必須了解它的基本成分,程序設計語言的基本成分包括下面四部分: (
2、1)數(shù)據(jù)部分:程序中能構造的數(shù)據(jù)類型,用以描述程序中使用的各種類型的數(shù)據(jù),如變量、數(shù)組、指針、文件等。 (2)運算部分:程序中允許執(zhí)行的運算,用以描述程序中所需執(zhí)行的運算。 (3)控制部分:程序中允許使用的控制結構,用它們構造程序的控制邏輯。 (4)傳輸部分:程序中用以傳輸數(shù)據(jù)的方式,如輸入/輸出語句。,4,2程序設計語言的三個層次 (1)語法 語法是指用來表示構成語言的各個記號間的組合規(guī)則。語法不涉及這些記號的含義,也不涉及使用者。 (2)語義 語義是指用來表示按照各種表示方法所表示的各個記號的特定含義,但它不涉及使用者。 (3)語用 語用是指表示構成語言的各個記號和使用者之間的關系。,5,
3、3程序設計語言的特性 1)心理特性 所謂程序設計語言的心理特性,就是指能夠影響編程者心理的語言性能。這種影響主要表現(xiàn)在以下幾個方面: (1) 歧義性 (2) 簡潔性 (3) 局部性和順序性 2)工程特性 語言的工程特性主要體現(xiàn)在以下幾個方面。 (1) 可移植性 (2) 語言編譯器的實現(xiàn)效率 (3) 開發(fā)工具的支持 (4) 可維護性 3)技術特性 在確定了系統(tǒng)開發(fā)項目的需求后,根據(jù)項目的特性選擇具有相應技術特性的程序設計語言對保證系統(tǒng)的質量具有非常重要的作用。,6,4程序設計語言的分類 通??蓪⒊绦蛟O計語言分為面向機器語言和高級語言兩大類。 1)面向機器語言 面向機器語言包括機器語言和匯編語言兩
4、種。 2)高級語言 高級語言按其應用特點的不同,可分為通用語言和專用語言兩大類。 (1)通用語言 通用語言是指可用于解決各類問題、可廣泛應用于各個領域的程序設計語言。 (2)專用語言 專用語言是為了解決某類特殊領域的問題而專門設計的具有獨特語法形式的程序設計語言。 目前還有一種按代(Generation)劃分程序設計語言的方法:第一代語言(如機器語言、匯編語言)、第二代語言(如FORTRAN、COBOL)、第三代語言(如Pascal、C、C+)和第四代語言(如SQL)。,7,5程序設計語言的選擇 在選擇程序設計語言時通常要考慮以下一些因素。 1)項目的應用領域 2)系統(tǒng)開發(fā)的方法 3)系統(tǒng)的運
5、行環(huán)境 4)算法和數(shù)據(jù)結構的復雜性 5)系統(tǒng)開發(fā)人員的知識 6)系統(tǒng)用戶的要求 7)工程的規(guī)模 8)可以得到的軟件開發(fā)工具 9)系統(tǒng)的可移植性要求,8,8.3 程序的編程風格 所謂編碼風格就是程序員在編寫程序時遵循的具體準則和習慣做法。 為了寫出好程序應該遵循在下述四個方面的規(guī)則。 源程序文檔化 數(shù)據(jù)說明 語句結構 輸入輸出方法,9,1. 源程序文檔化 編寫源程序文檔化的原則為: 1) 使用恰當?shù)臉俗R符命名 標識符即符號名,包括模塊名、變量名、常量名、標號名、子程序名、數(shù)據(jù)區(qū)名以及緩沖區(qū)名等。為了便于閱讀程序時對標識符作用進行正確的理解,標識符的命名應注意以下幾個問題: (1) 選用具有實際含
6、義的標識符,例如,表示次數(shù)的量用Times,表示總量的用Total,表示平均值的用Average,表示和的量用Sum等。 (2) 為了便于程序的輸入,標識符的名字不宜過長。 (3) 為了便于區(qū)分,不同的標識符不要取過于相似的名字。,10,2) 程序應加注釋 注釋分序言性注釋和功能性注釋。 (1)序言性注釋一般置于每個模塊的起始部分,主要內容有: 說明每個模塊的用途和功能。 說明模塊的接口即調用形式、參數(shù)描述及從屬模塊的清單。 數(shù)據(jù)描述:指重要數(shù)據(jù)的名稱、用途、限制、約束及其他信息。 開發(fā)歷史:指設計者、審閱者姓名及日期,修改說明及日期。 (2)功能性注釋一般嵌在源程序體中,用以描述其后的語句或
7、程序段是在做什么工作,或是執(zhí)行了下面的語句會怎么樣。 另外在書寫功能性注釋,還要注意以下幾點: 注釋用來說明程序段,而不是每一行程序都要加注釋。 使用空行或縮進或括號,以便很容易區(qū)分注釋和程序。 注釋要正確。 修改了程序也應相應地去修改注釋。,11,3)用好空格、空行和移行提高視覺組織 恰當?shù)乩每崭瘢梢酝怀鲞\算的優(yōu)先性,避免發(fā)生運算的錯誤。 自然的程序段之間可用空行隔開;移行也叫做向右縮格,它是指程序中的各行不必都在左端對齊,都從第一格起排列,這樣做使程序完全分不清層次關系。特別是對于選擇語句和循環(huán)語句,把其中的程序段語句向右做階梯式移行,可以使程序的邏輯結構更加清晰。,12,2. 數(shù)據(jù)說
8、明 在設計階段已經(jīng)確定了數(shù)據(jù)結構的組織及其復雜性。在編寫程序時,則需要注意數(shù)據(jù)說明的風格。為了使數(shù)據(jù)定義更易于理解和維護,可以參考下述的一些指導原則: (1) 數(shù)據(jù)說明的次序應當規(guī)范化 如在FORTRAN程序中數(shù)據(jù)說明次序為: 常量說明 簡單變量類型說明 數(shù)組說明 公用數(shù)據(jù)塊說明 所有的文件說明 在簡單變量類型說明中還可進一步要求,如可按下面順序排列: 整型量說明 實型量說明 字符量說明 邏輯量說明,13,(2)說明語句中變量安排要有序化 當多個變量名在一個說明語句中說明時,應當對這些變量按字母的順序(az)排列。帶標號的全程數(shù)據(jù)(如FORTRAN的公用塊)也應當按字母的順序排列。例如,把 I
9、NTEGER size, length, width, cost, price 寫成 INTEGER cost, length, price , size, width (3)使用注釋說明復雜數(shù)據(jù)結構 如果設計了一個復雜的數(shù)據(jù)結構,應當使用注釋來說明在程序實現(xiàn)時這個數(shù)據(jù)結構的固有特點。例如,對PL/1的鏈表結構和PASCAL中用戶自定義的數(shù)據(jù)類型,都應當在注釋中做必要的補充說明。,14,3. 語句構造 在構造語句時需注意以下問題: 1)在一行內只寫一條語句,并且采取適當?shù)囊菩懈袷?,使程序的邏輯和功能變得更加明確。許多程序設計語言允許在一行內寫多個語句,但這種方式會使程序可讀性變差,因而不可取。
10、 2)程序編寫首先應當考慮清晰性,不要刻意追求技巧性,使程序顯得過于緊湊。 3) 對復雜的表達式應加上必要的括號使表達更加清晰。 4) 由于人的一般思維方式對邏輯非運算不太適應,因此在條件表達式中應盡量不要使用否定的邏輯表示。 5) 為了不破壞結構化程序設計中結構的清晰性,盡量只采用三種基本的控制結構來編寫程序,在程序中應盡量不使用強制轉移語句GOTO。 6)避免使用臨時變量而使可讀性下降。 7)避免使用空的ELSE語句和IFTHEN IF的語句,這種結構容易使讀者產(chǎn)生誤解。,15,8) 為了便于程序的理解,不要書寫太復雜的條件,嵌套的重數(shù)也不宜過多。 9) 為了縮短程序的代碼,在程序中應盡可
11、能地使用編譯系統(tǒng)提供的標準函數(shù)。對于程序中需要重復出現(xiàn)的代碼段,應將其用獨立模塊(函數(shù)或過程)實現(xiàn)。 10) 除非對效率有特殊要求,程序編寫要做到清晰第一,效率第二。不要為了追求效率而喪失了清晰性。程序效率的提高主要應通過選擇高效的算法來實現(xiàn)。 11) 首先要保證程序正確,然后才要求提高速度。反過來說,在使程序高速運行時,首先要保證它是正確的。 12) 不要修補不好的程序,要重新編寫。也不要一味地追求代碼的復用,要重新組織。 13) 對太大的程序,要分塊編寫、測試,然后再集成。,16,4. 輸入和輸出 1) 輸入 為了使用戶能方便地進行數(shù)據(jù)的輸入,應注意以下幾點: (1)輸入方式應力求簡單,盡
12、量避免給用戶帶來不必要的麻煩。 (2)交互式輸入數(shù)據(jù)時應有必要的提示信息,提示信息可包括:輸入請求、數(shù)據(jù)的格式及可選范圍等。 (3)程序應對輸入數(shù)據(jù)的合法性進行檢查。 (4)若用戶輸入某些數(shù)據(jù)后可能會產(chǎn)生嚴重后果,應給用戶輸出必要的提示并在必要的時候要求用戶確認。 (5)當需要輸入一批數(shù)據(jù)時,不要以記數(shù)方式控制數(shù)據(jù)的輸入個數(shù),而應以特殊標記作為數(shù)據(jù)輸入結束的標志。 (6)應根據(jù)系統(tǒng)的特點和用戶的習慣設計出令用戶滿意的輸入方式。,17,2) 輸出 設計數(shù)據(jù)輸出方式時應注意以下幾點: (1) 輸出數(shù)據(jù)的格式應清晰、美觀。如對大量數(shù)據(jù)采用表格的形式輸出,可以使用戶一目了然。 (2) 輸出數(shù)據(jù)時要加上
13、必要的提示信息。例如,表格的輸出一定要帶有表頭,用以說明表格中各項數(shù)據(jù)的含義。,18,8.4 程序的效率問題 程序效率是指程序的執(zhí)行速度及程序占用的存儲空間。下面給出討論程序效率的幾條準則: (1)效率是一個性能要求,目標在需求分析給出。 (2) 追求效率應建立在不損害程序可讀性或可靠性基礎之上,要先使程序正確、清晰,再提高程序效率。 (3) 提高程序效率的根本途徑在于選擇良好的設計方法、良好的數(shù)據(jù)結構與算法,而不是靠編程時對程序語句做調整。 在滿足上述準則的基礎上,依照下述一些方法來提高程序的效率。,19,1算法對效率的影響 源程序的效率與詳細設計階段確定的算法的效率直接有關,在將詳細設計翻
14、譯轉換成源程序代碼后,算法效率則反映為對程序的執(zhí)行速度和存儲容量的要求。 在設計向程序轉換的過程中,有下面一些指導原則可以幫助提高效率: (1)在編程序前,盡可能化簡有關的算術表達式和邏輯表達式; (2)仔細檢查算法中嵌套的循環(huán),盡可能將某些語句或表達式移到循環(huán)外面; (3)盡量避免使用多維數(shù)組; (4)盡量避免使用指針和復雜的表; (5)采用“快速”的算術運算; (6)不要混淆數(shù)據(jù)類型,避免在表達式中出現(xiàn)類型混雜; (7)盡量用整數(shù)算術表達式和布爾表達式; (8)許多編譯程序具有“優(yōu)化”功能,可以自動生成高效率的目標代碼。,20,2影響存儲器效率的因素 提高存儲器效率的關鍵是程序的簡單性,用
15、于優(yōu)化存儲空間使用的指導原則有: (1) 對于變動頻繁的數(shù)據(jù)最好采用動態(tài)存儲; (2) 可根據(jù)需要采用存儲單元共享等節(jié)約空間的技術; (3) 選用具有緊縮存儲器特性的編譯程序,在必要時甚至可采用匯編語言; (4) 采用結構化程序設計,將程序劃分為大小合適的模塊。一個模塊或若干個關系密切的模塊的大小最好與操作系統(tǒng)頁面的容量相匹配,以減少頁面調度的次數(shù),提高存儲效率。,21,3影響輸入輸出的因素 輸入輸出可分為兩種類型: l面向人(操作員)的輸入輸出 l面向設備的輸入輸出 關于面向設備的輸入/輸出,下面提出了一些提高輸入/輸出效率的指導原則: ()輸入輸出的請求應當最小化; ()對于所有的輸入輸出
16、操作,安排適當?shù)木彌_區(qū),以減少頻繁的信息交換; ()對輔助存儲(例如磁盤),選擇盡可能簡單的、可接受的存取方法; ()對輔助存儲的輸入輸出,應當成塊傳輸; ()對終端或打印機的輸入輸出應考慮設備特性,盡可能改善輸入輸出的質量和速度; ()任何不易理解的、對改善輸入輸出效果關系不大的措施都是不可取的; ()任何不易理解的所謂“超高效”的輸入輸出是毫無價值的; ()好的輸入輸出程序設計風格對提高輸入輸出效率會有明顯的效果。,22,8.5 程序設計途徑 8.5.1 程序設計方法論 目前主要有兩種程序設計方法,分別稱為自頂向下的程序開發(fā)方法和自底向上的程序開發(fā)方法。 使用自頂向下的方法開發(fā)程序,程序員
17、首先實現(xiàn)軟件結構的最高層次,用“存根”代表較低層次的模塊,所謂存根就是簡化模擬較低層次模塊功能的虛擬子程序。實現(xiàn)了軟件結構的一個層次之后,再用類似方法實現(xiàn)下一個層次,如此繼續(xù)下去直到最終用程序設計語言實現(xiàn)了最低層為止。 自底向上的方法和上述開發(fā)過程相反,從最底層開始構造系統(tǒng),直至最終實現(xiàn)了最高層次的設計為止。 一般說來,用自頂向下的開發(fā)方法得到的程序可讀性較好,可靠性也較高;用自底向上的開發(fā)方法得到的程序往往局部是優(yōu)化的,系統(tǒng)的整體結構性較差。但是,采用自底向上的開發(fā)方法能夠及早發(fā)現(xiàn)關鍵算法是否可行,發(fā)生較大返工的可能性較小。,23,8.5.2 程序設計自動化 為了高效低成本地生產(chǎn)出高度可靠的
18、程序代碼,人們研究出一類特殊的程序,用它們能生成用戶需要的程序,這也就是程序設計自動化的概念。目前至少有三種不同途徑可以實現(xiàn)程序設計自動化。 第一種途徑是使用某種方式精確地定義用戶的需求,經(jīng)檢驗后由一個專門的程序把對用戶需求的定義轉變成程序代碼。 第二種途徑本質上是軟件設計的模塊化概念的推廣。它的基本想法是:積累大量具有良好文檔的模塊,這些模塊本身應該是高內聚的、有靈活而且精確定義的接口。此外還應該提供構造主程序或新模塊時可以使用的語句。用戶以“問答”的方式與系統(tǒng)交互作用,使用系統(tǒng)提供的語句,確定調用哪些已有的模塊以及調用的次序和方式。 第三種途徑是所謂的擴展的自動化程序設計范型,這是基于知識的途徑。這種實現(xiàn)程序設計自動化的途徑,是由美國南加州大學信息科學研究所首先提出來的。如圖8-1所示描繪了這種途徑。,24,8.5.3 程序設計工具 下面簡單討論幾種程序設計工具。 1編譯程序 編譯程序是最基本的程序設計工具??梢院途幾g系統(tǒng)結合在一起的一個重要工具是交叉參照程序,它能給出程序對象的名字的類型,程序中說明每個名字的位置(行號),以及訪問每個對象的語句的行號。更復雜的交叉參照程序還能提供每個模塊的參數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年開封運輸從業(yè)資格證考試技巧
- 農業(yè)設備供貨合同范本
- 勞動合同范本大全
- 2025年運城貨運上崗證模擬考試試題
- 專利侵權檢索合同范本
- 買賣廢鋼材合同范本
- 勞務合同范本無社保
- 臨泉教師合同范本
- 三人合作協(xié)議合同范本
- 交電產(chǎn)品銷售合同范例
- 2025包頭青山賓館有限公司面向社會公開招聘18人筆試參考題庫附帶答案詳解
- 課件-DeepSeek從入門到精通
- 2025年業(yè)務員工作總結及工作計劃模版(3篇)
- 2025至2030年中國毛絨卡通玩具數(shù)據(jù)監(jiān)測研究報告
- 2024年連云港市贛榆區(qū)區(qū)屬國企對外招聘筆試真題
- 海南省??谑?024-2025學年八年級上學期期末考試數(shù)學試題(含答案)
- 2025年度智能充電樁場地租賃合同范本3篇
- 2025年注射用賴氮匹林項目可行性研究報告
- 17J008擋土墻(重力式、衡重式、懸臂式)圖示圖集
- 藥品類體外診斷試劑專項培訓課件
- 心電監(jiān)護儀的操作及注意事項 課件
評論
0/150
提交評論