第十一章-程序設計基礎_第1頁
第十一章-程序設計基礎_第2頁
第十一章-程序設計基礎_第3頁
第十一章-程序設計基礎_第4頁
第十一章-程序設計基礎_第5頁
已閱讀5頁,還剩26頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第11章程序設計基礎

程序設計的任務不僅僅是編寫出一個能得到正確結果的程序,還應當考慮程序的質量以及用什么方法能得到高質量的程序。什么樣的程序才算質量高呢?現在已經把程序“具有良好的結構,容易閱讀和理解”作為衡量程序質量的首要條件。本章主要介紹程序設計的風格、結構化程序設計的原則和特點以及面向對象程序設計的基本概念及其技術特點等。第十一章--程序設計基礎全文共31頁,當前為第1頁。11.1程序設計的風格

11.2結構化程序設計

11.3模塊化程序設計

11.4面向對象的程序設計

第十一章--程序設計基礎全文共31頁,當前為第2頁。11.1程序設計的風格程序設計是一門技術,需要相應的理論、技術、方法和工具來支持。程序設計的最終產品是程序,但僅設計和編制出一個運行結果正確的程序是不夠的,還應養成良好的程序設計風格。因為程序設計風格會深刻地影響軟件的質量和可維護性,良好的程序設計風格可以使程序結構清晰合理,使程序代碼便于維護。良好的程序設計風格,是在程序設計的全過程中逐步養成的,它主要表現在:設計的風格、語言運用的風格、程序文本的風格以及輸入輸出的風格四個方面。第十一章--程序設計基礎全文共31頁,當前為第3頁。1.程序設計的風格程序設計的風格主要體現在以下三個方面:(1)結構要清晰。為了達到這個目標,要求程序是模塊化結構的,并且是按層次組織各模塊的,每個模塊內部都是由順序、選擇、循環三種基本結構組成。(2)思路要清晰。為了達到這個目標,要求在設計的過程中遵循自頂向下、逐步細化的原則。第十一章--程序設計基礎全文共31頁,當前為第4頁。(3)在設計程序時應遵循“簡短樸實”的原則,切忌買弄所謂的“技巧”。如為了實現兩個變量x與y的內容互換,可以使用以下3條語句:T=xx=yy=T其中T為工作單元。不要為了省略一個工作單元采用下列3條語句:x=x-yy=y+xx=y-x第十一章--程序設計基礎全文共31頁,當前為第5頁。2.語言運用的風格語言運用的風格主要體現在以下兩個方面:(1)選擇合適的程序設計語言。選擇程序設計語言的原則有三點:符合軟件工程的要求;符合結構化程序設計的思想;使用要方便。(2)不要濫用語言中的某些特色。特別要注意,盡量不用靈活性大、不易理解的語句成分。第十一章--程序設計基礎全文共31頁,當前為第6頁。3.程序文本的風格

程序文本的風格主要體現在四個方面:注意程序文本的易讀性;符號要規范化;在程序中加必要的注釋;在程序中要合理地使用分隔符。4.輸入輸出的風格輸入輸出的風格主要體現在三個方面:對輸出的數據應該加上必要的說明;在需要輸入數據時,應該給出必要的提示。提示的內容主要有數據的范圍和意義、輸入的結束標志等;以適當的方式對輸入數據進行檢查,以確保其有效性。第十一章--程序設計基礎全文共31頁,當前為第7頁。11.2結構化程序設計

結構化程序設計是荷蘭學者Dijkstra提出了的,它規定了一套方法,使程序具有合理的結構,以保證和驗證程序的正確性。這種方法要求程序設計者不能隨心所欲地編寫程序,而要按照一定的結構形式來設計和編寫程序。它的一個重要目的是使程序具有良好的結構,使程序易于設計,易于理解,易于調試修改,以提高設計和維護程序工作的效率第十一章--程序設計基礎全文共31頁,當前為第8頁。11.2.1結構化程序設計的原則11.2.2結構化程序的基本結構與特點

