第一章程序設(shè)計(jì)與C++語(yǔ)言初步_第1頁(yè)
第一章程序設(shè)計(jì)與C++語(yǔ)言初步_第2頁(yè)
第一章程序設(shè)計(jì)與C++語(yǔ)言初步_第3頁(yè)
第一章程序設(shè)計(jì)與C++語(yǔ)言初步_第4頁(yè)
第一章程序設(shè)計(jì)與C++語(yǔ)言初步_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第一章第一章 程序設(shè)計(jì)與C語(yǔ)言初步 算法、實(shí)體與程序 程序設(shè)計(jì)方法與程序設(shè)計(jì)語(yǔ)言 Backus-Naur范式 C+語(yǔ)言的程序結(jié)構(gòu) 面向?qū)ο蟪绦蛟O(shè)計(jì)思維方式 概述n程序程序:完成一定功能的指令或語(yǔ)句序列n程序設(shè)計(jì)程序設(shè)計(jì):編寫計(jì)算機(jī)程序的活動(dòng)n程序設(shè)計(jì)方法n程序設(shè)計(jì)語(yǔ)言n本課程以面向?qū)ο蟪绦蛟O(shè)計(jì)方法為核心,并選用C+程序設(shè)計(jì)語(yǔ)言為工具來介紹程序設(shè)計(jì)一、算法與程序n例例: 求解最大公約數(shù)的歐幾里德算法。步驟1:如果p a; cinb; c=a+b; coutc; n這個(gè)程序?qū)崿F(xiàn)的算法是: 輸入a 輸入b 計(jì)算a+b的和并存于c中 輸出c的值(即a+b的和) a,b,c稱為變量,是用來記錄程序所需要

2、的數(shù)據(jù)。程序在計(jì)算機(jī)內(nèi)部的表示n機(jī)器語(yǔ)言:二進(jìn)制指令n匯編語(yǔ)言:用簡(jiǎn)單的符號(hào)表示二進(jìn)制指令n高級(jí)語(yǔ)言n要把高級(jí)語(yǔ)言程序翻譯成計(jì)算機(jī)能理解的機(jī)器語(yǔ)言n翻譯n編譯編譯n解釋解釋二、程序設(shè)計(jì)的演變1. 早期的程序設(shè)計(jì)手工作坊式手工作坊式2. 結(jié)構(gòu)化程序設(shè)計(jì)n采用三種基本結(jié)構(gòu):順序、循環(huán)、選擇分支順序、循環(huán)、選擇分支n單入口/單出口控制結(jié)構(gòu)n以流程為主,圍繞操作本身來設(shè)計(jì)3. 面向?qū)ο蟪绦蛟O(shè)計(jì)n圍繞被操作的數(shù)據(jù)來設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)n結(jié)構(gòu)化程序設(shè)計(jì)的主要思想:由三種基本控制結(jié)構(gòu)組成程序n這三種結(jié)構(gòu)的示意圖如下:可以看到,三種基本結(jié)構(gòu)都具有以下特點(diǎn): 有一個(gè)入口。 有一個(gè)出口。 結(jié)構(gòu)中每一部分都應(yīng)當(dāng)有被執(zhí)

3、行到的機(jī)會(huì),也就是說,每一部分都應(yīng)當(dāng)有一條從入口到出口的路徑通過它(至少通過一次)。 沒有死循環(huán)(無終止的循環(huán))。面向?qū)ο蟪绦蛟O(shè)計(jì)n1)實(shí)體:現(xiàn)實(shí)生活中的客觀事物(人、動(dòng)物、企業(yè)、部門等等)。一個(gè)實(shí)體應(yīng) 有一個(gè)名字,應(yīng)有描述這個(gè)實(shí)體特征的數(shù)據(jù)(狀態(tài)),應(yīng)有作用于這些實(shí)體上面的操作(行為)。n2)對(duì)象:面向?qū)ο蠓椒ㄖ械膶?duì)象,是系統(tǒng)中用來描述客觀事物的一個(gè)實(shí)體,它是用 于構(gòu)成系統(tǒng)的一個(gè)基本單位。nC+使用類類來描述對(duì)象三、C+語(yǔ)言程序n源程序(源代碼)n用程序設(shè)計(jì)語(yǔ)言編寫的程序存放在一個(gè)文本文件中。n后綴為 .cppn目標(biāo)程序(目標(biāo)代碼)n用編譯程序?qū)⒃闯绦蜣D(zhuǎn)換為計(jì)算機(jī)能理解的形式n后綴為 .ob

