第3章程序設(shè)計初步_第1頁
第3章程序設(shè)計初步_第2頁
第3章程序設(shè)計初步_第3頁
第3章程序設(shè)計初步_第4頁
第3章程序設(shè)計初步_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第3章章 程序設(shè)計初步程序設(shè)計初步3.1 面向過程的程序設(shè)計和算法面向過程的程序設(shè)計和算法3.2 C+程序結(jié)構(gòu)和語句程序結(jié)構(gòu)和語句3.3 C+的輸入與輸出的輸入與輸出3.4 C+程序的控制結(jié)構(gòu)程序的控制結(jié)構(gòu)3.5 程序舉例程序舉例在面向過程的程序設(shè)計中,程序設(shè)計者必須指在面向過程的程序設(shè)計中,程序設(shè)計者必須指定計算機執(zhí)行的具體步驟,清晰程序要定計算機執(zhí)行的具體步驟,清晰程序要“做什做什么么”,清晰,清晰“怎么做怎么做”,并寫出一個個語句,并寫出一個個語句,安排好它們的執(zhí)行順序。安排好它們的執(zhí)行順序。步驟要合理,保證它的步驟要合理,保證它的正確性和具有較高的效正確性和具有較高的效率率,這就是,

2、這就是算法算法(algorithm)需要解決的問需要解決的問題。題。3.1 面向過程的程序設(shè)計和算法面向過程的程序設(shè)計和算法一個面向過程的程序應(yīng)包括以下兩方面內(nèi)容:一個面向過程的程序應(yīng)包括以下兩方面內(nèi)容:(1) 對數(shù)據(jù)的描述對數(shù)據(jù)的描述。在程序中要指定。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即即數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)(data structure)。(2) 對操作的描述對操作的描述。即操作步驟,也就是。即操作步驟,也就是算法算法(algorithm)。算法是處算法是處理問題的一系列的步驟。理問題的一系列的步驟。對于面向過程的程序,可以用下面的公式表示:對于面向過程的程序

3、,可以用下面的公式表示: 程序程序=算法算法+數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 如:處理的數(shù)據(jù)如何讀入與存放?如何處理?結(jié)果如何存放與輸出?如:處理的數(shù)據(jù)如何讀入與存放?如何處理?結(jié)果如何存放與輸出?(必須考慮與設(shè)計清晰?。ū仨毧紤]與設(shè)計清晰?。?)算法可分為兩大類別:)算法可分為兩大類別:數(shù)值算法數(shù)值算法和和非數(shù)值算法非數(shù)值算法。數(shù)值算法的。數(shù)值算法的目的是求數(shù)值解。非數(shù)值算法包括的面十分廣泛,最常見的是用于事目的是求數(shù)值解。非數(shù)值算法包括的面十分廣泛,最常見的是用于事務(wù)管理領(lǐng)域。務(wù)管理領(lǐng)域。C+既支持面向過程的程序設(shè)計,又支持面向?qū)ο蟮某绦蛟O(shè)計。無既支持面向過程的程序設(shè)計,又支持面向?qū)ο蟮某绦蛟O(shè)計。無

4、論面向過程的程序設(shè)計還是面向?qū)ο蟮某绦蛟O(shè)計,都離不開算法設(shè)計論面向過程的程序設(shè)計還是面向?qū)ο蟮某绦蛟O(shè)計,都離不開算法設(shè)計。3.1.1 算法的概念算法的概念1、自然語言、自然語言2、流程圖、流程圖3、偽代碼、偽代碼 介于自然語言和計算機程序設(shè)計語言之間的文介于自然語言和計算機程序設(shè)計語言之間的文字和符號來描述算法。一般無固定、嚴(yán)格的語法規(guī)字和符號來描述算法。一般無固定、嚴(yán)格的語法規(guī)則,只須把意思表達清楚,并且要書寫的格式要寫則,只須把意思表達清楚,并且要書寫的格式要寫成清晰易讀的形式。成清晰易讀的形式。4、計算機語言表示、計算機語言表示3.1.2 算法算法的表示的表示1、程序結(jié)構(gòu)、程序結(jié)構(gòu) 一個

