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