


摘要:計(jì)算思維是普通高中信息技術(shù)學(xué)科四個(gè)核心素養(yǎng)之一,而項(xiàng)目學(xué)習(xí)是培養(yǎng)計(jì)算思維的有效途徑。以學(xué)生熟悉的“剪刀石頭布”項(xiàng)目為例,項(xiàng)目情景體驗(yàn)、項(xiàng)目分析、項(xiàng)目支持、項(xiàng)目實(shí)施、項(xiàng)目?jī)?yōu)化、項(xiàng)目遷移這一系列過程可以幫助學(xué)生體驗(yàn)計(jì)算機(jī)編程解決問題的過程,培養(yǎng)學(xué)生的計(jì)算思維,進(jìn)而使學(xué)生能夠運(yùn)用python程序解決生活中的實(shí)際問題。
關(guān)鍵詞:計(jì)算思維" 項(xiàng)目學(xué)習(xí)" python程序
隨著智能時(shí)代的到來,具備計(jì)算思維、利用計(jì)算思維的過程與方法來理解并解決復(fù)雜問題,已成為當(dāng)今社會(huì)優(yōu)秀人才必須具備的素養(yǎng)。培養(yǎng)學(xué)生面向未來的計(jì)算思維能力是全球化發(fā)展的必然趨勢(shì),深刻影響著我國(guó)未來的科技競(jìng)爭(zhēng)力與創(chuàng)新力。計(jì)算思維是普通高中信息技術(shù)學(xué)科四個(gè)核心素養(yǎng)之一,是信息技術(shù)學(xué)科核心素養(yǎng)培養(yǎng)的根基,具有基礎(chǔ)性。計(jì)算思維如此重要,因而我們需要明確計(jì)算思維的內(nèi)涵并探索如何在教學(xué)實(shí)踐中發(fā)展學(xué)生的計(jì)算思維。
一、計(jì)算思維的界定[HTSS]
不同的專家與學(xué)者對(duì)計(jì)算思維有不同的界定。計(jì)算思維的概念最早是由周以真教授提出來的,他認(rèn)為計(jì)算思維是一種包含計(jì)算抽象與自動(dòng)化等的思維過程,計(jì)算思維面向所有人,無處不在。美國(guó)學(xué)者Brennan和Resnick認(rèn)為計(jì)算思維有三個(gè)維度:計(jì)算概念、計(jì)算實(shí)踐與計(jì)算觀念。英國(guó)學(xué)者Selby、Woollard提出計(jì)算思維具有五大特征:抽象、分解、算法思維、評(píng)估和概括。2017年版《普通高中信息技術(shù)課程標(biāo)準(zhǔn)》對(duì)計(jì)算思維的定義是:能夠采用計(jì)算機(jī)領(lǐng)域的學(xué)科方法界定問題、抽象特征、建立結(jié)構(gòu)模型、合理組織數(shù)據(jù);通過判定、分析和綜合各種信息資源、運(yùn)用合理的算法形成解決問題的方案;總結(jié)利用計(jì)算機(jī)解決問題的過程與方法,并遷移到與之相關(guān)的其他問題中。
不同國(guó)家的學(xué)者和相關(guān)標(biāo)準(zhǔn)從多個(gè)角度對(duì)計(jì)算思維做了界定和描述,從中可以看出計(jì)算思維的過程是:分析問題—設(shè)計(jì)算法—調(diào)試優(yōu)化—遷移應(yīng)用。了解了計(jì)算思維的具體內(nèi)容,教師在教學(xué)實(shí)踐中就能有的放矢地發(fā)展學(xué)生的計(jì)算思維。
二、項(xiàng)目學(xué)習(xí)實(shí)踐發(fā)展計(jì)算思維的途徑[HTSS]
新課標(biāo)倡導(dǎo)項(xiàng)目學(xué)習(xí)方式,強(qiáng)調(diào)以學(xué)生為中心,以任務(wù)為主線,通過探究、實(shí)踐完成任務(wù),習(xí)得知識(shí),學(xué)會(huì)技能,形成素養(yǎng)。教師要圍繞信息技術(shù)核心素養(yǎng),把項(xiàng)目整合到課堂教學(xué)中,重構(gòu)教學(xué)組織方式。現(xiàn)以“剪刀石頭布”項(xiàng)目為例,介紹如何基于項(xiàng)目進(jìn)行計(jì)算思維的培養(yǎng)。
(一)項(xiàng)目背景
“運(yùn)用選擇結(jié)構(gòu)描述問題求解過程”是程序設(shè)計(jì)單元第三節(jié)的內(nèi)容,教材是以“設(shè)計(jì)網(wǎng)購(gòu)最佳方案”這個(gè)項(xiàng)目為主線的,但是學(xué)生對(duì)此項(xiàng)目不感興趣,積極性不高,求知欲難以激發(fā)。通過調(diào)查發(fā)現(xiàn):學(xué)生在中學(xué)階段未接觸過程序設(shè)計(jì),基礎(chǔ)非常薄弱。教師在日常教學(xué)中通過觀察得知,學(xué)生喜歡在微機(jī)室玩人機(jī)游戲,部分學(xué)生還有開發(fā)小游戲的動(dòng)機(jī)。于是“剪刀石頭布”這個(gè)項(xiàng)目應(yīng)運(yùn)而生。教師旨在通過學(xué)生喜歡的人機(jī)游戲“剪刀石頭布”激發(fā)學(xué)生學(xué)習(xí)python程序的興趣,讓學(xué)生通過真實(shí)的項(xiàng)目體驗(yàn)、分析、實(shí)施、優(yōu)化、遷移,實(shí)現(xiàn)思維的發(fā)散與碰撞,培養(yǎng)學(xué)生的計(jì)算思維,使其更好地接受知識(shí),將所學(xué)的學(xué)科知識(shí)運(yùn)用到生活中去。
(二)項(xiàng)目情景體驗(yàn)
情景體驗(yàn)可以調(diào)動(dòng)學(xué)生的積極性,增強(qiáng)學(xué)生的求知欲、探索欲,喚醒學(xué)生的學(xué)習(xí)興趣,同時(shí)能夠利用學(xué)生的已有經(jīng)驗(yàn),使其在情景中思考問題。
【教學(xué)片段1】
師:“剪刀石頭布”這個(gè)小游戲大家都玩過,就是猜拳。平時(shí)都是人與人之間玩,大家和計(jì)算機(jī)玩過猜拳嗎?
現(xiàn)在同學(xué)們看一下自己桌面上的猜拳游戲軟件,這是我用python程序做的,請(qǐng)同學(xué)們打開它,輸入“剪刀”或者“石頭”或者“布”,看看結(jié)果,誰贏了呢?
“剪刀石頭布”這個(gè)小游戲?qū)W生都很喜歡,因此學(xué)生參與度極高,并能詳細(xì)描述游戲規(guī)則。這個(gè)項(xiàng)目環(huán)節(jié)以學(xué)生喜歡的人機(jī)游戲引入,調(diào)動(dòng)了學(xué)生學(xué)習(xí)的積極性,增強(qiáng)了學(xué)生的探索欲,提升了學(xué)生學(xué)習(xí)的主動(dòng)性。
(三)項(xiàng)目分析,設(shè)計(jì)算法
算法是在有限步驟內(nèi)求解某一問題所使用的一組定義明確的規(guī)則。通俗地說,算法就是用計(jì)算機(jī)求解某一問題的方法。教師圍繞“剪刀石頭布”游戲,對(duì)學(xué)生進(jìn)行分組,讓學(xué)生以小組為單位思考計(jì)算機(jī)是如何執(zhí)行命令的并分析人機(jī)猜拳的所有可能性。小組展開頭腦風(fēng)暴,有的小組用自然語言描述計(jì)算機(jī)執(zhí)行過程,有的小組用流程圖分析。教師借此拋出問題:如何利用自然語言描述“剪刀石頭布”游戲過程?
1.用自然語言描述游戲過程
用自然語言描述算法,就是用人們?nèi)粘K玫恼Z言,如漢語、英語等來描述算法。教師引導(dǎo)學(xué)生將猜拳游戲分解成幾個(gè)小步驟,有助于算法的實(shí)現(xiàn),也鍛煉了學(xué)生分析問題的能力。
【教學(xué)片段2】
師:好玩吧?想一想猜拳的過程和判斷勝負(fù)的規(guī)則。哪組同學(xué)說一說拆解的步驟?
生:(1)玩家輸入要出的拳。(2)亮拳。(3)如果玩家與電腦出拳相同,輸出“平局”,游戲結(jié)束;否則,根據(jù)雙方出拳判斷勝負(fù),要么玩家贏,要么電腦贏。(5)游戲結(jié)束。
師:這位同學(xué)總結(jié)得很好,這其實(shí)就是幾種情況?對(duì),三種情況,即平局、玩家贏或者電腦贏。這是咱們用自然語言描述的,能不能使用流程圖來描述呢?
自然語言雖然比較容易掌握,但也存在明顯缺點(diǎn)。例如,當(dāng)算法中分支操作較多時(shí),使用自然語言很難將其清晰地表示出來。于是引導(dǎo)學(xué)生思考:可不可以用更加直觀、形象的算法描述形式呢?
2.分析玩家“贏”的情況,繪制流程圖
自然語言把游戲的執(zhí)行過程描述得很清楚,但是分支太多,容易讓人迷惑。這時(shí)候我們就想到了算法的第二種表現(xiàn)形式——流程圖。流程圖描述算法相比于自然語言更直觀、形象,思路清晰,容易理解,特別是結(jié)果存在多種情況時(shí)。
【教學(xué)片段3】
師:我們利用自然語言描述了游戲的執(zhí)行過程,但是并沒有說清楚什么情況下自己能贏,有哪位同學(xué)愿意分享一下自己在什么情況下戰(zhàn)勝電腦?
生:我出“剪刀”,電腦出“布”,結(jié)果是玩家贏。
師:其他同學(xué)還有贏的嗎?現(xiàn)在請(qǐng)各小組把玩家能贏的情況列出來:
師:從表中我們可以看到共有三種情況。大家能不能試著在紙上畫出流程圖?請(qǐng)利用幾分鐘時(shí)間,小組討論并繪制。
通過流程圖(圖1)可以很直觀地看到需要判斷的情況很多。上節(jié)課學(xué)習(xí)的雙分支語句無法實(shí)現(xiàn),于是引出新課——多分支語句if……elif……else。
通過流程圖的繪制,學(xué)生對(duì)“剪刀石頭布”游戲的執(zhí)行過程有了更清晰的認(rèn)識(shí),能更好地從流程圖轉(zhuǎn)換到程序的編寫。從游戲體驗(yàn)、分析問題、設(shè)計(jì)算法再到編寫程序,這是一個(gè)思維訓(xùn)練的過程,是從結(jié)構(gòu)化思維到邏輯思維的提升。
(四)項(xiàng)目支持
用流程圖描述算法雖然清晰簡(jiǎn)潔,但是所占篇幅較大,于是想到了計(jì)算機(jī)編程。對(duì)于猜拳項(xiàng)目,學(xué)生目前掌握的python編程知識(shí)與技能是很難實(shí)現(xiàn)的。
1.如何讓電腦隨機(jī)出牌
使用隨機(jī)函數(shù),引入random,可以幫助我們隨機(jī)從列表中選出一個(gè)。教師演示代碼并簡(jiǎn)單解釋,學(xué)生運(yùn)行測(cè)試,觀察效果。代碼如下:
import random
a=random.choice([\"剪刀\",\"石頭\",\"布\"])
b=input(\"玩家出牌:\")
print(\"電腦\",a,\"玩家\",b)
2.python中如何編寫分支結(jié)構(gòu)
按照我們?cè)O(shè)計(jì)的算法,下面該進(jìn)行判斷。先做一個(gè)簡(jiǎn)單判斷:電腦出“布”,玩家輸入,如果相同則輸出“平局”,如果不同則是其他情況,從而說明分支結(jié)構(gòu)是單分支和雙分支。學(xué)生嘗試編寫,運(yùn)行并察看效果。
if a==b:
print(\"平局\")
else:
print(\"其他情況\")
從代碼來看,單分支或者多分支只能判斷平局情況,其他情況怎么辦呢?根據(jù)我們的算法設(shè)計(jì),需要判斷三種情況,這就需要用到多分支結(jié)構(gòu)。多分支結(jié)構(gòu)這部分內(nèi)容需要教師在黑板上畫算法并進(jìn)行描述。
(五)項(xiàng)目實(shí)施
學(xué)生自己構(gòu)思算法、編寫程序,并完成編程與調(diào)試,程序的寫法可能不同。老師加強(qiáng)巡視指導(dǎo)。針對(duì)學(xué)生出現(xiàn)的問題,如運(yùn)行結(jié)果顯示錯(cuò)誤,學(xué)生先自查,經(jīng)過一番思考討論無果后,師生再共同解決。
學(xué)生在探究的過程中會(huì)遇到哪些問題?經(jīng)過討論和歸納,問題如下:怎么輸出結(jié)果?玩家出“剪刀”“石頭”或者“布”怎么表示?
解決“怎么輸出結(jié)果”這個(gè)問題,需要教師引導(dǎo)學(xué)生回顧輸出函數(shù)print()的用法,提醒學(xué)生對(duì)于原樣輸出的,需要用英文狀態(tài)下的雙引號(hào)。如:輸出平局print(\"平局\")。
解決“玩家出‘剪刀’‘石頭’或者‘布’怎么表示”這一問題,需要教師引導(dǎo)學(xué)生回顧賦值語句的用法,比如a=“剪刀”就是把字符串“剪刀”放在了變量a當(dāng)中,通俗來說就代表電腦隨機(jī)出的是“剪刀”。
當(dāng)然,學(xué)生編寫程序時(shí)可能會(huì)產(chǎn)生語法錯(cuò)誤、中英文混合輸入等方面的基礎(chǔ)問題,在有限的教學(xué)時(shí)間內(nèi),教師來不及一一指導(dǎo)。因此在課堂中,教師可以引導(dǎo)學(xué)生自主在網(wǎng)上查閱資料。
學(xué)生根據(jù)項(xiàng)目分析和項(xiàng)目支持,設(shè)計(jì)算法、編寫程序、調(diào)試運(yùn)行。代碼如下:
import random
a=random.choice([\"剪刀\",\"石頭\",\"布\"])
b=input(\"玩家出牌:\")
print(\"電腦\",a,\"玩家\",b)
if a==b:
print(\"平局\")
elif a==\"布\" and b==\"剪刀\":
print(\"贏了\")
elif a==\"剪刀\" and b==\"石頭\":
print(\"贏了\")
elif a==\"石頭\" and b==\"布\":
print(\"贏了\")
else:
print(\"輸了\")
從計(jì)算思維的培養(yǎng)角度來看,學(xué)生不僅要能編寫程序,還要知道這個(gè)程序運(yùn)用了哪些知識(shí)和技能、如何運(yùn)用計(jì)算機(jī)解決生活中的問題,以便未來可以運(yùn)用類似的過程與方法解決類似的問題。因此,教師應(yīng)該引導(dǎo)學(xué)生進(jìn)一步思考與探索:python程序解決問題的過程是怎樣的?這個(gè)能不能進(jìn)一步優(yōu)化程序?……通過學(xué)生小組討論、師生探討,總結(jié)歸納和提煉,提出程序優(yōu)化方案。
(六)項(xiàng)目?jī)?yōu)化
引導(dǎo)學(xué)生通過知識(shí)整合,使用前面章節(jié)學(xué)習(xí)的邏輯運(yùn)算符來組合條件,讓代碼更簡(jiǎn)潔。經(jīng)過學(xué)生的不斷試錯(cuò)、反復(fù)修改,最終程序代碼如下:
import random
a=random.choice([\"剪刀\",\"石頭\",\"布\"])
b=input(\"玩家出牌:\")
print(\"電腦\",a,\"玩家\",b)
if a==b:
print(\"平局\")
elif a==\"布\" and b==\"剪刀\"or a==\"剪刀\" and b==\"石頭\" or a==\"石頭\" and b==\"布\":
print(\"贏了\")
else:
print(\"輸了\")
代碼運(yùn)行成功,未必是最優(yōu)的算法。為提高算法效率,需優(yōu)化算法的過程,這不僅考驗(yàn)學(xué)生綜合運(yùn)用知識(shí)的能力,還考驗(yàn)學(xué)生算法思維的嚴(yán)謹(jǐn)性。學(xué)生在不斷優(yōu)化算法方案的過程中碰撞出思維的火花,有助于培養(yǎng)良好的思維習(xí)慣,提升計(jì)算思維。
(七)項(xiàng)目遷移
從“剪刀石頭布”項(xiàng)目遷移到“健康指數(shù)計(jì)數(shù)器”,在兩者的對(duì)比體驗(yàn)過程中,學(xué)生計(jì)算思維得以升華。因此,教師在原有項(xiàng)目的基礎(chǔ)上,可以對(duì)項(xiàng)目進(jìn)行適當(dāng)?shù)耐卣古c延伸。
健康指數(shù)計(jì)算器:編寫一個(gè)BMI計(jì)算器程序,用戶輸入BMI值,程序自動(dòng)給出“偏瘦”“正?!薄斑^重”“肥胖”的提示。
注:BMI指數(shù)=體重(kg)/身高(m)2
結(jié)語
計(jì)算思維不單單是解決算術(shù)問題,也不是單一的代碼講解、語法運(yùn)用,而是過程性的程序體驗(yàn)。在面向計(jì)算思維培養(yǎng)的python程序設(shè)計(jì)項(xiàng)目學(xué)習(xí)中,教師從計(jì)算思維的視角出發(fā)設(shè)計(jì)項(xiàng)目,通過“情景體驗(yàn)—項(xiàng)目分析及算法設(shè)計(jì)—項(xiàng)目支持—項(xiàng)目實(shí)施—項(xiàng)目?jī)?yōu)化—項(xiàng)目遷移”這一過程將計(jì)算思維這一核心素養(yǎng)滲透、融入項(xiàng)目的各個(gè)環(huán)節(jié),推進(jìn)項(xiàng)目學(xué)習(xí)的有效實(shí)施,最終使學(xué)生的能力在思維的訓(xùn)練下得以提升。
參考文獻(xiàn):
[1]王艷鳳,陶凌梅.大學(xué)計(jì)算機(jī)基礎(chǔ)課程教學(xué)改革的探索與思考[J].湖北開放職業(yè)學(xué)院學(xué)報(bào),2023,36(2):151-153.
[2]樊蒙蒙.面向計(jì)算思維培養(yǎng)的高中信息技術(shù)項(xiàng)目教學(xué)模式的研究[D].長(zhǎng)沙:湖南師范大學(xué),2019.
[3]中華人民共和國(guó)教育部.普通高中信息技術(shù)課程標(biāo)準(zhǔn)(2017年版2020年修訂)[M].北京:人民教育出版社,2020.
[4]劉付燕.面向計(jì)算思維培養(yǎng)的python程序項(xiàng)目設(shè)計(jì)策略——以“石頭、剪刀、布”游戲的設(shè)計(jì)與實(shí)現(xiàn)為例[J].中國(guó)教育技術(shù)教育,2022(17):47-49.
[5]邵紅祥.面向計(jì)算思維的高中信息技術(shù)項(xiàng)目學(xué)習(xí)實(shí)踐研究[J].中國(guó)信息技術(shù)教育,2022(10):49-51.
責(zé)任編輯:黃大燦