C語言選擇結(jié)構(gòu)程序教學(xué)設(shè)計_第1頁
C語言選擇結(jié)構(gòu)程序教學(xué)設(shè)計_第2頁
C語言選擇結(jié)構(gòu)程序教學(xué)設(shè)計_第3頁
C語言選擇結(jié)構(gòu)程序教學(xué)設(shè)計_第4頁
C語言選擇結(jié)構(gòu)程序教學(xué)設(shè)計_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

一、教學(xué)思想(包括教學(xué)背景、教學(xué)目標(biāo))關(guān)于“C語言”計算機的本質(zhì)是“程序的機器”,程序和指令的思想是計算機系統(tǒng)中最基本的概念,只有懂得程序設(shè)才能懂得計算機,真正了解計算機是怎樣工作的;通過學(xué)習(xí)程序設(shè)計可以使我們進(jìn)一步了解計算機的工作原理,更好地理解個應(yīng)用計算機,學(xué)會用計算機處理問題的方法。C語言作為一種高級程序設(shè)計語言,相比其他高級程序設(shè)計語言有著公認(rèn)的一些特點,比如語言本身簡介,生成的代碼質(zhì)量高,使用靈活等。它既可以編寫計算機系統(tǒng)軟件又可以編寫各類應(yīng)用軟件。C語言作為一種簡潔高校并且支持結(jié)構(gòu)化編程的程序設(shè)計語言,在講究效率的時代,對于幫助學(xué)習(xí)者掌握程序設(shè)計的基本思想和方法,進(jìn)而更好地理解計算機的工作,會有極大的幫助。關(guān)于選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計是結(jié)構(gòu)化程序設(shè)計的3種基本結(jié)構(gòu)之一,是程序設(shè)計中常用的結(jié)構(gòu)。前面介紹的順序結(jié)構(gòu)里,程序中的所有語句按照書寫順序依次執(zhí)行。而在日常生活中,處理事情的順序并不都是按部就班的順序進(jìn)行,有時會根據(jù)某些條件進(jìn)行選擇。比如在進(jìn)行周末活動安排時,我們可以說:“如果天氣好,我們就去郊游,否則我們就去體育館打球?!痹谶@樣安排中,可以看到,“郊游”和“打球”哪個動作實際執(zhí)行依賴于“天氣好”這個條件是否滿足。在程序設(shè)計中,上述安排就要用選擇結(jié)構(gòu)來實現(xiàn)。選擇結(jié)構(gòu)的作用是根據(jù)所給條件的真假,決定程序的運行途徑。在上述實例中,“天氣好?”是控制條件,它的作用是決定程序的流程,如果天氣確實好,則條件為真,進(jìn)行“郊游”這個活動,如果天氣不好,則條件為假,進(jìn)行“打球”這個活動?!敖加巍焙汀按蚯颉皟蓚€活動只進(jìn)行一個,該選擇結(jié)構(gòu)結(jié)束后,再執(zhí)行下面的語句。教學(xué)目標(biāo)知識與技能目標(biāo):掌握關(guān)系運算、邏輯運算和C語言條件語句的使用。過程與方法目標(biāo):通過課程舉例,程序的比較和運行和程序流程圖的使用,讓學(xué)生加深記憶,理解條件語句的執(zhí)行順序。情感態(tài)度與價值觀目標(biāo):學(xué)習(xí)條件語句使學(xué)生進(jìn)一步了解程序,對程序設(shè)計產(chǎn)生學(xué)習(xí)興趣。教學(xué)重點與難點重點:if語句、switch語句的使用難點:if語句的嵌套

