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