版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
程序流程控制1第1頁,課件共26頁,創(chuàng)作于2023年2月4.1算法數(shù)據(jù)結(jié)構(gòu)+算法=程序數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計方法+語言環(huán)境=程序4.1.1算法的概念算法的五個特性:有窮性、確定性、可行性、輸入、輸出。算法設(shè)計注意:正確性、可讀性、健壯性、高效性。2第2頁,課件共26頁,創(chuàng)作于2023年2月4.1.2算法的組成要素1、操作:
包括算術(shù)運算、邏輯運算、關(guān)系運算、函數(shù)運算、位運算、I/O操作等。2、控制結(jié)構(gòu):
控制算法中各個操作的執(zhí)行順序。三種基本控制結(jié)構(gòu)是:
順序結(jié)構(gòu)(順序執(zhí)行)選擇結(jié)構(gòu)(比較判斷)循環(huán)結(jié)構(gòu)或稱重復(fù)結(jié)構(gòu)(反復(fù)執(zhí)行)3第3頁,課件共26頁,創(chuàng)作于2023年2月4.1.3算法的描述自然語言流程圖N-S圖PAD圖偽代碼語句2語句1語句1語句2判斷YN語句4第4頁,課件共26頁,創(chuàng)作于2023年2月3.復(fù)合語句一般形式:{[內(nèi)部數(shù)據(jù)說明部分;]
執(zhí)行語句部分;
}2.表達式語句運算符表達式語句:計算表達式的值。函數(shù)調(diào)用表達式語句:調(diào)用函數(shù)。4.2C語言的基本語句聲明語句用于聲明合法標識符(變量名或函數(shù)名),可在函數(shù)體或復(fù)合語句中使用,且須寫在其他語句前面。例:x=(a+3)*b;a=sin(x);y=x++;例如:inta,b;doublex,y,z;5第5頁,課件共26頁,創(chuàng)作于2023年2月空語句只有分號組成的語句,什么也不執(zhí)行。流程控制語句條件判斷語句if語句、switch語句。循環(huán)執(zhí)行語句do…while語句、while語句、for語句。流程轉(zhuǎn)向語句break語句、goto語句、continue、語句return語句。如:main(){inta=1,b=4;…..{intb;b=3;printf(“%d\n”,a+b);}printf(“%d”,a+b);}
輸出:45說明:
}后不加分號。語法上和單一語句相同。復(fù)合語句可嵌套。復(fù)合語句中的變量只在本部分有效。6第6頁,課件共26頁,創(chuàng)作于2023年2月4.3順序結(jié)構(gòu)順序結(jié)構(gòu)程序由簡單語句組成,程序流程如圖3.1所示,語句按書寫順序執(zhí)行,先執(zhí)行A,再執(zhí)行B。BA順序結(jié)構(gòu)執(zhí)行流程例:main(){inta,b=4;a=b*2;printf(“%d”,a);}7第7頁,課件共26頁,創(chuàng)作于2023年2月4.4選擇結(jié)構(gòu)4.4.1if…else語句結(jié)構(gòu)形式:if(表達式)
語句1;
else
語句2;執(zhí)行過程:先判斷表達式,成立就執(zhí)行語句1,否則執(zhí)行語句2。例:if(x>y)max=x;elsemax=y;注意:
if…else中表達式可為關(guān)系表達式、邏輯表達式、數(shù)值表達式。
if…else中語句1、語句2可以為簡單語句或復(fù)合語句。
if…else中分號的使用位置。表達式語句1真假語句2雙分支選擇8第8頁,課件共26頁,創(chuàng)作于2023年2月4.4.2if語句結(jié)構(gòu)形式:if(表達式)
語句;執(zhí)行過程:先判斷表達式,若成立則執(zhí)行語句,否則跳過該語句而直接執(zhí)行該結(jié)構(gòu)后的下一條語句。注意:此處,不管分支語句是否執(zhí)行,if后的表達式一定執(zhí)行。表達式語句真假單分支選擇例:main(){inta=1,b=3,max;max=a;
if(a<b)max=b;printf(“%d”,max);}9第9頁,課件共26頁,創(chuàng)作于2023年2月4.4.3elseif語句一般形式:if(表達式1)語句1;
elseif(表達式2)語句2;
…elseif(表達式n)語句n;
else語句n+1;執(zhí)行過程:執(zhí)行時先判斷表達式1的值,非0就執(zhí)行下面的語句,若為0就執(zhí)行下一個判斷,一直這樣做下去直到得出最后結(jié)果。
表達式1真語句1假表達式2表達式3語句4語句3語句2真真假假多分支選擇例:if(score>=90)grade=‘A’;elseif(score>=80)grade=‘B’;elseif(score>=70)grade=‘C’;elseif(score>=60)grade=‘D’;elsegrade=‘E’;10第10頁,課件共26頁,創(chuàng)作于2023年2月4.4.4if語句的嵌套當if(表達式)或else后面的語句本身又是一個if語句結(jié)構(gòu)時,就形成了if語句的嵌套結(jié)構(gòu)。一般形式:if(表達式1)if(表達式1_2)
語句1_1else
語句1_2elseif(表達式2_1)
語句2_1else
語句2_2注意:當程序中存在嵌套的if….else結(jié)構(gòu)時,每個else都與其前面最近的if配對,由內(nèi)層向外層逐步處理。11第11頁,課件共26頁,創(chuàng)作于2023年2月if(expr1)if(expr2)statement1elsestatement2elseif(expr3)statement3elsestatement4內(nèi)嵌if內(nèi)嵌ifif(expr1)if(expr2)statement1elsestatement2內(nèi)嵌ifif(expr1){if(expr2)statement1}elsestatement3
內(nèi)嵌ifif(expr1)statement1elseif(expr3)statement3elsestatement4內(nèi)嵌if例如:12第12頁,課件共26頁,創(chuàng)作于2023年2月if(z>y)if(z>x)max=z;elseif(y>x)max=y;if(z>y){if(z>x)max=z;}else{if(y>x)max=y;}
二者有何區(qū)別?13第13頁,課件共26頁,創(chuàng)作于2023年2月4.4.5switch語句結(jié)構(gòu)一般形式:執(zhí)行過程:switch(表達式){caseE1:語句組1;caseE2:語句組2;…….caseEn:語句組n;[default:語句組;]}switch表達式語句組1語句組2語句組n語句組…...E1E2Endefaultcase
例:switch(i)
{case1:printf(“A\n”);break;
case2:printf(“B\n”);break;
case3:printf(“C\n”);break;case4:printf(“D\n”);break;
default:printf(“E\n”);
}14第14頁,課件共26頁,創(chuàng)作于2023年2月4.5循環(huán)結(jié)構(gòu)循環(huán)控制:記數(shù)法和標志法。4.5.1窮舉與迭代算法窮舉問題所涉及的情況。答案需要滿足的條件。迭代確定迭代變量。建立迭代關(guān)系式。對迭代工程進行控制。15第15頁,課件共26頁,創(chuàng)作于2023年2月4.5.2while語句一般格式:while(循環(huán)條件表達式)循環(huán)體語句;執(zhí)行過程:先計算循環(huán)條件表達式的值,若為真則執(zhí)行循環(huán)體語句,重復(fù)上述過程,直到循環(huán)條件表達式的值為假時,循環(huán)結(jié)束。注意:先判斷,后執(zhí)行。循環(huán)條件表達式只要其值非0,就可以執(zhí)行循環(huán)體。循環(huán)體由多個語句組成時,須用花括號形成復(fù)合語句。為使循環(huán)最終能結(jié)束,每執(zhí)行一次循環(huán)體,循環(huán)條件表達式的值應(yīng)趨于0變化。如果表達式的值一開始就為0,則語句一次也會被不執(zhí)行。#include“stdio.h”main(){inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d",sum);}16第16頁,課件共26頁,創(chuàng)作于2023年2月4.5.3do…while語句一般格式:do{
循環(huán)體語句;
}while(循環(huán)條件表達式);執(zhí)行流程:先執(zhí)行循環(huán)體語句,然后對循環(huán)條件表達式進行計算,若其值為真則重復(fù)上述過程,直到循環(huán)條件表達式的值為假時,循環(huán)結(jié)束。注意:如果表達式的值一開始就為0,也會執(zhí)行一次語句,此處異于while語句。循環(huán)控制變量值在循環(huán)體內(nèi)必須有所改變。#include“stdio.h”main(){inti,sum=0;i=1;do{sum+=i; i++;}while(i<=100);printf("%d",sum);}17第17頁,課件共26頁,創(chuàng)作于2023年2月4.5.4for語句一般形式:for([表達式1];[表達式2];[表達式3])
循環(huán)體語句;其中:表達式1常用于給循環(huán)變量賦初值,可選。表達式2是循環(huán)條件,可選。表達式3常用來修改循環(huán)變量的值,可選。expr2循環(huán)體假(0)真(非0)forexpr1expr3說明:
for語句中三個表達式的類型任意,自身都可省略,但
分號不可省。無限循環(huán):for(;;)for語句可以轉(zhuǎn)換成while結(jié)構(gòu)。表達式1;while(表達式2){
循環(huán)體語句; 表達式3;}#include“stdio.h”main(){inti,sum=0;for(i=1;i<=100;i++)sum+=i;printf("%d",sum);}18第18頁,課件共26頁,創(chuàng)作于2023年2月例:main(){inti,sum=0;
for(i=1;i<=100;i++)sum+=i;printf(“%d”,sum);}例:main(){inti=1,sum=0;
for(;i<=100;i++)sum+=i;printf(“%d”,sum);}例:main(){inti=1,sum=0;
for(;i<=100;sum+=i++);printf(“%d”,sum);}19第19頁,課件共26頁,創(chuàng)作于2023年2月4.5.5流程轉(zhuǎn)向語句功能:改變程序的結(jié)構(gòu),使程序從其所在的位置轉(zhuǎn)向另一處。1.break語句語句形式:break;作用:在switch分支結(jié)構(gòu)中,可以使流程跳出switch分支結(jié)構(gòu);在循環(huán)結(jié)構(gòu)中,使流程跳出當前的循環(huán)層,轉(zhuǎn)向執(zhí)行該循環(huán)結(jié)構(gòu)后面的語句。說明:break只能終止并跳出最近一層的結(jié)構(gòu)。break不能用于循環(huán)語句和switch語句之外的任何其它語句
之中。20第20頁,課件共26頁,創(chuàng)作于2023年2月例:main()
{
inti=1,sum=0:
for(;;)
{sum+=i;i++;
if(i>100)break;/*如果i>100,則退出循環(huán)*/
}
printf(“sum=%d”,sum);
}
本程序中,當i>100時,強行終止for循環(huán),繼續(xù)執(zhí)行for語句下一條語句。21第21頁,課件共26頁,創(chuàng)作于2023年2月2.continue語句語句形式:continue;作用:使本次循環(huán)提前結(jié)束,即跳過循環(huán)體中尚未執(zhí)行的循環(huán)體語句,但不結(jié)束整個循環(huán),而繼續(xù)進行下一次循環(huán)的條件判別以決定是否進入下一次循環(huán)。說明:僅用于循環(huán)語句中。3.函數(shù)的調(diào)用和返回作用:使程序流程轉(zhuǎn)向被調(diào)用函數(shù),而函數(shù)返回語句return的功能是使流程從被調(diào)用函數(shù)返回主調(diào)函數(shù)。22第22頁,課件共26頁,創(chuàng)作于2023年2月例:顯示輸入的字符,如果按的是Esc鍵,則退出循環(huán);如果按的是Enter鍵,則不做任何處理,繼續(xù)輸入下一個字符。#include<stdio.h>main(){charch;
for(;;){ch=getchar();/*字符輸入函數(shù)*/if(ch==27)/*Esc鍵的ACSII碼為27*/
break;/*退出循環(huán)*/if(ch==13)
continue;/*按的是Enter鍵,跳過字符輸出語句*/putchar(ch);/*顯示輸入的字符*/}getchar();/*讓程序停一下,拍任意鍵繼續(xù)*/}23第23頁,課件共26頁,創(chuàng)作于2023年2月4.goto語句goto語句被稱為無條件轉(zhuǎn)移語句,由兩部分組成:
goto標號;和標號:語句其中:標號必須是一個合法的標識符,把它放在一個語句前面,后跟一個冒號,表示程序流程將轉(zhuǎn)向此語句。注意:goto語句和break語句相比最大的好處是可以一下跳出多重循環(huán),但不能從外面跳入循環(huán)體內(nèi)。goto語句應(yīng)有限制地進行使用。main(){intsum=0,n=1;loop:if(n<=100){sum+=n;n++;gotoloop;}printf(“%d\n”,sum);}24第24頁,課件共26頁,創(chuàng)作于2023年2月4.5.6循環(huán)結(jié)構(gòu)的嵌套循環(huán)的嵌套:在循環(huán)體語句中又有另一個完整的循環(huán)結(jié)構(gòu)的形式。內(nèi)循環(huán):嵌套在循環(huán)體內(nèi)的循環(huán)語句。外循環(huán):外面的循環(huán)語句。多層循環(huán):內(nèi)循環(huán)體中又有嵌套的循環(huán)語句。注意:內(nèi)循環(huán)必須被
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度環(huán)保型玻璃鋼GRG、FRP產(chǎn)品研發(fā)與推廣協(xié)議2篇
- 2025船舶租賃合同范本
- 2025年度炊事員食品安全責任與聘用合同4篇
- 2025年成品油公路運輸與油站合作開發(fā)合同3篇
- 2025年度高端住宅窗戶安裝與智能家居集成合同3篇
- 二零二四年老字號男裝店鋪使用權(quán)轉(zhuǎn)讓合同3篇
- 二零二五年度車貸擔保及車輛維修服務(wù)合同4篇
- 2025版?zhèn)€人土地征收安置補償協(xié)議
- 二零二五年度場項目投標失敗原因分析及補救措施合同4篇
- 2025年度汽車租賃公司車輛資產(chǎn)置換協(xié)議3篇
- 2025年上半年江蘇連云港灌云縣招聘“鄉(xiāng)村振興專干”16人易考易錯模擬試題(共500題)試卷后附參考答案
- DB3301T 0382-2022 公共資源交易開評標數(shù)字見證服務(wù)規(guī)范
- 人教版2024-2025學年八年級上學期數(shù)學期末壓軸題練習
- 【人教版化學】必修1 知識點默寫小紙條(答案背誦版)
- 江蘇省無錫市2023-2024學年八年級上學期期末數(shù)學試題(原卷版)
- 俄語版:中國文化概論之中國的傳統(tǒng)節(jié)日
- 《奧特萊斯業(yè)態(tài)淺析》課件
- 2022年湖南省公務(wù)員錄用考試《申論》真題(縣鄉(xiāng)卷)及答案解析
- 婦科一病一品護理匯報
- 哪吒之魔童降世
- 2022年上海市各區(qū)中考一模語文試卷及答案
評論
0/150
提交評論