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