程序設計基礎ch3課件_第1頁
程序設計基礎ch3課件_第2頁
程序設計基礎ch3課件_第3頁
程序設計基礎ch3課件_第4頁
程序設計基礎ch3課件_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章控制流學習目標建立結構化程序設計的概念應用各種選擇和循環(huán)語句,實現(xiàn)選擇和循環(huán)結構通過順序、選擇和循環(huán)實現(xiàn)結構化程序設計正確使用break、continue等語句認識goto語句對結構化程序設計的影響學習分析問題的方法,并通過算法解決問題12/24/20221程序設計基礎張杰敏第3章控制流學習目標12/18/20221程序設計基礎程序中的語句通常是按照次序一條接一條地順序執(zhí)行,稱之為順序結構。順序結構是絕大多數(shù)程序設計語言的基本框架,程序設計語言的各種語句在基本框架下組成程序或程序的集合。有時需要改變順序執(zhí)行的流程,以有選擇地執(zhí)行程序的不同部分,構造選擇結構;或者重復執(zhí)行程序的某一部分,構造循環(huán)結構。程序設計語言中選擇和循環(huán)機制的設置,使得程序的計算足夠靈活和有效。3.1程序的結構化設計12/24/20222程序設計基礎張杰敏程序中的語句通常是按照次序一條接一條地順序執(zhí)行,稱之為順序結Boehm和Jacopini的研究工作證明,任何程序都可依靠三種基本結構的組合實現(xiàn),它們就是順序結構、選擇結構和循環(huán)結構。選擇結構又稱分支結構。由這三種基本結構組成的程序稱為結構化程序3.1程序的結構化設計12/24/20223程序設計基礎張杰敏Boehm和Jacopini的研究工程序包含兩方面內容:1.數(shù)據(jù)描述:定義數(shù)據(jù)類型及數(shù)據(jù)結構2.操作描述:說明操作及操作步驟,即算法。3.1程序的結構化設計12/24/20224程序設計基礎張杰敏程序包含兩方面內容:3.1程序的結構化設計12/18/23.2語句與復合語句在C語言中,每一個語句必需以“;”結束,它是語句終結符支持信息和示例C語句分為5類:表達式語句、控制流語句、函數(shù)調用語句、空語句和復合語句一對花括號{}把一組說明和語句組合在一起就構成一個復合語句,在語法上等價于單個語句,復合語句結束時,右花括弧“}”之外不能有“;”

空語句只有一個“;”,在if、for或while、do這樣的控制流語句中常會發(fā)生12/24/20225程序設計基礎張杰敏3.2語句與復合語句在C語言中,每一個語句必需以“;”結束3.3if-else選擇語句分支結構(選擇結構)實現(xiàn)不同動作間的選擇if語句的一般語法形式如下:if(表達式)語句1else語句2else是可選的,缺省else部分,形成單分支結構

語句可以是單語句或復合語句,意味著可以嵌套ifelse12/24/20226程序設計基礎張杰敏3.3if-else選擇語句分支結構(選擇結構)實現(xiàn)不3.3if-else選擇語句執(zhí)行if語句時,首先計算表達式的值,如果表達式的值非0、即其值為真,執(zhí)行語句1;如果表達式的值為0、即其值為假,執(zhí)行語句2。12/24/20227程序設計基礎張杰敏3.3if-else選擇語句執(zhí)行【例3-2】在一次百分制測驗中設定:當一名學生的成績大于、等于60分時,為“Passed”。成績小于60分時,為“Failed”。成績大于100分、或者小于0分時,視為“Error”成績。voidmain(){ intgrade; printf("Inputgrade(0-100):"); scanf("%d",&grade); if((grade>100)||(grade<0)) printf("Error\n"); else{ if(grade>=60) printf("Passed\n"); else printf("Failed\n"); } }12/24/20228程序設計基礎張杰敏【例3-2】在一次百分制測驗中設定:當一名學生的成績大于、等運行結果:12/24/20229程序設計基礎張杰敏運行結果:12/18/20229程序設計基礎張杰敏在C程序中經(jīng)常使用如下語句結構:if(表達式1) 語句1elseif(表達式2) 語句2elseif(表達式3) 語句3 ︰ ︰elseif(表達式n) 語句nelse 語句n+1這種嵌套的if-elae語句構成的序列可用于處理多向選擇的問題。各個表達式依次求值,一旦某個表達式為“真”,就執(zhí)行與之相關的語句,從而終止整個語句序列的執(zhí)行。如果所有表達式值為“假”,就執(zhí)行最后一個else的語句n+1。12/24/202210程序設計基礎張杰敏在C程序中經(jīng)常使用如下語句結構:12/18/202210程3.4switch多分支語句switch語句是一種多分支選擇語句,常用來實現(xiàn)多分支的程序結構。其一般語法形式為:switch(表達式){case常量表達式1:語句序列1case常量表達式2:語句序列2︰case常量表達式n:語句序列n

default:語句序列n+1}case標號是唯一的default部分是任選的12/24/202211程序設計基礎張杰敏3.4switch多分支語句swit【例3-7】按照學生考試成績的等級打印出百分制分數(shù)段。

