本論文在其他論文欄目,由論文格式網整理,轉載請注明來源www.donglienglish.cn,更多論文,請點論文格式范文查看
《循環結構》教學設計
鹽城中學 周勇軍 高士娟
【教材分析】本課取自教育科學出版社出版的《算法與程序設計》,第二章第三節的第三課時:循環結構之for循環。循環結構可以使大量具有重復性的代碼簡化,給編寫較復雜的程序帶來方便,因此在程序設計中具有重要的地位。
【學情分析】學生已經學習了順序結構和分支結構,而循環結構相對于前面兩種結構難度要
大。這部分的學習將為“常用算法的程序實現”奠定基礎。
【知識目標】理解循環結構的概念,掌握for循環的語句格式,掌握for循環中初值、終值、
步長、循環體的分析方法。
【技能目標】掌握解決問題的一般思路,學會使用循環結構解決實際問題。
【情感目標】通過師生、生生互動的活動過程,培養學生的主動探究、勇于發現的精神,增
強編程興趣,體驗成功喜悅。
【教學重點】for循環結構的語句格式;循環結構中初值、終值、步長、循環體的分析方法;
使用循環結構解決問題。
【教學難點】循環結構中初值、終值、步長、循環體的分析方法;,使用循環結構解決問題。
【教學方法】采用案例模擬的方式,給學生不同的模板,讓學生通過模仿解決問題,達到教
學效果。
【教學過程】
一、創設情景,導入課題
師:200多年前,數學家高斯的小學老師出了一道題目, 1+2+3+…+100的和是多少?,高斯很快就算出了正確答案,而其他同學則算得很慢,大家想一想這是為什么?
生:他們用的計算方法不一樣?
師:他們分別采用了什么樣的方法呢?
生:高斯是用公式的方法:1+2+3+…+100=(1+100)+(2+99)+(3+98)+…+(50+51)= 50101 = 5050。其他同學是采用累加的方法:先求1+2,再加3,再加4,一直加到100,最后得到結果5050。
師:如果用編程來解決這個問題,無論是累加法,還是公式法,對于計算機而言都是適用的。對于公式的方法,關鍵是找到求和公式;那么對于累加的方法,又該如何編程解決呢?
師:請大家思考一下。我們可以用我們以前學過的知識。
師:這個題目要求的是 ‘和’,那這個地方要定義一個變量表示‘和’。我們定義一個變量s(dim s as integer),既然是和的話,那s的初始值應該設成0,即s=0。然后累加,從1開始,應該用什么語句表示,怎么寫,s=s+1,然后加2,即s=s+2,以此類推,一直到s=s+100
生:
Dim s as integer
s = 0
s = s + 1
s = s + 2
s=s+3
……
s = s + 100
print s
師:大家可以發現,方法很簡單,就是反復累加,但方法好不好?
生:太煩瑣了。
師:那能不能把程序寫得簡單一些,讓計算機自動重復上述過程呢?
師:我們仔細觀察一下,這里的s=s+1、s=s+2、s=s+3等等,都是很相似的語句,都可以寫成s=s+數字的形式。這里的數字是從1、2一直到100,是一個等差數列,公差是1。
師:如果用變量i來表示這里的數字,那每一行的操作就是s=s+i(i分別取1、2、3。。。、100),所以整個計算過程是在重復若干個同樣的操作,即s=s+i。
像這樣,在一定條件下,反復執行某種操作的結構,我們稱之為循環結構。這就是我們今天要研究的內容。
設計意圖:通過學生熟悉的例子引入課題,學生容易接受,也容易進行知識的遷移,降低學生的難度,能讓學生水到渠成的掌握知識。學生適時歸納,總結規律,從中抽象出循環結構這樣一類邏輯結構。
二、展示實例程序,分析程序
現在我們來看一看,這個程序用循環結構是如何實現的。
展示程序:
Private Sub cmdgs_Click()
Dim i As Integer
Dim s As Integer
s = 0
For i = 1 To 100
s = s + i
Next i
Print s
End Sub
師:很明顯,左右兩邊哪一邊的程序是用循環結構實現的程序?左邊的。對比一下,原來用于累加的100行語句現在變成了幾行?3行。簡單多了。這個3行就是循環結構。
師:解釋一下這里的循環結構:i從1(i的初值)開始一直到100(i的終值),這里的1稱之為i的初值,100稱之為i的終值,這里重復執行的是什么?s=s+i,next i是什么意思呢?讓i的值增加1,i的初值是1,然后是2,然后是3,一直到100,所以s=s+i執行了多少次?100次。
師:現在我們來看一下這個程序的運行結果。運行一下,是多少?5050。
師:我將這個程序稍微改動一下,讓i從2開始到99結束,最后s的值是多少?
生:4949。
師:實際上這時候計算的是2+3+4+…+99的和。
三、模擬嘗試,用循環思想解決問題
師:通過剛才的分析,我想大家對循環結構有了一個初步的認識,下面請大家,模仿這個程序,完成下面4個程序的填空(1、2兩題師生共同分析完成,3、4兩題由學生上機實踐完成。)
[任務一]:
1、計算s = 100 + 101 + … + 200
Private Sub cmd11_Click()
Dim i As Integer
Dim s As Integer
s = 0
For i= to
s = s + i
Next i
Print s
End Sub
師:第1題,要我們填的是i的初值和終值,
師:這邊是100、101、102一直加到200,那這些數字的公差是多少?
生:1
師:那初值終值顯然應該多少呢?
2、計算s = 1 + 1 / 2 + 1 / 3 + … + 1 / 10
Private Sub cmd12_Click()
Dim i As Integer
Dim s As Single
s = 0
For i = 1 To 10
Next i
Print s
End Sub
師:第2題,要我們填的是重復執行的語句,大家考慮一下,應該填什么?
生:s=s+1/i
師:怎么分析的?
師:根據題目,如果用累加的方法編程,應該怎么寫?
S=0
S=s+1/1
S=s+1/2
…
S=s+1/10
顯然每一行里,除了分母以外,其他部分都一樣吧,分母的變化(1、2、…、10),分母用i來表示,i從1開始一直到10,重復執行s=s+1/i。
師:好的,有了第一題和第二題的基礎,下面請大家上機實踐完成第三題和第四題。
3、求S = 1^2 + 2^2 + 3^2 + … + 10^2
Private Sub cmd13_Click()
Dim i As Integer
Dim s As Single
s = 0
For i = 1 To 10
Next i
Print s
End Sub
4、求p = 1 * 2 * 3 * … * 9
Private Sub cmd14_Click()
Dim i As Integer
Dim p As Single
p = 1
For i = To
Next i
Print p
End Sub
師:請一同學展示結果,并作出分析。
設計意圖:學生剛剛接觸循環結構,對于循環的格式不熟悉,所以任務一的作用是讓學生模仿累加求和的程序,對于循環結構有個初步的認識。其中第一題,要求學生通過模仿,分析出初值和終值。第二題和第三題要求學生通過模仿,找規律,分析出循環體。第四題要求學生不僅能分析初終值,還需要確定循環體,相對前面三題,增加了難度。這些關鍵代碼的修改使得學生通過循環變量的初終值以及循環體的變化初步認識 for循環的各部分。也正是通過這樣的模仿,學生能夠初步掌握循環結構的編程。這些代碼為學生建立了開始編程的起點,也是通過代碼的模仿進行初步的知識建構。因為任務一,只是學生對于程序的模仿和修改,大多數同學都能依葫蘆畫瓢的完成,所以學生出現的問題不多。本論文由論文格式網整理,轉載請注明來源www.donglienglish.cn,更多論文,請點論文格式范文查看
四、for-next循環語句格式
師:通過完善程序,我想大家對循環結構有了進一步認識,那現在我們能不能總結一下循環結構的語句格式呢?
基本格式:
For 循環變量=初值 To 終值
循環體 ----------------- 重復執行的語句或語句塊
Next 循環變量 ------------- 讓循環變量增加1,執行下一次循環
師:有了循環結構的語句格式,我們再請大家解決這樣一個問題。
【學生思考】任務二
計算S=10+20+30+…+100
Private Sub Command1_Click()
Dim I as integer
Dim s as integer
s = 0
For i= to
Next i
Print s
End Sub
師:這里要填的是初值、終值、循環體,應該怎么分析呢?
生:回答有2種可能
做法1 做法2
S=0
For i= 10 to 100
S=s+i
Next i
Print s
S=0
For i= 1 to 10
S=s+10*i
Next i
Print s
錯誤 正確
分析過程:
s=0
s=s+10----s+10*1
s=s+20----s+10*2
s=s+30----s+10*3
…
s=s+100---s+10*10
師:做法2是正確的,有沒有更好的解決辦法呢?實際上VB為這類問題的解決引入了步長的概念。我們看循環結構的完整格式。
完整格式
For 循環變量=初值 To 終值 Step 步長
循環體
Next 循環變量
師:請大家看一下這個完整格式跟前面的格式有什么區別?
生:多了“step 步長”。
師:那是不是前面我們研究的循環結構程序就沒有步長呢?不是的,前面的程序也是有步長的,步長是多少?1,而vb規定,步長為1的時候,“step 1” 可以省略。
師:前面是“循環變量增加1,執行下一次循環”,那現在呢?
生:是“循環變量增加一個步長,執行下一次循環”。
師:有了循環結構的完整格式,我們再來解決這個問題。
師:同樣用累加的方法進行分析:
S=0
S=s+10
S=s+20
…
S=s+100
i取值10、20、…、100,i的增量是10。
所以歸納出:循環體是s=s+i,步長是10。
S=0
For i= 10 to 100 step 10
S=s+i
Next i---------讓循環變量i增加10,執行下一次循環
Print s
設計意圖:給出完整格式,對照前面的求和程序,讓學生理解for循環中的循環變量、初值、終值、循環變量增量、循環體的概念,給學生編寫程序以理論基礎。設計S=10+20+30+….+100題目,是為了加深學生對于for循環的各個部分的理解,也彌補了任務一中沒有設計到循環變量增量發生變化的情況。通過問題的提出,學生討論思考后,對于循環結構的理解達到一個更深的層次。
五、利用循環結構編程解決問題
掌握了循環結構的語句格式,學會了初值、終值、步長、循環體的分析方法,我們就可以利用循環結構來解決實際生活中的一些問題。
【學生操作】任務三。
師:這個題目用循環結構來編程,初值、終值、步長、循環體各是什么?請大家上機實踐完成任務三。請你幫猴子算一下它一共摘了多少個玉米?——650。
一只猴子準備摘一些玉米過冬,第1天摘了2個,第2天摘了4個,以后每天都比前一天多摘2個,直到有一天,它摘了50個玉米,它覺得這么多玉米已經足夠過冬了,于是就不再摘了。請你幫猴子算一下它一共摘了多少個玉米?
Private Sub Command1_Click()
Dim i As Integer
Dim s As Integer
End Sub
師:請一個學生展示,請學生說出初值、終值、步長、循環體各是什么?并請學生分析為什么?
師:大部分同學都幫猴子計算了過冬的玉米個數,下面還要請大家幫助小明解決一個問題。
設計意圖: 通過實際生活中的例子,培養學生運用算法設計的思想解決生活中實際問題的能力,在實踐和體驗中建構符合自身發展特點的認知結構。同時,這一階段的操作要求學生相互之間進行適當的討論,旨在讓學生在協作學習中掌握新知識。通過生活實例,以累加求和作為理論基礎,使得學生容易理解,找到思考的方法。學生對于循環理解了,循環體也就會寫了。
【學生操作】任務四。
小明遇到一個題目,如果四位數11□□能被17整除,那么滿足此條件的所有四位數的和是多少?請你編寫程序幫助小明解決這個問題。
Private Sub Command1_Click()
Dim I as integer
Dim s as integer
End Sub
師:讀了題目,發現這個題目有些難點。我們先將題目變換一下,即:小明遇到一個題目,如果存在四位數11□□,那么形如此形式的所有四位數的和是多少?
變換之后的題目用循環結構來編程,初值、終值、步長、循環體各是什么?
生:初值1100、終值1199、步長1、循環體s=s+i
師:好,再回到原來的題目,請你再思考初值、終值、步長、循環體各是什么?請大家上機實踐完成任務四。
師:找錯誤的同學展示,講解錯誤。
師:請學生展示做好的程序。(可以展示2到3個學生的程序)
師:這個程序將循環結構和選擇結構結合起來,為我們編寫更復雜的程序作了有益的嘗試。
設計意圖:學生已經對for循環有了深入的理解,學生已能自己編寫for循環程序,在編程過程中也掌握了調試程序的方法。任務四是要求學生編寫完整的for循環語句,運行結果,解決實際問題,體驗成功的喜悅。給出拓展任務,讓學有余力的同學多思考,多嘗試,進一步優化程序。
六、總結
通過今天的學習,我們掌握了循環結構的語句格式、學會了循環結構中初值、終值、步長、循環體的分析方法,并且利用循環結構,解決了一些實際問題。實際上,利用循環結構還可以解決許多實際生活中的問題,這就要求大家在今后的學習中勤于思考,增強實踐,提高自己的編程水平,從而能解決更多實際問題。
好,今天這節課就到這里,下課!
【參考文獻】
1.《信息技術基礎(必修)教師教學用書》, 李藝等主編,教育科學出版社出版,2004
2.《走進高中信息技術教學現場》,胡秀琴主編,首都師范大學出版社出版,2007