版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第3章 程序設(shè)計(jì)初步3.1 面向過(guò)程的程序設(shè)計(jì)和算法3.2 C+程序結(jié)構(gòu)和語(yǔ)句3.3 C+的輸入與輸出3.4 C+程序的控制結(jié)構(gòu)3.5 程序舉例在面向過(guò)程的程序設(shè)計(jì)中,程序設(shè)計(jì)者必須指定計(jì)算機(jī)執(zhí)行的具體步驟,清晰程序要“做什么”,清晰“怎么做”,并寫出一個(gè)個(gè)語(yǔ)句,安排好它們的執(zhí)行順序。步驟要合理,保證它的正確性和具有較高的效率,這就是算法(algorithm)需要解決的問(wèn)題。3.1 面向過(guò)程的程序設(shè)計(jì)和算法一個(gè)面向過(guò)程的程序應(yīng)包括以下兩方面內(nèi)容:(1) 對(duì)數(shù)據(jù)的描述。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)(data structure)。(2) 對(duì)操作的描述。即操作步驟,也就是算
2、法(algorithm)。算法是處理問(wèn)題的一系列的步驟。對(duì)于面向過(guò)程的程序,可以用下面的公式表示: 程序=算法+數(shù)據(jù)結(jié)構(gòu) 如:處理的數(shù)據(jù)如何讀入與存放?如何處理?結(jié)果如何存放與輸出?(必須考慮與設(shè)計(jì)清晰?。?)算法可分為兩大類別:數(shù)值算法和非數(shù)值算法。數(shù)值算法的目的是求數(shù)值解。非數(shù)值算法包括的面十分廣泛,最常見(jiàn)的是用于事務(wù)管理領(lǐng)域。C+既支持面向過(guò)程的程序設(shè)計(jì),又支持面向?qū)ο蟮某绦蛟O(shè)計(jì)。無(wú)論面向過(guò)程的程序設(shè)計(jì)還是面向?qū)ο蟮某绦蛟O(shè)計(jì),都離不開(kāi)算法設(shè)計(jì)。3.1.1 算法的概念1、自然語(yǔ)言2、流程圖3、偽代碼 介于自然語(yǔ)言和計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言之間的文字和符號(hào)來(lái)描述算法。一般無(wú)固定、嚴(yán)格的語(yǔ)法規(guī)則,
3、只須把意思表達(dá)清楚,并且要書寫的格式要寫成清晰易讀的形式。4、計(jì)算機(jī)語(yǔ)言表示3.1.2 算法的表示1、程序結(jié)構(gòu) 一個(gè)程序包含一個(gè)或多個(gè)程序單位,C+程序單位一般由3個(gè)部分組成:(1)預(yù)處理指令。如#include和#define指令。(2)全局聲明,如果需要時(shí)。(3)函數(shù)。例3. 1:#include using namespace std;int a=3;int main()float b; b=4.5; coutab; return 0; 3. 2 C+程序結(jié)構(gòu)和語(yǔ)句2、語(yǔ)句(1)說(shuō)明語(yǔ)句 (3)空語(yǔ)句,單獨(dú)的一個(gè)分號(hào)。(4)復(fù)合語(yǔ)句 一對(duì) 之間的若干個(gè)語(yǔ)句的組合,如:3. 2 C+程序結(jié)
4、構(gòu)和語(yǔ)句如 int a;(2)執(zhí)行語(yǔ)句控制語(yǔ)句函數(shù)調(diào)用語(yǔ)句,如 sort(x,y,z);表達(dá)式語(yǔ)句,如 i=i+1;t=a; a=b; b=t; 相對(duì)內(nèi)存,處理的數(shù)據(jù)如何進(jìn)行輸入和輸出?輸入和輸出并不是C+語(yǔ)言中的正式組成成分。C和C+本身都沒(méi)有為輸入和輸出提供專門的語(yǔ)句結(jié)構(gòu)。輸入輸出不是由C+本身定義的,而是在編譯系統(tǒng)提供的I/O庫(kù) 中定義的。C+的輸出和輸入是用“流”(stream)的方式實(shí)現(xiàn)的。下圖分別表示C+通過(guò)流進(jìn)行輸入輸出的過(guò)程。3.3 C+的輸入與輸出 有關(guān)流對(duì)象cin、cout和流運(yùn)算符的定義等信息是存放在C+的輸入輸出流庫(kù)中的,因此使用cin、cout和流運(yùn)算符,就必須: #
5、include 為了敘述方便,常常把由cin和流提取運(yùn)算符“”實(shí)現(xiàn)輸入的語(yǔ)句稱為輸入語(yǔ)句或cin語(yǔ)句; 把由cout和流插入運(yùn)算符“”實(shí)現(xiàn)輸出的語(yǔ)句稱為輸出語(yǔ)句或cout語(yǔ)句。 流運(yùn)算符相當(dāng)于一個(gè)輸入或輸出函數(shù),由對(duì)象調(diào)用之。cout語(yǔ)句的一般格式為cout表達(dá)式1表達(dá)式2變量1變量2變量n;輸出流中的數(shù)據(jù)在系統(tǒng)默認(rèn)的設(shè)備(一般為顯示器)輸出。3.3.1 輸入流與輸出流的基本操作例如: int i; float x; cinix; coutic1c2c3;若輸入:abc,則c1、c2、c3的值分別為字符a、b、c若輸入: abc,則c1、c2、c3的值分別為字符、a、若輸入:a b c,則c1
6、、c2、c3的值分別為字符a、b、c則i的值為12,x的值為34.5則i的值為34,x的值為0.5輸出為:340.5 有時(shí)為了輸入輸出特殊的要求,如在輸出實(shí)數(shù)時(shí)規(guī)定字段寬度,只保留兩位小數(shù),數(shù)據(jù)向左或向右對(duì)齊等。 C+提供了在輸入輸出流中使用的控制符(有的書中稱為操縱符),見(jiàn)書中表3.1,P.54頁(yè)。 需要注意的是: 如果使用了控制符,在程序單位的開(kāi)頭除了要加iostream頭文件外,還要加iomanip頭文件。3.3.2 在輸入流與輸出流中使用控制符設(shè)置輸出內(nèi)容的格式 用字符和字符串 coutntm“n”; cout“n=”n“,m=”mn;1020n=10,m=20 用setw()函數(shù) (
7、 #include ) coutsetw(4)nsetw(4)mn; setw只對(duì)其后一個(gè)輸出項(xiàng)有效10 20 用科學(xué)計(jì)數(shù)法表示實(shí)數(shù)(純小數(shù),小數(shù)后6位) cout.setf(ios:scientific,ios:floatfield); 輸出十六進(jìn)制/八進(jìn)制整數(shù) coutoctnthexmn; 只適用于整型數(shù)。12 14如 3.140000e+000C+中用于輸入和輸出單個(gè)字符的函數(shù):其中最常用的有g(shù)etchar函數(shù)和putchar函數(shù)。1、putchar函數(shù)(字符輸出函數(shù))putchar函數(shù)的作用是向終端輸出一個(gè)字符。如putchar(c);它輸出字符變量的值。2、getchar函數(shù)(字符
8、輸入函數(shù))此函數(shù)的作用是從終端輸入一個(gè)字符。其一般形式為getchar( ),函數(shù)的值就是從輸入設(shè)備得到的字符。3.3.3 用getchar和putchar函數(shù)進(jìn)行字符的輸入和輸出例3.2 輸出單個(gè)字符。#include /或者 #include using namespace std;int main( )char a,b,c; a=B;b=O; c=getchar( ); putchar(a);putchar(b);putchar(c+32);putchar(n); return 0;用putchar可以輸出轉(zhuǎn)義字符。如果從鍵盤輸入大寫字母A并按回車鍵,第三個(gè)輸出的結(jié)果在屏幕上實(shí)際顯示就是
9、小寫字母a。請(qǐng)注意,getchar( )只能接收一個(gè)字符。getchar函數(shù)得到的字符可以賦給一個(gè)字符變量或整型變量,也可以不賦給任何變量,作為表達(dá)式的一部分。3. 4 C+程序的基本結(jié)構(gòu)1. 順序結(jié)構(gòu)2. 選擇結(jié)構(gòu)3. 循環(huán)結(jié)構(gòu) 順序結(jié)構(gòu)a塊b塊AB選擇結(jié)構(gòu)a塊a塊成立不成立條件AB條件a 塊成立不成立AB當(dāng)型循環(huán)結(jié)構(gòu)條件a 塊成立不成立AB直到型循環(huán)結(jié)構(gòu)一、條件語(yǔ)句1. 單選條件語(yǔ)句(if語(yǔ)句) 語(yǔ)句格式:條 件 if(表達(dá)式) S 執(zhí)行過(guò)程3.4.1 選擇結(jié)構(gòu)語(yǔ)句條件語(yǔ)句10例3.3 從鍵盤輸入一個(gè)數(shù),若該數(shù)為正數(shù),輸出1。條 件S110S22. 雙選條件語(yǔ)句(if.else語(yǔ)句) 語(yǔ)句
10、格式: if(表達(dá)式) S1 else S2 執(zhí)行過(guò)程例3.4 從鍵盤輸入一個(gè)數(shù)。若該數(shù)為正數(shù),輸出1; 否則輸出-1。3.4.1 選擇結(jié)構(gòu)語(yǔ)句條件1條件2條件3S1S2S3S41110003. 嵌套的條件語(yǔ)句 語(yǔ)句格式: if(表達(dá)式1) S1 else if(表達(dá)式2) S2 else if(表達(dá)式3) S3 else S4 執(zhí)行過(guò)程例3.5 從鍵盤輸入一個(gè)實(shí)數(shù)。若該數(shù)為正數(shù),輸出1; 若為負(fù)數(shù)輸出-1;否則,輸出0。3.4.1 選擇結(jié)構(gòu)語(yǔ)句 if后面的表達(dá)式可以是邏輯表達(dá)式、關(guān)系表達(dá)式、賦值表達(dá)式等,其值非0時(shí)等同于1,表示條件成立;否則為0表示條件不成立。if和else后的語(yǔ)句可以是單
11、個(gè)語(yǔ)句,也可以是復(fù)合語(yǔ)句,還可以是空語(yǔ)句。if與else的配對(duì)規(guī)則:else總是與其前面的同一個(gè)塊中的最近的尚未配對(duì)的if配對(duì)。 例如:int a=5,b=10,c=20,d=0;if(a=b) if(b5)a=30;d=100;else d=200;else d=300;a的值為30,d的值為1003.4.1 選擇結(jié)構(gòu)語(yǔ)句例3.6 求一元二次方程ax2+bx+c=0的解。其中系數(shù)a、b、c由鍵盤輸入。 可用數(shù)學(xué)庫(kù)函數(shù)sqrt(參數(shù))求參數(shù)的平方根, 此時(shí)應(yīng)有頭文件:#include例3.7 判斷從鍵盤輸入的字符的種類。假設(shè)字符分為5類:數(shù)字、大寫字母、小寫字母、控制字符(其ASCII值小于3
12、2)和其他字符。3.4.1 選擇結(jié)構(gòu)語(yǔ)句基本格式:switch (表達(dá)式)case 常量表達(dá)式 1:語(yǔ)句序列1 case 常量表達(dá)式 2:語(yǔ)句序列2 case 常量表達(dá)式 n:語(yǔ)句序列n default : 語(yǔ)句序列n+1執(zhí)行過(guò)程以case中的常量表達(dá)式的值為入口標(biāo)號(hào),由此開(kāi)始順序執(zhí)行,遇到break語(yǔ)句時(shí)結(jié)束switch語(yǔ)句的執(zhí)行。二、開(kāi)關(guān)語(yǔ)句switch 后面的表達(dá)式通常為變量表達(dá)式; case 后面的表達(dá)式必須為常量表達(dá)式;上述表達(dá)式值的類型通常為整型;default分支不是必須的,習(xí)慣上放在最后面,當(dāng)放在前面滿足條件被執(zhí)行時(shí),若沒(méi)有break,則后續(xù)case會(huì)被繼續(xù)執(zhí)行,不管是否匹配。
13、 例如:當(dāng)a的值為5時(shí),輸出25150當(dāng)a的值為10時(shí),輸出150當(dāng)a的值為15時(shí),輸出5二、 開(kāi)關(guān)語(yǔ)句int a,m=15,n=10;cina;switch(a) default:coutm-n; case 5:coutm+n; case 10:couta;switch(a) case 5:coutm+n; case 10:coutm*n;break; default:cout=b?a:b;等同于: if(a=b)max=a; else max=b;三、條件運(yùn)算符三目運(yùn)算符允許嵌套使用,如ab?ac?a:c:bc?b:c; 當(dāng)需要程序重復(fù)地做相似工作時(shí),可通過(guò)循環(huán)語(yǔ)句實(shí)現(xiàn)。該類問(wèn)題通常有4個(gè)
14、要素: 循環(huán)變量的初始化; 循環(huán)的條件; 循環(huán)體 (循環(huán)過(guò)程中要做的事); 改變循環(huán)控制變量的值。例如:求S=1+2+3+.+100的值。算法:S=S+i(i=1,2,3,.,100) S=0i=1 i=100 S=S+i(S+=i) i=i+1(i+)3.4.2 循環(huán)結(jié)構(gòu)語(yǔ)句一、while 語(yǔ)句語(yǔ)句格式while (表達(dá)式) S 循環(huán)體,可以是單語(yǔ)句、復(fù)合語(yǔ)句,甚至空語(yǔ)句執(zhí)行過(guò)程 先判斷表達(dá)式的值,非 0 時(shí)執(zhí)行語(yǔ)句S;然后再判斷表達(dá)式的值,直至表達(dá)式的值為0時(shí),退出循環(huán)。表達(dá)式STF例3.9 用while語(yǔ)句求S=1+2+3+.+100的值。 3.4.2 循環(huán)結(jié)構(gòu)語(yǔ)句二、do.while
15、語(yǔ)句語(yǔ)句格式do S while (表達(dá)式);執(zhí)行過(guò)程先執(zhí)行語(yǔ)句,再判斷條件;當(dāng)表達(dá)式非0時(shí),繼續(xù)執(zhí)行循環(huán)體;直至表達(dá)式為0時(shí),退出循環(huán)。STF表達(dá)式例3.10用do.while語(yǔ)句求S=1+2+3+.+100的值。 3.4.2 循環(huán)結(jié)構(gòu)語(yǔ)句三、 for 語(yǔ)句語(yǔ)句格式for (表達(dá)式1;表達(dá)式2;表達(dá)式3) S 執(zhí)行過(guò)程執(zhí)行表達(dá)式1;執(zhí)行表達(dá)式2 (循環(huán)條件);表達(dá)式2 為非0時(shí),先執(zhí)行循環(huán)體S,然后執(zhí)行表達(dá)式3,再執(zhí)行表達(dá)式2 ;當(dāng)表達(dá)式2為0時(shí),退出循環(huán)。表達(dá)式1TF表達(dá)式2S表達(dá)式3例3.11 用for語(yǔ)句求S=1+2+3+.+100的值。for語(yǔ)句頭部的三個(gè)表達(dá)式皆可以空缺3.4.2
16、循環(huán)結(jié)構(gòu)語(yǔ)句例3.12 用迭代法求x= 的近似值。 算法(迭代公式):Xn+1=(Xn+a/Xn)/2 ;當(dāng)| Xn+1-Xn | 0為止??稍O(shè)定一個(gè)起始初值X0(如a/2)。3.4.2 循環(huán)結(jié)構(gòu)語(yǔ)句四、 循環(huán)嵌套 循環(huán)語(yǔ)句的循環(huán)體又包含一個(gè)循環(huán)語(yǔ)句。例3.13:打印如下所示的九九乘法表: 1 2 3 4 5 6 7 8 91 12 2 43 3 6 94 4 8 12 16.9 9 18 27 36 45 54 63 72 813.4.2 循環(huán)結(jié)構(gòu)語(yǔ)句1、break 語(yǔ)句 結(jié)束循環(huán)語(yǔ)句或switch語(yǔ)句的執(zhí)行。2、continue 語(yǔ)句 結(jié)束本次循環(huán),進(jìn)入下一次循環(huán)。例如:比較下列程序段的差
17、異。for(int i=1;i=10;i+) for(int i=1;i=10;i+) if(i%3=0)break; if(i%3=0)continue; coutit; coutit; 3.4.3 控制執(zhí)行順序的語(yǔ)句 圖3.18 圖3.193、exit()和abort()函數(shù)(1) exit()函數(shù)格式: exit(表達(dá)式);(2) abort()函數(shù)格式: abort() ;相同:終止程序的運(yùn)行,將控制返還給操作系統(tǒng); 使用頭文件stdlib.h 。區(qū)別:exit()函數(shù)有參數(shù),abort()函數(shù)無(wú)參數(shù); exit()函數(shù)做結(jié)束前的收尾工作,abort()函 數(shù)直接結(jié)束C+程序的運(yùn)行。3.4.3 控制執(zhí)行順序的語(yǔ)句例3.14 設(shè)計(jì)一個(gè)密碼登錄程序,用戶至多嘗試三次密碼。 算法(流程圖) 程序段: int pw=999,count=0,password; cout“Please input password:”; while (countpassword; if (pw=password) cout“Welcome!n”; exit
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司道歉信合集六篇
- 押金協(xié)議書范本-共10篇
- 三年級(jí)上冊(cè)第七單元備課教案 口語(yǔ)交際
- 星空劇場(chǎng)租賃合同三篇
- 透明明亮的玻璃工作室三篇
- 團(tuán)隊(duì)合作與項(xiàng)目式學(xué)習(xí)計(jì)劃
- 開(kāi)展中外文化交流促進(jìn)品德教育計(jì)劃
- 沿海船塢設(shè)施建設(shè)與維護(hù)合同三篇
- 調(diào)試合同范本
- 香精制造承攬合同三篇
- 實(shí)驗(yàn)室審核檢查表(參照模板)
- 《養(yǎng)成良好習(xí)慣-鑄就精彩人生》-主題班會(huì)
- 三年級(jí)中華優(yōu)秀傳統(tǒng)文化教案
- (新版教材)教科版一年級(jí)上冊(cè)科學(xué)全冊(cè)優(yōu)秀教學(xué)課件
- 人教版九年級(jí)上冊(cè) 初三 英語(yǔ)Unit8SectionA1a-1c課件
- 教師網(wǎng)絡(luò)培訓(xùn)簽到表
- 《大學(xué)日語(yǔ)》第一冊(cè) 第8課
- 2022年《內(nèi)蒙古自治區(qū)建設(shè)工程費(fèi)用定額》取費(fèi)說(shuō)明
- 大學(xué)語(yǔ)文-魯迅風(fēng)波賞析-課件
- 設(shè)計(jì)概論第五章-設(shè)計(jì)的哲學(xué)-PPT課件(PPT 111頁(yè))
- 寧波市建設(shè)工程資料統(tǒng)一用表(2022版)1 通用分冊(cè)
評(píng)論
0/150
提交評(píng)論