#include<stdio.h>voidmain(){ chargrade; printf("Inputgrade(A~D,F):"); scanf("%c",&grade); switch(grade) { case'a': case'A':printf("90~100\n");break; case'b': case'B':printf("80~89\n");break; case'c': case'C':printf("70~79\n");break; case'd': case'D':printf("60~69\n");break; case'f': case'F':printf("<60\n");break; default:printf("error\n");break; }}12/24/202212程序設計基礎張杰敏【例3-7】按照學生考試成績的等級打印出百分制分數(shù)段。12運行結果:12/24/202213程序設計基礎張杰敏運行結果:12/18/202213程序設計基礎張杰敏良好習慣:為了使控制流程跳出switch結構,可以使用break語句,最后一個分支default部分可以不加break語句例成績分級:switch(grade) { case‘A’:printf(“90~100\n”);break; case‘B’:printf(“80~89\n”);break; case‘C’:printf(“70~79\n”);break; case‘D’:printf(“60~69\n”);break; case‘F’:printf(“<60\n”);break; default:printf(“error\n”);break; }12/24/202214程序設計基礎張杰敏良好習慣:12/18/202214程序設計基礎張杰敏3.5while與for循環(huán)語句實現(xiàn)行為的重復是我們使用計算機的一個重要原因C語言的while、for和dowhile語句都提供實現(xiàn)行為重復的功能,稱為循環(huán)語句While循環(huán)語句的一般語法形式為:while(表達式)語句while語句的特點是:先判斷表達式,后執(zhí)行語句對程序合理的精簡可以節(jié)省空間、提高運行效率。但任何情況下都不應為了精簡程序而以損失程序的可讀性為代價,程序的可讀性在任何時候都至關重要首先求表達式的值。值不等于0,執(zhí)行while的內嵌語句;之后再次求該表達式的值,直到值變?yōu)?,此時程序從while語句的下一個語句接著執(zhí)行12/24/202215程序設計基礎張杰敏3.5while與for循環(huán)語句實現(xiàn)3.5while與for循環(huán)語句while語句的一般語法形式為:while(表達式)語句while為邏輯控制循環(huán)語句,通過測試表達式的布爾值決定重復執(zhí)行循環(huán)體與否。while的循環(huán)體即while的語句部分。while執(zhí)行時,首先求表達式的值。如果其值不等于0(布爾“真”),那么執(zhí)行while的循環(huán)體。之后,再次求該表達式的值。這一周期性過程一直重復進行,直到該表達式的值變?yōu)?(布爾“假”)。此時程序的控制流程轉向while語句的下一條語句接著執(zhí)行。while語句的特點是:先測試表達式值,后執(zhí)行循環(huán)體。其循環(huán)體可被重復執(zhí)行0次、1次或多次。12/24/202216程序設計基礎張杰敏3.5while與for循環(huán)語句while語句的一般語法形【例3-8】參加某次百分制測驗的學生為10名,測驗結果設定:當學生的成績大于、等于60分時,為“Passed”。成績小于60分時,為“Failed”。成績大于100分、或者小于0分時,視為“Error”成績。

#include<stdio.h>#defineN10voidmain(){ intgrade,n=N; while(n--){ printf("Inputgrade(0-100):"); scanf("%d",&grade); if((grade>100)||(grade<0)) printf("Error\n"); else{ if(grade>=60) printf("Passed\n"); else printf("Failed\n"); } }12/24/202217程序設計基礎張杰敏【例3-8】參加某次百分制測驗的學生為10名,測驗結果設定:運行結果:12/24/202218程序設計基礎張杰敏運行結果:12/18/202218程序設計基礎張杰敏for語句是while語句的擴展,一般語法形式為:for(表達式1;表達式2;表達式3)語句for語句的執(zhí)行流程為:①計算表達式1的值;②計算表達式2的值,若表達式2的值非0(真),那么執(zhí)行for的內嵌語句,計算表達式3的值。若表達式2的值為0,結束for循環(huán),執(zhí)行for語句的下一條語句。③返回到步驟②for循環(huán)語句也是先測試循環(huán)條件,再執(zhí)行循環(huán)體應避免陷入無限循環(huán)break語句可用于從while、for和do...while循環(huán)語句中立即強制性退出for語句的三個表達式中任何一個都可以省略,但分號必須保留12/24/202219程序設計基礎張杰敏for語句是while語句的擴展,一般語法形式為:for語【例3-12】for語句實現(xiàn)字符計數(shù)

