版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第11章程序設(shè)計(jì)基礎(chǔ) 1 第11章程序設(shè)計(jì)基礎(chǔ) 2 v 了解程序設(shè)計(jì)語言的歷史和分類 v 了解程序設(shè)計(jì)語言的功能 v 了解程序設(shè)計(jì)的基本思想和過程 第11章程序設(shè)計(jì)基礎(chǔ) 3 11.1 程序和程序設(shè)計(jì)語言程序和程序設(shè)計(jì)語言 11.2 算法算法 11.3 程序設(shè)計(jì)步驟和程序設(shè)計(jì)方法程序設(shè)計(jì)步驟和程序設(shè)計(jì)方法 11.4 常用程序設(shè)計(jì)語言常用程序設(shè)計(jì)語言 第11章程序設(shè)計(jì)基礎(chǔ) 4 11.1.1 程序的一般概念程序的一般概念 程序程序 : 計(jì)算機(jī)為完成序某一個(gè)任務(wù)所必須計(jì)算機(jī)為完成序某一個(gè)任務(wù)所必須 執(zhí)行的一系列執(zhí)行的一系列 指令的集合。指令的集合。 一個(gè)計(jì)算機(jī)程序主要描述兩部分內(nèi)容一個(gè)計(jì)算機(jī)程序主要描
2、述兩部分內(nèi)容: 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)描述問題的每個(gè)對象之間的關(guān)系描述問題的每個(gè)對象之間的關(guān)系 算法算法對問題的處理規(guī)則對問題的處理規(guī)則 經(jīng)典公式經(jīng)典公式: 程序程序=數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)+算法算法 第11章程序設(shè)計(jì)基礎(chǔ) 5 例例1: 用用VB來編寫的顯示教齡滿來編寫的顯示教齡滿30年的教職工年的教職工 Sub Command1_Click() Sub Command1_Click() Open d: zg.dat For Input As #1 Open d: zg.dat For Input As #1 Do While Not EOF(1)Do While Not EOF(1) Input #1,
3、 Input #1, 姓名姓名, , 部門部門, , 教齡教齡 If If 教齡教齡 = 30 Then= 30 Then Print Print 姓名姓名, , 部門部門 LoopLoop Close #1Close #1 文 件 尾 教 齡 = 3 0 是 是 否 否 打 開 職 工 文 件 讀 入 一 個(gè) 職 工 記 錄 顯 示 姓 名 、 部 門 關(guān) 閉 文 件 結(jié) 束 運(yùn) 行 第11章程序設(shè)計(jì)基礎(chǔ) 6 q 目的性目的性 程序有明確的目的,運(yùn)行時(shí)能完成賦予它的功程序有明確的目的,運(yùn)行時(shí)能完成賦予它的功 能。能。 q 分步性分步性 程序由一系列計(jì)算機(jī)可執(zhí)行的步驟組成。程序由一系列計(jì)算機(jī)可
4、執(zhí)行的步驟組成。 q 有序性有序性 執(zhí)行步驟是有序的,不可隨意改變執(zhí)行順序。執(zhí)行步驟是有序的,不可隨意改變執(zhí)行順序。 q 有限性有限性 程序是有限的指令序列,所包含的步驟是有限程序是有限的指令序列,所包含的步驟是有限 的。的。 q 操作性操作性 有意義的程序總是對某些對象進(jìn)行操作,使其有意義的程序總是對某些對象進(jìn)行操作,使其 改變狀態(tài),完成其功能。改變狀態(tài),完成其功能。 第11章程序設(shè)計(jì)基礎(chǔ) 7 按照程序設(shè)計(jì)語言發(fā)展的過程,大概分為三類:按照程序設(shè)計(jì)語言發(fā)展的過程,大概分為三類: 機(jī)器語言是由機(jī)器語言是由0和和1二進(jìn)制代碼按一定規(guī)則組成的、能二進(jìn)制代碼按一定規(guī)則組成的、能 被機(jī)器直接理解和執(zhí)行
5、的指令集合。機(jī)器語言中的每一條被機(jī)器直接理解和執(zhí)行的指令集合。機(jī)器語言中的每一條 語句實(shí)際上是一條二進(jìn)制形式的指令代碼,指令格式如下:語句實(shí)際上是一條二進(jìn)制形式的指令代碼,指令格式如下: 操作碼操作碼 操作數(shù)操作數(shù) 操作碼操作碼 要完成的操作類型或性質(zhì)要完成的操作類型或性質(zhì) 操作數(shù)操作數(shù) 操作的內(nèi)容或所在的地址操作的內(nèi)容或所在的地址 第11章程序設(shè)計(jì)基礎(chǔ) 8 例如,計(jì)算例如,計(jì)算A=15+10 A=15+10 的機(jī)器語言程序如下:的機(jī)器語言程序如下: 10110000 0000111110110000 00001111: 把把1515放入累加器放入累加器A A中中 00101100 00001
6、01000101100 00001010: 1010與累加器與累加器A A的值相加,結(jié)果的值相加,結(jié)果 仍放入仍放入A A中中 1111010011110100 : 結(jié)束,停機(jī)結(jié)束,停機(jī) 編程工作量大,難學(xué)、難記、難修改,只適合專業(yè)人編程工作量大,難學(xué)、難記、難修改,只適合專業(yè)人 員使用;由于不同的員使用;由于不同的計(jì)算機(jī)計(jì)算機(jī),其指令系統(tǒng)不同,機(jī)器語言,其指令系統(tǒng)不同,機(jī)器語言 隨機(jī)而異,通用性差,是面向機(jī)器的語言。隨機(jī)而異,通用性差,是面向機(jī)器的語言。 機(jī)器語言優(yōu)點(diǎn)機(jī)器語言優(yōu)點(diǎn):程序代碼不需要翻譯,所占空間少,程序代碼不需要翻譯,所占空間少, 執(zhí)行速度快?,F(xiàn)在已經(jīng)沒有人用機(jī)器語言直接編程了
7、。執(zhí)行速度快?,F(xiàn)在已經(jīng)沒有人用機(jī)器語言直接編程了。 第11章程序設(shè)計(jì)基礎(chǔ) 9 將機(jī)器指令的代碼用英文助記符來表示,代替機(jī)器語言將機(jī)器指令的代碼用英文助記符來表示,代替機(jī)器語言 中的指令和數(shù)據(jù)。例如用中的指令和數(shù)據(jù)。例如用ADDADD表示加、表示加、SUBSUB表示減、表示減、JMPJMP表示程表示程 序跳轉(zhuǎn)等等,這種指令助記符的語言就是匯編語言。序跳轉(zhuǎn)等等,這種指令助記符的語言就是匯編語言。 例如,計(jì)算例如,計(jì)算 A=15+10 A=15+10 的匯編語言程序:的匯編語言程序: MOVMOV A A,1515:把:把1515放入累加器放入累加器A A中中 ADDADD A A,1010:101
8、0與累加器與累加器A A相加,結(jié)果存入相加,結(jié)果存入A A中中 HLTHLT :結(jié)束,停機(jī):結(jié)束,停機(jī) 匯編語言克服了機(jī)器語言難讀等缺點(diǎn),保持了其編程質(zhì)匯編語言克服了機(jī)器語言難讀等缺點(diǎn),保持了其編程質(zhì) 量高,占存儲空間少,執(zhí)行速度快的優(yōu)點(diǎn)。常用于過程控制量高,占存儲空間少,執(zhí)行速度快的優(yōu)點(diǎn)。常用于過程控制 等編程。匯編語言面向機(jī)器,使用者需要專業(yè)知識。等編程。匯編語言面向機(jī)器,使用者需要專業(yè)知識。 匯編語言編寫的程序,必須翻譯成機(jī)器語言,才能被計(jì)匯編語言編寫的程序,必須翻譯成機(jī)器語言,才能被計(jì) 算機(jī)執(zhí)行。算機(jī)執(zhí)行。 第11章程序設(shè)計(jì)基礎(chǔ) 10 高級語言是由表達(dá)各種意義的詞和數(shù)學(xué)公式按照一定高級
9、語言是由表達(dá)各種意義的詞和數(shù)學(xué)公式按照一定 的語法規(guī)則來編寫程序的語言。高級語言使程序員可以完的語法規(guī)則來編寫程序的語言。高級語言使程序員可以完 全不用與計(jì)算機(jī)的硬件打交道,可以不必了解機(jī)器的指令全不用與計(jì)算機(jī)的硬件打交道,可以不必了解機(jī)器的指令 系統(tǒng),是面向過程的語言。這樣,程序員就可以集中精力系統(tǒng),是面向過程的語言。這樣,程序員就可以集中精力 來解決問題本身而不必受機(jī)器制約,編程效率高;由于與來解決問題本身而不必受機(jī)器制約,編程效率高;由于與 具體機(jī)器無關(guān),因此程序的通用性強(qiáng)。具體機(jī)器無關(guān),因此程序的通用性強(qiáng)。 例如,計(jì)算例如,計(jì)算 A=15+10 的的BASIC語言程序如下:語言程序如下
10、: A=15+10 15與與10相加的結(jié)果放入相加的結(jié)果放入A中中 PRINT A 輸出輸出A END 程序結(jié)束程序結(jié)束 第11章程序設(shè)計(jì)基礎(chǔ) 11 高級語言的發(fā)展分為高級語言的發(fā)展分為3 3類:類: 1)1)面向過程的語言面向過程的語言 如如FORTRANFORTRAN、BASICBASIC、PASCALPASCAL、C C等。面向過程的語言等。面向過程的語言 致力于用計(jì)算機(jī)能夠理解的邏輯來描述需要解決的問題和致力于用計(jì)算機(jī)能夠理解的邏輯來描述需要解決的問題和 解決問題的具體方法、步驟。編程時(shí),程序不僅要說明做解決問題的具體方法、步驟。編程時(shí),程序不僅要說明做 什么,還要告訴計(jì)算機(jī)如何做,程
11、序需要詳細(xì)描述解題的什么,還要告訴計(jì)算機(jī)如何做,程序需要詳細(xì)描述解題的 過程和細(xì)節(jié)。過程和細(xì)節(jié)。 第11章程序設(shè)計(jì)基礎(chǔ) 12 2)面向問題的語言()面向問題的語言(非過程化的語言)非過程化的語言) 面向問題的語言又稱為第四代語言(面向問題的語言又稱為第四代語言(4GLS)。解)。解 題時(shí),不必關(guān)心問題的求解算法和求解的過程,只須指題時(shí),不必關(guān)心問題的求解算法和求解的過程,只須指 出要計(jì)算機(jī)做什么,數(shù)據(jù)的輸入和輸出形式,就能得到出要計(jì)算機(jī)做什么,數(shù)據(jù)的輸入和輸出形式,就能得到 所需結(jié)果。所需結(jié)果。 例如,用非過程化的語言,只要用如下的一條語句例如,用非過程化的語言,只要用如下的一條語句 就可實(shí)現(xiàn)
12、:就可實(shí)現(xiàn): SELECT 姓名,部門,教齡姓名,部門,教齡 FROM d:zg.dbf WHERE 教齡教齡 =30 第11章程序設(shè)計(jì)基礎(chǔ) 13 面向問題的語言是采用快速原型法開發(fā)應(yīng)用軟件面向問題的語言是采用快速原型法開發(fā)應(yīng)用軟件 的強(qiáng)大工具,能夠快速地構(gòu)造應(yīng)用系統(tǒng),提高軟件的強(qiáng)大工具,能夠快速地構(gòu)造應(yīng)用系統(tǒng),提高軟件 開發(fā)效率。開發(fā)效率。 面向過程的語言需要詳細(xì)地描述面向過程的語言需要詳細(xì)地描述“怎樣做怎樣做”;面;面 向問題的語言僅需要說明向問題的語言僅需要說明“做什么做什么”。它和與數(shù)據(jù)。它和與數(shù)據(jù) 庫的關(guān)系非常密切,能夠?qū)Υ笮蛿?shù)據(jù)庫進(jìn)行高效處庫的關(guān)系非常密切,能夠?qū)Υ笮蛿?shù)據(jù)庫進(jìn)行高效
13、處 理。理。 第11章程序設(shè)計(jì)基礎(chǔ) 14 在在20世紀(jì)世紀(jì)80年代推出面向?qū)ο笳Z言。它與以往各種年代推出面向?qū)ο笳Z言。它與以往各種 語言的根本不同點(diǎn)在于:它設(shè)計(jì)的出發(fā)點(diǎn)就是為了能更語言的根本不同點(diǎn)在于:它設(shè)計(jì)的出發(fā)點(diǎn)就是為了能更 直接地描述客觀世界中存在的事物(即對象)以及它們直接地描述客觀世界中存在的事物(即對象)以及它們 之間的關(guān)系。之間的關(guān)系。 面向?qū)ο笳Z言將客觀事物看作具有屬性和行為的對面向?qū)ο笳Z言將客觀事物看作具有屬性和行為的對 象,通過抽象找出同一類對象的共同屬性和行為,形成象,通過抽象找出同一類對象的共同屬性和行為,形成 類。通過類的繼承與多態(tài)可以很方便地實(shí)現(xiàn)代碼重用,類。通過類
14、的繼承與多態(tài)可以很方便地實(shí)現(xiàn)代碼重用, 這大大提高了程序的復(fù)用能力和程序開發(fā)效率。面向?qū)@大大提高了程序的復(fù)用能力和程序開發(fā)效率。面向?qū)?象語言已是程序語言的主要研究方向之一。面向?qū)ο蟮南笳Z言已是程序語言的主要研究方向之一。面向?qū)ο蟮?語言有語言有C+、Java、Visual Basic等。等。 第11章程序設(shè)計(jì)基礎(chǔ) 15 在所有的程序設(shè)計(jì)語言中,除了用機(jī)器語言編制的程在所有的程序設(shè)計(jì)語言中,除了用機(jī)器語言編制的程 序能夠被計(jì)算機(jī)直接理解和執(zhí)行外,其他的程序設(shè)計(jì)語言序能夠被計(jì)算機(jī)直接理解和執(zhí)行外,其他的程序設(shè)計(jì)語言 編寫的程序都必須經(jīng)過一個(gè)翻譯過程才能轉(zhuǎn)換為計(jì)算機(jī)所編寫的程序都必須經(jīng)過一個(gè)翻譯
15、過程才能轉(zhuǎn)換為計(jì)算機(jī)所 能識別的機(jī)器語言程序,實(shí)現(xiàn)這個(gè)翻譯過程的工具是語言能識別的機(jī)器語言程序,實(shí)現(xiàn)這個(gè)翻譯過程的工具是語言 處理程序,即翻譯程序。用非機(jī)器語言寫的程序稱為源程處理程序,即翻譯程序。用非機(jī)器語言寫的程序稱為源程 序;通過翻譯程序翻譯后的程序稱為目標(biāo)程序。翻譯程序序;通過翻譯程序翻譯后的程序稱為目標(biāo)程序。翻譯程序 也稱為編譯器。針對不同的程序設(shè)計(jì)語言編寫出的程序,也稱為編譯器。針對不同的程序設(shè)計(jì)語言編寫出的程序, 有各自的翻譯程序,互相不通用。有各自的翻譯程序,互相不通用。 第11章程序設(shè)計(jì)基礎(chǔ) 16 匯編程序是將匯編語言編制的程序(源程序)翻譯成匯編程序是將匯編語言編制的程序(
16、源程序)翻譯成 機(jī)器語言程序(目標(biāo)程序)的工具。機(jī)器語言程序(目標(biāo)程序)的工具。 匯編語言匯編語言 源程序源程序 匯編匯編 程序程序 機(jī)器語機(jī)器語 言程序言程序 匯編程序的具體翻譯工作步驟:匯編程序的具體翻譯工作步驟: 用機(jī)器操作碼代替符號化的操作符。用機(jī)器操作碼代替符號化的操作符。 用數(shù)值地址代替符號名稱。用數(shù)值地址代替符號名稱。 將常數(shù)翻譯為機(jī)器的內(nèi)部表示。將常數(shù)翻譯為機(jī)器的內(nèi)部表示。 分配指令和數(shù)據(jù)的存儲單元。分配指令和數(shù)據(jù)的存儲單元。 第11章程序設(shè)計(jì)基礎(chǔ) 17 1)解釋方式解釋方式 解釋方式的翻譯工作由解釋程序來完成。解釋程序?qū)υ闯探忉尫绞降姆g工作由解釋程序來完成。解釋程序?qū)υ闯?
17、序進(jìn)行逐句分析,若沒有錯(cuò)誤,將該語句翻譯成一個(gè)或多個(gè)機(jī)序進(jìn)行逐句分析,若沒有錯(cuò)誤,將該語句翻譯成一個(gè)或多個(gè)機(jī) 器語言指令,然后立即執(zhí)行這些指令;若解釋時(shí)發(fā)現(xiàn)錯(cuò)誤,會器語言指令,然后立即執(zhí)行這些指令;若解釋時(shí)發(fā)現(xiàn)錯(cuò)誤,會 立即停止,報(bào)錯(cuò)并提醒用戶更正代碼。解釋方式不生成目標(biāo)程立即停止,報(bào)錯(cuò)并提醒用戶更正代碼。解釋方式不生成目標(biāo)程 序。序。 數(shù)據(jù)數(shù)據(jù) 高級語言高級語言 源程序源程序 解釋程序解釋程序 計(jì)算結(jié)果計(jì)算結(jié)果 第11章程序設(shè)計(jì)基礎(chǔ) 18 翻譯工作由編譯程序完成。如同筆譯在紙上記錄翻譯翻譯工作由編譯程序完成。如同筆譯在紙上記錄翻譯 后的結(jié)果。后的結(jié)果。 目 標(biāo) 程目 標(biāo) 程 序序 源程源程
18、序序 可執(zhí)行程序可執(zhí)行程序 編譯程序編譯程序連接程序連接程序 數(shù)據(jù)數(shù)據(jù) 計(jì) 算 結(jié)計(jì) 算 結(jié) 果果 第11章程序設(shè)計(jì)基礎(chǔ) 19 編譯程序?qū)φ麄€(gè)源程序經(jīng)過編譯處理,產(chǎn)生一個(gè)與編譯程序?qū)φ麄€(gè)源程序經(jīng)過編譯處理,產(chǎn)生一個(gè)與 源程序等價(jià)的目標(biāo)程序;源程序等價(jià)的目標(biāo)程序; 目標(biāo)程序還可能要調(diào)用一些其他語言編寫的程序和目標(biāo)程序還可能要調(diào)用一些其他語言編寫的程序和 程序庫中的標(biāo)準(zhǔn)子程序,通過連接程序?qū)⒛繕?biāo)程序和有程序庫中的標(biāo)準(zhǔn)子程序,通過連接程序?qū)⒛繕?biāo)程序和有 關(guān)的程序庫組合成一個(gè)完整的可執(zhí)行程序。執(zhí)行速度快,關(guān)的程序庫組合成一個(gè)完整的可執(zhí)行程序。執(zhí)行速度快, 修改源程序后都必須重新編譯。修改源程序后都必須
19、重新編譯。 一般高級語言(一般高級語言(C/C+C/C+、PASCALPASCAL、FORTRANFORTRAN、COBOLCOBOL等)等) 都是采用編譯方式。都是采用編譯方式。 第11章程序設(shè)計(jì)基礎(chǔ) 20 v 自然語言自然語言用人們使用的語言描述算法用人們使用的語言描述算法 v 傳統(tǒng)的流程圖法傳統(tǒng)的流程圖法用一些圖框、線條以及文字說明來形用一些圖框、線條以及文字說明來形 象地、直觀地描述算法。象地、直觀地描述算法。 v N-SN-S流程圖法流程圖法-去掉了傳統(tǒng)流程圖中帶箭頭的流向線,去掉了傳統(tǒng)流程圖中帶箭頭的流向線, 全部算法以一個(gè)大的矩形框表示,框內(nèi)還可以包含一些從全部算法以一個(gè)大的矩形
20、框表示,框內(nèi)還可以包含一些從 屬于它的小矩形框,適于結(jié)構(gòu)化程序設(shè)計(jì)。屬于它的小矩形框,適于結(jié)構(gòu)化程序設(shè)計(jì)。 A BAB 條件條件 TF 當(dāng)條件成立當(dāng)條件成立 A 直到條件成立直到條件成立 A N-SN-S圖的三種基本結(jié)構(gòu)圖的三種基本結(jié)構(gòu) 第11章程序設(shè)計(jì)基礎(chǔ) 21 v 偽代碼法:偽代碼法:是一種假的代碼是一種假的代碼不能被計(jì)算機(jī)所理解,不能被計(jì)算機(jī)所理解, 但接近于某種語言編寫的程序,便于轉(zhuǎn)換成編程語言。根但接近于某種語言編寫的程序,便于轉(zhuǎn)換成編程語言。根 據(jù)編程語言的不同,有對應(yīng)的類據(jù)編程語言的不同,有對應(yīng)的類PascalPascal、類、類C C等類等類- -xxxxxx語言。語言。 在數(shù)
21、據(jù)結(jié)構(gòu)教材中,經(jīng)常用類在數(shù)據(jù)結(jié)構(gòu)教材中,經(jīng)常用類- -xxxxxx語言來描述算法。語言來描述算法。 v 計(jì)算機(jī)語言:計(jì)算機(jī)語言:計(jì)算機(jī)無法識別自然語言、流程圖、偽代計(jì)算機(jī)無法識別自然語言、流程圖、偽代 碼。這些方法僅為了幫助人們描述、理解算法,要用計(jì)算碼。這些方法僅為了幫助人們描述、理解算法,要用計(jì)算 機(jī)解題,就要將它們轉(zhuǎn)換成計(jì)算機(jī)語言程序。用計(jì)算機(jī)語機(jī)解題,就要將它們轉(zhuǎn)換成計(jì)算機(jī)語言程序。用計(jì)算機(jī)語 言描述算法,只有用計(jì)算機(jī)語言編寫的程序才能被計(jì)算機(jī)言描述算法,只有用計(jì)算機(jī)語言編寫的程序才能被計(jì)算機(jī) 執(zhí)行。執(zhí)行。 第11章程序設(shè)計(jì)基礎(chǔ) 22 v 兩個(gè)變量的值交換兩個(gè)變量的值交換 XY Sub
22、 Swap(x,y) Dim t t=x x=y y=t End Sub v 計(jì)數(shù)器和累加器計(jì)數(shù)器和累加器 n + 1 sum+x N=N+1 計(jì)數(shù)器,計(jì)數(shù)器,N為計(jì)數(shù)器變量為計(jì)數(shù)器變量 Sum=Sum+x 累加器,累加器,Sum為累加器變量為累加器變量 第11章程序設(shè)計(jì)基礎(chǔ) 23 v枚舉法枚舉法( (窮舉法或試湊法窮舉法或試湊法) ) 根據(jù)條件確定答案的范圍,根據(jù)條件確定答案的范圍, 在此范圍內(nèi)對所有可能的情況逐一驗(yàn)證。若某個(gè)情況符在此范圍內(nèi)對所有可能的情況逐一驗(yàn)證。若某個(gè)情況符 合條件,則為一個(gè)解;若全部情況均不符合條件,則問合條件,則為一個(gè)解;若全部情況均不符合條件,則問 題無解。題無解
23、。 例例 假定小雞假定小雞0.50.5元元/ /只只, ,公雞公雞2 2元元/ /只,母雞只,母雞3 3元元/ /只。百元買只。百元買 百雞,列出所有可能的購雞方案。百雞,列出所有可能的購雞方案。 根據(jù)題意列出方程:根據(jù)題意列出方程: x+y+z=100 3x+2y+0.5z=100 第11章程序設(shè)計(jì)基礎(chǔ) 24 Print 母雞母雞, 公雞公雞, 小雞小雞 For x = 0 To 33 For y = 0 To 50 z =100-x-y If 3*x + 2*y + 0.5*z = 100 Then Print x, y, z Next y Next x 第11章程序設(shè)計(jì)基礎(chǔ) 25 v遞推
24、法遞推法(迭代法迭代法) ) 從初值出發(fā),歸納出新值與舊值間直到最后值為止存在的從初值出發(fā),歸納出新值與舊值間直到最后值為止存在的 關(guān)系,每次重復(fù)都從舊值的基礎(chǔ)上遞推出新值,并由新值代替關(guān)系,每次重復(fù)都從舊值的基礎(chǔ)上遞推出新值,并由新值代替 舊值。舊值。 例:猴子吃桃子問題。小猴有桃若干,每天吃掉現(xiàn)有數(shù)的例:猴子吃桃子問題。小猴有桃若干,每天吃掉現(xiàn)有數(shù)的 一半多一個(gè),到第一半多一個(gè),到第7 7天要吃時(shí)只剩下一個(gè)了,問小猴原有桃子多天要吃時(shí)只剩下一個(gè)了,問小猴原有桃子多 少個(gè)?少個(gè)? 設(shè)第設(shè)第n n天的桃子為天的桃子為x xn n,它是前一天的桃子數(shù)的一半少,它是前一天的桃子數(shù)的一半少1 1個(gè)個(gè)
25、 遞推公式遞推公式 x xn- n-1 1=(x =(xn n+1)+1)2 2 1 2 1 1 - -= = - -n n x x 第11章程序設(shè)計(jì)基礎(chǔ) 26 例例 猴子吃桃子問題。猴子吃桃子問題。 x = 1 Print 第第 7 天的桃子數(shù)為天的桃子數(shù)為: 1只只 For i = 6 To 1 Step -1 x = (x + 1) * 2 Print 第第; i; 天的桃子數(shù)為天的桃子數(shù)為:; x; 只只 Next i 第11章程序設(shè)計(jì)基礎(chǔ) 27 v求最值求最值 在在n個(gè)數(shù)中先假設(shè)第個(gè)數(shù)中先假設(shè)第1個(gè)數(shù)為最大個(gè)數(shù)為最大(小小)值初值,依次同第值初值,依次同第 2、3、n個(gè)數(shù)據(jù)逐一比較,
26、一旦某個(gè)數(shù)大個(gè)數(shù)據(jù)逐一比較,一旦某個(gè)數(shù)大(小小) ,馬上替,馬上替 換;所有數(shù)比較完,最大換;所有數(shù)比較完,最大(小小)值也就獲得值也就獲得。 第11章程序設(shè)計(jì)基礎(chǔ) 28 例例 對輸入的若干個(gè)學(xué)生成績,求最高分。對輸入的若干個(gè)學(xué)生成績,求最高分。 TotalSalary = 0 n =Input Box( 輸入學(xué)生人數(shù)輸入學(xué)生人數(shù)) Max= InputBox( “輸入第輸入第1個(gè)學(xué)生的成績個(gè)學(xué)生的成績”) For i = 2 To n mark =Input Box( 輸入第輸入第 & i & 個(gè)學(xué)生的成績個(gè)學(xué)生的成績) If mark Max Then Max = mark Next i
27、Print Max 第11章程序設(shè)計(jì)基礎(chǔ) 29 編制程序的工作稱為程序設(shè)計(jì),為了有效地進(jìn)行程序設(shè)編制程序的工作稱為程序設(shè)計(jì),為了有效地進(jìn)行程序設(shè) 計(jì),必須掌握兩方面知識:計(jì),必須掌握兩方面知識: v一門程序設(shè)計(jì)語言一門程序設(shè)計(jì)語言 v解題的算法解題的算法 一個(gè)好的程序有可靠性、易讀性、高效性、可維護(hù)性等一個(gè)好的程序有可靠性、易讀性、高效性、可維護(hù)性等 良好特性。為達(dá)到這些目標(biāo),應(yīng)采用好的程序設(shè)計(jì)方法,以良好特性。為達(dá)到這些目標(biāo),應(yīng)采用好的程序設(shè)計(jì)方法,以 便從方法上更有助于設(shè)計(jì)出具有上述特性的程序。便從方法上更有助于設(shè)計(jì)出具有上述特性的程序。 第11章程序設(shè)計(jì)基礎(chǔ) 30 分析問題分析問題 設(shè)計(jì)
28、程序(總體設(shè)計(jì)和詳細(xì)設(shè)計(jì))設(shè)計(jì)程序(總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)) 程序編碼以及編輯、編譯和連接程序編碼以及編輯、編譯和連接 測試程序測試程序 編寫程序文檔編寫程序文檔 黑盒測試黑盒測試 白盒測試白盒測試 找出程序中的找出程序中的 錯(cuò)誤錯(cuò)誤 第11章程序設(shè)計(jì)基礎(chǔ) 31 1. 1. 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì) 結(jié)構(gòu)化程序的結(jié)構(gòu)簡單清晰,可讀性強(qiáng),模塊化強(qiáng),描結(jié)構(gòu)化程序的結(jié)構(gòu)簡單清晰,可讀性強(qiáng),模塊化強(qiáng),描 述方式符合人們解決復(fù)雜問題的普遍規(guī)律,在軟件重用性、述方式符合人們解決復(fù)雜問題的普遍規(guī)律,在軟件重用性、 軟件維護(hù)等方面有所進(jìn)步,可以顯著提高軟件開發(fā)的效率。軟件維護(hù)等方面有所進(jìn)步,可以顯著提高軟件開
29、發(fā)的效率。 程序設(shè)計(jì)模式:程序設(shè)計(jì)模式:“數(shù)據(jù)結(jié)構(gòu)算法數(shù)據(jù)結(jié)構(gòu)算法” 在軟件設(shè)計(jì)和實(shí)現(xiàn)過程中,采用自頂向下、逐步細(xì)在軟件設(shè)計(jì)和實(shí)現(xiàn)過程中,采用自頂向下、逐步細(xì) 化的模塊化程序設(shè)計(jì)原則?;哪K化程序設(shè)計(jì)原則。 在代碼編寫時(shí),采用順序、選擇、循環(huán)三種基本控在代碼編寫時(shí),采用順序、選擇、循環(huán)三種基本控 制結(jié)構(gòu),避免使用制結(jié)構(gòu),避免使用GOTOGOTO語句。語句。 第11章程序設(shè)計(jì)基礎(chǔ) 32 2.2.面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì) 將問題分解為對象,對象的數(shù)據(jù)將問題分解為對象,對象的數(shù)據(jù)屬性,作用于數(shù)據(jù)屬性,作用于數(shù)據(jù) 的操作的操作方法,將屬性和方法封裝成一個(gè)整體,供程序設(shè)方法,將屬性和方法封裝成
30、一個(gè)整體,供程序設(shè) 計(jì)者使用。對象之間的相互作用通過消息傳遞來實(shí)現(xiàn)。計(jì)者使用。對象之間的相互作用通過消息傳遞來實(shí)現(xiàn)。 程序設(shè)計(jì)模式:程序設(shè)計(jì)模式:“對象消息對象消息”。 面向?qū)ο蟮姆纸馔怀觯鹤鍪裁??大量的工作由相?yīng)的對面向?qū)ο蟮姆纸馔怀觯鹤鍪裁??大量的工作由相?yīng)的對 象來完成,程序員在應(yīng)用程序中只需說明要求對象完成的任象來完成,程序員在應(yīng)用程序中只需說明要求對象完成的任 務(wù)。務(wù)。 結(jié)構(gòu)化結(jié)構(gòu)化程序設(shè)計(jì)程序設(shè)計(jì)的分解突出:如何做?強(qiáng)調(diào)代碼的功能的分解突出:如何做?強(qiáng)調(diào)代碼的功能 是如何得以完成。是如何得以完成。 面向?qū)ο蟮某绦蛟O(shè)計(jì)語言有:面向?qū)ο蟮某绦蛟O(shè)計(jì)語言有: C+、Java、Visual
31、Basic等等 。 第11章程序設(shè)計(jì)基礎(chǔ) 33 1. FORTRAN語言語言 世界上最早出現(xiàn)的高級程序設(shè)計(jì)語言,世界上最早出現(xiàn)的高級程序設(shè)計(jì)語言,用于科學(xué)計(jì)算。用于科學(xué)計(jì)算。 從從1954年推出的年推出的FORTRAN起,版本不斷更新,功能不斷起,版本不斷更新,功能不斷 增強(qiáng),結(jié)構(gòu)化程度提高,使古老的語言保持旺盛的生命力,增強(qiáng),結(jié)構(gòu)化程度提高,使古老的語言保持旺盛的生命力, 最流行的版本是最流行的版本是FORTRAN 77,目前使用,目前使用FORTRAN 90。 FOTRAN90具有具有Pascal語言的特征,引入了類型、遞歸、指語言的特征,引入了類型、遞歸、指 針、動(dòng)態(tài)數(shù)組等概念。針、動(dòng)態(tài)
32、數(shù)組等概念。 第11章程序設(shè)計(jì)基礎(chǔ) 34 2. COBOL語言語言 1959年年開發(fā)出來,主要用于商業(yè)數(shù)據(jù)處理。開發(fā)出來,主要用于商業(yè)數(shù)據(jù)處理。80年代后隨年代后隨 著數(shù)據(jù)庫的廣泛應(yīng)用,該語言使用面減少,目前銀行系統(tǒng)還著數(shù)據(jù)庫的廣泛應(yīng)用,該語言使用面減少,目前銀行系統(tǒng)還 較多采用較多采用COBOL語言開發(fā)。語言開發(fā)。 COBOL程序很象寫英文文章,要完成同樣功能的程序程序很象寫英文文章,要完成同樣功能的程序 是其他語言的兩倍長。再簡單的程序都由是其他語言的兩倍長。再簡單的程序都由4個(gè)部組成:個(gè)部組成: 標(biāo)識部(標(biāo)識部(IDENTIFICATION)描述程序描述程序 環(huán)境部(環(huán)境部(ENVIRO
33、NMENT)描述運(yùn)行程序的計(jì)算機(jī)系描述運(yùn)行程序的計(jì)算機(jī)系 統(tǒng)統(tǒng) 數(shù)據(jù)部(數(shù)據(jù)部(DATA)描述程序中所有數(shù)據(jù)的格式描述程序中所有數(shù)據(jù)的格式 程序部(程序部(PROCEDURE)是程序的主體是程序的主體 第11章程序設(shè)計(jì)基礎(chǔ) 35 3. Pascal語言語言 1968年開發(fā)出來,年開發(fā)出來,Pascal語言是一種通用的編程語言,語言是一種通用的編程語言, 最大的優(yōu)點(diǎn)是語法嚴(yán)謹(jǐn)、豐富的數(shù)據(jù)類型、結(jié)構(gòu)化編程概念,最大的優(yōu)點(diǎn)是語法嚴(yán)謹(jǐn)、豐富的數(shù)據(jù)類型、結(jié)構(gòu)化編程概念, 成為在成為在C語言問世前,風(fēng)靡全球、最受歡迎的語言之一,尤語言問世前,風(fēng)靡全球、最受歡迎的語言之一,尤 其適合于教學(xué)和應(yīng)用軟件的開發(fā)。
34、其適合于教學(xué)和應(yīng)用軟件的開發(fā)。80年代,隨著年代,隨著C語言的流語言的流 行,行, Pascal語言走向了衰落。目前,在商業(yè)上僅有語言走向了衰落。目前,在商業(yè)上僅有Inprise公公 司(即原司(即原Borland)仍在開發(fā))仍在開發(fā)Pascal語言系統(tǒng)語言系統(tǒng)Delphi,它用了,它用了 面向?qū)ο笈c軟件組件的概念,用于開發(fā)商用軟件。面向?qū)ο笈c軟件組件的概念,用于開發(fā)商用軟件。 第11章程序設(shè)計(jì)基礎(chǔ) 36 4. BASIC語言語言 1964年在年在FOTRAN語言的基礎(chǔ)上開發(fā)的,是最容易學(xué)語言的基礎(chǔ)上開發(fā)的,是最容易學(xué) 習(xí)的語言之一。常用的習(xí)的語言之一。常用的BASIC語言版本有:語言版本有:
35、BASIC、 GWBASIC、Turbo BASIC、Quick BASIC、QBASIC、 Visual BASIC。 1991年微軟公司推出了基于年微軟公司推出了基于Windows環(huán)境的環(huán)境的Visual Basic1.0版,目前最流行的是版,目前最流行的是6.0版,網(wǎng)絡(luò)功能更強(qiáng)的是版,網(wǎng)絡(luò)功能更強(qiáng)的是 VB.net。Visual Basic在語法結(jié)構(gòu)上同在語法結(jié)構(gòu)上同C、Pascal相似,采用相似,采用 可視化界面設(shè)計(jì)、事件驅(qū)動(dòng)的編程機(jī)制和基于對象的程序設(shè)可視化界面設(shè)計(jì)、事件驅(qū)動(dòng)的編程機(jī)制和基于對象的程序設(shè) 計(jì)方法,有利于軟件的開發(fā)和維護(hù),極其易于被非計(jì)算機(jī)專計(jì)方法,有利于軟件的開發(fā)和維護(hù),極其易于被非計(jì)算機(jī)專 業(yè)人員掌握使用。業(yè)人員掌握使用。 第11章程序設(shè)計(jì)基礎(chǔ) 37 5. C與與C+語言語言 1972年貝爾實(shí)驗(yàn)室設(shè)計(jì)、開發(fā)了年貝爾實(shí)驗(yàn)室設(shè)計(jì)、開發(fā)了C語言,當(dāng)時(shí)主要用于語言,當(dāng)時(shí)主要用于 編寫編寫Unix操作系統(tǒng)的。操作系統(tǒng)的。C語言功能豐富、使用靈活、簡潔明語言功能豐富、使用靈活、簡潔明 了、編譯產(chǎn)生的代碼短、執(zhí)行速度快、可移植性強(qiáng);了、
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度環(huán)保項(xiàng)目研發(fā)合作協(xié)議
- 2024臨時(shí)工合同模板
- 2024年度倉儲合同倉儲物及倉儲期限
- 2024年度軟件定制開發(fā)合同
- 2024年 衛(wèi)星發(fā)射與運(yùn)營服務(wù)合同
- 2024年商標(biāo)轉(zhuǎn)讓合同注意事項(xiàng)
- 2024年度碳排放權(quán)交易合同交易數(shù)量與交易價(jià)格
- 2(2024版)網(wǎng)絡(luò)安全風(fēng)險(xiǎn)評估合同
- 2024年度物業(yè)管理合同:住宅小區(qū)物業(yè)管理服務(wù)
- 2024年合作伙伴尋找居間合同 with 合作意向及中介費(fèi)用的規(guī)定
- 2024-2025學(xué)年上海市普陀區(qū)八年級(上)期中數(shù)學(xué)試卷
- 假期補(bǔ)課協(xié)議書
- 電子商務(wù)支付結(jié)算系統(tǒng)開發(fā)合同
- 服務(wù)質(zhì)量、保證措施
- (必練)廣東省軍隊(duì)文職(經(jīng)濟(jì)學(xué))近年考試真題試題庫(含答案)
- 含羞草天氣課件
- 2024年安全生產(chǎn)知識競賽考試題庫及答案(共五套)
- 22《鳥的天堂》課件
- 農(nóng)業(yè)灌溉裝置市場環(huán)境與對策分析
- 新疆烏魯木齊市第十一中學(xué)2024-2025學(xué)年八年級上學(xué)期期中道德與法治試卷
- 部編版小學(xué)五年級上冊道法課程綱要(知識清單)
評論
0/150
提交評論