5、程序包含一個或多個程序單位,一個程序包含一個或多個程序單位,C+程序單程序單位一般由位一般由3個部分組成:個部分組成:(1)預(yù)處理指令預(yù)處理指令。如。如#include和和#define指令。指令。(2)全局聲明全局聲明,如果需要時。,如果需要時。(3)函數(shù)函數(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)和語句程序結(jié)構(gòu)和語句2、語句、語句(1)說明語句)說明語句 (3)空語句,單獨的一個分號。)空語句,單獨的一個分號。(4)復(fù)合語句)復(fù)合語

6、句 一對一對 之間的若干個語句的組合,如:之間的若干個語句的組合,如:3. 2 C+程序結(jié)構(gòu)和語句程序結(jié)構(gòu)和語句如如 int a;(2)執(zhí)行語句)執(zhí)行語句控制語句控制語句函數(shù)調(diào)用語句,如函數(shù)調(diào)用語句,如 sort(x,y,z);表達式語句,如表達式語句,如 i=i+1;t=a; a=b; b=t; 相對內(nèi)存,處理的數(shù)據(jù)如何進行輸入和輸出?相對內(nèi)存,處理的數(shù)據(jù)如何進行輸入和輸出?輸入和輸出并不是輸入和輸出并不是C+語言中的正式組成成分。語言中的正式組成成分。C和和C+本身都沒有為輸入和輸出提供專門的本身都沒有為輸入和輸出提供專門的語句語句結(jié)構(gòu)。輸入輸出不是由結(jié)構(gòu)。輸入輸出不是由C+本身定義的,本

7、身定義的,而是在而是在編譯系統(tǒng)提供的編譯系統(tǒng)提供的I/O庫庫 中定義的中定義的。C+的輸出和輸入是用的輸出和輸入是用“流流”(stream)的方式的方式實現(xiàn)的。下圖分別表示實現(xiàn)的。下圖分別表示C+通過流進行輸入輸通過流進行輸入輸出的過程。出的過程。3.3 C+的輸入與輸出的輸入與輸出 有關(guān)有關(guān)流對象流對象cin、cout和流運算符和流運算符的定義等的定義等信息是存放在信息是存放在C+的的輸入輸出流庫輸入輸出流庫中的,因此中的,因此使用使用cin、cout和流運算符,就必須:和流運算符,就必須: #include 為了為了敘述方便,常常把由敘述方便,常常把由cin和流提取運算和流提取運算符符“”

8、實現(xiàn)輸入的語句稱為輸入語句或?qū)崿F(xiàn)輸入的語句稱為輸入語句或cin語語句句; 把把由由cout和流插入運算符和流插入運算符“”實現(xiàn)輸出實現(xiàn)輸出的語句稱為輸出語句或的語句稱為輸出語句或cout語句。語句。 流流運算符相當(dāng)于一個輸入或輸出函數(shù),由運算符相當(dāng)于一個輸入或輸出函數(shù),由對象調(diào)用之對象調(diào)用之。cout語句的一般格式為語句的一般格式為cout表達式表達式1表達式表達式2變量變量1變量變量2變量變量n;輸出流中的數(shù)據(jù)在輸出流中的數(shù)據(jù)在系統(tǒng)默認(rèn)的設(shè)備系統(tǒng)默認(rèn)的設(shè)備(一般為顯示器一般為顯示器)輸出。輸出。3.3.1 輸入流與輸出流的基本操作輸入流與輸出流的基本操作int i; float x; cin

9、ix; coutic1c2c3;若輸入:若輸入:abc,則,則c1、c2、c3的值分別為字符的值分別為字符a、b、c若輸入若輸入: abc,則,則c1、c2、c3的值分別為字符的值分別為字符、a、若輸入:若輸入:a b c,則,則c1、c2、c3的值分別為字符的值分別為字符a、b、c則則i的值為的值為12,x的值為的值為34.5則則i的值為的值為34,x的值為的值為0.5輸出為:輸出為:340.5 有時為了輸入輸出特殊的要求,如在輸出實有時為了輸入輸出特殊的要求,如在輸出實數(shù)時規(guī)定字段寬度,只保留兩位小數(shù),數(shù)據(jù)向數(shù)時規(guī)定字段寬度,只保留兩位小數(shù),數(shù)據(jù)向左或向右對齊等。左或向右對齊等。 C+提供