。

#include<stdio.h>/*統(tǒng)計輸入的字符數(shù);第2個版本*/voidmain(){ doublenc; /*說明double型變量nc,用于存放計數(shù)值*/ for(nc=0;getchar()!=EOF;++nc) ; printf("%.0f\n",nc);}12/24/202220程序設計基礎張杰敏【例3-12】for語句實現(xiàn)字符計數(shù)。12/18/2022運行結果:12/24/202221程序設計基礎張杰敏運行結果:12/18/202221程序設計基礎張杰敏3.6do-while循環(huán)語句do-while循環(huán)語句的一般語法形式:do語句while(表達式)如果表達式的值為真,那么就再次執(zhí)行語句,當表達式的值變成假時,就終止循環(huán)的執(zhí)行do-while循環(huán)語句則是先執(zhí)行循環(huán)體,再測試循環(huán)終止條件,因此至少要被執(zhí)行一次如果循環(huán)語句的內嵌語句包含另一個循環(huán)語句,就形成多重循環(huán)結構,稱為循環(huán)的嵌套。演示可以是任何語句,包括復合語句12/24/202222程序設計基礎張杰敏3.6do-while循環(huán)語句do-while循環(huán)語句的3.6goto語句C語言提供了goto語句,它跳轉的語句位置由標號標記標號是一個標識符,其后要跟一個冒號,命名標號時應盡量區(qū)別于變量標號可以用在任何語句的前面,但要與相應的goto語句位于同一函數(shù)中多數(shù)現(xiàn)代的編程方法都認為goto語句是不良結構,比如在結構化程序設計中就不允許使用goto語句12/24/202223程序設計基礎張杰敏3.6goto語句C語言提供了goto語句,它跳轉的語句位3.7break語句與continue語句break語句可以立即終止switch語句的執(zhí)行,將控制流程轉移到switch的下一條語句一樣break語句可用于從for、while與do-while語句中提前退出來break語句不能用于循環(huán)語句或switch語句之外的任何其它語句continue語句用于使其所在的for、while或do-while語句結束本次循環(huán),開始下一次循環(huán)continue語句只能用于循環(huán)語句,不能用于switch語句使用得當,continue語句有時可以簡化循環(huán)中某些復雜部分的處理12/24/202224程序設計基礎張杰敏3.7break語句與continue語句break語句可3.8編程指導程序中反映了控制流的花括弧的位置非常重要,是良好編程習慣的重要體現(xiàn),如果循環(huán)體是單語句,語法上不需要用花括弧。作為一種良好的編程習慣,我們建議無論是否必須,總是用花括弧將循環(huán)體括起來控制結構體的縮進格式,可提高程序的可讀性太多層次的嵌套使程序難以理解。一般地說,應盡量避免3層以上的嵌套無關的計算放到for語句的初始化或增量部分會使程序很難讀,是一種很不好的程序設計風格最好為switch語句提供default選項,這樣不會忽略沒有明確測試的情況12/24/202225程序設計基礎張杰敏3.8編程指導程序中反映了控制流的花括弧的位置非常重要,本章小結小結要點12/24/202226程序設計基礎張杰敏本章小結小結要點12/18/202226程序設計基礎張杰第3章控制流學習目標建立結構化程序設計的概念應用各種選擇和循環(huán)語句,實現(xiàn)選擇和循環(huán)結構通過順序、選擇和循環(huán)實現(xiàn)結構化程序設計正確使用break、continue等語句認識goto語句對結構化程序設計的影響學習分析問題的方法,并通過算法解決問題12/24/202227程序設計基礎張杰敏第3章控制流學習目標12/18/20221程序設計基礎程序中的語句通常是按照次序一條接一條地順序執(zhí)行,稱之為順序結構。順序結構是絕大多數(shù)程序設計語言的基本框架,程序設計語言的各種語句在基本框架下組成程序或程序的集合。有時需要改變順序執(zhí)行的流程,以有選擇地執(zhí)行程序的不同部分,構造選擇結構;或者重復執(zhí)行程序的某一部分,構造循環(huán)結構。程序設計語言中選擇和循環(huán)機制的設置,使得程序的計算足夠靈活和有效。3.1程序的結構化設計12/24/202228程序設計基礎張杰敏程序中的語句通常是按照次序一條接一條地順序執(zhí)行,稱之為順序結Boehm和Jacopini的研究工作證明,任何程序都可依靠三種基本結構的組合實現(xiàn),它們就是順序結構、選擇結構和循環(huán)結構。選擇結構又稱分支結構。由這三種基本結構組成的程序稱為結構化程序3.1程序的結構化設計12/24/202229程序設計基礎張杰敏Boehm和Jacopini的研究工程序包含兩方面內容:1.數(shù)據(jù)描述:定義數(shù)據(jù)類型及數(shù)據(jù)結構2.操作描述:說明操作及操作步驟,即算法。3.1程序的結構化設計12/24/202230程序設計基礎張杰敏程序包含兩方面內容:3.1程序的結構化設計12/18/23.2語句與復合語句在C語言中,每一個語句必需以“;”結束,它是語句終結符支持信息和示例C語句分為5類:表達式語句、控制流語句、函數(shù)調用語句、空語句和復合語句一對花括號{}把一組說明和語句組合在一起就構成一個復合語句,在語法上等價于單個語句,復合語句結束時,右花括弧“}”之外不能有“;”

