国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

C語言中循環(huán)結(jié)構(gòu)的教學(xué)設(shè)計(jì)探討

2011-01-01 00:00:00馬憲敏于延
計(jì)算機(jī)教育 2011年5期


  摘要:循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)中的三種基本結(jié)構(gòu)之一,也是程序設(shè)計(jì)的基礎(chǔ)。但是,對(duì)于初學(xué)者來說,循環(huán)結(jié)構(gòu)與人類日常的思維習(xí)慣不同,較難掌握。本文通過精講for循環(huán),推導(dǎo)出while、do-while循環(huán),該方法在日常授課中取得良好的效果。
  關(guān)鍵詞:C語言;結(jié)構(gòu)化程序設(shè)計(jì);循環(huán)結(jié)構(gòu);計(jì)算機(jī)課教學(xué)方法
  
  循環(huán)語句是C語言程序設(shè)計(jì)課中的重點(diǎn)知識(shí),是編輯程序的關(guān)鍵。筆者根據(jù)多年程序設(shè)計(jì)課程的教學(xué)實(shí)踐,針對(duì)循環(huán)語句的特點(diǎn),通過提問式、啟發(fā)式教學(xué)方法,將問題層層剖析、層層深入,用簡(jiǎn)單淺顯的語句講解循環(huán)語句,特別是在如何從for語句變形為while語句這一知識(shí)點(diǎn)的過渡方面體會(huì)深刻、總結(jié)獨(dú)特。該教學(xué)方法能夠啟發(fā)學(xué)生動(dòng)用自己的思維,激發(fā)學(xué)生的潛能,并使其主動(dòng)探索,該方法及選用的一連串的例子能夠引導(dǎo)學(xué)生自己去發(fā)現(xiàn)學(xué)習(xí)的樂趣。
  
  1巧妙復(fù)習(xí),引入正題
  
  要使學(xué)生輕松容易地理解和掌握C語言中的循環(huán)結(jié)構(gòu)程序設(shè)計(jì)方法和技巧,教師必須在教學(xué)的所有環(huán)節(jié)上都進(jìn)行認(rèn)真研究和精心設(shè)計(jì)[1]。在循環(huán)結(jié)構(gòu)的第一節(jié)課,我們可以連續(xù)拋出幾個(gè)問題讓學(xué)生思考?!袄?,問題1:打印一行十個(gè)星號(hào),如何實(shí)現(xiàn)?問題2:打印兩行十個(gè)星號(hào),如何實(shí)現(xiàn)?問題3:打印10行十個(gè)星號(hào)如何實(shí)現(xiàn)?問題4:打印100行十個(gè)星號(hào)如何實(shí)現(xiàn)?”對(duì)于前3個(gè)問題,學(xué)生都能快速解決,而第4個(gè)問題,學(xué)生如果還用以前的方法,語句至少需要100條。此時(shí),如果教師指導(dǎo)學(xué)生用for循環(huán)實(shí)現(xiàn)的語句,同學(xué)們就可得到用3條語句代替這100 條語句的直觀印象。這樣做既能克服傳統(tǒng)復(fù)習(xí)枯燥乏味的缺點(diǎn),也能抓住學(xué)生的好奇心,還能激發(fā)學(xué)生對(duì)新問題的求知欲。
  
  2內(nèi)容講解過程
  
  2.1for語句
  在三種循環(huán)語句中,教師應(yīng)該先講哪個(gè)呢?筆者認(rèn)為應(yīng)該先講for語句,因?yàn)閒or語句完全可以變形為while語句,while語句又能變形為do-while語句。所以當(dāng)學(xué)生深刻理解了for語句后,自然能理解和掌握其他語句。for語句是循環(huán)控制結(jié)構(gòu)中使用最廣泛的一種循環(huán)控制語句,特別適合已知循環(huán)次數(shù)的情況。第一次講解循環(huán)實(shí)例要通俗易懂,力求循序漸進(jìn)。如求1+2+3+…+100的值,并將其結(jié)果放在變量sum中[2]。引導(dǎo)數(shù)生用依次相加的方法求和,推導(dǎo)過程如以下代碼所示。
  sum=0;
  sum=sum+1;
  sum=sum+2;
  sum=sum+3;
  ……
  sum=sum+100;
  從這個(gè)推導(dǎo)過程中找出規(guī)律sum=sum+i,i的初值i=1,i的范圍i<=100,i每次變化步長(zhǎng)。得出語句:for(i=1;i<=100;i++) sum=sum+i;從例子中引出for語句的一般形式。
  2.1.1for語句的一般形式
  for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體語句。
  for語句從結(jié)構(gòu)上很好地體現(xiàn)了循環(huán)控制應(yīng)注意的三個(gè)問題:1)循環(huán)的初始條件;2)循環(huán)條件;3)循環(huán)的步長(zhǎng)[3]。
  接著講解for語句中表達(dá)式的功能及常見形式。
  表達(dá)式1:設(shè)計(jì)循環(huán)的初始條件,常為賦值表達(dá)式,給循環(huán)的控制變量賦初值;
  表達(dá)式2:確定循環(huán)的條件,該表達(dá)式的值為邏輯量真或假,一般為關(guān)系表達(dá)式或邏輯表達(dá)式;
  表達(dá)式3:循環(huán)的步長(zhǎng),一般為賦值表達(dá)式、自加或自減表達(dá)式。
  語句:循環(huán)體,當(dāng)有多條語句時(shí),必須使用復(fù)合語句。
  所以for語句的一般形式又可以變?yōu)椋?br/>  for(賦值表達(dá)式;關(guān)系表達(dá)式;自加或自減表達(dá)式)循環(huán)體語句。
  有了這種對(duì)表達(dá)式功能的認(rèn)識(shí),才能有此表達(dá)式確定的形式,這種形式的確定為下一步講解如何將for語句轉(zhuǎn)變成while語句做了最好的鋪墊。
  2.1.2for循環(huán)的執(zhí)行過程
  首先計(jì)算表達(dá)式1,然后計(jì)算表達(dá)式2,若表達(dá)式2的值為真,則執(zhí)行循環(huán)體;否則,退出for循環(huán),執(zhí)行for循環(huán)外的語句。如果執(zhí)行了循環(huán)體,則循環(huán)體每執(zhí)行一次,都計(jì)算表達(dá)式3,然后重新計(jì)算表達(dá)式2,依此循環(huán),直至表達(dá)式2的邏輯量值為假,退出循環(huán)。流程圖如圖1所示。
  此處可以詳細(xì)講解剛才的實(shí)例,程序段如下所示。
  for (i = 1; i <= 100; i++)
  sum = sum + i;
  即i=1;1<=100為真,sum=sum+1;前1項(xiàng)的和,執(zhí)行后i=2;
  i=2;2<=100為真,sum=sum+2;前2項(xiàng)的和,執(zhí)行后i=3;
  i=3;3<=100為真,sum=sum+3;前3項(xiàng)的和,執(zhí)行后i=4;
  …
  i=100;100<=100為真,sum=sum+100;前100項(xiàng)的和,執(zhí)行后i=101;
  i=101;101<=100為假,循環(huán)終止。此時(shí)sum中的值即為所求前100項(xiàng)的和。
  通過例子得出結(jié)論之后,教師要不失時(shí)機(jī)地再次設(shè)疑。在此處,教師可以讓學(xué)生思考和解決難度相同的問題,并由他們自己做出正確答案,以加深對(duì)循環(huán)語句的理解和認(rèn)識(shí)。平行問題如下所示。
  問題1:1-100內(nèi)所的奇數(shù)/偶數(shù)之和?
  問題2:1-100內(nèi)所有為5倍數(shù)的數(shù)值之和?
  問題3: 之和?
  對(duì)于上述問題,教師只要稍加點(diǎn)撥,或經(jīng)學(xué)生互相討論,大多數(shù)同學(xué)都可以從表達(dá)式條件對(duì)執(zhí)行過程影響這一角度加以理解,并順利得出正確的程序。
  這些問題解決之后,教師可以逐步加深問題的難度,提高問題如下所示。
  問題4:鍵盤輸入10個(gè)學(xué)生的成績(jī),輸出各成績(jī)和平均成績(jī)。
  問題5:在兩行上分別按順序和逆序輸出26個(gè)英文大寫字母。
  問題6:輸出斐波納契(Fibonacci)級(jí)數(shù)的前30項(xiàng)。
  上述例子,可以使學(xué)生由感性認(rèn)識(shí)上升到理性認(rèn)識(shí),在認(rèn)識(shí)上產(chǎn)生了質(zhì)的飛躍。
  2.1.3for語句的幾種格式
  for語句的三個(gè)表達(dá)式都是可以省略的,但分號(hào)“;”絕對(duì)不能省略。還是以剛才的例子分別講解表達(dá)式1、表達(dá)式2和表達(dá)式3省略的情況。
  1)for(;表達(dá)式2;表達(dá)式3) 循環(huán)體語句。
  for語句執(zhí)行過程的第一步是執(zhí)行表達(dá)式1,我們可以將表達(dá)式1放到for循環(huán)的前面,這就形成了省略表達(dá)式1的情況。使用條件是:循環(huán)控制變量的初值是執(zhí)行在循環(huán)體前已經(jīng)賦值,如下面代碼:
  i = 1;
  for (;i<=100;i++)
  sum = sum + i;
  可以清楚地看到,在執(zhí)行循環(huán)前,循環(huán)控制變量的初值已經(jīng)被事先賦值了。執(zhí)行時(shí),跳過求解“表達(dá)式1”這一步,其他的執(zhí)行步驟不變。
  2)for(表達(dá)式1;;表達(dá)式3) 循環(huán)體語句。
  表達(dá)式2省略時(shí),循環(huán)條件默認(rèn)為真,此時(shí),循環(huán)體中一定要有一條語句能夠跑出循環(huán),否則就是一個(gè)死循環(huán)。為了以后避免出現(xiàn)死循環(huán),可以演示死循環(huán)的執(zhí)行過程,給學(xué)生留下深刻的印象。
  3)for(;表達(dá)式2;) 循環(huán)體語句。
  表達(dá)式3也可以省略,根據(jù)它的執(zhí)行順序可知,它是在執(zhí)行循環(huán)體語句后面執(zhí)行的,那么我們可以把“表達(dá)式3”放到循環(huán)體中所有語句的最后面,以保證循環(huán)能正常結(jié)束。如以上代碼可以變?yōu)槿缦滦问健?br/>  i = 1;
  for (; i <= 100;)
 ?。鹲um = sum + i;i++;}
  特別要注意的是,如果循環(huán)體有多條語句,要用一對(duì)大括號(hào)括起所有語句,構(gòu)成復(fù)合語句。
  這種形式就是也while 語句最為接近的形式。也可以從這里推導(dǎo)出while語句。
  
  表達(dá)式1;
  while(表達(dá)式2)
  {循環(huán)體;表達(dá)式3;}
  代碼形式變?yōu)椋?br/>  
  i=1;
  while (i <= 10)
 ?。鹲um = sum + i;i++;}
  這時(shí)可以直觀地看出for語句與while語句的聯(lián)系。也可以說如果表達(dá)式1,表達(dá)式2,表達(dá)式3完全相同的話,while語句完全等同于for語句。
  2.2while語句
  有些問題用for語句不方便或解決不了時(shí),可以用while語句。如問題:從鍵盤輸入若干個(gè)非0數(shù)據(jù),求它們的和?用0結(jié)束循環(huán)的執(zhí)行[2]。
  while語句是當(dāng)型循環(huán)語句,一般形式為:
  while(表達(dá)式)語句;
  其中while為語句的關(guān)鍵詞,表達(dá)式為循環(huán)條件,語句部分一般包括兩部分:循環(huán)體和步長(zhǎng),所以一般為多條語句構(gòu)成,應(yīng)使用復(fù)合語句,以符合語法規(guī)范的要求。
  while語句的傳統(tǒng)流程圖如圖2所示,其特點(diǎn)是先判斷,后執(zhí)行,若條件不成立,有可能一次也不執(zhí)行。
  在整個(gè)循環(huán)中,初始條件只在循環(huán)開始時(shí)執(zhí)行一次,以后進(jìn)行的是循環(huán)條件、循環(huán)體和步長(zhǎng)之間的循環(huán),一般初始條件以變量初始化或變量賦值語句的形式在循環(huán)語句之前已經(jīng)實(shí)現(xiàn),所以在while語句中沒有這一條件的體現(xiàn)。
  在講解while語句時(shí),教師可以將講解for語句的例子用while語句來實(shí)現(xiàn)一遍。從問題的求解中讓學(xué)生自己總結(jié)出兩者之間的區(qū)別。
  2.3do-while語句
  do-while和while很相似:while 先判斷表達(dá)式的值,后執(zhí)行循環(huán)體;do-while先執(zhí)行循環(huán)體,再判斷表達(dá)式[3]。它的一般形式為:
  do
  循環(huán)體
  while(表達(dá)式);
  其中語句通常為復(fù)合語句,基本組成同while語句。
  do-while語句的流程圖如圖3所示,其基本特點(diǎn)是:先執(zhí)行后判斷,因此,循環(huán)體至少被執(zhí)行一次。
  可以用do-while語句實(shí)現(xiàn)前一個(gè)例子,比較它們的異同。
  
  3結(jié)語
  
  “C語言程序設(shè)計(jì)”課程中循環(huán)結(jié)構(gòu)是重點(diǎn)也是難點(diǎn),如何在課堂上激發(fā)學(xué)生學(xué)習(xí)的興趣,培養(yǎng)學(xué)生發(fā)現(xiàn)問題和解決問題的能力,充分發(fā)揮學(xué)生的潛能,這是每一位教師必須面對(duì)的問題。只有教師采用秩序漸近的教學(xué)方法,學(xué)生才能掌握規(guī)律、活學(xué)活用、舉一反三。在課堂上,充分發(fā)揮學(xué)生的主體作用和教師的主導(dǎo)作用,采用啟發(fā)式,并遵循循序漸進(jìn)的教學(xué)原則,引導(dǎo)學(xué)生不斷設(shè)疑、析疑、解疑。總之,教學(xué)是一個(gè)需要持續(xù)改進(jìn)和完善的過程,我們將不斷總結(jié)課程教學(xué)的經(jīng)驗(yàn),使C語言教學(xué)邁向新的臺(tái)階。
  
  參考文獻(xiàn):
  [1]

视频| 拜泉县| 玉树县| 五家渠市| 穆棱市| 丽水市| 谢通门县| 新津县| 江阴市| 民乐县| 宁津县| 织金县| 东乌珠穆沁旗| 翼城县| 长汀县| 九龙县| 通道| 固安县| 定远县| 江津市| 陕西省| 华宁县| 新竹市| 泽普县| 札达县| 梅州市| 郎溪县| 中阳县| 英吉沙县| 西乡县| 衡南县| 商都县| 临澧县| 贡山| 从江县| 南京市| 巫溪县| 达尔| 教育| 凤城市| 大安市|