信息技術教學案例評比——冒泡算法的程序實現(xiàn);
由里及外,由下而上
—“算法的程序實現(xiàn)”的教學策略
縉云朝暉外國語學!⊥跽
案例背景:
《算法與程序設計》的第五章,冒泡排序算法的程序實現(xiàn)一課的教學目標是學生能利用程序實現(xiàn)冒泡排序算法;這時的學生已經(jīng)能利用冒泡排序方法手工完成數(shù)字的排序,而且學生也有了一定的程序基礎,掌握了基本的程序設計語句的用法,如if語句,for語句,賦值語句。通過本節(jié)課的學習,使學生能將冒泡算法的模擬步驟轉換為基本語句的程序實現(xiàn),通過它了解程序設計的一般方法,增強學習算法與程序的興趣和自信心。
教學設計思路:
《算法與程序設計》一書中的好多算法,包括枚舉法、冒泡排序、選擇排序、對分查找等都會有多重循環(huán)語句,如果從多重循環(huán)語句的角度去思考問題,無疑會加大難度,學生也很難理解多重循環(huán)的內(nèi)外關系及具體含義;因此,選擇由里到外,由下到上的程序設計過程,可以避開多重循環(huán)的概念,簡化難度,設計思路更加清淅;而且內(nèi)循環(huán)也往往是算法步驟中的核心步驟,由里到外的過程,也就是抓住主要環(huán)節(jié),再逐步向次要環(huán)節(jié)展開的過程,這是一個很好的程序設計的方法;尤其是對于初學者來說,這也提供了一種思考和下手編程的思路。
教學細節(jié)描述:
導入:
師:出示~賽季nba球員數(shù)據(jù)excel表
師:想知道誰的得分最高,誰的罰球最好,有什么最簡單的辦法?
生:排序
師:按excel中的升降序按鈕,演示升序和降序操作
師:看來排序在我們的日常生活中確實非常有用,今天我們就來設計一個能排序的程序。
展開:
一、出示任務“以冒泡法的思想,利用程序完成對36 27 32 18四個數(shù)的從小到大的排序”,整個任務分四步完成:1、界面設計2、輸入數(shù)據(jù)3、冒泡程序4、輸出數(shù)據(jù);在教師指導下完成第1、第2、第4部分的代碼。
二、完成第3部分冒泡排序的程序實現(xiàn):
師:請同學們回憶并口頭描述一下冒泡排序的過程。
生:通過兩兩交換,小的水泡先升到水面上。
師:如果手工去模擬冒泡過程,你能模擬出來嗎?
生:能
師:你能把手工的過程用程序實現(xiàn)嗎?
生:沉默,很難
師:好,今天我們來看看,怎么把手工的過程用程序代碼描述出來。
師:將4個數(shù)放入數(shù)組d中,增加一個變量j,剛開始j=4指示第4個數(shù),這時候我們要做什么動作?
生:交換32與18的位置
師:為什么要交換?
生:因為32比18大
師:也就是說比較32與18,發(fā)現(xiàn)32大于18,所以交換32與18,換句話也可以說是比較d(4)與?
生:d(3)
師:再換一種說法是d(j)與?
生:d(j-1)
師:換好之后,應該再往前走,j應該變?yōu)?,然后誰跟誰比較?
生:d(3)跟d(2)
師:更通用的說法是?
生:d(j)跟d(j-1)
師:總結整個過程為“j由4到2,如果d(j)比d(j-1)少,則交換d(j)與d(j-1)”,如果把它轉換為程序,這個程序就能完成一輪冒泡的排序,請同學們試試把“如果d(j)<d(j-1),則交換d(j)與d(j-1)”轉換為程序
學生完成if語句,但是不知道如何交換,這時老師出示兩瓶不同液體的互換課件,引導學生得出:c←d(j-1),d(j-1)←d(j),d(j)←c,并讓學生自行完成交換的程序代碼。
師:一輪的過程是“j由4到2,如果d(j)比d(j-1)少,則交換d(j)與d(j-1)”
完成了比較交換之后,還要完成“j由4到2”的過程,大家試想一下,“j由4到2”與比較交換之間的關系:j為4的時候比較交換,j為3的時候比較交換,j為2時比較交換。跟據(jù)這樣的相互關系,我們應該用什么語句來完成?