管榮平
摘 要:隨著社會的不斷發展,中職生的學習動機、學習方式和學習興趣等不斷改變。因而,中職學校專業課的教學必須進行改革,改革傳統的教學理念、教學方法和教學內容,體現職業特點,形成具有職業特色的課程觀,為社會培養出更多素質高、技能強的一線勞動者。在教學中嘗試利用情境教學法進行C語言教學,取得了良好的效果。
關鍵詞:情境教學法;中職生;C語言教學
C語言是職業學校計算機專業學生學習的第一門程序語言課。在實際教學中,筆者發現大多數職業學校學生學習C語言都有一定的困難。運用一般的教學方法很難讓學生很好地理解并掌握程序設計知識,原因主要有:
一、創設情境,提出問題
【教師】世界杯足球比賽前裁判都會通過拋硬幣的方式來決定雙方的場地和哪方先開球,今天我們利用隨機函數來模擬拋硬幣。
【學生板書演示】
#include
#include
void main()
{ int x;
x=(rand()%2);
if(x==0)print f(″硬幣為正面\n″); else printf(″硬幣為反面\n″);
}
【經驗小結】通過中職生感興趣的世界杯足球比賽,將學生的注意力吸引到今天的教學內容中。這種導入方式在教學過程中效果非常好。
【教師引導】這個例題是采用隨機函數rand()產生一個[0,32767]之間的隨機整數。然后采用模除2的方式,求得x的值為隨機數0或1。我們可以用0表示硬幣的正面,用1表示硬幣的反面,因此可以采用隨機函數來模擬拋硬幣。
這時,教師可以進一步引導學生深入思考。如果要隨機產生10個、50個或者更多的隨機數時,再用這種方法行嗎?又將如何解決?
【例1】將硬幣拋擲100次,統計正反面出現的次數,請思考如何利用C語言編程實現?
【教師引導】根據剛才的分析,產生隨機數用隨機函數,如果產生多個隨機數,我們可以用循環結構實現。
【經驗小結】教材中只列出了隨機函數的作用,沒有陳述隨機函數的具體應用,學生理解起來很困難。因此,在教學中要提出貼近學生生活的程序設計問題,讓學生深刻體會編寫程序可以解決身邊的事情。
二、創設情境,講授新知
【例2】模擬擲骰子的情況,擲100次,統計其每一面出現的次數。該怎么樣來實現呢?
教師講授新的知識,給出一個表達式:x=(rand)%(n-m+1)+n),其中m為產生隨機數的起始值,n為產生隨機數的終止值。如:產生[1,6]之間的數,其表達式為x=(rand)%(6-1+1)+1)。
【教師】現在請一個學生利用上述表達式完成例2,其余學生獨立完成,有困難的學生可以進行小組討論或師生討論。
【學生板書】略。
【教師】通過新學的表達式,我們可以產生任意范圍的隨機數,只要修改相應的m和n即可。那么,剛才我們做的例1也可以用新學的表達式來完成,應該怎么樣?
【學生】x=(rand)%(1-0+1)+0),產生0和1兩個數,0可以表示正面,1則可表示反面。
【經驗小結】學生的程序設計內容應當是現實的、貼近學生生活的,通過程序設計學生可以完成一些簡單的、學生感興趣的問題。讓學生在輕松的環境中學習程序設計,并體驗成功的喜悅,使他們產生更大的興趣去學習程序設計,而不是整天面對教材上枯燥的例題。同時引導學生采用小組合作的方式,進行討論,解決問題。不知不覺,培養學生的團隊合作精神。
三、情境創設,鞏固新知
【例3】讓所有學生(共45人)利用計算機程序進行抽獎,其中一等獎5名,二等獎10名,三等獎15名,要求每個學生不能重復獲獎。
【師生共同分析】我們要隨機產生30個不重復的數字,數字范圍剛好應是學號的范圍,即[1,45]。在產生隨機數的時候,每產生一個數都要與前面已產生的隨機數進行比較,若相同則這個數不能要,則需重新產生一個。其中判斷是否重復與判斷是否為“素數”這個程序差不多。產生符合條件的數后放入數組,最后把前5個作為一等獎,其后的10個作為二等獎,余下的都為三等獎。
【經驗小結】在C語言程序設計教學中,教師要通過創設問題情境,培養學生的創新思維。這里的關鍵在于設計好例題。在學生解決問題的途中,巧設新的矛盾,引導他們探究矛盾,尋找新的解決途徑。因此,教師精心創設問題情境是培養學生創新思維的必要途徑之一。
參考文獻:
[1]譚浩強.C語言程序設計.4版.清華大學出版社,2010.
[2]陳靜,楊青,鄭世玨.高級語言程序設計與應用教程.清華大學出版社,2008.