空語句只有一個“;”,在if、for或while、do這樣的控制流語句中常會發(fā)生12/24/202231程序設計基礎張杰敏3.2語句與復合語句在C語言中,每一個語句必需以“;”結束3.3if-else選擇語句分支結構(選擇結構)實現(xiàn)不同動作間的選擇if語句的一般語法形式如下:if(表達式)語句1else語句2else是可選的,缺省else部分,形成單分支結構

語句可以是單語句或復合語句,意味著可以嵌套ifelse12/24/202232程序設計基礎張杰敏3.3if-else選擇語句分支結構(選擇結構)實現(xiàn)不3.3if-else選擇語句執(zhí)行if語句時,首先計算表達式的值,如果表達式的值非0、即其值為真,執(zhí)行語句1;如果表達式的值為0、即其值為假,執(zhí)行語句2。12/24/202233程序設計基礎張杰敏3.3if-else選擇語句執(zhí)行【例3-2】在一次百分制測驗中設定:當一名學生的成績大于、等于60分時,為“Passed”。成績小于60分時,為“Failed”。成績大于100分、或者小于0分時,視為“Error”成績。voidmain(){ intgrade; printf("Inputgrade(0-100):"); scanf("%d",&grade); if((grade>100)||(grade<0)) printf("Error\n"); else{ if(grade>=60) printf("Passed\n"); else printf("Failed\n"); } }12/24/202234程序設計基礎張杰敏【例3-2】在一次百分制測驗中設定:當一名學生的成績大于、等運行結果:12/24/202235程序設計基礎張杰敏運行結果:12/18/20229程序設計基礎張杰敏在C程序中經(jīng)常使用如下語句結構:if(表達式1) 語句1elseif(表達式2) 語句2elseif(表達式3) 語句3 ︰ ︰elseif(表達式n) 語句nelse 語句n+1這種嵌套的if-elae語句構成的序列可用于處理多向選擇的問題。各個表達式依次求值,一旦某個表達式為“真”,就執(zhí)行與之相關的語句,從而終止整個語句序列的執(zhí)行。如果所有表達式值為“假”,就執(zhí)行最后一個else的語句n+1。12/24/202236程序設計基礎張杰敏在C程序中經(jīng)常使用如下語句結構:12/18/202210程3.4switch多分支語句switch語句是一種多分支選擇語句,常用來實現(xiàn)多分支的程序結構。其一般語法形式為:switch(表達式){case常量表達式1:語句序列1case常量表達式2:語句序列2︰case常量表達式n:語句序列n

default:語句序列n+1}case標號是唯一的default部分是任選的12/24/202237程序設計基礎張杰敏3.4switch多分支語句swit【例3-7】按照學生考試成績的等級打印出百分制分數(shù)段。

