版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
程序流程控制1第1頁,課件共26頁,創(chuàng)作于2023年2月4.1算法數(shù)據(jù)結(jié)構(gòu)+算法=程序數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計(jì)方法+語言環(huán)境=程序4.1.1算法的概念算法的五個(gè)特性:有窮性、確定性、可行性、輸入、輸出。算法設(shè)計(jì)注意:正確性、可讀性、健壯性、高效性。2第2頁,課件共26頁,創(chuàng)作于2023年2月4.1.2算法的組成要素1、操作:
包括算術(shù)運(yùn)算、邏輯運(yùn)算、關(guān)系運(yùn)算、函數(shù)運(yùn)算、位運(yùn)算、I/O操作等。2、控制結(jié)構(gòu):
控制算法中各個(gè)操作的執(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.表達(dá)式語句運(yùn)算符表達(dá)式語句:計(jì)算表達(dá)式的值。函數(shù)調(diào)用表達(dá)式語句:調(diào)用函數(shù)。4.2C語言的基本語句聲明語句用于聲明合法標(biāo)識符(變量名或函數(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(表達(dá)式)
語句1;
else
語句2;執(zhí)行過程:先判斷表達(dá)式,成立就執(zhí)行語句1,否則執(zhí)行語句2。例:if(x>y)max=x;elsemax=y;注意:
if…else中表達(dá)式可為關(guān)系表達(dá)式、邏輯表達(dá)式、數(shù)值表達(dá)式。
if…else中語句1、語句2可以為簡單語句或復(fù)合語句。
if…else中分號的使用位置。表達(dá)式語句1真假語句2雙分支選擇8第8頁,課件共26頁,創(chuàng)作于2023年2月4.4.2if語句結(jié)構(gòu)形式:if(表達(dá)式)
語句;執(zhí)行過程:先判斷表達(dá)式,若成立則執(zhí)行語句,否則跳過該語句而直接執(zhí)行該結(jié)構(gòu)后的下一條語句。注意:此處,不管分支語句是否執(zhí)行,if后的表達(dá)式一定執(zhí)行。表達(dá)式語句真假單分支選擇例: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(表達(dá)式1)語句1;
elseif(表達(dá)式2)語句2;
…elseif(表達(dá)式n)語句n;
else語句n+1;執(zhí)行過程:執(zhí)行時(shí)先判斷表達(dá)式1的值,非0就執(zhí)行下面的語句,若為0就執(zhí)行下一個(gè)判斷,一直這樣做下去直到得出最后結(jié)果。
表達(dá)式1真語句1假表達(dá)式2表達(dá)式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語句的嵌套當(dāng)if(表達(dá)式)或else后面的語句本身又是一個(gè)if語句結(jié)構(gòu)時(shí),就形成了if語句的嵌套結(jié)構(gòu)。一般形式:if(表達(dá)式1)if(表達(dá)式1_2)
語句1_1else
語句1_2elseif(表達(dá)式2_1)
語句2_1else
語句2_2注意:當(dāng)程序中存在嵌套的if….else結(jié)構(gòu)時(shí),每個(gè)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(表達(dá)式){caseE1:語句組1;caseE2:語句組2;…….caseEn:語句組n;[default:語句組;]}switch表達(dá)式語句組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ù)法和標(biāo)志法。4.5.1窮舉與迭代算法窮舉問題所涉及的情況。答案需要滿足的條件。迭代確定迭代變量。建立迭代關(guān)系式。對迭代工程進(jìn)行控制。15第15頁,課件共26頁,創(chuàng)作于2023年2月4.5.2while語句一般格式:while(循環(huán)條件表達(dá)式)循環(huán)體語句;執(zhí)行過程:先計(jì)算循環(huán)條件表達(dá)式的值,若為真則執(zhí)行循環(huán)體語句,重復(fù)上述過程,直到循環(huán)條件表達(dá)式的值為假時(shí),循環(huán)結(jié)束。注意:先判斷,后執(zhí)行。循環(huán)條件表達(dá)式只要其值非0,就可以執(zhí)行循環(huán)體。循環(huán)體由多個(gè)語句組成時(shí),須用花括號形成復(fù)合語句。為使循環(huán)最終能結(jié)束,每執(zhí)行一次循環(huán)體,循環(huán)條件表達(dá)式的值應(yīng)趨于0變化。如果表達(dá)式的值一開始就為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)條件表達(dá)式);執(zhí)行流程:先執(zhí)行循環(huán)體語句,然后對循環(huán)條件表達(dá)式進(jìn)行計(jì)算,若其值為真則重復(fù)上述過程,直到循環(huán)條件表達(dá)式的值為假時(shí),循環(huán)結(jié)束。注意:如果表達(dá)式的值一開始就為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([表達(dá)式1];[表達(dá)式2];[表達(dá)式3])
循環(huán)體語句;其中:表達(dá)式1常用于給循環(huán)變量賦初值,可選。表達(dá)式2是循環(huán)條件,可選。表達(dá)式3常用來修改循環(huán)變量的值,可選。expr2循環(huán)體假(0)真(非0)forexpr1expr3說明:
for語句中三個(gè)表達(dá)式的類型任意,自身都可省略,但
分號不可省。無限循環(huán):for(;;)for語句可以轉(zhuǎn)換成while結(jié)構(gòu)。表達(dá)式1;while(表達(dá)式2){
循環(huán)體語句; 表達(dá)式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)中,使流程跳出當(dāng)前的循環(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);
}
本程序中,當(dāng)i>100時(shí),強(qiáng)行終止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é)束整個(gè)循環(huán),而繼續(xù)進(jìn)行下一次循環(huán)的條件判別以決定是否進(jì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ù)輸入下一個(gè)字符。#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標(biāo)號;和標(biāo)號:語句其中:標(biāo)號必須是一個(gè)合法的標(biāo)識符,把它放在一個(gè)語句前面,后跟一個(gè)冒號,表示程序流程將轉(zhuǎn)向此語句。注意:goto語句和break語句相比最大的好處是可以一下跳出多重循環(huán),但不能從外面跳入循環(huán)體內(nèi)。goto語句應(yīng)有限制地進(jìn)行使用。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)體語句中又有另一個(gè)完整的循環(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度物流倉儲用地承包租賃合同(2024版)4篇
- 2025年度新型儲藏室與車位投資合作合同模板4篇
- 2025年度新能源汽車充電樁承債式公司股權(quán)轉(zhuǎn)讓合同4篇
- 2025年度文化演藝場館承包經(jīng)營合同4篇
- 2025年度土地整治與生態(tài)修復(fù)項(xiàng)目承包合同4篇
- 2024通信線路施工及改造分包合同范本3篇
- 2025年度生態(tài)環(huán)保工程承包商工程款支付擔(dān)保協(xié)議4篇
- 2025年度歷史文化街區(qū)保護(hù)項(xiàng)目房屋拆遷補(bǔ)償合同2篇
- 2025年度住宅小區(qū)配套停車場車位代理銷售協(xié)議4篇
- 2025年度星級酒店廚師團(tuán)隊(duì)合作協(xié)議4篇
- 土壤農(nóng)化分析課件
- 小區(qū)大型團(tuán)購活動(dòng)策劃
- NEC(新生兒壞死性小腸結(jié)腸炎)92273
- 2023年租賃風(fēng)控主管年度總結(jié)及下一年展望
- 開關(guān)插座必看的七個(gè)安全隱患范文
- 高分子成型加工課件
- 消防救援-低溫雨雪冰凍惡劣天氣條件下災(zāi)害防范及救援行動(dòng)與安全
- 硅石項(xiàng)目建議書范本
- 概率論在金融風(fēng)險(xiǎn)評估中的應(yīng)用研究
- 住院醫(yī)療互助給付申請書
- 外墻外保溫工程檢驗(yàn)批質(zhì)量驗(yàn)收記錄表
評論
0/150
提交評論