• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      初中程序設(shè)計(jì)算法入門(mén)教學(xué)策略探究

      2022-01-15 00:48:23郝啟強(qiáng)
      中國(guó)信息技術(shù)教育 2022年1期
      關(guān)鍵詞:計(jì)算思維程序設(shè)計(jì)算法

      郝啟強(qiáng)

      摘要:在新課程背景下,程序算法作為程序設(shè)計(jì)的靈魂,在培養(yǎng)學(xué)生計(jì)算思維能力方面的地位和作用越來(lái)越突出,可是在程序算法入門(mén)教學(xué)中,很多學(xué)生甚至包括教師都對(duì)涉及的程序算法望而卻步,因?yàn)椴缓弥v,也不太好理解,所以大多停留在編程語(yǔ)言語(yǔ)法和編程工具的介紹上。本文作者結(jié)合多年程序設(shè)計(jì)教學(xué)經(jīng)驗(yàn),嘗試在新課程背景下對(duì)初中程序設(shè)計(jì)算法入門(mén)做一些探索,為學(xué)生打開(kāi)程序設(shè)計(jì)的大門(mén)。

      關(guān)鍵詞:程序設(shè)計(jì);計(jì)算思維;算法

      中圖分類(lèi)號(hào):G434 ?文獻(xiàn)標(biāo)識(shí)碼:A ?論文編號(hào):1674-2117(2022)01-0033-03

      義務(wù)教育信息技術(shù)學(xué)科核心素養(yǎng)之一就是培養(yǎng)計(jì)算思維能力,程序設(shè)計(jì)算法為計(jì)算思維的培養(yǎng)提供了很好的詮釋。計(jì)算思維雖然不等同于程序設(shè)計(jì)的算法思想,但是二者卻是緊密聯(lián)系的,計(jì)算思維是抽象的思維活動(dòng),是一種思考方式,而算法作為程序設(shè)計(jì)的靈魂,則是把這種思維具象化,變成了具體的方法和解決問(wèn)題的步驟,從而編寫(xiě)出完美的程序代碼。在新課程背景下,程序設(shè)計(jì)編程的地位和作用越來(lái)越突出。因此,程序設(shè)計(jì)入門(mén)教學(xué)應(yīng)當(dāng)從過(guò)去單純地介紹某一門(mén)編程語(yǔ)言語(yǔ)法和編程工具,逐步轉(zhuǎn)向培養(yǎng)學(xué)生計(jì)算思維能力,嘗試運(yùn)用計(jì)算思維識(shí)別與分析問(wèn)題,抽象、建模與設(shè)計(jì)系統(tǒng)性解決方案。為此,筆者結(jié)合多年程序設(shè)計(jì)教學(xué)經(jīng)驗(yàn),嘗試了如下教學(xué)策略。

      ● 從生活中的情境入手——讓程序變得有溫度

      在程序算法入門(mén)教學(xué)中,教師單純地就程序說(shuō)程序,以代碼說(shuō)算法,對(duì)學(xué)生而言這是一種被動(dòng)的知識(shí)輸入,在學(xué)生進(jìn)行知識(shí)的建構(gòu)過(guò)程中,教師灌輸居多,而非學(xué)生主動(dòng)發(fā)現(xiàn)認(rèn)知,導(dǎo)致程序代碼脫離生活實(shí)際。如果能創(chuàng)設(shè)一個(gè)貼近生活的學(xué)習(xí)情境,通過(guò)實(shí)際需求呼喚程序算法,并最終轉(zhuǎn)換成程序代碼,或許學(xué)生更容易入門(mén)。因此,教師可以適當(dāng)?shù)貜膶W(xué)生生活中常見(jiàn)的情境入手,讓程序更接地氣,減少與學(xué)生的距離感,讓學(xué)生消除對(duì)程序的陌生感,感受到程序的溫度。

      1.情境樣例——兩杯液體互換

      例如,兩個(gè)變量交換數(shù)值這一概念,用3行簡(jiǎn)單的代碼(temp=a;a=b;b=temp)就能夠?qū)崿F(xiàn),可是對(duì)初學(xué)者而言,可能會(huì)有這樣的疑惑:為什么會(huì)這樣寫(xiě)?為什么不能直接寫(xiě)a=b;b=a?在實(shí)際教學(xué)中,教師可以嘗試以生活中兩個(gè)杯子中的液體互換為例,引發(fā)學(xué)生思考:有兩個(gè)杯子,a杯裝橙汁,b杯裝牛奶,如何完成互換?學(xué)生會(huì)很容易想到再用一個(gè)杯子c(甚至更多杯子)來(lái)做過(guò)渡,即先將a杯橙汁倒入空的c杯,然后將b杯牛奶倒入a杯,最后把c杯橙汁倒入b杯,從而實(shí)現(xiàn)互換。這樣通過(guò)打比方,幫助學(xué)生理解交換過(guò)程,然后再過(guò)渡到代碼編寫(xiě),水到渠成。

      2.情境樣例——銀行卡安全防護(hù)

      在講解While條件循環(huán)時(shí),教師可以以為銀行設(shè)計(jì)安全防護(hù)為生活實(shí)例來(lái)展開(kāi)。密碼登錄V1.0版本可以設(shè)計(jì)為if(password = =“123456”),但這只是單次判斷;由此引入密碼登錄V2.0版本,用戶登錄系統(tǒng)循環(huán)檢測(cè)用戶輸入密碼是否正確,如不正確則重復(fù)輸入,這是很典型的條件循環(huán);在V3.0版本,還可以加入累加器知識(shí)點(diǎn),對(duì)用戶輸錯(cuò)次數(shù)進(jìn)行統(tǒng)計(jì),每錯(cuò)一次累加器就累加一次,即s=s+1,當(dāng)錯(cuò)誤達(dá)到5次,結(jié)束用戶惡意窮舉,跳出循環(huán)。這樣以實(shí)例激發(fā)學(xué)生學(xué)習(xí)內(nèi)驅(qū)力,效果會(huì)更佳。

      ● 從不插電的小游戲入手——讓程序保持熱度

      在程序算法入門(mén)教學(xué)中,枯燥的代碼會(huì)讓學(xué)生興趣減退,所以教師可以考慮在講一些經(jīng)典的程序算法時(shí),暫時(shí)拋開(kāi)代碼,帶著學(xué)生做一些不插電的小游戲活動(dòng),讓學(xué)生在游戲中體驗(yàn)相關(guān)算法的執(zhí)行過(guò)程,強(qiáng)化對(duì)算法的理解。

      1.游戲樣例——身高體重打擂臺(tái)

      例如,在講解如何在兩個(gè)數(shù)中找最大的數(shù)時(shí),筆者喜歡帶學(xué)生圍繞身高體重的數(shù)值打一次擂臺(tái),幫助學(xué)生體驗(yàn)數(shù)的比較過(guò)程。即先設(shè)置一個(gè)擂主,參與游戲的兩位學(xué)生采用比身高或者體重的方式“打擂”,獲勝者榮登寶座,程序代碼表達(dá)為:

      if (max==a) max=a;else ?max=b;

      在學(xué)會(huì)2個(gè)數(shù)比大小后,接著思考3個(gè)數(shù)如何比較大???同樣可以先設(shè)擂主,即max=a,b和c分別挑戰(zhàn)擂主,就會(huì)有2次挑戰(zhàn)過(guò)程,挑戰(zhàn)者挑戰(zhàn)成功則換人,否則就不變,故而后面的else max=max可以省略。程序代碼如圖1所示。

      在理解3個(gè)數(shù)比大小之后,再引導(dǎo)學(xué)生思考多個(gè)數(shù)(如20個(gè)數(shù))如何打擂臺(tái)?不難發(fā)現(xiàn)思路跟3個(gè)數(shù)打擂原理是一樣的。但由于挑戰(zhàn)者較多,不可能寫(xiě)19行重復(fù)的挑戰(zhàn)代碼,因此可以引入循環(huán)和數(shù)組來(lái)優(yōu)化代碼,程序代碼總結(jié)如圖2所示。

      2.游戲樣例——排序算法

      筆者發(fā)現(xiàn),通過(guò)游戲模擬體驗(yàn),過(guò)渡到代碼編寫(xiě),學(xué)生是比較容易接受的。例如,在講解選擇和冒泡排序算法時(shí),教師可以網(wǎng)絡(luò)查找關(guān)于排序經(jīng)典算法系列的舞蹈視頻,如匈牙利Sapientia大學(xué)的學(xué)生別出心裁地將選擇、插入、冒泡、希爾、歸并、快排等6種經(jīng)典排序算法編成舞蹈。雖然學(xué)生沒(méi)有這樣的舞蹈功底,但是其教學(xué)思路與不插電小游戲有著異曲同工之處。具體游戲方法如下:選擇5位高矮不一的學(xué)生作為待排對(duì)象;給5位學(xué)生每人發(fā)一張白紙,要求寫(xiě)上自己的身高(單位厘米);學(xué)生手持寫(xiě)有自己身高的卡片隨機(jī)站成一排(如圖3)。

      模擬第1輪排序——確定最高的第1名(如圖4)。

      第1輪程序描述:為了確定左邊第1個(gè)位置站的是最高個(gè)的同學(xué),從第2人到第5人,每位同學(xué)都與第1個(gè)位置上的同學(xué)比高矮,就像打擂臺(tái),如果比他高,則交換位置。程序代碼如下頁(yè)圖5所示。

      ● 從算法的迭代優(yōu)化入手——讓程序變得有深度

      有一些程序,雖然能夠做出來(lái),但是算法并不優(yōu)化,也不高效,這時(shí)候就要引導(dǎo)學(xué)生主動(dòng)思考優(yōu)化的辦法,由簡(jiǎn)到難,螺旋上升。

      以判斷素?cái)?shù)為例,首先引導(dǎo)學(xué)生理解素?cái)?shù)的含義,即除了1和它本身之外,沒(méi)有其他約數(shù)的整數(shù),稱為素?cái)?shù)。如何判斷一個(gè)數(shù)n只有1和它本身之外,沒(méi)有其他的約數(shù)呢?學(xué)生首先會(huì)想到枚舉窮舉的方法,即先假設(shè)n是一個(gè)素?cái)?shù),然后從2開(kāi)始,到n的前一位之間,每個(gè)數(shù)拿出來(lái)看有沒(méi)有能把n除盡的數(shù),發(fā)現(xiàn)1個(gè)多余的約數(shù),說(shuō)明當(dāng)初的假設(shè)不成立,就不是素?cái)?shù)。

      如圖6所示,即通過(guò)開(kāi)關(guān)變量的方法找除1和它本身之外還有沒(méi)有其它約數(shù)的程序,代碼如圖7所示。

      在圖7的程序中,輸入一個(gè)數(shù)n,其循環(huán)判斷一共n-2次,對(duì)一個(gè)比較小的數(shù)影響不大,但是對(duì)一個(gè)較大的數(shù),其判斷的次數(shù)是比較多的,如n=100003,要循環(huán)判斷100001次才能知道它是不是素?cái)?shù),其實(shí)我們只要找到一個(gè)約數(shù),不管后面還有沒(méi)有其他約數(shù),都可以通過(guò)break結(jié)束判斷跳出循環(huán),從而減少循環(huán)執(zhí)行的次數(shù),第1次優(yōu)化版本如圖8所示。

      圖8這段程序?qū)τ谝粋€(gè)非素?cái)?shù)而言可以起到優(yōu)化作用,但對(duì)于一個(gè)素?cái)?shù)而言,其判斷的次數(shù)并未減少,仍然需要循環(huán)n-2次,才能判斷出是不是素?cái)?shù),通過(guò)分析得知:發(fā)現(xiàn)一個(gè)數(shù)超過(guò)一半后就只剩下它自己一個(gè)約數(shù)了,所以可以減少枚舉的范圍,第2次優(yōu)化版本如圖9所示。

      經(jīng)過(guò)上面的范圍縮小,執(zhí)行效率優(yōu)化了一半,只需要5000次,還可以更優(yōu)化嗎?答案是肯定的。筆者發(fā)現(xiàn)約數(shù)都是成對(duì)出現(xiàn)的,如12的約數(shù),有1與12,2與6,3與4三對(duì)約數(shù),后面的都又重復(fù)了。就是說(shuō),12其實(shí)只要判斷到3點(diǎn)幾左右,即只要枚舉到n的平方根即可(如圖10)。

      通過(guò)上面的優(yōu)化方法,這次只需要判斷316次左右,這對(duì)于一個(gè)數(shù)可能影響不大,但是窮舉判斷一個(gè)范圍內(nèi)的數(shù)是否為素?cái)?shù),其優(yōu)化效率是顯著的。另外,還可以加計(jì)數(shù)器統(tǒng)計(jì)出程序執(zhí)行的次數(shù)和消耗的時(shí)間,這樣會(huì)更直觀。當(dāng)然,學(xué)生可能會(huì)問(wèn)還有沒(méi)有更優(yōu)化的判斷素?cái)?shù)的方法,那篩選法求素?cái)?shù)可以作為拓展題讓學(xué)生思考。

      總而言之,教師在幫助學(xué)生認(rèn)識(shí)程序算法的時(shí)候,要多從生活中的情境出發(fā),化難為易,讓程序算法變得有溫度;從一些趣味游戲出發(fā),感受它的平易近人,保持學(xué)生對(duì)程序設(shè)計(jì)的激情和熱度;同時(shí)也要適時(shí)地螺旋上升,不斷迭代從而增加它的深度。把握好這“三度”,才能讓程序算法入門(mén)教學(xué)變得更有趣。

      猜你喜歡
      計(jì)算思維程序設(shè)計(jì)算法
      基于Visual Studio Code的C語(yǔ)言程序設(shè)計(jì)實(shí)踐教學(xué)探索
      基于MapReduce的改進(jìn)Eclat算法
      Travellng thg World Full—time for Rree
      從細(xì)節(jié)入手,談PLC程序設(shè)計(jì)技巧
      電子制作(2019年9期)2019-05-30 09:42:04
      進(jìn)位加法的兩種算法
      高職高專(zhuān)院校C語(yǔ)言程序設(shè)計(jì)教學(xué)改革探索
      程序設(shè)計(jì)課程中計(jì)算思維和應(yīng)用能力培養(yǎng)問(wèn)題研究
      民族高校C語(yǔ)言程序設(shè)計(jì)課程教學(xué)改革的研究
      軟件工程(2016年8期)2016-10-25 16:03:32
      算法的案例教學(xué)探析
      淺談藝術(shù)專(zhuān)業(yè)學(xué)生計(jì)算思維能力的培養(yǎng)
      丽江市| 邳州市| 沧源| 江陵县| 磐安县| 太谷县| 望都县| 保定市| 西乡县| 泊头市| 怀宁县| 铅山县| 南宫市| 肇庆市| 南投市| 明星| 同仁县| 墨竹工卡县| 白山市| 沙洋县| 河北区| 泸水县| 伊吾县| 南部县| 乌拉特中旗| 罗平县| 盱眙县| 元阳县| 东丰县| 永城市| 西峡县| 南投县| 静宁县| 徐闻县| 贡嘎县| 定南县| 怀来县| 通辽市| 长春市| 贞丰县| 上林县|