#include<stdio.h>voidmain(){ chargrade; printf("Inputgrade(A~D,F):"); scanf("%c",&grade); switch(grade) { case'a': case'A':printf("90~100\n");break; case'b': case'B':printf("80~89\n");break; case'c': case'C':printf("70~79\n");break; case'd': case'D':printf("60~69\n");break; case'f': case'F':printf("<60\n");break; default:printf("error\n");break; }}12/24/202238程序設計基礎張杰敏【例3-7】按照學生考試成績的等級打印出百分制分數(shù)段。12運行結果:12/24/202239程序設計基礎張杰敏運行結果:12/18/202213程序設計基礎張杰敏良好習慣:為了使控制流程跳出switch結構,可以使用break語句,最后一個分支default部分可以不加break語句例成績分級:switch(grade) { case‘A’:printf(“90~100\n”);break; case‘B’:printf(“80~89\n”);break; case‘C’:printf(“70~79\n”);break; case‘D’:printf(“60~69\n”);break; case‘F’:printf(“<60\n”);break; default:printf(“error\n”);break; }12/24/202240程序設計基礎張杰敏良好習慣:12/18/202214程序設計基礎張杰敏3.5while與for循環(huán)語句實現(xiàn)行為的重復是我們使用計算機的一個重要原因C語言的while、for和dowhile語句都提供實現(xiàn)行為重復的功能,稱為循環(huán)語句While循環(huán)語句的一般語法形式為:while(表達式)語句while語句的特點是:先判斷表達式,后執(zhí)行語句對程序合理的精簡可以節(jié)省空間、提高運行效率。但任何情況下都不應為了精簡程序而以損失程序的可讀性為代價,程序的可讀性在任何時候都至關重要首先求表達式的值。值不等于0,執(zhí)行while的內嵌語句;之后再次求該表達式的值,直到值變?yōu)?,此時程序從while語句的下一個語句接著執(zhí)行12/24/202241程序設計基礎張杰敏3.5while與for循環(huán)語句實現(xiàn)3.5while與for循環(huán)語句while語句的一般語法形式為:while(表達式)語句while為邏輯控制循環(huán)語句,通過測試表達式的布爾值決定重復執(zhí)行循環(huán)體與否。while的循環(huán)體即while的語句部分。while執(zhí)行時,首先求表達式的值。如果其值不等于0(布爾“真”),那么執(zhí)行while的循環(huán)體。之后,再次求該表達式的值。這一周期性過程一直重復進行,直到該表達式的值變?yōu)?(布爾“假”)。此時程序的控制流程轉向while語句的下一條語句接著執(zhí)行。while語句的特點是:先測試表達式值,后執(zhí)行循環(huán)體。其循環(huán)體可被重復執(zhí)行0次、1次或多次。12/24/202242程序設計基礎張杰敏3.5while與for循環(huán)語句while語句的一般語法形【例3-8】參加某次百分制測驗的學生為10名,測驗結果設定:當學生的成績大于、等于60分時,為“Passed”。成績小于60分時,為“Failed”。成績大于100分、或者小于0分時,視為“Error”成績。

#include<stdio.h>#defineN10voidmain(){ intgrade,n=N; while(n--){ printf("Inputgrade(0-100):"); scanf("%d",&grade); if((grade>100)||(grade<0)) printf("Error\n"); else{ if(grade>=60) printf("Passed\n"); else printf("Failed\n"); } }12/24/202243程序設計基礎張杰敏【例3-8】參加某次百分制測驗的學生為10名,測驗結果設定:運行結果:12/24/202244程序設計基礎張杰敏運行結果:12/18/202218程序設計基礎張杰敏for語句是while語句的擴展,一般語法形式為:for(表達式1;表達式2;表達式3)語句for語句的執(zhí)行流程為:①計算表達式1的值;②計算表達式2的值,若表達式2的值非0(真),那么執(zhí)行for的內嵌語句,計算表達式3的值。若表達式2的值為0,結束for循環(huán),執(zhí)行for語句的下一條語句。③返回到步驟②for循環(huán)語句也是先測試循環(huán)條件,再執(zhí)行循環(huán)體應避免陷入無限循環(huán)break語句可用于從while、for和do...while循環(huán)語句中立即強制性退出for語句的三個表達式中任何一個都可以省略,但分號必須保留12/24/202245程序設計基礎張杰敏for語句是while語句的擴展,一般語法形式為:for語【例3-12】for語句實現(xiàn)字符計數(shù)

#include<stdio.h>/*統(tǒng)計輸入的字符數(shù);第2個版本*/voidmain(){ doublenc; /*說明double型變量nc,用于存放計數(shù)值*/ for(nc=0;

溫馨提示

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

評論

0/150

提交評論