10、了在輸入輸出流中使用的控制符提供了在輸入輸出流中使用的控制符(有有的書中稱為操縱符的書中稱為操縱符),見書中表,見書中表3.1,P.54頁。頁。 需要注意的是:需要注意的是: 如果如果使用使用了了控制符控制符,在程序,在程序單位的開頭除了要加單位的開頭除了要加iostream頭文件外,還要頭文件外,還要加加iomanip頭文件。頭文件。3.3.2 在輸入流與輸出流中使用控制符在輸入流與輸出流中使用控制符 coutntm“n”; cout“n=”n“,m=”mn;1020n=10,m=20 coutsetw(4)nsetw(4)mn; setw只對其后一個輸出項有效只對其后一個輸出項有效10 2

11、0 coutoctnthexmn; 只適用于整型數(shù)只適用于整型數(shù)。12 14如如 3.140000e+000C+中用于輸入和輸出單個字符的函數(shù):中用于輸入和輸出單個字符的函數(shù):其中最常用的有其中最常用的有g(shù)etchar函數(shù)和函數(shù)和putchar函數(shù)。函數(shù)。1、putchar函數(shù)(字符輸出函數(shù))函數(shù)(字符輸出函數(shù))putchar函數(shù)的作用是函數(shù)的作用是向終端輸出一個字符向終端輸出一個字符。如。如putchar(c);它它輸出字符變量的值輸出字符變量的值。2、getchar函數(shù)(字符輸入函數(shù))函數(shù)(字符輸入函數(shù))此函數(shù)的作用是從終端輸入一個字符。其一般形式為此函數(shù)的作用是從終端輸入一個字符。其一般

12、形式為getchar( ),),函數(shù)的值就是從輸入設(shè)備得到的字符。函數(shù)的值就是從輸入設(shè)備得到的字符。3.3.3 用用getchar和和putchar函數(shù)函數(shù)進行字符的輸入和輸出進行字符的輸入和輸出例例3.2 輸出單個字符。輸出單個字符。#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)義字符可以輸出轉(zhuǎn)義字符。如果從鍵盤輸入大寫

13、字母如果從鍵盤輸入大寫字母A并并按回車鍵,第三個輸出的結(jié)果按回車鍵,第三個輸出的結(jié)果在屏幕上實際顯示就是小寫字在屏幕上實際顯示就是小寫字母母a。請注意,請注意,getchar( )只能只能接收一個字符接收一個字符。getchar函函數(shù)得到的字符可以賦給一數(shù)得到的字符可以賦給一個字符變量或整型變量,個字符變量或整型變量,也可以不賦給任何變量,也可以不賦給任何變量,作為表達式的一部分。作為表達式的一部分。3. 4 C+程序的基本結(jié)構(gòu)程序的基本結(jié)構(gòu)1. 順序結(jié)構(gòu)順序結(jié)構(gòu)2. 選擇結(jié)構(gòu)選擇結(jié)構(gòu)3. 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) 順序結(jié)構(gòu)順序結(jié)構(gòu)a塊塊b塊塊AB選擇結(jié)構(gòu)選擇結(jié)構(gòu)a塊塊a塊塊成立成立不成立不成立條件條

14、件AB條件條件a 塊塊成立成立不成立不成立AB當(dāng)型循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)條件條件a 塊塊成立成立不成立不成立AB直到型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)一、條件語句一、條件語句1. 單選條件語句(單選條件語句(if語句)語句) 語句格式:語句格式:條條 件件 if(表達式表達式) S 執(zhí)行過程執(zhí)行過程3.4.1 選擇結(jié)構(gòu)語句選擇結(jié)構(gòu)語句條件條件語句語句10例例3.3 從鍵盤輸入一個數(shù),若該數(shù)為正數(shù),輸出從鍵盤輸入一個數(shù),若該數(shù)為正數(shù),輸出1。條條 件件S110S22. 雙選條件語句(雙選條件語句(if.else語句)語句) 語句格式:語句格式: if(表達式表達式) S1 else S2 執(zhí)行過程執(zhí)行過程例

