鄧正杰 蔣文娟 莫壯堅


摘要:高級語言程序設計在高校信息技術類專業中非常重要。為鞏固學生在學習高級程序設計語言后解決問題的能力,該文提出一種基于圖形的高級程序設計語言的鞏固教學方法。該方法主要采取以圖形的形式表述課程知識點,設計圖形繪制相關課題給學生訓練,幫助學生理解、提高學習興趣,分組討論、實踐并考核。經過兩屆學生的檢驗,方法可行,效果良好。
關鍵詞:圖形;程序設計;鞏固教學;高級語言;DirectX
中圖分類號:G642? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2019)20-0111-03
開放科學(資源服務)標識碼(OSID):
Abstract: The advanced computer language programming is very important for the information technology students in universities. In order to strengthen the ability of the students to solve problems after learning the advanced programming language, this paper presents a method for the teaching of strengthening the advanced computer language programming based on the graphics. The method mainly takes the form of graphics to express the knowledge subject of the course, and the design the relative drawing subjects to let the students train, help the students to understand, improve their study interest, and group the students to discuss, practice and examine. The experiments on the two grades, shows that the method is feasible and the effect is acceptable.
Key words: graphics; programing; strengthen teaching; high-level language; DirectX
1 引言
自從計算機發明出來,直到現在,它仍對人們的生產、生活產生著巨大的影響。計算機在各個領域中的普及和應用,使得高級語言程序設計成為信息技術類專業的核心課程。由于高級程序語言與自然語言的差異性,算法邏輯性強、概念抽象,以現有方式講授,學生在學習高級程序設計語言時,非常吃力。在一些高等院校中,雖然學生上完高級程序設計語言和數據結構兩門課程,已經掌握一定的編程基礎,但是僅是在理論層面上和簡單知識點上,還未能用于解決實際問題或復雜問題。因此,有必要在后續實踐課程、必修課或選修課中,融入程序設計的要求,以使學生在畢業前,掌握足夠的能力。
2 相關工作
“十三五”期間的《教育部關于加強高等學校在線開放課程建設應用與管理的意見》希望能夠通過多種方式使用在線開放課程,以達到人才的培養目標。范江波等[1,2]提到教師的教學應以知識習得為目的,從“知識型教學”向“能力型教學”轉變,主導教學過程,設計課上和課下相結合,翻轉與討論相結合,促進學生的深度學習。教師要啟發學生的興趣,讓學生喜歡上編程,同時課上講精、講清知識的脈絡。
在高級語言程序設計教學中,往往會采用多媒體或計算機教學,課堂大多以理論灌輸為主,學生只能被動地接受這種灌輸,整個教學過程缺乏師生間的溝通,學生的自主學習性便無法充分調動。實踐環節,由于課時不足、學生理解能力有限、實踐內容及實踐方法不合適等原因,教師并未有效培養學生的創新能力,導致學生在實踐過程中只能根據指導書步驟來輸入代碼,甚至不清楚所輸入代碼的含義[3]。
在實驗過程中,學生理解能力或學習態度不一致,導致學習步調不一。針對某些學生的某些問題進行輔導,讓其他學生等待,是一種浪費。制作精美的微課件和微視頻,可以滿足人們對可視化畫面的使用愛好,增添趣味性和吸引力[4]。張榮等[5,6]提出在進行教學設計的過程中,創設學習情境是一個重要原則。他們使用大家熟悉的人物圖像作為角色排隊來講述排序算法,利于激發學生的學習興趣。陳靜在文章[7]中針對課堂教學形式單一,理論與實踐脫節;“學而不知所用”感強烈等問題,提出一種基于任務驅動的高級語言程序設計課程改革,其間讓學生兩到三人一組,合作設計完成任務,相互討論學習,消除知識茫然感。但是它并未涉及任務內容或形式。陳彥君等[8]提到對于高級語言程序設計課程,注重編程能力的培養,筆試不能很好地測驗出來,應通過實踐測評學生程序設計能力,線下課堂交流考查學生學習結果,培養學生理論與實踐并重的素養和能力。
基于圖形的教學在初等或中等教育中,已經使用得很多。王婷[9]提到從小人們學習知識都是由看圖識字、看圖說話來展開的,從圖的方式去理解事物是一種最直觀的方法。針對初中生的編程教學,有很長一段時間是采用Visual Basic來實踐,雖然它是可視化的編程工具,但是功能程序部分仍然是要文本編輯,學生在學習過程中容易覺得編程學習枯燥乏味。現在已經有很多轉換成使用圖形化編程來代替。比如:Scratch、Hopscotch、Alice等,還有Code.org在線平臺。用戶可以通過類似玩積木拼搭的方式,用一塊塊代表不同代碼的圖形模塊進行編程,構建出可以運行的程序,可以是應用或游戲。讓學生對程序設計學習產生興趣,激發自主學習性和創新思維[10]。
當前學習程序設計等課程,也可以采用圖形的方式,解釋復雜的原理過程。還使用該方法把一段文字轉換成了一個知識圖。通過一種圖形化存儲的動態分析方法,將抽象的內存分配、變量值的變化過程直觀地展示給學生,幫助學生理解相關知識點[11,12]。該方法主要是涉及知識點的圖形化,還未讓學生使用這些知識去開發一些讓自己可直觀看到的東西。
在實際教學過程中,由于每一門課都會涉及的很多其他內容,所以不可能面面俱到,只要有關系,就必須講,而是有側重點,課時有限等原因,甚至把不重要的內容透明化。比如:在C語言程序設計過程中,并不會去解釋main函數如何被調用。在講授圖像處理過程中,使用Matlab作為開發工具,將隱藏文件讀取、圖像顯示等功能代碼。
3 基于圖形的鞏固教學思路
針對上過高級語言程序設計課程的學生,在解決問題的能力上還有欠缺,需要借助后續的實踐課程或其他專業課程來加強。基于圖形的高級語言程序設計鞏固教學思路,在知識點描述上,使用圖形讓學生更直觀地理解所述內容;在程序設計上,借助DirectX圖形程序設計開發類庫,讓學生進行圖形開發,提高學生學習的興趣。該教學思路主要從以下方面開展。
3.1 用圖形展示知識結構
對于還未開展過大項目開發的學生來說,一個DirectX圖形項目代碼,涉及的內容太多。若讓學生自己看懂整個項目代碼,理清思路,是比較困難的。而實際上,當前的主要任務也不是搞懂整個項目,而只是需要能夠了解框架,能夠使用該框架,加入必要的代碼來繪制特定圖形。因此,在線下,課前,教師需要把整個項目的框架,通過框圖的方式展示給學生,僅需要對后面可能會修改的區域做相對詳細的介紹。圖1給出DirectX SDK中帶的實例Tutorial01的項目的解析框架圖。該框架以wWinMain函數為主體,其間調用到InitWindow、InitDevice、Render等函數。圖中粗略介紹各個函數的調用關系和函數內的主要功能。
通過這樣一個框架圖,學生可以了解到整個項目的運行,而又不用陷入各種細節中去,無法理清頭緒。教師在講解過程中,可以側重于CreateWindow和ClearRenderTargetView兩個函數,讓學生知道基于該項目,可能會修改到的地方及其用途。
3.2提出創新性圖形繪制任務
在傳統的命令行式窗口中,輸出只能是以可打印的字符形式出現,因此,傳統的任務通常是要求用字符打印出不同圖案,或者對序列排序后打印出來等等。跟傳統的方法不一樣,這里采用圖形窗口程序為基礎,教師可以根據基礎項目的內容,要求學生在此基礎上開展各種圖形的繪制。比如:前面的Tutorial01項目,可以要求修改窗口大小、變換背景顏色、讓背景色隨著時間不斷漸變。這樣讓學生直觀地看到自己修改的效果,提高學習興趣。
若對基礎項目僅進行單個簡單的修改,那么跟傳統的方式差別不大,因此,需要構思一些相對復雜的任務,但把任務分解,各個子問題不用太大,避免需要花費太多時間才能理解,而失去信心。比如:隨著課程的開展,逐漸深入,InitDevice函數將變得更加復雜,如圖2。基于這個項目,就可以引申出,修改著色器、增加頂點、修改變換矩陣等等。可以要求學生繪制圖形式的問題:畫點、畫線、擦除、正弦線,跟其他課程知識相結合。
3.3小組開發和考核
在相同班級中,學生的水平也是參差不齊的,而且有些學生想對于跟教師,更習慣跟學生交流,因此,該鞏固教學采用分小組的形式來開展討論和開發。小組共同分析所給任務,討論思路,接下來每個人都進行編寫代碼。分組的時候,主要以自愿為主,根據具體情況做微調。這樣他們相互溝通順暢些,同時避免強強聯手,弱者聚群,起不到相互指導的作用。通常分小組的一個弊端,就是有些學生會僅掛名,不動手。這就需要在考核的時候規避這個問題。采取逐個答辯的方式來考核。答辯的時候,需要教師對整個任務有深入的了解,針對學生的代碼,抽取具體功能代碼段進行問答,以此來得出學生的評價。當學生對所問問題都能回答到位,基本上也就掌握所作任務了。
4 教學開展效果
依據前面敘述的教學方法,切實使用到了兩屆學生的課程中。第一屆為選修課“計算機圖形與動畫技術”,共31人選修;第二屆為必修課“圖形圖像處理”,共53人上。根據上課開展的成績統計如圖3。從成績分布來看,基本上成正態分布,能夠區分學生的水平層次。學生反應良好,從課程學習過程中,不僅學到計算機圖形相關的內容,還提高了程序設計能力。
5 結論
該文針對上完高級程序設計語言課程后,能力還未能解決實際問題,需要鞏固的情況,提出一種基于圖形的高級程序設計語言鞏固教學方法。在其他課程開展過程中,以圖形的方式展示主要的知識脈絡和架構,再以圖形設計內容為學生設計題目,并進行分組實現和考核。經過兩屆學生的使用檢驗,方法可行,效果良好。當然,知識架構的圖形化和題目設計,對不同的課程需要,仍需要相應的分析和設計。
參考文獻:
[1] 范江波,張建兵.高級語言程序設計混合式教學的系統構建與實踐[J].教育教學論壇,2018(44):130-131.
[2] 李華新,李望秀.地方高校計算機專業混合式實踐教學模式探究[J].現代教育科學,2016(04):51-56.
[3] 楊博寧.高級語言程序設計混合式教學體系構建[J].計算機產品與流通,2019(01):243.
[4] 彭瓊,彭浩,劉雯萱.基于微課的“高級語言程序設計”教學模式改革研究[J].微型電腦應用,2018,34(12):8-10.
[5] 張榮,江寶釧,郭立君,葉苗群,程劼.《高級語言程序設計》探究式教學設計研究[J].教育教學論壇,2018(16):190-191.
[6] 雷斌,陳麗.計算機教學改革初探[J].現代教育科學,2014(06):174.
[7] 陳靜.高級語言程序設計課程思考與改革[J].課程教育研究,2018(08):225.
[8] 陳彥君,王朋嬌.“互聯網+教育”背景下基于O2O模式的《高級語言程序設計》教學改革研究[J].軟件導刊,2017,16(11):233-234+237.
[9] 王婷.圖形化教學方法[J].課程教育研究,2013(20):52-53.
[10] 張靜潔,裘國永.圖形化編程在初中程序設計教學中的應用[J].科教導刊(下旬),2018(03):111-113.
[11] 袁太文.一種C語言指針作為函數參數的圖形化分析方法[J].福建電腦,2016,32(01):129-131+20.
[12] 畢婉文.利用思維導圖改進“計算機應用基礎”課堂教學[J].現代教育科學,2012(06):178-180.
【通聯編輯:王力】