羅訓(xùn)爐
摘要:本文以“設(shè)計(jì)算法實(shí)現(xiàn)用數(shù)學(xué)公式計(jì)算”項(xiàng)目為例,探究如何借助項(xiàng)目式學(xué)習(xí)在初中信息技術(shù)課堂中培養(yǎng)學(xué)生的計(jì)算思維能力,以期學(xué)生能夠利用計(jì)算思維解決學(xué)習(xí)和生活中存在的問(wèn)題。
關(guān)鍵詞:信息技術(shù);計(jì)算思維;初中學(xué)生;程序設(shè)計(jì)
中圖分類號(hào):G434? 文獻(xiàn)標(biāo)識(shí)碼:A? 論文編號(hào):1674-2117(2023)08-0044-03
《義務(wù)教育信息科技課程標(biāo)準(zhǔn)(2022年版)》(以下簡(jiǎn)稱“新課標(biāo)”)將利用計(jì)算思維分析解決學(xué)習(xí)、生活中的問(wèn)題作為課程的一個(gè)主要目標(biāo),提出讓學(xué)生學(xué)會(huì)應(yīng)用計(jì)算思維的方法分析問(wèn)題,對(duì)具體問(wèn)題進(jìn)行抽象和建模,提出解決問(wèn)題的方案,并在數(shù)字化學(xué)習(xí)與生活的情境中開(kāi)展真實(shí)性學(xué)習(xí)。項(xiàng)目式學(xué)習(xí)則是以研究學(xué)科概念、原理為中心,以解決真實(shí)的問(wèn)題為目的,在真實(shí)情境中借助多種資源解決問(wèn)題的一種學(xué)習(xí)模式。在這種新型的學(xué)習(xí)方式中,學(xué)生更容易接受學(xué)習(xí),獲得更加有效的學(xué)習(xí)效果。
現(xiàn)階段初中開(kāi)設(shè)程序設(shè)計(jì)課存在的問(wèn)題
在新課標(biāo)發(fā)布前,初中信息技術(shù)課程沒(méi)有統(tǒng)一的課程標(biāo)準(zhǔn),沒(méi)有統(tǒng)一的教材,各地市主要依據(jù)《中小學(xué)綜合實(shí)踐活動(dòng)課程指導(dǎo)綱要》中“設(shè)計(jì)制作活動(dòng)(信息技術(shù))”推薦的學(xué)習(xí)主題組織教學(xué),教學(xué)目標(biāo)旨在鼓勵(lì)學(xué)生動(dòng)手操作,將自己的創(chuàng)意、方案付諸現(xiàn)實(shí),轉(zhuǎn)化為物品或作品。指導(dǎo)綱要注重提高學(xué)生的技術(shù)意識(shí)、工程思維、動(dòng)手操作能力等。各地市在實(shí)際操作中一般是根據(jù)本地區(qū)的實(shí)際情況組織教師編寫(xiě)地方教材,課程內(nèi)容以各類應(yīng)用軟件的操作為主,部分地區(qū)開(kāi)設(shè)了Visual Basic、C語(yǔ)言、Python等編程課程。在開(kāi)設(shè)程序設(shè)計(jì)的地區(qū),課程一般以程序語(yǔ)言的介紹和訓(xùn)練為主,教學(xué)模式相對(duì)陳舊,教材編排、課程設(shè)計(jì)和教學(xué)模式大量借鑒高中甚至大學(xué)階段的程序設(shè)計(jì)專業(yè)課,過(guò)于注重概念、語(yǔ)法、結(jié)構(gòu)的介紹,學(xué)生把大量時(shí)間花在語(yǔ)句功能和用法等知識(shí)的學(xué)習(xí)上,造成學(xué)生學(xué)習(xí)浮于表面,不符合計(jì)算思維核心素養(yǎng)的培養(yǎng)路徑。
下面,筆者基于上述問(wèn)題,以項(xiàng)目式活動(dòng)“設(shè)計(jì)算法實(shí)現(xiàn)用數(shù)學(xué)公式計(jì)算”對(duì)圓周率π的計(jì)算為例,談?wù)勅绾卫贸绦蛟O(shè)計(jì)培養(yǎng)初中學(xué)生的計(jì)算思維能力。
基于計(jì)算思維的項(xiàng)目式活動(dòng)設(shè)計(jì)與實(shí)施
1.活動(dòng)目標(biāo)的規(guī)劃與設(shè)定
Python語(yǔ)言是近年來(lái)較為流行的編程語(yǔ)言之一,許多地區(qū)將Python語(yǔ)言作為初中階段程序設(shè)計(jì)的首選入門語(yǔ)言。在前序課程中,學(xué)生對(duì)Python語(yǔ)言的基礎(chǔ)知識(shí)和基本編程方法有了初步了解,已經(jīng)能動(dòng)手編寫(xiě)一些簡(jiǎn)單應(yīng)用程序。
本項(xiàng)目活動(dòng)的教學(xué)目標(biāo)是通過(guò)探究不同算法對(duì)圓周率計(jì)算的影響,了解應(yīng)用循環(huán)結(jié)構(gòu)解決具體問(wèn)題的方法,提升學(xué)生計(jì)算思維的深度和廣度。“設(shè)計(jì)算法實(shí)現(xiàn)用數(shù)學(xué)公式計(jì)算”項(xiàng)目旨在根據(jù)學(xué)科核心素養(yǎng),提升學(xué)生的計(jì)算思維能力。同時(shí),筆者根據(jù)學(xué)生的實(shí)際情況,對(duì)現(xiàn)有教材內(nèi)容進(jìn)行了設(shè)計(jì)與重組。
2.知識(shí)的儲(chǔ)備與學(xué)習(xí)
活動(dòng)一:計(jì)算1~10的奇數(shù)和。
在實(shí)際教學(xué)中,學(xué)生根據(jù)已有知識(shí),利用等差數(shù)列求和公式輕松完成任務(wù)。于是,教師進(jìn)一步提出問(wèn)題:能否用同樣的方法計(jì)算1+1/2+1/3+1/4+… +1/999的和?學(xué)生會(huì)發(fā)現(xiàn),這個(gè)問(wèn)題沒(méi)有現(xiàn)成的公式,用print(1+1/2+1/3+1/4+…+1/999)來(lái)計(jì)算又特別煩瑣。如何解決這個(gè)問(wèn)題呢?這時(shí)教師可以引導(dǎo)學(xué)生回憶傳統(tǒng)紙筆計(jì)算此類問(wèn)題的方法,并提出累加和的概念,引入本次活動(dòng)的學(xué)習(xí)內(nèi)容(如圖1)。
在上例中,學(xué)生遇到了還沒(méi)學(xué)到的for語(yǔ)句和range函數(shù),教師可以讓學(xué)生先通過(guò)單詞的字面意思猜測(cè)程序的功能和執(zhí)行過(guò)程,初步感受for循環(huán)的作用與功能。學(xué)生運(yùn)行圖1所示的程序代碼,可快速得到答案,進(jìn)而體驗(yàn)探究成功的樂(lè)趣。
活動(dòng)二:探究for循環(huán)語(yǔ)句的格式與功能。
對(duì)初學(xué)者來(lái)說(shuō),程序設(shè)計(jì)有兩道坎:一個(gè)是循環(huán),另一個(gè)是遞歸。因不少學(xué)生一開(kāi)始沒(méi)能很好地理解循環(huán)結(jié)構(gòu)的精髓,所以后續(xù)的課程變得相對(duì)困難。因此,要讓學(xué)生深刻理解什么是循環(huán)、什么是循環(huán)控制變量,了解循環(huán)變量初值、終值和步長(zhǎng)值的設(shè)定方法,學(xué)會(huì)構(gòu)造循環(huán)體,讓看似無(wú)規(guī)律的數(shù)據(jù)變換成有規(guī)律的數(shù)據(jù),使循環(huán)能不斷重復(fù)執(zhí)行下去。
for循環(huán)包括for、in關(guān)鍵字和rang函數(shù)等,在上例中,學(xué)生根據(jù)教師提供的教學(xué)資源包,可以很快弄清for循環(huán)結(jié)構(gòu)的功能是重復(fù)執(zhí)行循環(huán)體中的程序塊多次,直到rang范圍中的每個(gè)值枚舉完畢,退出循環(huán)。另外,在上例for循環(huán)中,i是循環(huán)變量,初值為1,變化范圍為1≤i<1000,循環(huán)的步長(zhǎng)值為1。for語(yǔ)句的后面要緊跟一個(gè)冒號(hào)“:”,表示后面是一個(gè)程序段,是循環(huán)體部分。循環(huán)體中的程序段要采用縮進(jìn)格式,且要有相同的縮進(jìn)量。對(duì)于循環(huán)變量i的終值為什么是999而不是1000,此時(shí)教師應(yīng)發(fā)揮主導(dǎo)作用進(jìn)行分析和解釋。
3.計(jì)算思維能力的訓(xùn)練與培養(yǎng)
經(jīng)過(guò)上述活動(dòng)的學(xué)習(xí)和探究,學(xué)生對(duì)for循環(huán)的結(jié)構(gòu)、功能和實(shí)現(xiàn)的過(guò)程有了初步的了解,接下來(lái)就可以通過(guò)對(duì)一些有規(guī)律問(wèn)題的探究,進(jìn)一步加深理解循環(huán)結(jié)構(gòu)的使用方法,解決更多現(xiàn)實(shí)生活中存在的問(wèn)題,訓(xùn)練和培養(yǎng)學(xué)生的計(jì)算思維。
活動(dòng)三:分別用for循環(huán)計(jì)算下列式子的值。
通過(guò)觀察可以得出,算式(1)中每一項(xiàng)的組成都是有規(guī)律的:分子從1變化到99,每次遞增2,分母的變化規(guī)律是從2變化到100,每次也是遞增2,且每一項(xiàng)分母的值都比分子多1??梢苑謩e用i和i+1表示分子和分母的值,循環(huán)中每次遞增的步長(zhǎng)可在range函數(shù)中設(shè)定,這樣就可圓滿地解決上述問(wèn)題(如圖2)。
算式(2)看起來(lái)好像有點(diǎn)復(fù)雜。其實(shí),若仔細(xì)觀察,還是可以非常容易地發(fā)現(xiàn)其中的規(guī)律:在程序中,對(duì)于枚舉的每個(gè)變量i,可以用i和i+2表示分子中的兩個(gè)乘積項(xiàng),用i+1和i+3表示分母中的兩個(gè)乘積項(xiàng),這樣問(wèn)題就可以得到解決,不需要設(shè)置4個(gè)控制變量(如下頁(yè)圖3)。在本活動(dòng)中,教師還要提醒學(xué)生注意除式表達(dá)式的表示方法,否則將得到錯(cuò)誤結(jié)果。
4.探究不同算法對(duì)圓周率計(jì)算精度的影響
早期的圓周率大都是通過(guò)實(shí)驗(yàn)而得到的。第一個(gè)用科學(xué)方法尋求圓周率數(shù)值的人是阿基米德,他在《圓的度量》中用圓內(nèi)接和外切正多邊形的周長(zhǎng)確定圓周長(zhǎng)的上下界,從正六邊形開(kāi)始,逐次加倍計(jì)算到正96邊形,得到(3+(10/71)<π<(3+(1/7)),得出精確到小數(shù)點(diǎn)后兩位的π值。南北朝著名數(shù)學(xué)家祖沖之得出精確到小數(shù)點(diǎn)后7位的π值,即3.1415926<π<3.1415927,他的輝煌成就比歐洲早了1000多年。本次活動(dòng)教師引導(dǎo)學(xué)生探究不同方法對(duì)圓周率計(jì)算的影響,提升學(xué)生的計(jì)算思維能力。
活動(dòng)四:分別利用不同算式計(jì)算圓周率π,比較其精度。
算法(3)簡(jiǎn)單明了(如圖4),非常容易實(shí)現(xiàn),大部分學(xué)生都可以輕松完成。但這個(gè)算法運(yùn)算速度太慢,計(jì)算精度太差,當(dāng)n取值10時(shí),只能得到1位小數(shù)精度的圓周率,當(dāng)n取值10000時(shí),也才能得到3位精度的圓周率。算法(4)看起來(lái)稍顯復(fù)雜(如圖5),學(xué)生初次接觸存在一定的畏難情緒,不知從何下手。此時(shí),教師要引導(dǎo)學(xué)生仔細(xì)觀察算式中每項(xiàng)的組成。通過(guò)分析不難發(fā)現(xiàn),算式中的每一項(xiàng)的內(nèi)容組成都是在前一項(xiàng)的基礎(chǔ),乘上一項(xiàng)新的乘積,且新乘上的值也是有規(guī)律的,可以通過(guò)增加一個(gè)新的臨時(shí)變量,用于存儲(chǔ)前一項(xiàng)的值,這樣就可圓滿解決該問(wèn)題。
算法(4)的編程難度不大,但程序效率卻有了驚人的提升,當(dāng)n的取值為10時(shí),可以獲得3位的小數(shù)精度,當(dāng)n的取值為50時(shí),可以得到14位的小數(shù)精度。
上述兩種方法可較好地解決圓周率的計(jì)算問(wèn)題,但它們有個(gè)共同的缺點(diǎn),就是無(wú)法準(zhǔn)確知道當(dāng)前圓周率的精度。那么,如何解決這個(gè)問(wèn)題呢?接下來(lái)教師引導(dǎo)學(xué)生展開(kāi)頭腦風(fēng)暴,進(jìn)行小組討論,探討利用while循環(huán)結(jié)構(gòu)控制圓周率精度的計(jì)算(如圖6),圓滿解決本次項(xiàng)目式學(xué)習(xí)的最終問(wèn)題。
通過(guò)對(duì)圓周率不同算法的探究編程,學(xué)生親歷了計(jì)算思維的全過(guò)程,感受了不同算法對(duì)圓周率計(jì)算的影響,計(jì)算思維能力得到了進(jìn)一步的加強(qiáng)和提升。計(jì)算圓周率還有許多方法,教師還可以引導(dǎo)學(xué)生課后進(jìn)行進(jìn)一步的探究與實(shí)踐,加深對(duì)循環(huán)結(jié)構(gòu)的理解。
在本次活動(dòng)的最后,教師還可以對(duì)學(xué)有所長(zhǎng)的學(xué)生進(jìn)一步提出要求:通過(guò)實(shí)驗(yàn)可以發(fā)現(xiàn),上述改進(jìn)算法雖然能較好地控制圓周率的計(jì)算精度,但由于計(jì)算機(jī)采用浮點(diǎn)數(shù)的形式來(lái)存儲(chǔ)和處理實(shí)數(shù),不能存儲(chǔ)和處理無(wú)限位數(shù)的小數(shù)。在Python中,一個(gè)單精度數(shù)最多只能存放15位小數(shù),但現(xiàn)在計(jì)算機(jī)已經(jīng)可以非常輕松地計(jì)算幾萬(wàn)位的圓周率,這是如何做到的呢?于是,教師引導(dǎo)學(xué)生繼續(xù)了解和探究高精度算法的概念和處理方法,讓學(xué)生嘗試?yán)脭?shù)組來(lái)存放超過(guò)15位的小數(shù),實(shí)現(xiàn)高精度計(jì)算,讓不同層次、不同水平學(xué)生的計(jì)算思維能力都能得到提升。