閔慜
高中信息技術(shù)新教材的編程和算法教學(xué)注重培養(yǎng)學(xué)生的計算思維,強調(diào)讓學(xué)生從生活出發(fā),利用所學(xué)編程知識來解決生活中的實際問題。因此,教師在創(chuàng)設(shè)教學(xué)任務(wù)時,需考慮學(xué)生認知的實際情況,創(chuàng)設(shè)情境,引發(fā)學(xué)生興趣,從生活數(shù)據(jù)出發(fā),注重任務(wù)與任務(wù)之間的聯(lián)系與拓展,引導(dǎo)學(xué)生主動思考,不斷分析探究,進一步優(yōu)化學(xué)生計算思維,創(chuàng)設(shè)高效課堂教學(xué)模式。下面,筆者以教科版信息技術(shù)必修1《數(shù)據(jù)與計算》中的《周而復(fù)始的循環(huán)》一課為例,從生活中的數(shù)據(jù)出發(fā),優(yōu)化課本中的項目案例,探究課堂項目式案例布局與設(shè)計,探尋學(xué)生信息技術(shù)學(xué)科素養(yǎng)的培養(yǎng)。
● 分析探究生活數(shù)據(jù),優(yōu)化項目案例設(shè)計
在《周而復(fù)始的循環(huán)》這節(jié)課中,如何通過典型的項目式案例讓學(xué)生體驗Python語言中循環(huán)的意義以及兩種循環(huán)結(jié)構(gòu)的區(qū)別,從而使學(xué)生在面對不同實際問題時選擇合適的編程語言結(jié)構(gòu)體系,是需要突破的一個難點。怎樣既能吸引學(xué)生的興趣,引發(fā)學(xué)生對同一種項目不同問題的思考與總結(jié),又能更好地融合信息技術(shù)學(xué)科素養(yǎng)呢?筆者認為,課堂項目式地引入案例尤為重要。
在計算機程序中,某些代碼的反復(fù)執(zhí)行稱為循環(huán)。Python中既有重復(fù)一定次數(shù)的計數(shù)循環(huán),也有重復(fù)到某種情況結(jié)束的條件循環(huán)。本節(jié)課主要圍繞“別小看循環(huán)的魅力”項目展開學(xué)習(xí),分成子項目一“別小看一張紙的高度”和子項目二“別小看0.01的作用”。兩個項目的案例均來源于學(xué)生能接觸到的生活案例。子項目一主要通過不斷折紙的方式,探究能達到怎樣的高度;子項目二主要以網(wǎng)絡(luò)中的雞湯公式1.01365=37.8和0.99365=0.03為基礎(chǔ)進行變式,探究人的成長依據(jù)網(wǎng)紅公式的計算方式,多久能達到夢想的高度。
筆者通過子項目一幫助學(xué)生復(fù)習(xí)for循環(huán),并設(shè)立條件,引入while循環(huán)的使用。問題如下:假設(shè)現(xiàn)有一張白紙的厚度大約是0.1毫米,對折一次,厚度變?yōu)?.2毫米,再對折一次,厚度變?yōu)?.4毫米……每對折一次,其厚度均變?yōu)閷φ矍暗?倍。假設(shè)這張紙有足夠大,可對折任意次,那么把它折疊20次,求出折疊20次后的厚度h(米)。學(xué)生利用Python中for循環(huán)的語法結(jié)構(gòu)求出厚度后,教師再提出疑問:折疊多少次,紙的厚度能超過珠穆朗瑪峰的高程?學(xué)生已有的知識無法解決該問題,因此筆者自然引入新的知識要點——while循環(huán)語句的語法結(jié)構(gòu),學(xué)生獲得新知后再進一步解決項目問題。
項目中設(shè)立對立的條件讓學(xué)生思考新舊知識的聯(lián)系與異同,同時擴充生活中的實時數(shù)據(jù),讓學(xué)生進一步感受利用編程語句解決實際生活問題的過程,初步融入信息技術(shù)核心素養(yǎng)的培養(yǎng)。
● 總結(jié)提煉,突破編程語言難點
本節(jié)課中,通過子項目一突破了區(qū)分計數(shù)循環(huán)和條件循環(huán)的不同之處,學(xué)生對兩種循環(huán)的使用及程序編寫有了一定認知,但仍停留于教師引導(dǎo)下的被動思維與被動的程序編寫。如何更好地引導(dǎo)學(xué)生運用新知解決新的問題,從而實現(xiàn)新知識的遷移?項目案例的設(shè)計需要提升難度,同時又要與子項目一的思維方式有一定的聯(lián)系,在聯(lián)系的基礎(chǔ)上進行拓展,進一步促進學(xué)生的思維遷移,強化編程語言的難點內(nèi)容。
基于此,本節(jié)課中引入了子項目二“別小看0.01的作用”。該項目中以網(wǎng)絡(luò)中的雞湯公式1.01365=37.8和0.99365=0.03為基礎(chǔ)進行變式,把學(xué)生分成100組和0.01組,分別利用Python程序去探究,按照網(wǎng)絡(luò)中的雞湯公式的計算方法:如果你每天比原來多做一點點(+0.01),每天以原來的1.01倍成長,多久之后,你就達到你原來水平的100倍?(100組研究內(nèi)容)如果你每天比原來少做一點點(-0.01),每天以原來的0.99倍成長,多久之后,你達到了原來水平的0.01?(0.01組研究內(nèi)容)
筆者與學(xué)生共同總結(jié)提煉出了項目中的核心要素:①判斷循環(huán)執(zhí)行的條件是什么?②重復(fù)執(zhí)行的語句又是什么?學(xué)生在新知學(xué)習(xí)的基礎(chǔ)上進一步思考如何將新知進行遷移,融合新知難點,解決新項目中的相關(guān)問題。例如,100組要解決如何通過Python語句實現(xiàn)“達到原來水平的100倍”“每天以原來的1.01倍成長”“天數(shù)增加”?0.01組要解決如何通過Python語句實現(xiàn)“達到原來水平的0.01”“每天以原來的0.99倍成長”“天數(shù)增加”?看似兩組內(nèi)容相似,其實不然。對比兩組程序語句,學(xué)生要思考增長與負增長對應(yīng)的編程語句和運算符號的正確使用,需要在總結(jié)中合理遷移,突破編程語言難點。
● 融合升華,拓展學(xué)生計算思維
Python編程語言的使用能幫助學(xué)生更好地進行數(shù)據(jù)的計算,但在計算的過程中,需要學(xué)生對現(xiàn)實生活中的項目數(shù)據(jù)進行論證,辨別數(shù)據(jù)的真?zhèn)?,這也是學(xué)生計算思維的體現(xiàn)。本節(jié)課中,在學(xué)生解決子項目二的基礎(chǔ)上,教師結(jié)合100組和0.01組的編程語句,升華提煉,優(yōu)化成一個小程序,讓學(xué)生輸入每天努力或退步的因素以及夢想達到的倍數(shù),程序系統(tǒng)給出答案:多少天后能達到夢想的高度。讓學(xué)生測試運行程序,同時讓學(xué)生思考:人的努力或成長用這種計算方式是否可行?學(xué)生通過測試發(fā)現(xiàn),指數(shù)級別的成長速度是不可取的。網(wǎng)絡(luò)中的雞湯公式只能是表面上的激勵,通過程序語句深思推敲后,可能就會漏洞百出。教師給出案例,讓學(xué)生進一步思考:1.01365=37.8,1.02365=1377.4和0.01*365=3.65,0.02*365=7.3兩組計算方式,讓學(xué)生發(fā)現(xiàn)計算的方式不一樣,編寫程序的算法不一樣,得到的結(jié)果往往是千差萬別的。當(dāng)然,不論是累乘指數(shù)級的上升還是累加一點一滴的進步,它都是人不斷進步、積少成多的綜合體現(xiàn)。
筆者設(shè)計子項目二的目的,不僅是讓學(xué)生掌握while循環(huán)的基本使用,更是讓學(xué)生體驗循環(huán)結(jié)構(gòu)的魅力。每天積累一點點,日積月累,就能有不一樣的收獲,這是人生的閱歷,也是循環(huán)帶給學(xué)生的啟示。編程不僅是更好地實現(xiàn)計算,更要注重算法的設(shè)計以及算法在實際生活中的真實運用,這也是信息技術(shù)核心素養(yǎng)的體現(xiàn)。
本節(jié)課是基于循環(huán)結(jié)構(gòu)課例的嘗試,通過優(yōu)化課本中的項目案例幫助學(xué)生更好地感受Python編程語句中循環(huán)的意義及使用方法,同時希望通過案例的設(shè)計及優(yōu)化,進一步幫助學(xué)生感受發(fā)掘生活數(shù)據(jù)的魅力,更好地培養(yǎng)學(xué)生的信息技術(shù)素養(yǎng)。在信息技術(shù)教學(xué)中,教師應(yīng)結(jié)合項目案例帶領(lǐng)學(xué)生激發(fā)學(xué)習(xí)的主動性,主動地對知識進行深入挖掘,引導(dǎo)學(xué)生獨立思考。項目任務(wù)的設(shè)計要結(jié)合學(xué)生的認知能力,合理制訂學(xué)習(xí)目標,合理設(shè)計每個項目的意義,確保項目內(nèi)容的趣味性和深刻性,讓學(xué)生掌握知識內(nèi)涵,使其能夠自主學(xué)習(xí),提升計算思維能力。