二、課程設(shè)計思路(包括教學(xué)方法、教學(xué)手段)教學(xué)步驟教學(xué)內(nèi)容設(shè)計意圖表達(dá)方式1、學(xué)習(xí)關(guān)系運算和關(guān)系表達(dá)式2、學(xué)習(xí)邏輯運算和邏輯表達(dá)式以及運算符的優(yōu)先次序2、學(xué)習(xí)邏輯運算和邏輯表達(dá)式以及運算符的優(yōu)先次序使用if語句實現(xiàn)選擇結(jié)構(gòu)和條件判斷語句使用if語句實現(xiàn)選擇結(jié)構(gòu)和條件判斷語句3、使用if語句實現(xiàn)選擇結(jié)構(gòu)和條件判斷語句關(guān)系運算符:用來對兩個數(shù)值進(jìn)行比較的比較運算符C語言提供6種關(guān)系運算符:①<(小于)②<=(小于或等于)③>(大于)④>=(大于或等于)⑤==(等于)⑥!=(不等于)關(guān)系表達(dá)式用關(guān)系運算符將兩個數(shù)值或數(shù)值表達(dá)式連接起來的式子1——1——真0——假關(guān)系表達(dá)式的值是一個邏輯值例:a+b>c+d(a=3)<(b=5)‘a(chǎn)’!=‘A’(a>b)==(c<d)3種邏輯運算符:&&(邏輯與)||(邏輯或)!(邏輯非)&&和||是雙目(元)運算符!是一目(元)運算符邏輯表達(dá)式<表達(dá)式><邏輯運算符><表達(dá)式>例:判斷年齡在13至17歲之內(nèi)?age>=13&&age<=17判斷年齡小于12或大于65?age<12||age>65邏輯運算符的優(yōu)先次序!→&&→||(!為三者中最高)與其他運算符的優(yōu)先次序!(高)算術(shù)運算符關(guān)系運算符&&和||賦值運算符(低)例:判別某一年是否閏年,用邏輯表達(dá)式表示閏年的條件是符合下面二者之一:①能被4整除,但不能被100整除,如2008②能被400整除,如2000(year%4==0&&year100!=0)||year%400==0如果表達(dá)式值為1,則閏年;否則為非閏年例:例:求方程的根。由鍵盤輸入a,b,c。假設(shè)a,b,c的值任意,并不保證。需要在程序中進(jìn)行判別,如果,就計算并輸出方程的兩個實根,否則就輸出“方程無實根”的信息。左邊為順序結(jié)構(gòu)的程序流程圖,右邊為選擇結(jié)構(gòu)程序流程圖。比較它們的之間區(qū)別。#include<stdio.h>#include<math.h>intmain(){doublea,b,c,disc,x1,x2,p,q;scanf("%lf%lf%lf",&a,&b,&c);disc=b*b-4*a*c;if(disc<0)printf(“hasnotrealroots\n”);else{p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(“realroots:\nx1=%7.2f\nx2=%7.2f\n”,x1,x2);}return0;}當(dāng)程序輸入6,3,1時,它的運行結(jié)果是什么?當(dāng)程序輸入2,4,1時,它的運行結(jié)果是什么?例:輸入兩個實數(shù),按代數(shù)值由小到大的順序輸出這兩個數(shù)。解題思路:只需要做一次比較,然后進(jìn)行一次交換即可用if語句實現(xiàn)條件判斷關(guān)鍵是怎樣實現(xiàn)兩個變量值的互換#include<stdio.h>intmain(){floata,b,t;scanf("%f,%f",&a,&b);if(a>b){t=a;a=b;b=t;}printf("%5.2f,%5.2f\n",a,b);return0;}例:輸入3個數(shù)a,b,c,要求按由小到大的順序輸出。解題思路:可以先用偽代碼寫出算法:ifa>b,a和b對換(a是a、b中的小者)ifa>c,a和c對換(a是三者中最小者)ifb>c,b和c對換(b是三者中次小者)順序輸出a,b,c#include<stdio.h>intmain(){floata,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a>b)如果a>b,將a和b對換{t=a;a=b;b=t;}a是a、b中的小者if(a>c)如果a>c,將a和b對換{t=a;a=c;c=t;}a是a、c中的小者if(b>c)如果b>c,將a和b對換{t=b;b=c;c=t;}b是b、c中的小者printf("%5.2f,%5.2f,%5.2f\n",a,b,c);return0;}運行程序并輸出結(jié)果。if語句的一般形式:if(表達(dá)式)語句1[else語句2]最常用的3種if語句形式:1.if(表達(dá)式)語句1(沒有else子句)2.if(表達(dá)式)語句1else語句2(有else子句)3.if(表達(dá)式1)語句1elseif(表達(dá)式2)語句2elseif(表達(dá)式3)語句3┆elseif(表達(dá)式m)語句melse語句m+1(在else部分又嵌套了多層的if語句)選擇結(jié)構(gòu)程序設(shè)計中條件語句的使用需要使用關(guān)系運算和邏輯運算。使用簡單的例子便于學(xué)生理解。在教學(xué)過程中由簡入難選擇結(jié)構(gòu)和條件判斷語句是本章的重難點,對于初學(xué)者有一定的難度,這一部分內(nèi)容采用大量的例題以便學(xué)生理解和掌握選擇語句的用法。通過例題的實際運用讓學(xué)生了解條件判斷的作用選擇結(jié)構(gòu)的使用。通過例題的學(xué)習(xí)引入if語句的格式和使用方法。讓學(xué)生自己找出規(guī)律加深記憶。3、使用if語句實現(xiàn)選擇結(jié)構(gòu)和條件判斷語句使用if語句實現(xiàn)選擇結(jié)構(gòu)和條件判斷語句4、條件運算符和條件表達(dá)式例:某運輸公司噸公里基本運費為p,根據(jù)距離s的遠(yuǎn)近計費標(biāo)準(zhǔn)如下:s<250km 沒有折扣 250s<500 2%折扣 500s<1000 5%折扣 1000s<2000 8%折扣 2000s<3000 10%折扣 3000s 15%折扣根據(jù)貨物重量w和運距s,求運費f。main(){floatp,s,w,d,f;scanf(“%f%f%f”,&p,&s,&w);if(s>=3000)d=0.15;elseif(s>=2000)d=0.10;elseif(s>=1000)d=0.08;elseif(s>=500)d=0.05;elseif(s>=250)d=0.02;elsed=0.0;f=p*w*s*(1-d);printf(“f=%15.2f”,f);}選擇結(jié)構(gòu)的嵌套:在if語句中又包含一個或多個if語句稱為if語句的嵌套一般形式:else總是與它上面最近的未配對的if配對if()else總是與它上面最近的未配對的if配對if()語句1else語句2elseif()語句3else語句4內(nèi)嵌if例:有一函數(shù):編一程序,輸入一個x值,要求輸出相應(yīng)的y值。解題思路:方法1scanf("%d",&x);if(x<0)y=-1;scanf("%d",&x);if(x<0)y=-1;if(x==0)y=0;if(x>0)y=1;printf("x=%d,y=%d\n",x,y);輸入x若x<0,則y=-1若x=0,則y=0若x>0,則y=1輸出x和yscanf("%d",&x);if(x>=0)scanf("%d",&x);if(x>=0)if(x>0)y=1;elsey=0;elsey=-1;printf("x=%d,y=%d\n",x,y);scanf("%d",&x);if(x<0)y=-1;scanf("%d",&x);if(x<0)y=-1;elseif(x==0)y=0;elsey=1;printf("x=%d,y=%d\n",x,y);輸入x若x<0,則y=-1否則若x=0,則y=0否則y=1輸出x和y有一種if語句,當(dāng)被判別的表達(dá)式的值為“真”或“假”時,都執(zhí)行一個賦值語句且向同一個變量賦值如:if(a>b)max=(a>b)?a:b;max=a;max=(a>b)?a:b;elsemax=b;1、條件表達(dá)式的一般形式<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>運算規(guī)則右結(jié)合先計算表達(dá)式1,若為非0,則以表達(dá)式2的值作為條件表達(dá)式的值;否則,以表達(dá)式3的值為條件表達(dá)式的值。右結(jié)合優(yōu)先級算術(shù)關(guān)系邏輯運算(!除外)條件運算賦值運算高低(1)輸出x和y當(dāng)中的最大值z=x>y?x:y;printf(“max=%d”,z);或printf(“max=%d”,x>y?x:y);或x>y?printf(“%d”,x):printf(“%d”,y);(2)a>b?a:b+1等價于a>b?a:(b+1)而不是(a>b?a:b)+1(3)a>b?a:c>d?c:d等價于a>b?a:(c>d?c:d)(4)x>y?1:5.6表達(dá)式的值的類型取高的運用例題鞏固知識,實現(xiàn)多重選擇語句的使用。引用例題使用多種方法說明if的嵌套使用,便于理解和記憶。條件運算符和條件表達(dá)式相對而言比較簡單,在教學(xué)過程中列舉表達(dá)式的一般形式并舉例說明。4、條件運算符和條件表達(dá)式5、用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)例:輸入一個字符,判別它是否大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。#include<stdio.h>intmain(){charch;scanf("%c",&ch);ch=(ch>='A'&&ch<='Z‘)?(ch+32):ch;printf("%c\n",ch);return0;}switch語句的作用是根據(jù)表達(dá)式的值,使流程跳轉(zhuǎn)到不同的語句switch語句的一般形式:switch(表達(dá)式){case常量1:語句1case常量2:語句2┇┇┇case常量n:語句ndefault:語句n+1}switch語句的作用是根據(jù)表達(dá)式的值,使流程跳轉(zhuǎn)到不同的語句switch語句的執(zhí)行過程:當(dāng)switch后的表達(dá)式的值與某一個case后的常量表達(dá)式的值相等時,執(zhí)行其后的語句;若無匹配,則執(zhí)行default后的語句break語句使流程跳出switch結(jié)構(gòu),終止switch語句的執(zhí)行。例:要求按照考試成績的等級輸出百分制分?jǐn)?shù)段,A等為85分以上,B等為70~84分,C等為60~69分,D等為60分以下。成績的等級由鍵盤輸入。#include<stdio.h>intmain(){chargrade;scanf("%c",&grade);printf("Yourscore:");switch(grade){case'A':printf("85~100\n");break;case'B':printf("70~84\n");break;case'C':pr

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論