第三講 程序控制結(jié)構(gòu)33512_第1頁
第三講 程序控制結(jié)構(gòu)33512_第2頁
第三講 程序控制結(jié)構(gòu)33512_第3頁
第三講 程序控制結(jié)構(gòu)33512_第4頁
第三講 程序控制結(jié)構(gòu)33512_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第三講程序控制結(jié)構(gòu)(一)講師:1學(xué)習(xí)目標(biāo):

l了解程序設(shè)計(jì)的一般方法、結(jié)構(gòu)化程序設(shè)計(jì)l熟悉順序結(jié)構(gòu)、簡單程序流程圖的畫法l熟練應(yīng)用if語句的使用規(guī)則以及相應(yīng)的程 序流程l熟練應(yīng)用switch語句的使用規(guī)則及相應(yīng)的程序流程

2學(xué)習(xí)重點(diǎn):L

l

if語句的使用規(guī)則以及相應(yīng)的程 序流程l

switch語句的使用規(guī)則及相應(yīng)的 程序流程3學(xué)習(xí)難點(diǎn):if語句的嵌套的應(yīng)用

4一、程序設(shè)計(jì)的一般方法(1)程序就是按照某種算法,在有限的步驟內(nèi)對一些經(jīng)過整理的、按照一定形式組織起來的有關(guān)聯(lián)的數(shù)據(jù)(即數(shù)據(jù)結(jié)構(gòu))進(jìn)行分析研究,得到期望的結(jié)果,并且計(jì)算機(jī)可以執(zhí)行的指令序列。數(shù)據(jù)結(jié)構(gòu)和算法是程序設(shè)計(jì)的主要因素。程序設(shè)計(jì)的一般方法可以概括為以下四個(gè)步驟:明確處理對象、選擇算法畫流程圖編寫程序調(diào)試程序5一、程序設(shè)計(jì)的一般方法(2)為了解決一個(gè)問題清楚地理解這個(gè)問題收集相關(guān)信息處理這些信息得出解決方案6一、程序設(shè)計(jì)的一般方法(3)已知三角形三條邊,求三角形的面積首先需要明確處理對象,選擇適合的算法根據(jù)數(shù)據(jù)特點(diǎn)和取值范圍,浮點(diǎn)型的數(shù)據(jù)可以很好地表示三角形的邊長和面積。如果a、b、c符合兩邊之和大于第三邊,則a、b、c可以組成三角形,其面積的算法可以使用海倫公式第二步畫流程圖。7二、流程圖(1)是算法的一種圖形化表示方式,將一個(gè)過程中的指令或流動(dòng)的流程繪制成圖,并使用符號表示其中的每個(gè)活動(dòng)。START

DISPLAY'HelloWorld!'STOP

8二、流程圖(2)流程圖用來表示各種操作的圖框。起止框輸入輸出框判斷框處理框流程線9二、結(jié)構(gòu)化程序設(shè)計(jì)(1)結(jié)構(gòu)化程序設(shè)計(jì)方法的基本思想是:任何程序都可用三種基本結(jié)構(gòu)的組合來實(shí)現(xiàn)。這三種基本結(jié)構(gòu)是:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。這三種結(jié)構(gòu)都具有一個(gè)入口和一個(gè)出口。要求限制無條件轉(zhuǎn)移語句(即goto語句)的使用10二、結(jié)構(gòu)化程序設(shè)計(jì)(2)順序結(jié)構(gòu):是按照書寫順序依次執(zhí)行的。選擇結(jié)構(gòu):是對給定的條件進(jìn)行判斷,再根據(jù)判斷的結(jié)果決定決定執(zhí)行哪一個(gè)分支循環(huán)結(jié)構(gòu):是在給定條件成立時(shí)反復(fù)執(zhí)行某段程序。條件程序段1程序段2條件程序段程序段1程序段211二、順序結(jié)構(gòu)(1)順序結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu)中最簡單的。它可以獨(dú)立存在,也可以出現(xiàn)在選擇結(jié)構(gòu)或循環(huán)結(jié)構(gòu)中,整個(gè)程序都存在順序結(jié)構(gòu)。在順序結(jié)構(gòu)中,函數(shù)、一段程序或者語句是按照出現(xiàn)的先后順序執(zhí)行的。例求ax2+bx+c=0方程的解。a、b、c由鍵盤輸入,且b2-4ac>0。12二、順序結(jié)構(gòu)(2)算法表示:定義a、b、c、p、x1、x2用于存放方程的系數(shù)、中間變量和結(jié)果;輸入a、b、cp=sqrt(b*b-4*a*c)計(jì)算x1、x2:x1=(-b+p)/(2*a)x2=(-b-p)/(2*a)輸出方程的根x1、x2開始輸入a、b、cp=sqrt(b2-4ac)x1=(-b+p)/2ax2=(-b-p)/2a輸出方程的根x1、x2結(jié)束舉一反三:畫出實(shí)現(xiàn)“輸入三個(gè)數(shù)a、b、c,輸出平均值aver”的程序的流程圖和偽代碼。13三、選擇結(jié)構(gòu)(分支)選擇結(jié)構(gòu)是結(jié)構(gòu)化程序的三種基本結(jié)構(gòu)之一,用于根據(jù)給定條件的判斷執(zhí)行何種操作。C語言中的選擇結(jié)構(gòu)有兩種:if語句和case語句。If語句主要提供兩個(gè)分支的選擇,case語句提供多分支的選擇。下面我們先介紹最為常用的選擇結(jié)構(gòu)if語句。14三、if語句(1)if語句的基本形式(簡單的if語句)if(條件)語句;條件語句成立不成立例:由鍵盤輸入x、y兩個(gè)數(shù),要求從大到小排序并輸出。分析:關(guān)鍵技術(shù):兩個(gè)變量互換算法是:t=x;x=y;y=t;