第十一章--程序設計基礎全文共31頁,當前為第9頁。11.2.1結構化程序設計的原則結構化程序設計方法的主要原則可以概括為自頂向下,逐步求精,模塊化和限制使用goto語句。1.自頂向下程序設計時,應先考慮總體,后考慮細節;先考慮全局目標,后考慮局部目標。即首先把一個復雜的大問題分解為若干相對獨立的小問題。如果小問題仍較復雜,則可以把這些小問題又繼續分解成若干子問題,這樣不斷地分解,使得小問題或子問題簡單到能夠直接用程序的三種基本結構表達為止。2.逐步求精對復雜問題,應設計一些子目標作過度,逐步細化。第十一章--程序設計基礎全文共31頁,當前為第10頁。3.模塊化一個復雜問題,肯定是由若干簡單的問題構成。模塊化是把程序要解決的總目標分解為子目標,再進一步分解為具體的小目標,把每一個小目標叫做一個模塊。對應每一個小問題或子問題編寫出一個功能上相對獨立的程序塊來,每個模塊各個擊破,最后再統一組裝,這樣,對一個復雜問題的解決就變成了對若干個簡單問題的求解。4.限制使用goto語句goto語句是有害的,程序的質量與goto語句的數量成反比,應該在所有的高級程序設計語言中取消goto語句。第十一章--程序設計基礎全文共31頁,當前為第11頁。11.2.2結構化程序的基本結構與特點結構化程序設計方法是程序設計的先進方法和工具。采用結構化程序設計方法編寫程序,可使程序的結構良好、易讀、易理解、易維護。1.順序結構順序結構是指程序中的各操作是按照它們出現的先后順序執行的。這種結構的特點是:程序從入口點開始,按順序執行所有操作,直到出口點處。順序結構是一種簡單的程序設計,它是最基本、最常用的結構。如圖11.1所示。第十一章--程序設計基礎全文共31頁,當前為第12頁。2.選擇結構

選擇結構是指程序的處理步驟出現了分支,它需要根據某一特定的條件選擇其中的一個分支執行。它包括兩路分支選擇結構和多路分支選擇結構。(1)兩路分支選擇結構兩路分支選擇結構是指根據判斷結構的入口點處的條件,如果條件滿足執行S1處理,否則執行S2處理。值得注意的是,在這兩個分支中只能選擇一條且必須選擇一條執行,但不論選擇了哪一條分支執行,最后流程都一定到達結構的出口點處。如圖11.2所示。第十一章--程序設計基礎全文共31頁,當前為第13頁。

條件滿足

不滿足S1S2S1S2S3第十一章--程序設計基礎全文共31頁,當前為第14頁。(2)多路分支選擇結構多選擇結構是指程序流程中遇到多個分支,程序執行方向將根據條件確定。如果滿足條件1則執行S1處理,如果滿足條件n則執行Sn處理,總之要根據判斷條件選擇多個分支的其中之一執行。不論選擇了哪一條分支,最后流程要到達同一個出口處。如果所有分支的條件都不滿足,則直接到達出口。如圖11.3所示。

條件情況1情況2…情況nS1S2…Sn第十一章--程序設計基礎全文共31頁,當前為第15頁。3.循環結構

循環結構是指程序反復執行某個或某些操作,直到某條件為假(或為真)時才可終止循環。在循環結構中最主要的是:什么情況下執行循環?哪些操作需要循環執行?循環結構的基本形式有兩種:當型循環和直到型循環。(1)當型循環結構當型結構循環結構是指先判斷條件,當滿足給定的條件時執行循環體,并且在循環終端處流程自動返回到循環入口;如果條件不滿足,則退出循環體直接到達流程出口處。如圖11.4所示。第十一章--程序設計基礎全文共31頁,當前為第16頁。圖11.4當型循環結構流程圖第十一章--程序設計基礎全文共31頁,當前為第17頁。(2)直到型循環結構直到型循環是指從結構入口處直接執行循環體,在循環終端處判斷條件,如果條件不滿足,返回入口處繼續執行循環體,直到條件為真時再退出循環到達流程出口處,是先執行后判斷。如圖11.5所示。第十一章--程序設計基礎全文共31頁,當前為第18頁。11.3模塊化程序設計

模塊化程序設計是指把一個大程序按人們能理解的大小規模進行分解。由于經過分解后的各模塊比較小,因此容易實現,也容易調試。在進行模塊化程序設計時,應重點考慮以下兩個問題:按什么原則劃分模塊?如何組織好各模塊之間的聯系?第十一章--程序設計基礎全文共31頁,當前為第19頁。1.按功能劃分模塊劃分模塊的基本原則是使每個模塊都易于理解。按照人類思維的特點,按功能來劃分模塊最為自然。在按功能劃分模塊時,要求各模塊的功能盡量單一,各模塊之間的聯系盡量少。滿足這些要求的模塊有以下幾個優點:(1)可讀性和可理解性都比較好。(2)各模塊間的接口關系比較簡單。(3)當要修改某一功能時,只涉及一個模塊。(4)其他應用程序可以充分利用已有的一些模塊。第十一章--程序設計基礎全文共31頁,當前為第20頁。2.按層次組織模塊在按層次組織模塊時,一般上層模塊只指出“做什么”,只有在最底層的模塊中才精確地描述“怎么做”。主模塊只需要指出總任務就可以了,而模塊1、模塊2與模塊3分別指出各自的子任務。模塊4、模塊5與模塊6才精確描述“怎么做”。如圖11.6所示。第十一章--程序設計基礎全文共31頁,當前為第21頁。第十一章--程序設計基礎全文共31頁,當前為第22頁。11.4面向對象的程序設計

