朱海濤
摘要:當(dāng)前,教育信息化正在全面推廣,在小學(xué)生中普及編程教育已經(jīng)是大勢(shì)所趨。對(duì)一線信息技術(shù)教師來(lái)說(shuō),如何在小學(xué)生喜聞樂(lè)見(jiàn)的圖形化編程與晦澀難懂的C++之間架起一座橋梁,引導(dǎo)學(xué)生從圖形化編程順利過(guò)渡到代碼編程,進(jìn)入更加廣闊的信息技術(shù)世界,是急需解決的現(xiàn)實(shí)問(wèn)題。為此,本文針對(duì)4~6年級(jí)學(xué)生的編程教學(xué)實(shí)踐展開(kāi)局部探究,希望能夠探索出一條可行的編程教學(xué)實(shí)踐路徑。
關(guān)鍵詞:圖形化編程;C++;信息學(xué);實(shí)踐路徑
中圖分類號(hào):G434 ?文獻(xiàn)標(biāo)識(shí)碼:A ?論文編號(hào):1674-2117(2021)S2-0048-03
近幾年,隨著機(jī)器人、人工智能等課程的興起,小學(xué)生編程教育已是大勢(shì)所趨。
由于受知識(shí)水平的限制,小學(xué)生所接觸的編程軟件主要以圖形化編程為主。對(duì)小學(xué)信息技術(shù)教師來(lái)說(shuō),如何在教學(xué)實(shí)踐中架起一座穩(wěn)固、便捷的橋梁,引導(dǎo)學(xué)生從圖形化編程順利過(guò)渡到代碼編程,進(jìn)入更廣闊的信息技術(shù)世界,是急需解決的現(xiàn)實(shí)問(wèn)題。
搭建橋梁,借助趣味繪圖激發(fā)學(xué)生興趣
借助有趣的圖形繪制來(lái)引領(lǐng)學(xué)生進(jìn)入神奇的編程世界,使其在不知不覺(jué)中掌握編程知識(shí)和技能,可以從內(nèi)心深處激發(fā)學(xué)生的興趣,讓學(xué)生自覺(jué)生發(fā)出編程學(xué)習(xí)的“生長(zhǎng)力”,讓教學(xué)產(chǎn)生事半功倍的效應(yīng)。
青島版小學(xué)信息技術(shù)教材引入了國(guó)產(chǎn)圖形化編程軟件Mind+,本節(jié)內(nèi)容是綜合運(yùn)用Mind+知識(shí)繪制蜘蛛網(wǎng),該內(nèi)容是在學(xué)生掌握了較為復(fù)雜的圖形繪制的基礎(chǔ)上進(jìn)行的綜合運(yùn)用,與學(xué)生以往學(xué)習(xí)的繪制正多邊形及有規(guī)律的旋轉(zhuǎn)復(fù)制正多邊形有很大不同,難度系數(shù)大大增加。
針對(duì)小學(xué)生的心理特點(diǎn)和知識(shí)水平,教師可以創(chuàng)設(shè)情境化的教學(xué)流程來(lái)引導(dǎo)學(xué)生循序漸進(jìn)地學(xué)習(xí)、實(shí)踐。利用項(xiàng)目式學(xué)習(xí)將任務(wù)分解,加以引導(dǎo),適時(shí)引入編程思維。
在具體教學(xué)實(shí)踐中,教師首先以學(xué)生喜聞樂(lè)見(jiàn)的小說(shuō)“夏洛特的網(wǎng)”創(chuàng)設(shè)情境,提出繪制蜘蛛網(wǎng)的任務(wù),并告訴學(xué)生,一般繪制蜘蛛網(wǎng)只需要繪制多個(gè)同心的正六邊形(也可以是正八邊形)加上棱線即可。
學(xué)生在任務(wù)的驅(qū)動(dòng)下,通過(guò)上網(wǎng)查找資料,請(qǐng)教數(shù)學(xué)老師,分組研討來(lái)解決問(wèn)題。在此過(guò)程中涉及到對(duì)圓內(nèi)接正多邊形邊長(zhǎng)與半徑關(guān)系的分析,以及角度換算、方向控制等數(shù)學(xué)知識(shí),極大地拓展了學(xué)生思維,使學(xué)生初步體驗(yàn)到了項(xiàng)目式學(xué)習(xí)的樂(lè)趣,激發(fā)了編程學(xué)習(xí)的內(nèi)驅(qū)力。在學(xué)生全面掌握的基礎(chǔ)上,教師可以進(jìn)一步拋出問(wèn)題:怎么把積木“翻譯”成代碼?圖1所示是Mind+積木式腳本和goC部分代碼對(duì)比。
學(xué)生帶著極具挑戰(zhàn)性的問(wèn)題利用goC(一款基于C++的繪圖軟件,類似于Python的turtle,與C++有著天然緊密的聯(lián)系)解決問(wèn)題,在這種富有趣味的轉(zhuǎn)換中,學(xué)生自然而然地實(shí)現(xiàn)了從積木式腳本到代碼的過(guò)渡,得到了算法的啟蒙和編程思維的集中訓(xùn)練。
抓住本質(zhì),借助數(shù)學(xué)迷題滲透算法思想
大家都知道,編程與數(shù)學(xué)是密不可分的。如果學(xué)生對(duì)數(shù)學(xué)不感興趣,就很難體驗(yàn)到編程的樂(lè)趣,而且大部分算法需要數(shù)學(xué)來(lái)證明可行性,所以學(xué)習(xí)編程必須要有良好的數(shù)學(xué)基礎(chǔ),而解決數(shù)學(xué)題也是編程學(xué)習(xí)重要的一環(huán)。
在學(xué)生的學(xué)習(xí)中,處在第一位的不是記住別人的思想,而是學(xué)會(huì)思考,學(xué)以致用。C++代碼講究邏輯、算法和規(guī)則,可讀性強(qiáng),學(xué)會(huì)C++可以為學(xué)生以后學(xué)習(xí)Python等其他編程語(yǔ)言奠定堅(jiān)實(shí)的基礎(chǔ)。所以當(dāng)學(xué)生具備了較高的圖形化編程水平與初步的代碼編程基礎(chǔ)之后,教師就可以借助一些經(jīng)典的數(shù)學(xué)題如“雞兔同籠”“數(shù)字黑洞”“逆序輸出一個(gè)四位整數(shù)”“斐波那契數(shù)列”“冰雹猜想”等來(lái)加深算法的概念,推動(dòng)學(xué)生的代碼編程能力和編程思維深入拓展。
小學(xué)生在解決問(wèn)題的同時(shí),掌握最基本的算法,體驗(yàn)到了編程的樂(lè)趣,從而對(duì)編程產(chǎn)生濃厚的興趣,為C++的學(xué)習(xí)做良好的鋪墊。
以冰雹猜想為例如下頁(yè)圖2,這個(gè)有許多“綽號(hào)”的數(shù)學(xué)游戲具有無(wú)窮的魅力,幾十年來(lái)一直吸引著全世界的數(shù)學(xué)愛(ài)好者,人們用各種方法和途徑去探究它的規(guī)律。
對(duì)任意一個(gè)自然數(shù)n,通過(guò)下公式的輾轉(zhuǎn)變換,都無(wú)法逃出落入4-2-1循環(huán)的宿命。
根據(jù)這個(gè)規(guī)則,我們既可以采用循環(huán),又可以運(yùn)用“遞歸”思想,在圖形化編程軟件中利用自定義模塊可以很方便地搭建“遞歸”腳本。由程序的運(yùn)行結(jié)果可以看出,輸入自然數(shù)27后,經(jīng)過(guò)112步,最終得到了1,這也是數(shù)字掉入“黑洞”的過(guò)程。
我們還可以利用x坐標(biāo)和y坐標(biāo)的變化,使結(jié)果可視化,增加趣味性和直觀性。看到自己親手制作的程序如此有趣,簡(jiǎn)單的腳本就能解決流傳了幾十年的數(shù)學(xué)游戲,學(xué)生自然全身心地體會(huì)到了編程之美。
而且圖3中的腳本與C++代碼已經(jīng)相差無(wú)幾了,我們只要引導(dǎo)學(xué)生稍加改造,就可以轉(zhuǎn)換為C++代碼。這樣一來(lái),學(xué)生對(duì)抽象難懂的遞歸就有了初步的理解,為代碼編程的深入學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。
求同存異,借助“偽代碼”厘清基本結(jié)構(gòu)
偽代碼是介于自然語(yǔ)言與編程語(yǔ)言之間的一種算法描述語(yǔ)言,是用類似自然語(yǔ)言的文字和符號(hào)來(lái)描述算法。使用偽代碼的目的是使被描述的算法可以容易地以任何一種編程語(yǔ)言(Python、C++等)實(shí)現(xiàn)。因此,偽代碼必須結(jié)構(gòu)清晰、代碼簡(jiǎn)單、可讀性好。
在偽代碼中,賦值語(yǔ)句用“←”表示,“x←y”表示將y的值賦給x。偽代碼與圖形化編程軟件積木式的腳本語(yǔ)言高度相似,與C++代碼也有很大的相似性,所以把偽代碼作為圖形化編程與C++代碼編程之間的橋梁,是十分恰當(dāng)?shù)?,學(xué)生也是非常容易接受的。
教師在授課時(shí),先讓學(xué)生用自己的話來(lái)說(shuō)一說(shuō)編程的思路,然后引導(dǎo)學(xué)生用“偽代碼”來(lái)描述程序。通過(guò)寫(xiě)腳本、說(shuō)思路、寫(xiě)偽代碼的路徑,讓學(xué)生寫(xiě)出C++代碼,借此讓學(xué)生體驗(yàn)到代碼編程的簡(jiǎn)潔高效,充分理解算法及編程思想,使知識(shí)得到進(jìn)一步理解、發(fā)展和深化,為進(jìn)一步脫離腳本和偽代碼的“雙拐”而獨(dú)立行走打下基礎(chǔ)。
尋找抓手,借助“流程圖”規(guī)范編程路徑
算法流程圖是專門來(lái)表示算法的圖。其特定的圖形符號(hào)加上文字說(shuō)明非常直觀形象,易于學(xué)生理解。
對(duì)于初學(xué)者來(lái)說(shuō),看完題目馬上寫(xiě)代碼的習(xí)慣是非常不好的。隨著編程學(xué)習(xí)的深入,算法也越來(lái)越難以理解,直接寫(xiě)代碼很容易掉進(jìn)一個(gè)個(gè)“陷阱”。最好的方法是在編寫(xiě)程序之前畫(huà)一個(gè)流程圖來(lái)理清思路,也能夠發(fā)現(xiàn)更好的算法。
算法流程圖不僅用來(lái)指導(dǎo)編寫(xiě)程序,還可以用來(lái)在調(diào)試程序中檢查程序的正確性。如果框圖是正確的而結(jié)果不對(duì),按照框圖逐步檢查程序很容易發(fā)現(xiàn)錯(cuò)誤。
所以說(shuō),除了扎實(shí)的語(yǔ)法知識(shí)外,流程圖的繪制也是每個(gè)初學(xué)者的基本功。畫(huà)程序流程圖不僅可以訓(xùn)練學(xué)生的編程思維,還有助于培養(yǎng)學(xué)生良好的思維習(xí)慣,形成規(guī)范的編程思想。
圖形化編程軟件的腳本與流程圖存在非常大的相似性,參照?qǐng)D形化編程軟件的腳本可以很快畫(huà)出流程圖,借助流程圖又可以較容易地寫(xiě)出偽代碼,從而進(jìn)一步寫(xiě)出代碼。通過(guò)這一系列的交互,可以幫助學(xué)生更好地理解算法的思路和結(jié)構(gòu)。
我們可以借助一些專門的流程圖繪制軟件,來(lái)引導(dǎo)學(xué)生邊學(xué)習(xí)代碼和算法邊繪制流程圖,也可以以圖形化編程軟件的積木式腳本為參考,互相印證。
參考文獻(xiàn):
[1]郭小拓.偽代碼在課程講授與上機(jī)操作中的作用[D].浙江:浙江工業(yè)大學(xué),2009.
[2]秦毅,李法平.高職院校數(shù)據(jù)結(jié)構(gòu)課堂教學(xué)探討[J].北京電力高等專科學(xué)校學(xué)報(bào):自然科學(xué)版,2010,6:155-155.
[3]陳芳.偽代碼在課程講授與上機(jī)操作中的作用[J].教育教學(xué)論壇,2018(26):268-269.
[4]高霞,馬美紅.通信與計(jì)算機(jī)領(lǐng)域偽代碼一致性審查研究[J].數(shù)字通信,2012(05):43-46.
[5]李東.基于J2EE的客戶關(guān)系管理信息系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[D].上海:華東師范大學(xué),2010.