4、jn可執(zhí)行代碼n把目標(biāo)代碼和現(xiàn)有的庫(kù)通過鏈接程序產(chǎn)生可執(zhí)行代碼n后綴為 .exe開發(fā)一個(gè)C+程序的過程源程序源程序目標(biāo)程序目標(biāo)程序可執(zhí)行代碼可執(zhí)行代碼庫(kù)庫(kù)編譯程序鏈接程序.cpp.hpp.obj.exe1.編輯編輯 2.編譯編譯 3.鏈接鏈接 4.運(yùn)行運(yùn)行四、程序設(shè)計(jì)語(yǔ)言的定義程序設(shè)計(jì)語(yǔ)言的定義1.程序設(shè)計(jì)語(yǔ)言的描述n語(yǔ)法語(yǔ)法(syntax):由程序語(yǔ)言基本符號(hào)組成程序中各個(gè)語(yǔ)法成分的一組規(guī)則。n語(yǔ)義語(yǔ)義(semantics):程序設(shè)計(jì)語(yǔ)言中按語(yǔ)法規(guī)則構(gòu)成的各個(gè)語(yǔ)法成分的意義 。2.字符集n字符集字符集:任何一種語(yǔ)言都是建立在某一個(gè)有限的字符集上的。C+語(yǔ)言使用的是ASCII字符集。n單詞單詞

5、:由字符集中的若干字符構(gòu)成且具有某一特定含義的字符序列。n保留字保留字:有些語(yǔ)言中預(yù)先規(guī)定一些單詞具有特殊的意義,并保留其名字,不允許程序員另作它用,這種單詞被稱為保留字。n關(guān)鍵字關(guān)鍵字:還有些語(yǔ)言規(guī)定一些特殊單詞在一定的上下文中具有預(yù)先定義的特殊意義,這種單詞被稱為關(guān)鍵字。注意注意nC/C是大小寫字母是敏感的,同一字母的大寫狀態(tài)和小寫狀態(tài)將視為22個(gè)不同字符。下劃線視為一個(gè)字母。3.語(yǔ)法描述n形式化定義程序設(shè)計(jì)語(yǔ)言的語(yǔ)法一般包括一個(gè)明確定義的字符集和一組有限的規(guī)則,這些規(guī)則規(guī)定符號(hào)如何組成表達(dá)式、語(yǔ)義 和程序等形式。n 較常用的語(yǔ)法定義方法是Backus-Naur范式(簡(jiǎn)寫為BNF)和語(yǔ)法圖

6、。 Backus-Naur范式(BNF)n元符號(hào):元符號(hào):BNF規(guī)定了一些符號(hào)作為描述語(yǔ)法的機(jī)制,稱作元符號(hào),包括: := 表示“定義為”。 | 表示“或者”。 表示“任選”,即方括號(hào)內(nèi)的內(nèi)容可以出現(xiàn)一次或不出現(xiàn)。 表示“重復(fù)”,即花括號(hào)內(nèi)的內(nèi)容可以出現(xiàn)零次或任意多次。n終結(jié)符號(hào):終結(jié)符號(hào):BNF中不必定義的符號(hào)或字符串,如A、B、0、1等n非終結(jié)符號(hào):非終結(jié)符號(hào):在用法規(guī)則中需要加以定義的語(yǔ)法變量,如字母、數(shù)字、標(biāo)識(shí)符等每一個(gè)非終結(jié)符號(hào)都必須有一個(gè)規(guī)則定義它,非終結(jié)符號(hào)按規(guī)則總是可以展開為一串終結(jié)符號(hào)。例:標(biāo)識(shí)符的BNF描述。標(biāo)識(shí)符 :=字母 字母 | 數(shù)字 字母 := A | B | |

7、Z | a | b | | z | _數(shù)字 := 0 | 1 | | 9 整數(shù)的BNF描述整數(shù) :=正負(fù)號(hào) 無符號(hào)整數(shù)無符號(hào)整數(shù) := 數(shù)字 數(shù)字 正負(fù)號(hào) :=+ | -數(shù)字 :=0 | 1 | | 9 非零數(shù)字非零數(shù)字 := 1 | | 9數(shù)字 :=0 | 非零數(shù)字| 0語(yǔ)法圖n語(yǔ)法圖是與BNF等價(jià)的另一種語(yǔ)法描述方法,但比BNF更加直觀。n一條BNF可轉(zhuǎn)換成一個(gè)語(yǔ)法圖BNF轉(zhuǎn)換為語(yǔ)法圖的規(guī)則 n(1) 每一個(gè)終結(jié)符號(hào)的出現(xiàn)對(duì)應(yīng)于 n(2) 每一個(gè)非終結(jié)符號(hào)X的出現(xiàn)對(duì)應(yīng)于 X n(3) 形如P := V1 V2 Vk則轉(zhuǎn)換為 V1V2 Vk n(4)形如P := V1 | V2 | | Vk