面向對象的程序設計(ObjectOrientedProgramming,簡稱OOP)是20世紀80年代提出的,它汲取了結構化程序設計中好的思想,引入了新的概念和思維方式,從而給程序設計工作提供了一種全新的方法。通常,在面向對象的程序設計風格中,會將一個問題分解為一些相互關聯的子集,每個子集內部都包含了相關的數據和函數。同時,會以某種方式將這些子集分為不同等級,而一個對象就是已定義的某個類型的變量。第十一章--程序設計基礎全文共31頁,當前為第23頁。1.面向對象技術的基本概念面向對象實現的主要任務是實現軟件功能,實現各個對象所應完成的任務,包括實現每個對象的內部功能、系統的界面設計、輸出格式等。在面向對象技術中,主要用到以下一些基本概念。(1)對象對象是指具有某些特性的具體事物的抽象。在一個面向對象的系統中,對象是運行期的基本實體。它可以用來表示一個人或者說一個銀行帳戶,一張數據表格,或者其它什么需要被程序處理的東西。它也可以用來表示用戶定義的數據,如一個向量,時間或者列表。在面向對象程序設計中,問題的分析一般以對象及對象間的自然聯系為依據??陀^世界由實體及其實體之間的聯系所組成,其中客觀世界中的實體稱為問題域的對象。如一本書、一輛車等都是一個對象。第十一章--程序設計基礎全文共31頁,當前為第24頁。對象具有以下一些基本特征:模塊性:一個對象是一個可以獨立存在的實體。各個對象之間相對獨立,相互依賴性小。繼承性和類比性:可以把具有相同屬性的一些不同對象歸類,稱為對象類。還可以劃分類的子類,構成層次系統,下一層次的對象繼承上一層次對象的某些屬性。動態連接性:對象與對象之間可以相互連接構成各種不同的系統。對象與對象之間所具有的統一、方便、動態的連接和傳送消息的能力與機制稱為動態連接性。易維護性:任何一個對象是一個獨立的模塊,無論是改善其功能還是改變其細節均局限于該對象內部,不會影響到其他的對象。第十一章--程序設計基礎全文共31頁,當前為第25頁。(2)類類是指具有相似性質的一組對象。例如,芒果、蘋果和桔子都是水果類的對象。類是用戶定義的數據類型,但在一個程序設計語言中,它和內建的數據類型行為相同。一個具體對象稱為類的實例。(3)方法方法是指允許作用于某個對象上的各種操作。面向對象的程序設計語言,為程序設計人員提供了一種特殊的過程和函數,然后將一些通用的過程和函數封裝起來,作為方法供用戶直接調用,這給用戶的編程帶來了很大的方便。第十一章--程序設計基礎全文共31頁,當前為第26頁。(4)消息消息是指用來請求對象執行某一處理或回答某些信息的要求。對象之間通過收發信息相互溝通,這一點類似于人與人之間的信息傳遞。消息的接收對象會調用一個函數(過程),以產生預期的結果。傳遞的消息的內容包括接收消息的對象的名字,需要調用的函數的名字,以及必要的信息。對象就有一個生命周期。它們可以被創建和銷毀。只要對象正處于其生存期,就可以與其進行通訊。(5)繼承繼承是指可以讓某個類型的對象獲得另一個類型的對象的屬性的方法。它支持按級分類的概念。如知更鳥屬于飛鳥類,也屬于鳥類。如果類X繼承類Y,則X為Y的子類,Y為X的父類(超類)。如“車”是一類對象,“小轎車”、“卡車”等都繼承了“車”類的性質,因而是“車”的子類。第十一章--程序設計基礎全文共31頁,當前為第27頁。(6)封裝封裝是指將數據和代碼捆綁到一起,避免了外界的干擾和不確定性。目的在于將對象的使用者和對象的設計者分開。用戶只能見到對象封裝界面上的信息,不必知道實現的細節。封裝一方面通過數據抽象,把相關的信息結合在一起,另一方面也簡化了接口。在一個對象內部,某些代碼和某些數據可以是私有的,不能被外界訪問。通過這種方式,對象對內部數據提供了不同級別的保護,以防止程序中無關的部分意外的改變或錯誤的使用了對象的私有部分。第十一章--程序設計基礎

溫馨提示

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

評論

0/150

提交評論