15、例3.4 從鍵盤輸入一個數(shù)。若該數(shù)為正數(shù),輸出從鍵盤輸入一個數(shù)。若該數(shù)為正數(shù),輸出1; 否則輸出否則輸出-1。3.4.1 選擇結(jié)構(gòu)語句選擇結(jié)構(gòu)語句條件條件1條件條件2條件條件3S1S2S3S41110003. 嵌套的條件語句嵌套的條件語句 語句格式:語句格式: if(表達式表達式1) S1 else if(表達式表達式2) S2 else if(表達式表達式3) S3 else S4 執(zhí)行過程執(zhí)行過程例例3.5 從鍵盤輸入一個實數(shù)。若該數(shù)為正數(shù),輸出從鍵盤輸入一個實數(shù)。若該數(shù)為正數(shù),輸出1; 若為負數(shù)輸出若為負數(shù)輸出-1;否則,輸出;否則,輸出0。3.4.1 選擇結(jié)構(gòu)語句選擇結(jié)構(gòu)語句 if后面

16、的表達式可以是邏輯表達式、關(guān)系表達式、賦值表后面的表達式可以是邏輯表達式、關(guān)系表達式、賦值表達式等,達式等,其值非其值非0時等同于時等同于1,表示條件成立;否則為,表示條件成立;否則為0表表示條件不成立示條件不成立。 if和和else后的語句后的語句可以是單個語句,也可以是復(fù)合語句,可以是單個語句,也可以是復(fù)合語句,還可以是空語句還可以是空語句。 if與與else的配對規(guī)則:的配對規(guī)則:else總是與其前面的同一個塊中的最總是與其前面的同一個塊中的最近的尚未配對的近的尚未配對的if配對配對。 例如:例如:int a=5,b=10,c=20,d=0;if(a=b) if(b5)a=30;d=10

17、0;else d=200;else d=300;a的值為的值為30,d的值為的值為1003.4.1 選擇結(jié)構(gòu)語句選擇結(jié)構(gòu)語句例例3.6 求一元二次方程求一元二次方程ax2+bx+c=0的解。其中系數(shù)的解。其中系數(shù)a、b、c由鍵盤輸入。由鍵盤輸入。 可用數(shù)學(xué)庫函數(shù)可用數(shù)學(xué)庫函數(shù)sqrt(參數(shù))求參數(shù)的平方根,(參數(shù))求參數(shù)的平方根, 此時應(yīng)有頭文件:此時應(yīng)有頭文件:#include例例3.7 判斷從鍵盤輸入的字符的種類。假設(shè)字符分為判斷從鍵盤輸入的字符的種類。假設(shè)字符分為5類:數(shù)字、大寫字母、小寫字母、控制字符(其類:數(shù)字、大寫字母、小寫字母、控制字符(其ASCII值小于值小于32)和其他字符。

18、)和其他字符。3.4.1 選擇結(jié)構(gòu)語句選擇結(jié)構(gòu)語句 基本格式:基本格式: switch (表達式表達式) case 常量表達式常量表達式 1:語句序列:語句序列1 case 常量表達式常量表達式 2:語句序列:語句序列2 case 常量表達式常量表達式 n:語句序列:語句序列n default : 語句序列語句序列n+1 執(zhí)行過程執(zhí)行過程以以case中的中的常量表達式常量表達式的值為入口標(biāo)號,由此開始順序執(zhí)行,的值為入口標(biāo)號,由此開始順序執(zhí)行,遇到遇到break語句時語句時結(jié)束結(jié)束switch語句的執(zhí)行。語句的執(zhí)行。二、開關(guān)語句二、開關(guān)語句 switch 后面后面的表達式通常為的表達式通常為變

19、量表達式變量表達式; case 后面后面的的表達式必須為表達式必須為常量表達式常量表達式; 上述表達式值的類型上述表達式值的類型通常為整型通常為整型; default分支不是必須的,習(xí)慣上放在最后面分支不是必須的,習(xí)慣上放在最后面,當(dāng)放在前,當(dāng)放在前面滿足條件被執(zhí)行時,若沒有面滿足條件被執(zhí)行時,若沒有break,則后續(xù),則后續(xù)case會被繼會被繼續(xù)執(zhí)行,不管是否匹配。續(xù)執(zhí)行,不管是否匹配。 例如:例如:當(dāng)當(dāng)a的值為的值為5時,輸出時,輸出25150當(dāng)當(dāng)a的值為的值為10時,輸出時,輸出150當(dāng)當(dāng)a的值為的值為15時,輸出時,輸出5二、二、 開關(guān)語句開關(guān)語句int a,m=15,n=10;cin

