摘? 要:程序設計教學一直是計算機科學教育一個重要的關注點,如何使用圖形化編程有效地提升教學有效性,研究通過提煉圖形化編程語言和高級程序語言的常見設計要素,然后在教學中予以對應實施,使學生理解和掌握結構化程序設計的一般方法,了解面向對象編程的基本思想。通過結合圖形化編程使用前后對比分析,最后得出結論為圖形化編程融入程序設計能在一定程度上提升學生的學習興趣和程序設計教學效果。
關鍵詞:圖形化編程語言;程序設計教學;比較教學法
中圖分類號:G623.58? ? ? 文獻標識碼:A 文章編號:2096-4706(2020)16-0193-03
An Analysis of the Teaching Effect of Integrating Graphic Programming
into Programming
PENG Zhijun
(Guangdong Vocational College of Post and Telecom,Guangzhou? 510630,China)
Abstract:Programming teaching has always been an important focus of computer science education. How to use graphical programming to effectively improve teaching effectiveness,research and refine the common design elements of graphical programming languages and high-level programming languages,and then implement them in teaching. Enable students to understand and master the general methods of structured programming and understand the basic ideas of object-oriented programming. Through the comparative analysis before and after the use of graphical programming,it is concluded that the integration of graphical programming into programming has a certain degree of procedural improvement of studentsinterest in learning and teaching effects.
Keywords:graphical programming language;programming teaching;comparative teaching method
0? 引? 言
程序設計教學是計算機科學教育一個重要方面,如何高效地提升教學有效性,成為國內外教育工作者研究的一個重點。早在1967年美國麻省理工學院的Seymour Papert教授就設計出了LOGO語言來幫助兒童學習人工智能,再到現(xiàn)在如雨后春筍般各種圖形化編程語言的出現(xiàn),都凸顯了圖形化編程在程序設計教學中的獨特作用。
本文介紹了主流的圖形化編程語言Scratch中程序設計要素的實現(xiàn)方式,并介紹了結合圖形化編程在高級語言程序設計實際教學中的應用效果。
1? 主要的圖形化編程語言
目前主要的幾種圖形化編程語言有LOGO、Scratch、App Inventor、Makecode、Blockly等。LOGO已經50年以上歷史了,目前在國內使用較少。目前國內使用人數(shù)最多的圖形化編程語言非Scratch莫屬了,在國際范圍內TIOBE發(fā)布的2020年9月編程語言排行榜中LOGO語言依然排在21位,Scratch語言排在24位。
Scratch語言是美國麻省理工學院開發(fā)的一門語言,主要的使用對象是7~18歲青少年[1]。而企業(yè)界開發(fā)出的圖形編程語言有Google公司的App Inventor等。App Inventor可以使用圖形化的方式編寫安卓應用程序,編程人員使用圖形化的方式編寫代碼,經過內置的代碼分析引擎轉化成安卓應用程序,這是非常有益的嘗試。雖然企業(yè)開發(fā)人員很少使用APP Inventor開發(fā)商用安卓應用程序,但是這種開發(fā)模式是非常有價值的一個研究方向。
MakeCode是微軟公司開發(fā)的一種基于可以控制硬件開發(fā)板的編程語言。通過人工智能可以自動將圖形化代碼轉化成JavaScript腳本,其轉成Python語言的功能也處于試用階段。
2? 高級語言的學習效率
以C語言為例,學生普遍認為這門課難度大、不易學、期末考試不及格率高。另一方面教師也認為課堂時間少,教學效果不好[2]。大部分高校設置的C語言程序設計課程,至少要經過64學時的課堂講授,輔以課后的雙倍時間,也就是128小時的練習時間才能掌握基礎語法。而要通過權威的全國計算機等級考試二級,則要再至少經過幾十到上百個課時的復習才可能通過。而Java語言程序設計基礎在經過一學期64學時的學習后,通過全國計算機等級考試二級真題的測試人數(shù)比率低于20%。并且使很多同學產生了畏懼編程語言的心理,進而對于后續(xù)的專業(yè)課程學習和將來就業(yè)會產生一定障礙。
3? 圖形化編程引入與Python語言結合
基于以上的原因,筆者在廣東郵電職業(yè)技術學院通過成立的人工智能創(chuàng)客教師工作室,面向全校學生招收工作室成員,第一期共招收了22名學生,涵蓋移動互聯(lián)應用技術專業(yè)和移動通信專業(yè)。在工作室學習的第一門課程就是培養(yǎng)學生的編程能力,課程命名為“通過圖形化編程學習程序設計”。
筆者設計了32學時的圖形化編程課程,課程中以使用Scratch軟件繪圖開始,通過繪制從易到難的幾何圖形,再到一系列的有趣的游戲程序設計。經過一個學期的實驗后,從課程出勤率,學習通過率來看,學生的積極性得到了很好的提升。工作室課程出勤率達到95%以上,圖形化編程學習通過率,參照中國電子學會圖形化編程等級考試標準四級,通過率達到了100%。在學習本課程前全國計算機二級等級考試真題內部測試合格率18%左右,經過學習后全國計算機二級等級考試真題內部測試合格率提高了5%左右。
經過在工作室小范圍的試驗后,在后續(xù)我校非計算機專業(yè)的學生教授第一門編程語言時,決定在“Python程序設計”課程中同時采用Scratch作為用來輔助程序設計教學工作的軟件。
Python語言起源于1989年,是一門距今已經有30多年歷史的編程語言,是目前美國大學最受歡迎的程序設計語言。Python語言的實際教學內容包含了順序結構、分支選擇、循環(huán)、函數(shù)等基本的程序邏輯關系[3]。
4? 提取圖形化編程的關鍵要素
在教學中,筆者通過使用圖形化編程語言來對比Python編程語言進行教學,下文是實踐中使用圖形化編程語言和Python對比的關鍵知識點要素。
4.1? 程序設計的要素
4.1.1? 程序設計的第1個要素就是順序結構
使用圖形編程畫正方形的代碼為:
import turtle as t
t.forward(100) #前進100像素
t.right(90)? ? #右轉90度
t.forward(100)
t.right(90)
t.forward(100)
t.right(90)
t.forward(100)
t.right(90)
使用Scratch繪制正方形如圖1所示。
而同比使用Python的繪圖庫Turtle代碼非常接近。通過反復地畫一些基本幾何圖形,學生很快就能理解按順序結構進行編碼的概念。
4.1.2? 得出規(guī)律并提取模式
通過畫常見的圖形,引導學生觀察圖形模塊的代碼,發(fā)現(xiàn)有規(guī)律的重復性的代碼。然后使用循環(huán)模塊來減少重復代碼。引入重復執(zhí)行模塊后簡化基本圖形的代碼量,再在Python語言中引入for循環(huán)或while循環(huán),學生理解起來就過度地非常自然與平滑,學習曲線非常平緩。引入的第一個for循環(huán)代碼為:
import turtle as t
for i in range(4):
t.forward(100) #前進100像素
t.right(90)? ? #右轉90度
4.1.3? 條件分支選擇
通過不同條件判斷的結果,來執(zhí)行不同的動作,Scratch中的圖形模塊非常容易使用條件分支選擇結構,這種結構在編程語言中普遍使用“if…”“else…”語句來實現(xiàn)。
4.1.4? 循環(huán)和條件判斷的復雜組合
經過初步的循環(huán)和條件判斷訓練之后,就可以將循環(huán)和判斷進行復雜的組合,并輔助以嵌套循環(huán)以及條件判斷個兩類組合、并行等方式,使學生能完成更復雜的繪圖設計,這是程序設計教學遇到的第1個難度高的地方,需要學生反復練習。循環(huán)和分支選擇結構的組合如圖2所示。
4.1.5? 函數(shù)
函數(shù)的定義和調用是程序設計教學中第2個難度較高的知識點,使用圖形的自定義模塊可以完成此項功能。Scratch中的函數(shù)也分為有參數(shù)函數(shù)和無參數(shù)函數(shù),但是Scratch缺少采用參數(shù)的返回值的功能,這是在Python語言教學中要補充的一項。
4.1.6? 遞歸
遞歸也是程序設計教學中的1個難點,不僅難以理解,并且難以在代碼中直觀地展現(xiàn)調試過程。筆者在實踐中使用幾何學結合計算機圖形中的分形進行介紹和對比完成這個知識點的講解。圖3為謝爾賓斯基三角形(Sierpinski triangle)的分形代碼實現(xiàn)。
4.1.7? 面向對象
在圖形編程語言中的角色設計采用的就是面向對象的思想。在Scratch圖形編程語言中,有角色和背景兩大類,編程者可以引入多個角色,相當于生成了多個對象。對象中定義變量又可以分為獨占變量和公共變量。通過這個概念可以幫助學生理解面向對象中的封裝概念。
4.1.8? 事件機制
Scratch中有完備的事件觸發(fā)機制。對象被點擊觸發(fā),鼠標、鍵盤和角色碰撞觸發(fā)等等事件。
4.1.9? 通信機制
孤立對象的功能是弱小的。在編程中級進階階段,對象之間的通信機制是一種非常重要的功能。在Scratch中有廣播機制,采用發(fā)送命名廣播方式來完成對象之間的通信。
4.1.10? 線程機制
面向對象編程中多線程的調度和使用是1個難點,哪怕是具有豐富經驗的程序員也可能會出錯。Scratch中簡化了此項技術,它的每個對象之間都是采用了并行的多線程機制,并且Scratch中獨特的克隆機制,對學生理解子線程非常有幫助。
5? 應用效果分析
通過兩學期圖形編程語言輔助高級編程語言的教學實施,并且和通過傳統(tǒng)教學法學習高級編程語言的班級進行對比,得出如下數(shù)據(jù),如表1所示。
在學期初針對學生的程序設計的學習現(xiàn)狀,發(fā)出調查問卷330份,回收有效調查309份。在結合圖形化編程教學過程完成后的學期末,再發(fā)出調查問卷330份,回收有效調查311份。其中未結合圖形化編程的問卷為156份,結合圖形化編程的問卷為155份。
從表2的學習前后興趣調查表,選擇對編程感興趣的學習者中,結合了圖形化編程的學生(比例為40.645%)比未結合圖形化編程的學生(比例為33.970%)高出了6.675%。
6? 結? 論
由于我國的中小學計算機教育在目前的高考選拔體制下長期不受重視,導致高中畢業(yè)生計算機基礎相對薄弱,僅僅通過1到2門課程來提升大學生的計算機應用能力和編程能力,很難達到教學效果要求。但是目前大學教學計劃緊湊,已無法再增加課時,只能在目前的課時中采用更加有效的方式和方法來改善。本項目探索了結合圖形化編程工具來學習“Python程序設計”課程,并提取了圖形化編程對應高級編程語言中的關鍵要素,來提升“Python程序設計”教學效果。經過教學實踐,通過表1的數(shù)據(jù)對比,可以得出圖形編程語言和高級編程語言的比較教學法可以提高學生的考試通過率。從表2的興趣調查表數(shù)據(jù)中,圖形化編程可以提高學生學習編程的興趣。不足之處在于學生在學習了編程之后不管是否采用圖形化編程都比沒有學習前的興趣比例有所下降,說明在整體程序課程的設計方面,依然有待提升的空間。
參考文獻:
[1] 朱麗彬,金炳堯.Scratch程序設計課教學實踐研究——基于體驗學習圈的視角 [J].現(xiàn)代教育技術,2013(7):30-33.
[2] 謝競博.C語言程序設計教學中的問題及改革建議 [J].重慶郵電大學學報(社會科學版),2008(2):137-140.
[3] 嵩天,黃天羽,禮欣.Python語言:程序設計課程教學改革的理想選擇 [J].中國大學教學,2016(2):42-47.
作者簡介:彭之軍(1978.11—),男,漢族,湖北潛江人,講師,高級工程師,碩士,研究方向:企業(yè)信息系統(tǒng)開發(fā)、人工智能技術。