定義x、y、t用于存放輸入的兩個(gè)數(shù)和中間變量;輸入x、yif(x<y){t=x;x=y;y=t;}

輸出x、y15三、if語句(1)開始定義變量x、y結(jié)束從鍵盤給x、y賦值x<y?x、y互換NoYes輸出x、y16三、if語句(2)復(fù)雜的if語句if(條件) 語句1;else 語句2;條件語句1語句2成立不成立17三、if語句(2)判斷方程ax2+bx+c=0是否有實(shí)數(shù)解,其中a、b、c由鍵盤輸入分析:用偽代碼表示算法:定義a、b、c、p用于存放方程的系數(shù)、中間變量;輸入a、b、c令p=b*b-4*a*cif(p>=0)輸出方程有實(shí)數(shù)解else輸出方程無實(shí)數(shù)解開始p=b2-4ac結(jié)束p>=0輸出有實(shí)數(shù)解輸出無實(shí)數(shù)解成立不成立輸入a、b、c由鍵盤輸入系數(shù)a、b、c,判斷方程ax2+bx+c=0是否有實(shí)數(shù)解,如果有則輸出其解。(提示:需要用到復(fù)合語句)18三、if語句(3)當(dāng)if語句中的語句1或語句2是一個(gè)含if語句的復(fù)合語句時(shí),形成if語句的嵌套。形式一:當(dāng)語句2是if語句結(jié)構(gòu)if(條件1)語句1elseif(條件2)語句2else語句3形式二:當(dāng)語句1是if語句結(jié)構(gòu)if(條件1) if(條件2)語句1else語句2else語句3條件1語句1成立不成立條件2語句2語句3成立不成立條件1語句1成立不成立條件2語句2語句3成立不成立19三、if語句(3)例:編寫程序,輸入一個(gè)x,按照函數(shù)要求輸出y值。-1(x<0)

y=0(x=0)1(x>0)分析: 采用形式二的算法:采用形式一的算法: 定義變量x,y定義變量x,y 輸入x輸入x if(x<=0)if(x<0)y=-1; if(x<0)y=-1;elseif(x==0)y=0; elsey=0; elsey=1; elsey=1;輸出y值輸出y值舉一反三:試判斷下列選擇結(jié)構(gòu)是否可以表示上例函數(shù)。 if(x<0)y=-1; if(x==0)y=0; elsey=1;20三、if語句(3)在if語句嵌套中,特別注意else與if的配對問題C編譯系統(tǒng)處理該問題的的原則是:else總是與同一語法層次中離它最近的尚未配對的if配對。為了避免出現(xiàn)else的配對錯(cuò)誤,通常利用大括號將if-else語句結(jié)構(gòu)括起來。程序段一: 程序段二:if(a>=0) if(a>=0){if(a>0)printf(“a>0\n”);}if(a>0)printf(“a>0\n”);elseprintf(“a<0\n”); elseprintf(“a==0\n”);21四、

switch語句(1)switch語句用于實(shí)現(xiàn)多重分支格式為注意:如果需要執(zhí)行完本case語句后就跳出 switch語句,則在對應(yīng)的case語句后加上一 個(gè)break語句switch(整型表達(dá)式){case數(shù)值1:語句1;break;case數(shù)值2:語句2;break;…………case數(shù)值n:語句n;break;default:語句n+1}整型表達(dá)式語句1語句2等于數(shù)值1語句n語句n+1等于數(shù)值2等于數(shù)值n等于其它值…22四、

switch語句(2)switch語句由鍵盤輸入一個(gè)成績,然后輸出相應(yīng)的等級“優(yōu)”、“良”、“中”、“及格”、“不及格”。開始定義score結(jié)束score/10輸出優(yōu)秀等于10輸入score輸出良好輸出中等輸出及格輸出不及格輸出”輸入錯(cuò)誤”輸出優(yōu)秀等于9等于8等于7等于6等于5等于其它值輸出不及格等于0……23#include<stdio.h>voidmain(){intscore;printf(“請輸入學(xué)生分?jǐn)?shù):”);scanf(“%d”,&score);switch(score/10){case10:case9:printf(“成績優(yōu)秀\n”);break;case8:printf(“成績良好\n”);break;case7:printf(“成績中等n”);break;case6:printf(“成績及格\n”);break;case5:case4:case3:case2:case1:case0:printf(“成績不及格\n”);break;default:printf(“輸入分?jǐn)?shù)錯(cuò)誤\n”);}}舉一反三:由鍵盤輸入等級A、B、C、D,輸出成績范圍。其中“A”代表85~100分,“B”代表70~85分,“C”代表60~70分,“D”代表60分以下。24例子/*-----------------------------------------------------------------程序L3_8.C:從鍵盤輸入1~7之間的數(shù)字,輸出對應(yīng)星期中的英文單詞。-----------------------------------------------------------------*/#include<stdio.h>main(){charw;scanf("%c",&w);switch(w){case'0':printf("Sunday\n",w);break;case'1':printf("Monday\n",w);break;case'2':printf("Tuesday\n",w);break;case'3':printf("Wednesday\n",w);break;case'4':printf("Thur

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論