20、a;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;三、條件運算符三、條件運算符三目運算符允許嵌套使用,如三目運算符允許嵌套使用,如ab?ac?a:c:bc?b:c; 當(dāng)需要程序重復(fù)地做相似工作時,可通過循環(huán)當(dāng)需要程序重復(fù)地做相似工作時,可通過循環(huán)語句實現(xiàn)。語句實現(xiàn)。該類問題通常有該類問題通常有4個要素:個要素: 循環(huán)變量的初始

21、化;循環(huán)變量的初始化; 循環(huán)的條件;循環(huán)的條件; 循環(huán)體循環(huán)體 (循環(huán)過程中要做的事);(循環(huán)過程中要做的事); 改變循環(huán)控制變量的值。改變循環(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)語句循環(huán)結(jié)構(gòu)語句一、一、while 語句語句 語句格式語句格式while (表達式) S 循環(huán)體,可以是單語句、復(fù)合語循環(huán)體,可以是單語句、復(fù)合語句,甚至空語句句,甚至空語句 執(zhí)行過程執(zhí)行過程 先判斷表達式的值,先判斷表達式的值,非非 0 時執(zhí)行

22、語句時執(zhí)行語句S;然;然后再判斷表達式的值,后再判斷表達式的值,直至表達式的值為直至表達式的值為0時,時,退出循環(huán)。退出循環(huán)。表達式表達式STF例例3.9 用while語句求S=1+2+3+.+100的值。 3.4.2 循環(huán)結(jié)構(gòu)語句循環(huán)結(jié)構(gòu)語句二、二、do.while 語句語句 語句格式do S while (表達式表達式); 執(zhí)行過程執(zhí)行過程先執(zhí)行語句,再判斷條件;先執(zhí)行語句,再判斷條件;當(dāng)表達式非當(dāng)表達式非0時,繼續(xù)執(zhí)行時,繼續(xù)執(zhí)行循環(huán)體;直至表達式為循環(huán)體;直至表達式為0時,時,退出循環(huán)。退出循環(huán)。STF表達式表達式例例3.10用do.while語句求S=1+2+3+.+100的值。 3

23、.4.2 循環(huán)結(jié)構(gòu)語句循環(huán)結(jié)構(gòu)語句三、三、 for 語句語句 語句格式語句格式for (表達式表達式1;表達式;表達式2;表達式;表達式3) S 執(zhí)行過程執(zhí)行過程執(zhí)行表達式執(zhí)行表達式1;執(zhí)行表達式執(zhí)行表達式2 (循環(huán)條件);(循環(huán)條件);表達式表達式2 為非為非0時,先執(zhí)行循環(huán)時,先執(zhí)行循環(huán)體體S,然后執(zhí)行表達式,然后執(zhí)行表達式3,再執(zhí)行,再執(zhí)行表達式表達式2 ;當(dāng)表達式當(dāng)表達式2為為0時,退出循環(huán)。時,退出循環(huán)。表達式表達式1TF表達式表達式2S表達式表達式3例例3.11 用for語句求S=1+2+3+.+100的值。for語句頭部的三個表達式皆可語句頭部的三個表達式皆可以空缺以空缺3.4.

24、2 循環(huán)結(jié)構(gòu)語句循環(huán)結(jié)構(gòu)語句例例3.12 用迭代法求x= 的近似值。 算法(迭代公式):Xn+1=(Xn+a/Xn)/2 ; 當(dāng)| Xn+1-Xn | 0為止。 可設(shè)定一個起始初值X0(如a/2)。a3.4.2 循環(huán)結(jié)構(gòu)語句循環(huán)結(jié)構(gòu)語句四、四、 循環(huán)嵌套循環(huán)嵌套 循環(huán)語句的循環(huán)體又包含一個循環(huán)語句。循環(huán)語句的循環(huán)體又包含一個循環(huán)語句。例例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)語句循環(huán)結(jié)構(gòu)語句 結(jié)束循環(huán)語句或結(jié)束循環(huán)語句或switch語句的執(zhí)行。語句的執(zhí)行。 結(jié)束本次循環(huán),進入下一次循環(huán)。結(jié)束本次循環(huán),進入下一次循環(huán)。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í)行順序的語句控制執(zhí)行順序的語句 圖3.18 圖3.193、exit()和和abort()函數(shù)函數(shù)(1) exit()函數(shù)函數(shù)格式:格式:

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論