陳丹亞
摘要:本文以《數(shù)據(jù)與計(jì)算》第三章3.4節(jié)《分支結(jié)構(gòu)算法實(shí)現(xiàn)》的教學(xué)過(guò)程為例,以“一元二次方程求解”為學(xué)習(xí)問(wèn)題,建構(gòu)問(wèn)題化學(xué)習(xí)教學(xué)模式,以“呈現(xiàn)問(wèn)題è分析問(wèn)題è推進(jìn)問(wèn)題è解決問(wèn)題è總結(jié)問(wèn)題è拓展問(wèn)題”為實(shí)施路徑,讓學(xué)生在問(wèn)題的解決中,層層深入的認(rèn)識(shí)選擇結(jié)構(gòu),完善程序。旨在讓學(xué)生通過(guò)對(duì)某“個(gè)”實(shí)例的分析,找出分支結(jié)構(gòu)的規(guī)律性問(wèn)題,歸納出選擇結(jié)構(gòu)的一般格式,實(shí)現(xiàn)從“個(gè)”到“類(lèi)”的提升。文中詳細(xì)分解問(wèn)題化學(xué)習(xí)實(shí)施路徑中的每個(gè)環(huán)節(jié),總結(jié)設(shè)計(jì)意圖和注意事項(xiàng),以希望對(duì)高中信息教學(xué)中問(wèn)題化學(xué)習(xí)的教學(xué)策略的應(yīng)用提供參考。
關(guān)鍵詞:分支結(jié)構(gòu);問(wèn)題化學(xué)習(xí);課堂建構(gòu);實(shí)施路徑
本課的授課對(duì)象為必修1《數(shù)據(jù)與計(jì)算》的高一學(xué)生,大多學(xué)生對(duì)利用信息技術(shù)解決實(shí)際問(wèn)題充滿(mǎn)好奇心,樂(lè)于和同學(xué)一起進(jìn)行問(wèn)題的分析與探討。急切地想編寫(xiě)程序解決生活中更為復(fù)雜的實(shí)際問(wèn)題,但是他們現(xiàn)有的知識(shí)結(jié)構(gòu)僅僅掌握Python常量、變量、函數(shù)、書(shū)寫(xiě)表達(dá)式等基礎(chǔ)知識(shí),僅限于解決順序結(jié)構(gòu)的問(wèn)題,將實(shí)際問(wèn)題轉(zhuǎn)化為算法程序的能力也有待提高。經(jīng)過(guò)本課學(xué)習(xí)后,學(xué)生應(yīng)達(dá)到課程標(biāo)準(zhǔn)“計(jì)算思維水平2”中的部分要求,在日后實(shí)踐中,能認(rèn)識(shí)到分支結(jié)構(gòu)在學(xué)習(xí)生活中的應(yīng)用價(jià)值,自覺(jué)運(yùn)用分支結(jié)構(gòu)解決問(wèn)題。
針對(duì)這一學(xué)情和教學(xué)目標(biāo),我們以問(wèn)題為導(dǎo)向,按照問(wèn)題化學(xué)習(xí)模式進(jìn)行如下實(shí)施:
一、呈現(xiàn)問(wèn)題,引入主題
提問(wèn)1:生活中大家有碰到過(guò)哪些選擇性問(wèn)題嗎?實(shí)例應(yīng)用的選擇結(jié)構(gòu)類(lèi)型一樣嗎?
師生互動(dòng)舉例。(略)
提問(wèn)2:在前面的章節(jié)學(xué)習(xí)中,我們已經(jīng)分析了“一元二次方程求解”算法的流程圖實(shí)現(xiàn),很明顯也是一種分支結(jié)構(gòu),那又該如何實(shí)現(xiàn)呢?
設(shè)計(jì)意圖:創(chuàng)設(shè)情境,導(dǎo)入主題,聯(lián)系生活實(shí)例讓學(xué)生產(chǎn)生共鳴,讓學(xué)生感受到選擇結(jié)構(gòu)是用于判斷給定的條件,根據(jù)判斷的結(jié)果控制程序執(zhí)行流程,分為單分支、雙分支及多分支選擇結(jié)構(gòu)。
二、分析問(wèn)題,抽象建模
提問(wèn)3:第二章學(xué)習(xí)時(shí)已經(jīng)分析了“一元二次方程求解”算法的流程圖實(shí)現(xiàn),現(xiàn)在要求輸入a,b,c的值,有解的情況下輸出解,無(wú)解的情況下輸出“無(wú)解”,程序該如何實(shí)現(xiàn)?
自學(xué)導(dǎo)學(xué)案中的if語(yǔ)句的語(yǔ)法要點(diǎn),先嘗試用if語(yǔ)句實(shí)現(xiàn)兩種情況的求解程序。
1、用流程圖表達(dá)分支算法
(1)明確判斷的條件表達(dá)式
(2)梳理?xiàng)l件成立和不成立時(shí)的執(zhí)行步驟
(3)畫(huà)出算法流程圖
2、Python 語(yǔ)句實(shí)現(xiàn)的語(yǔ)法格式歸納:
(1)雙分支結(jié)構(gòu):有if,也有else,用來(lái)處理二選一的情況
If語(yǔ)句的語(yǔ)法格式如下:
if <條件表達(dá)式> :
<語(yǔ)句塊1>
else:
<語(yǔ)句塊2>
雙分支if語(yǔ)句的執(zhí)行過(guò)程是:首先計(jì)算條件的值,如果條件的值為“真”,則執(zhí)行語(yǔ)句1后結(jié)束if語(yǔ)句;如果條件的值為“假”,則執(zhí)行else后邊的語(yǔ)句2后結(jié)束if語(yǔ)句。
(2)單分支結(jié)構(gòu):只有if,沒(méi)有else
If語(yǔ)句的語(yǔ)法格式如下:
if <條件表達(dá)式> :
<語(yǔ)句塊>
單分支if語(yǔ)句的執(zhí)行過(guò)程是:首先計(jì)算條件的值,如果條件的值為“真”,則執(zhí)行語(yǔ)句后結(jié)束if語(yǔ)句;如果條件的值為“假”,則立即結(jié)束。適合只需要對(duì)條件為真的情況做出處理的程序。
設(shè)計(jì)意圖:學(xué)生通過(guò)第二章的學(xué)習(xí)鋪墊,已經(jīng)理清了一元二次方程求解的思路和求根公式的表達(dá)式書(shū)寫(xiě),所以只要應(yīng)用合適的if語(yǔ)法結(jié)構(gòu),就可以完成實(shí)踐1的目標(biāo)設(shè)定。
注意事項(xiàng):因?yàn)閷W(xué)生是第一次接觸Python的if語(yǔ)句結(jié)構(gòu),教師需要總結(jié)語(yǔ)法格式書(shū)寫(xiě)的注意事項(xiàng)與要點(diǎn)。特別強(qiáng)調(diào)Python中的縮進(jìn)是強(qiáng)制的,縮進(jìn)的語(yǔ)句視為代碼塊(以縮進(jìn)標(biāo)記程序結(jié)構(gòu)),通過(guò)縮進(jìn),Python能夠識(shí)別出語(yǔ)句是隸屬于if(else)的分支。這也是以后解題劃分結(jié)構(gòu)的重要依據(jù)。
實(shí)踐1:依次輸入a,b,c的值,有解的情況下輸出解,無(wú)解的情況下輸出“無(wú)解”,代碼如下:
a=int(input(“a=”))
b=int(input(“b=”))
c=int(input(“c=”))
d= b**2-4*a*c
if d>=0 :
x1=(-b+ d**0.5)/(2*a)
x2=(-b-d**0.5)/(2*a)
print(“x1=”,x1, “x2=”,x2)
else:
print(“無(wú)解”)
三、推進(jìn)問(wèn)題,提升難度
提問(wèn)4:如果要實(shí)現(xiàn)依次輸入a,b,c的值,程序運(yùn)行后能分別判斷輸出2個(gè)不同的解,2個(gè)相同的解,無(wú)解的三種情況的算法,程序又該如何實(shí)現(xiàn)?
1、Python 語(yǔ)句多重分支實(shí)現(xiàn)的語(yǔ)法格式歸納:
(1)塊if語(yǔ)句結(jié)構(gòu)
if <條件1> :
<語(yǔ)句塊1>
elif <條件2> :
<語(yǔ)句塊2>
……
elif <條件N-1> :
<語(yǔ)句塊N-1>
else:
<語(yǔ)句塊 N>
教師總結(jié)歸納:首先計(jì)算條件1的值,如果條件1的值為“真”,則執(zhí)行語(yǔ)句1后結(jié)束if語(yǔ)句;否則計(jì)算條件2的值,如果條件2的值為“真”,則執(zhí)行語(yǔ)句2后結(jié)束if語(yǔ)句;……;條件1至條件n-1的值都為“假”時(shí),最后執(zhí)行else子句的語(yǔ)句n。
級(jí)聯(lián)式if語(yǔ)句在語(yǔ)法上是一條語(yǔ)句,只是在else子句中包含了if語(yǔ)句,而該if語(yǔ)句的else子句又包含了if語(yǔ)句,以此類(lèi)推。
四、解決問(wèn)題,實(shí)踐應(yīng)用
實(shí)踐2:在實(shí)踐1的基礎(chǔ)上,優(yōu)化算法,應(yīng)用塊if語(yǔ)句結(jié)構(gòu),實(shí)現(xiàn)依次輸入a,b,c的值,程序運(yùn)行后能分別判斷輸出2個(gè)不同的解,2個(gè)相同的解,無(wú)解的三種情況的算法。
a=int(input(“a=”))
b=int(input(“b=”))
c=int(input(“c=”))
d= b**2-4*a*c
if d>0 :
x1=(-b+ d**0.5)/(2*a)
x2=(-b-d**0.5)/(2*a)
print(“x1=”,x1, “x2=”,x2)
elif d==0 :
x1=(-b+ d**0.5)/(2*a)
x2=x1
print(“x1=x2=”,x1)
else:
print(“無(wú)解”)
五、總結(jié)問(wèn)題,探索規(guī)律
實(shí)踐3:編寫(xiě)程序:輸入身高和體重,求BMI指數(shù)。
要求:輸入身高(米)、體重(千克),求BMI指數(shù)(體重除以身高的平方),IBM值低于18.5 時(shí)輸出“偏輕”; 18.5-25 輸出“正?!? 25-28 輸出“過(guò)重”; 28-32 輸出“肥胖 ”。
設(shè)計(jì)意圖:實(shí)踐3的要求相對(duì)實(shí)踐2增加為4種情況的判斷,學(xué)生在掌握三種情況的塊if語(yǔ)句書(shū)寫(xiě)的前提下應(yīng)該是很容易完成要求的,進(jìn)一步提升學(xué)生的遷移能力。
提問(wèn):多分支結(jié)構(gòu)在哪些生活情景中有應(yīng)用?大家是否可以應(yīng)用本節(jié)課所學(xué)知識(shí)編寫(xiě)程序解決?
【應(yīng)用一】出租車(chē)費(fèi)計(jì)算問(wèn)題
【應(yīng)用二】電費(fèi)計(jì)算問(wèn)題
【應(yīng)用三】超市打折問(wèn)題
設(shè)計(jì)意圖:本課在對(duì)學(xué)生核心素養(yǎng)的培養(yǎng)重在通過(guò)對(duì)現(xiàn)實(shí)問(wèn)題的分析、抽象與建模,形成分支結(jié)構(gòu)算法概念,并使用計(jì)算機(jī)程序解決問(wèn)題??偨Y(jié)利用計(jì)算機(jī)解決問(wèn)題的過(guò)程與方法,并遷移到與之相關(guān)的其他問(wèn)題解決中。
六、拓展問(wèn)題,激發(fā)思考
提問(wèn)5:多分支的選擇結(jié)構(gòu)是不是只有塊if語(yǔ)句結(jié)構(gòu)呢?能不能分解為多個(gè)雙分支或單分支結(jié)構(gòu)?語(yǔ)法格式又該如何調(diào)整?
教師給出嵌套if結(jié)構(gòu)語(yǔ)句實(shí)現(xiàn)的導(dǎo)學(xué)案,學(xué)生自主學(xué)習(xí),鼓勵(lì)學(xué)生思考如何用嵌套if語(yǔ)句將一元二次方程三種情況求解的程序進(jìn)行結(jié)構(gòu)調(diào)整,體驗(yàn)嵌套if語(yǔ)句格式和塊if語(yǔ)句的區(qū)別。
設(shè)計(jì)意圖:不同的分支結(jié)構(gòu)有不同的語(yǔ)法格式和適用場(chǎng)合。牢固掌握選擇結(jié)構(gòu)程序設(shè)計(jì),是學(xué)習(xí)程序設(shè)計(jì)的基本要求,是學(xué)會(huì)編寫(xiě)結(jié)構(gòu)清晰、易讀易懂的程序的前提。
程序設(shè)計(jì)的學(xué)習(xí)主要圍繞環(huán)境、語(yǔ)言和應(yīng)用三個(gè)方面的知識(shí)和內(nèi)容展開(kāi),語(yǔ)言視圖的學(xué)習(xí),其核心主要在于語(yǔ)言規(guī)則本身。從教學(xué)方式來(lái)看,以往的程序設(shè)計(jì)語(yǔ)言規(guī)則的學(xué)習(xí)往往采用三步走的形式,即“提出問(wèn)題,給出解答,再加點(diǎn)解釋”,特別是“解釋”,往往過(guò)多的糾纏于程序設(shè)計(jì)語(yǔ)言的語(yǔ)法知識(shí)的細(xì)枝末節(jié)之中,學(xué)生較少體驗(yàn)到解決問(wèn)題的成功的喜悅。
本節(jié)課運(yùn)用了問(wèn)題化學(xué)習(xí)的教學(xué)模式,首先選擇學(xué)生已有的知識(shí)架構(gòu)貼近的“一元二次方程求解”問(wèn)題引入,分析解決這個(gè)問(wèn)題的“程序”。遵循學(xué)生認(rèn)知能力的發(fā)展規(guī)律,從簡(jiǎn)單的雙分支逐漸提升到多分支,在嘗試補(bǔ)充程序模板中關(guān)鍵代碼的過(guò)程中,逐步認(rèn)識(shí)If選擇結(jié)構(gòu),并引導(dǎo)學(xué)生提取出If語(yǔ)句的基本格式,最終得到功能強(qiáng)大If語(yǔ)句的指令集。最后進(jìn)行拓展應(yīng)用,將現(xiàn)實(shí)生活中各種多分支問(wèn)題問(wèn)題歸類(lèi),學(xué)以致用,讓學(xué)生感受編程學(xué)習(xí)的魅力。
問(wèn)題化學(xué)習(xí)的教學(xué)模式在有限的課堂教學(xué)時(shí)間內(nèi),聚焦問(wèn)題,層層遞進(jìn),學(xué)生通過(guò)自主發(fā)現(xiàn)問(wèn)題、持續(xù)探索問(wèn)題、建構(gòu)問(wèn)題系統(tǒng)、合作解決問(wèn)題的過(guò)程,完成知識(shí)的探究,有助于學(xué)生從整體上認(rèn)識(shí)選擇結(jié)構(gòu),并不斷向縱深發(fā)展。這是使用傳統(tǒng)的講授法是無(wú)法完成的。這一課堂建構(gòu)模式與實(shí)施路徑值得在后續(xù)的章節(jié)教學(xué)中推廣應(yīng)用。
參考文獻(xiàn):
[1]中華人民共和國(guó)教育部.普通高中信息技術(shù)課程標(biāo)準(zhǔn):2017年版[S].北京:人民教育出版社,2018.
[2] 徐誼.基于學(xué)習(xí)方式變革的課堂轉(zhuǎn)型探索.現(xiàn)代教學(xué),2019(10A):25-26.
[3] 王天蓉.問(wèn)題化學(xué)習(xí)的原理和方式.現(xiàn)代教學(xué),2019(10A):27-28