史丙軍
算法與程序設(shè)計(jì)是高中信息技術(shù)課程開(kāi)展中的重要一環(huán),主要提高學(xué)生利用信息技術(shù)解決問(wèn)題的能力,理解數(shù)字化世界的運(yùn)轉(zhuǎn)方式,培養(yǎng)計(jì)算思維意識(shí),提高學(xué)生數(shù)字化創(chuàng)新和學(xué)習(xí)能力,對(duì)學(xué)生信息素養(yǎng)的培養(yǎng)和形成至關(guān)重要。
該模塊的教學(xué)直接提升學(xué)生應(yīng)用計(jì)算機(jī)編程解決實(shí)際問(wèn)題的能力,促進(jìn)該模塊教學(xué)效果的提升,使學(xué)生能夠揭開(kāi)計(jì)算機(jī)硬件和軟件的神秘面紗,初步理解信息社會(huì)的數(shù)字化原理,不僅能促進(jìn)學(xué)生探索科技進(jìn)步的興趣,更能激發(fā)他們用計(jì)算思維學(xué)習(xí)其它學(xué)科的動(dòng)力。
鑒于現(xiàn)有教材項(xiàng)目和知識(shí)框架的實(shí)際,單個(gè)知識(shí)模塊采用相應(yīng)的項(xiàng)目教學(xué),總覺(jué)得不夠完善,如果再對(duì)應(yīng)整個(gè)章節(jié)啟動(dòng)一個(gè)大項(xiàng)目貫穿始終,既能溫習(xí)舊知,還能夠激發(fā)學(xué)生學(xué)習(xí)新知識(shí)的渴望,我想對(duì)整個(gè)學(xué)科教學(xué)會(huì)有更大的益處。所以在吸收現(xiàn)有項(xiàng)目的優(yōu)點(diǎn)基礎(chǔ)上,比如自動(dòng)洗衣機(jī)工作流程,導(dǎo)出算法思想。再?gòu)膶W(xué)生身邊著手,引入單元大項(xiàng)目,當(dāng)然,這個(gè)過(guò)程需要循序漸進(jìn),隨著知識(shí)點(diǎn)的深入逐步完善。下面舉例說(shuō)明:
雞兔同籠,是中國(guó)古代著名典型趣題之一,也是學(xué)生小學(xué)就接觸到的趣味題,編程解決這個(gè)問(wèn)題是同學(xué)們樂(lè)于實(shí)現(xiàn)的,它表示有若干只雞和兔在同一個(gè)籠子里,已知雞和兔頭和腳的總數(shù),求籠中雞和兔的數(shù)量。想要用 Python 解決雞兔同籠問(wèn)題,可以使用抬腳法來(lái)解決。算法描述使用流程圖,重點(diǎn)介紹python基本語(yǔ)法和順序結(jié)構(gòu),用2節(jié)課時(shí)完成。程序段如下所示:
t=int(input("請(qǐng)輸入頭數(shù):"))
j=int(input("請(qǐng)輸入腳數(shù):"))
ttou=(j-t*2)/2
jtou=t-ttou
print("兔子的頭數(shù):",ttou,"雞的頭數(shù):",jtou)
隨著課程的推進(jìn),引導(dǎo)同學(xué)們分析上述程序段的不足之處,對(duì)于程序使用者輸入數(shù)據(jù)的合法合理性進(jìn)行檢查,引出分支判斷結(jié)構(gòu),同時(shí)介紹條件表達(dá)式的知識(shí),用1個(gè)課時(shí)完成,代碼逐步完善如下:
t=int(input("請(qǐng)輸入頭數(shù):"))
j=int(input("請(qǐng)輸入腳數(shù):"))
ttou=(j-t*2)/2
jtou=t-ttou
if ttou<0:
print("請(qǐng)輸入合理的數(shù)據(jù)Q1!")
elif jtou<0:
print("請(qǐng)輸入合理的數(shù)據(jù)Q2!")
elif (ttou//1+jtou//1)!=t:
print("請(qǐng)輸入合理的數(shù)據(jù)Q3!")
else:
print("兔子的頭數(shù):",ttou,"雞的頭數(shù):",jtou)
為了項(xiàng)目開(kāi)發(fā)的完整性,站在使用者的角度將項(xiàng)目游戲化,根據(jù)使用者的意愿停止或者重新開(kāi)始游戲,引入循環(huán)控制結(jié)構(gòu),用1個(gè)課時(shí)完成,這一步大大激發(fā)同學(xué)們的學(xué)習(xí)熱情,并提高學(xué)生學(xué)習(xí)的獲得感和成就感。
i="y"
while i=="y":
t=int(input("請(qǐng)輸入頭數(shù):"))
j=int(input("請(qǐng)輸入腳數(shù):"))
ttou=(j-t*2)/2
jtou=t-ttou
if ttou<0:
print("請(qǐng)輸入合理的數(shù)據(jù)Q1!")
elif jtou<0:
print("請(qǐng)輸入合理的數(shù)據(jù)Q2!")
elif (ttou//1+jtou//1)!=t:
print("請(qǐng)輸入合理的數(shù)據(jù)Q3!")
else:
print("兔子的頭數(shù):",ttou,"雞的頭數(shù):",jtou)
i=input("是否繼續(xù)游戲?繼續(xù):y,結(jié)束:n: ")
print("---------------------------------------")
print("*********歡迎再次來(lái)到游戲**************")
print("---------------------------------------")
最后還可以以模塊的方式定義函數(shù),完整的項(xiàng)目貫穿下來(lái),同學(xué)們不僅學(xué)到了程序設(shè)計(jì)語(yǔ)言的基本語(yǔ)法,而且也能夠以大項(xiàng)目的角度去解決問(wèn)題。項(xiàng)目式教學(xué)能夠緊緊圍繞信息技術(shù)學(xué)科核心素養(yǎng)展開(kāi)教學(xué),能夠較好的完成既定教學(xué)任務(wù)。而且單元大項(xiàng)目教學(xué)以解決實(shí)際問(wèn)題為導(dǎo)向,無(wú)論學(xué)生在學(xué)習(xí)中發(fā)現(xiàn)的問(wèn)題,還是社會(huì)生活中存在的實(shí)際問(wèn)題,都可以激發(fā)學(xué)生的信息意識(shí)和計(jì)算思維,進(jìn)一步激發(fā)數(shù)字化創(chuàng)新和學(xué)習(xí)的能力,提高學(xué)生服務(wù)信息社會(huì)的責(zé)任和意識(shí)。
單元大項(xiàng)目和教材內(nèi)微項(xiàng)目相輔相成,彼此互為補(bǔ)充和升華,協(xié)調(diào)好二者的關(guān)系一定會(huì)提高本章節(jié)的教學(xué)效率,并促進(jìn)學(xué)生學(xué)習(xí)信息技術(shù)的興趣和動(dòng)力。同時(shí)隨著教研的深入,大項(xiàng)目教學(xué)的優(yōu)勢(shì)會(huì)更加突顯。