程序流程控制_第1頁
程序流程控制_第2頁
程序流程控制_第3頁
程序流程控制_第4頁
程序流程控制_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論