彭仁杰
【摘要】高中新課程中程序設(shè)計(jì)占很大一部分,教學(xué)難度大、學(xué)生興趣不高是老師普遍的感受。本文嘗試在教學(xué)過(guò)程中引入游戲化項(xiàng)目,把教學(xué)內(nèi)容揉到游戲的迭代中去。通過(guò)一段時(shí)間的教學(xué),發(fā)現(xiàn)教學(xué)效果良好,對(duì)學(xué)生思維的提升也起到很好的作用。
【關(guān)鍵字】游戲化;迭代思維;抽象思維
【基金項(xiàng)目】本文為蘇州市教育科學(xué)“十三五”規(guī)劃課題(課題編號(hào):192010350)研究成果。
從2020年9月開(kāi)始,大部分省份的高中信息技術(shù)課程開(kāi)始采用新教材,幾個(gè)出版社的教材中都涉及了程序設(shè)計(jì),所用語(yǔ)言都是python。筆者和所在區(qū)域的老師也積極進(jìn)行了備課、上課并反思。通過(guò)幾個(gè)月的教學(xué),結(jié)合學(xué)生的興趣,發(fā)現(xiàn)利用游戲化項(xiàng)目教學(xué)能很好地調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性,教學(xué)效果良好。下面,主要以游戲“石頭剪刀布”為項(xiàng)目,談?wù)勅绾卧诟咧行畔⒓夹g(shù)課中利用游戲化項(xiàng)目進(jìn)行教學(xué)。
一、第一階段:輸出電腦手勢(shì)1.0,抽象游戲
在學(xué)習(xí)程序設(shè)計(jì)之前,學(xué)生接觸的軟件、游戲都是比較具體的界面。學(xué)生學(xué)習(xí)程序設(shè)計(jì),尤其是自己試著編寫(xiě)游戲,遇到的第一個(gè)困難就是無(wú)法把具體的問(wèn)題抽象,比如:無(wú)法表示“石頭、剪刀、布”三種狀態(tài)。教師可以和學(xué)生一起探究如何把三種狀態(tài)數(shù)字化(用0,1,2表示“石頭、剪刀、布”),鍛煉學(xué)生的抽象思維,使學(xué)生初步形成把實(shí)際問(wèn)題轉(zhuǎn)換成計(jì)算機(jī)解決問(wèn)題的認(rèn)識(shí)。
本階段也可以分幾步進(jìn)行:1.給電腦和用戶(hù)都直接賦值。2.由于電腦的輸入是不確定的,引入隨機(jī)函數(shù)。3.由于用戶(hù)的輸入需要通過(guò)鍵盤(pán)輸入,引入input函數(shù)。通過(guò)這幾個(gè)環(huán)節(jié),學(xué)生可以初步了解程序設(shè)計(jì)的一些簡(jiǎn)單概念。
代表性代碼:電腦手勢(shì)隨機(jī)產(chǎn)生,用戶(hù)手勢(shì)鍵盤(pán)輸入。
import random
computer1=random.randint(0,2)
man=int(input("你要出什么?0表示石頭,1表示剪刀,2表示布"))
print("computer1=",computer1,";man=",man)
二、第二階段:輸出電腦手勢(shì)2.0,分支語(yǔ)句初步
當(dāng)會(huì)用數(shù)字表達(dá)三種狀態(tài)后,學(xué)生通過(guò)測(cè)試游戲會(huì)提出一些疑問(wèn),如:目前用戶(hù)輸入任何數(shù)字都可以,能否對(duì)輸入數(shù)據(jù)進(jìn)行有效性判斷?教師順勢(shì)引入分支語(yǔ)句的概念。當(dāng)學(xué)生有了分支的概念后,游戲就可以進(jìn)一步補(bǔ)充更多的功能,如:能否根據(jù)用戶(hù)輸入的數(shù)字,輸出對(duì)應(yīng)的“石頭、剪刀、布”?這涉及單分子、雙分支以及分支語(yǔ)句的嵌套。教師可以先通過(guò)流程圖的形式,和學(xué)生一起理清思路,然后再介紹python語(yǔ)法,最后讓學(xué)生編寫(xiě)游戲。
代表性代碼:電腦手勢(shì)判斷部分代碼。
computer=random.randint(0,2)
man=int(input("你要出什么?0表示石頭,1表示剪刀,2表示布"))
if (0<=man<=2) :
print("電腦輸入的是:",computer)
print("你輸入的是:",man)
else:
print("輸入數(shù)據(jù)錯(cuò)誤")
三、第三階段:讓表達(dá)更簡(jiǎn)單,認(rèn)識(shí)列表
第二階段的判斷,涉及多次的嵌套,學(xué)生的感受是很復(fù)雜。教師可以和學(xué)生一起思考:能否有更簡(jiǎn)單的方法來(lái)表示?教師可以順勢(shì)引入列表的概念。
代表性代碼:
a=["石頭","剪刀","布"]
computer=random.randint(0,2)
man=int(input("你要出什么?0表示石頭,1表示剪刀,2表示布"))
print("電腦輸入的是:",a[computer])
print("你輸入的是:",a[man])
四、第四階段:人機(jī)對(duì)戰(zhàn),分支語(yǔ)句的應(yīng)用
當(dāng)學(xué)會(huì)了分支語(yǔ)句、列表以后,學(xué)生就可以試著完成人機(jī)對(duì)戰(zhàn)了。如果讓學(xué)生單獨(dú)編寫(xiě)代碼,由于每個(gè)人的思維方式不同,代碼會(huì)有很多種。教師可以展示學(xué)生的代碼,很多同學(xué)的代碼會(huì)寫(xiě)很多行,很復(fù)雜的嵌套。教師可以通過(guò)提問(wèn)來(lái)引導(dǎo)學(xué)生梳理邏輯思路。比如:判斷“贏、輸、平局”哪個(gè)更容易比較?如何表達(dá)?有的學(xué)生可能表示為((computer==0 and man==0)or (computer==1 and man==1) or (computer==2 and man==2),其實(shí)這些只要man==computer就可以表示了。
代表性代碼:判斷輸贏部分
if (man==computer):
print("平局!")
elif( (computer==0 and man==2)or (computer==1 and man==0) or (computer==2 and man==1)):
print("恭喜你,贏了!")
else:
print("抱歉!你輸了!")
五、第五階段:游戲三局兩勝,循環(huán)語(yǔ)句應(yīng)用
完成上面的游戲后,有學(xué)生會(huì)提出:本游戲只能判斷一次是否正確,正式的游戲一般是三局兩勝,從而引進(jìn)循環(huán)語(yǔ)句的概念。由于不知道多少次比賽能決定輸贏,所以這次涉及的是while循環(huán),同時(shí)需要引導(dǎo)學(xué)生理解有計(jì)數(shù)的概念。通過(guò)這個(gè)游戲?qū)W生對(duì)for循環(huán)和while循環(huán)的適用場(chǎng)合就有了深刻的理解。
代表性代碼:循環(huán)統(tǒng)計(jì)輸贏部分
while (manwin<2 and computerwin<2):
man=int(input("你要出什么?0表示石頭,1表示剪刀,2表示布"))
computer=random.randint(0,2)
if (computer==0 and man==1) or (computer==1 and man==2) or (computer==2 and man==0):
print ("本局電腦贏了")
computerwin=computerwin+1
if (computer==1 and man==0) or (computer==2 and man==1) or (computer==0 and man==2):
print("本局你贏了")
manwin=manwin+1
if (computer==man):
print("平局")
print("現(xiàn)在比分為 你:電腦",manwin,":",computerwin)
六、游戲化項(xiàng)目在課程教學(xué)中的意義
新版的《普通高中信息技術(shù)課程標(biāo)準(zhǔn)修訂稿》明確指出,計(jì)算思維是信息技術(shù)學(xué)科核心素養(yǎng)之一。迭代思維、抽象化思維都是計(jì)算思維的重要組成部分,通過(guò)游戲化項(xiàng)目能很好地鍛煉學(xué)生這方面的思維能力。
(一)鍛煉學(xué)生的迭代思維
在程序設(shè)計(jì)中,教師經(jīng)常會(huì)利用“出租車(chē)車(chē)費(fèi)”等問(wèn)題進(jìn)行教學(xué),但是學(xué)生學(xué)習(xí)積極性不高。讓學(xué)生編寫(xiě)游戲,有一定難度。對(duì)于這個(gè)矛盾,教師可以引入游戲化項(xiàng)目來(lái)構(gòu)建整體教學(xué)結(jié)構(gòu),把游戲設(shè)計(jì)成幾個(gè)階段:初步解決小問(wèn)題—不斷優(yōu)化—不斷提出新的問(wèn)題—學(xué)習(xí)新的知識(shí)解決問(wèn)題。不斷迭代,每個(gè)階段都可以創(chuàng)新,不同學(xué)生在不同階段獲得成功體驗(yàn)。讓學(xué)生體驗(yàn)程序設(shè)計(jì)的樂(lè)趣,提升迭代思維的能力。高中信息技術(shù)課程旨在全面提升學(xué)生的信息素養(yǎng),迭代思維能夠促使學(xué)生根據(jù)解決問(wèn)題的需要,自覺(jué)、主動(dòng)地不斷尋求更為恰當(dāng)?shù)姆绞絹?lái)獲取與處理信息[1]。
(二)鍛煉學(xué)生的抽象思維
在科學(xué)方法論中,抽象思維是對(duì)同類(lèi)事物去除其現(xiàn)象的次要方面,抽取其共同的主要方面,從個(gè)別中把握一般,從現(xiàn)象中把握本質(zhì)的認(rèn)知過(guò)程和思維方法[2]。程序設(shè)計(jì)的目的就是利用計(jì)算機(jī)解決實(shí)際生活問(wèn)題,首先要做的就是將實(shí)際問(wèn)題抽象為計(jì)算機(jī)可以識(shí)別和解決的問(wèn)題,需要學(xué)生有較強(qiáng)的抽象思維能力。通過(guò)游戲化項(xiàng)目,可以引導(dǎo)學(xué)生把具體問(wèn)題抽象化。教師可以和學(xué)生一起討論并明確游戲的需求,提取問(wèn)題的主要特征,忽略沒(méi)有幫助和影響的細(xì)節(jié),然后再抽象成適合在計(jì)算機(jī)中表示的數(shù)據(jù)結(jié)構(gòu)和形式化的數(shù)學(xué)模型,最后把問(wèn)題的數(shù)學(xué)模型或處理需求轉(zhuǎn)化為有效的算法,并編碼實(shí)現(xiàn)。
總之,新課程要求我們進(jìn)一步關(guān)注學(xué)生思維能力的提高,信息技術(shù)教師必須更新教學(xué)思路,多思考,多實(shí)踐,才能把信息技術(shù)核心素養(yǎng)落到實(shí)處。
【參考文獻(xiàn)】
[1] 陳軍輝.迭代思維引導(dǎo)探究走向深入[J].中國(guó)教育報(bào),2018.
[2] 鐘柏昌,李藝. 計(jì)算思維的科學(xué)涵義與社會(huì)價(jià)值解析[J]. 江漢學(xué)術(shù),2016(02).