8、則轉(zhuǎn)換為V1 V2 Vk n(5) 形如P := V 則轉(zhuǎn)換為 V n(6) 形如P := V 則轉(zhuǎn)換為 V例:標(biāo)識(shí)符可用以下語(yǔ)法圖來定義 字母 字母 數(shù)字五、 C C程序的基本結(jié)構(gòu)程序的基本結(jié)構(gòu)1.基本概念 n程序程序:一個(gè)程序是實(shí)體的屬性及行為在計(jì)算機(jī)內(nèi)的表示。n類類:是對(duì)一群具有相同屬性,表現(xiàn)相同行為的對(duì)象的描述 。n對(duì)象對(duì)象:具體的單個(gè)存在的實(shí)體。n主函數(shù)主函數(shù):具有特定名字“main”函數(shù),由它去激活(調(diào)用)一個(gè)對(duì)象的行為(函數(shù)) 。2.C+程序的基本結(jié)構(gòu)n例1:一個(gè)很特殊的例子-只有一個(gè)主函數(shù) #include void main() coutComputer Science.n;

9、 注意:nC+語(yǔ)言程序中有一個(gè)特殊的函數(shù),稱為主函數(shù)主函數(shù)main( ),這是程序執(zhí)行的入口,用于實(shí)現(xiàn)單入口/單出口結(jié)構(gòu)。n一個(gè)一個(gè)C語(yǔ)言程序有且只有一個(gè)主函數(shù)語(yǔ)言程序有且只有一個(gè)主函數(shù)/銀行帳戶存取款程序#include /利用函數(shù)庫(kù)iostream提供的操作在屏幕上輸出數(shù)據(jù)class ACCOUNT float balance; /本帳戶當(dāng)前的余額public: /開設(shè)帳戶,同時(shí)存入金額amount. ACCOUNT(float amount) balance=amount; /往帳戶中存款,存款金額為amount. void deposit(float amount) balance=b

10、alance+amount; 例2:一個(gè)帶有類完整的C+語(yǔ)言程序。/從帳戶中取款,取款金額為amount;如果取款成功則用1表示,否則用0表示。 int withdraw(float amount) if(amountbalance) /判斷是否透支 return 0; /如果透支則不作取款,返回0表示取款不成功 else balance=balance-amount; /減少當(dāng)前的存款余額 return 1; /返回1表示取款成功 /查詢帳戶中當(dāng)前的余額。 float get_balance() return balance; /返回當(dāng)前的余額 ;/主函數(shù)main() /開設(shè)帳戶 ACCOU

11、NT acc1(500); /開設(shè)第一個(gè)帳戶acc1,同時(shí)存入500元 ACCOUNT acc2(1500);/開設(shè)第二個(gè)帳戶acc2,同時(shí)存入1500元 /存款與取款 acc1.deposit(255.5); /往帳戶acc1中存入255.5元 acc2.deposit(500); /往帳戶acc2中存入500元 acc2.withdraw(700); /往帳戶acc2中取出700元 acc1.withdraw(700); /往帳戶acc1中取出700元 acc2.withdraw(350); /往帳戶acc2中取出350元 /查詢余額并在屏幕上顯示 cout帳號(hào)1的余額還有acc1.get_balance()元n; cout帳號(hào)2的余額還有acc2.get_balance()元n; return 1; n由一個(gè)主函數(shù),加上0個(gè)或者若干個(gè)其它函數(shù)、0個(gè)或若干個(gè)其它的類組成。n程序的執(zhí)行總是從主函數(shù)開始,而不管主函數(shù)放在程序的任何位置; n由主函數(shù)調(diào)用其它函數(shù)(類的行為)、主函數(shù)執(zhí)行完,程序也就執(zhí)行完。歸納歸納C程序的基本構(gòu)成:3.兩種退化現(xiàn)象 n 1)只有函數(shù),沒有類。除主函數(shù)外,還可能

溫馨提示

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

評(píng)論

0/150

提交評(píng)論