梁見斌
摘 要:項(xiàng)目式學(xué)習(xí)和案例教學(xué)是高中信息技術(shù)常用教學(xué)方法,為提高教學(xué)效率,我們可以利用一些難度適中的案例,使其在不同的知識情境中重復(fù)出現(xiàn),每次重點(diǎn)研究其中的一面,使學(xué)生在相同的知識載體中,體驗(yàn)不同的知識情境,掌握不同的知識技能,從而實(shí)現(xiàn)新舊知識的有機(jī)融合,建立健全的知識體系。
關(guān)鍵詞:項(xiàng)目式學(xué)習(xí);案例教學(xué);高中信息技術(shù)
“一魚多吃”是指使用不同的烹飪手法處理魚的不同部位,給食客提供多種味覺享受,從而全面體驗(yàn)魚肉的鮮美和烹飪文化的多樣性。項(xiàng)目式學(xué)習(xí)和案例教學(xué)是高中信息技術(shù)常用教學(xué)方法,可是要尋找一個合適的案例并不容易,通常每個知識點(diǎn)都有自己對應(yīng)的案例和應(yīng)用情境,案例之間的關(guān)聯(lián)度低,知識碎片化嚴(yán)重,不利于學(xué)生建立完整的知識結(jié)構(gòu)。
我們可以找一些難度適中的案例,在不同的知識情境中重復(fù)使用,每次重點(diǎn)研究其中的一面,猶如“一魚多吃”,使學(xué)生在相同的知識載體中,體驗(yàn)不同的知識情境,掌握不同的知識技能,從而實(shí)現(xiàn)新舊知識的有機(jī)融合,建立健全的知識體系。
“猜數(shù)字游戲”就是一個極佳的案例。
第一彈:游戲引入,激發(fā)興趣
初次接觸《高中信息技術(shù)》課程的學(xué)生對VB的感情是很復(fù)雜的,既有獲取新知識的好奇和渴望,又對編程的復(fù)雜和深奧望而卻步。對于教師來說,保護(hù)學(xué)生的求知欲望、消除學(xué)生的恐懼心理,成為開學(xué)第一課的重中之重。
引領(lǐng)學(xué)生入門的方法很多,游戲是其中較好的一種。我預(yù)先編寫了一款簡單的“猜數(shù)字游戲”,成功地調(diào)動了學(xué)生的積極性,他們興致勃勃地玩了一局又一局,想要和計(jì)算機(jī)比個高下。
第二彈:趁熱打鐵,鞏固新知
看學(xué)生玩游戲的興致很高,我趁熱打鐵,適時(shí)地拋出了算法的概念,讓他們?nèi)ニ伎加螒虮澈蟮倪壿嫼统绦蜻\(yùn)行的流程。
算法是程序的靈魂,描述算法的方式很多,自然語言和流程圖是最常用的方式。我讓學(xué)生思考回顧“猜數(shù)字游戲”的過程,分別從“計(jì)算機(jī)出題人回答”和“人出題計(jì)算機(jī)回答”兩個角度設(shè)計(jì)算法。
我先要求他們用自然語言描述算法,再使用流程圖描述,通過比較,理解二者的優(yōu)缺點(diǎn)。一開始學(xué)生毫無頭緒,我就一步步引導(dǎo),并把一些關(guān)鍵的框圖畫出來,讓學(xué)生填寫方框中的內(nèi)容。通過教師的引導(dǎo)和同學(xué)之間的討論,學(xué)生們最終順利地畫出了兩個算法的流程圖。
第三彈:反復(fù)訓(xùn)練,突出重點(diǎn)
學(xué)習(xí)了流程圖,接下來學(xué)生需要面對的就是VB代碼了。與規(guī)范直觀的流程圖比較起來,代碼就顯得抽象多了,很多學(xué)生都止步于此,無法進(jìn)入下一步的學(xué)習(xí)。如何讓抽象枯燥的代碼變得生動有趣,是一個值得思考的問題。除了提供邏輯清晰、簡明易懂的代碼,問題本身的趣味性也很重要,此時(shí)“猜數(shù)字游戲”又是不二人選。
為了確保學(xué)生順利地寫出代碼,我首先讓學(xué)生回顧了游戲的過程和流程圖的畫法,然后引導(dǎo)學(xué)生將流程圖轉(zhuǎn)換成實(shí)際的VB代碼。為節(jié)省學(xué)生的時(shí)間和突出重點(diǎn),我提供了一個半成品程序,事先寫好一些非關(guān)鍵語句,學(xué)生只需完成核心代碼塊即可。
此外,我對不同層次的學(xué)生也提出了不同要求。對于基礎(chǔ)較差的學(xué)生,我模仿學(xué)考試題的形式,留下幾處空缺,要求他們把缺失的代碼填寫完整。對于學(xué)習(xí)能力較強(qiáng)的學(xué)生,我鼓勵他們不要拘泥于現(xiàn)成的代碼結(jié)構(gòu),直接根據(jù)問題背景,獨(dú)立完成程序功能,寫出具有個人特色的代碼。
Private Sub Command1_Click()
Randomize: ans = Int(Rnd * 100) + 1
List1.AddItem "計(jì)算機(jī):" & "請輸入一個1-100的整數(shù)"
List1.AddItem "人:" & g
Do While True
If g = ans Then
MsgBox "正確", 0, "提示": List1.AddItem "計(jì)算機(jī):" & "正確"
Exit Do
ElseIf g > ans Then
MsgBox "太大了", 0, "提示": List1.AddItem "計(jì)算機(jī):" & "太大了"
Else
MsgBox "太小了", 0, "提示": List1.AddItem "計(jì)算機(jī):" & "太小了"
End If
List1.AddItem "人:" & g
Loop
End Sub
第四彈:溫故知新,突破難點(diǎn)
對分查找算法是分治策略的一個典型應(yīng)用,是高中技術(shù)選考的必考內(nèi)容。由于對分查找算法應(yīng)用范圍廣,出題形式多樣,學(xué)生在考試過程中往往不能抓住關(guān)鍵,容易失分。題目是做不完的,但萬變不離其宗,不管題目的類型和背景如何變化,對分查找算法的本質(zhì)不變。
如何讓學(xué)生抓住對分查找的本質(zhì),避免在茫茫題海中迷失方向,是廣大教師需要思考的問題。我的答案是為學(xué)生提供一個典型案例,讓學(xué)生熟練掌握典型案例的原理、特征和解題方法,以此為抓手,遷移到所有同類問題上。
我讓學(xué)生再一次體驗(yàn)了“人出題計(jì)算機(jī)回答”游戲,找出計(jì)算機(jī)答題的策略,并為其設(shè)計(jì)算法。有了真切的游戲體驗(yàn)以后,學(xué)生很快理解了對分查找算法的基本原理。在學(xué)生動手編寫代碼之前,我又就如何設(shè)置變量的初值和循環(huán)條件進(jìn)行了引導(dǎo)。在老師的指導(dǎo)下,學(xué)生通過小組討論和上機(jī)實(shí)踐,終于啃下了“對分查找”這塊硬骨頭,為今后的深化學(xué)習(xí)打下了堅(jiān)實(shí)的基礎(chǔ)。
Private Sub Command2_Click()
MsgBox "請?jiān)谀愕哪X海里生成一個1-100的整數(shù)", 0, "提示"
List1.AddItem "請?jiān)谀愕哪X海里生成一個1-100的整數(shù)"
i = 1: j = 100: g = (i + j) \ 2
List1.AddItem "計(jì)算機(jī):" & g
Do While True
If rflag = 1 Then
List1.AddItem "人:" & "正確": Exit Do
ElseIf rflag = 2 Then
List1.AddItem "人:" & "太大了": j = g - 1
Else
List1.AddItem "人:" & "太小了": i = g + 1
End If
g = (i + j) \ 2
List1.AddItem "計(jì)算機(jī):" & g
Loop
End Sub
反思與討論:
筆者在VB新課教學(xué)、流程圖、選擇和循環(huán)結(jié)構(gòu)、對分查找算法等不同教學(xué)內(nèi)容中,多次使用“猜數(shù)字游戲”這一案例,使學(xué)生在相同的教學(xué)情境中掌握不同的知識。利用載體的單一性,降低學(xué)習(xí)成本,符合“最近發(fā)展區(qū)”原理,提高了教學(xué)效率。案例教學(xué)是一種生動有效的教學(xué)方法,但在平時(shí)的教學(xué)中,我們過于拘泥于書本,未能進(jìn)一步挖掘生活中有趣又有料的精彩案例。此外,如何結(jié)合不同的知識點(diǎn)利用案例組織教學(xué),也是教師需要思考的問題。
參考文獻(xiàn):
[1]中華人民共和國教育部.普通高中信息技術(shù)課程標(biāo)準(zhǔn)[M].北京:人民教育出版社,2018.
[2]王曉東.計(jì)算機(jī)算法設(shè)計(jì)與分析[M].北京:電子工業(yè)出版社,2012.