浦路平
(桂林理工大學(xué) 信息科學(xué)與工程學(xué)院,廣西 桂林 541004)
?
用程序調(diào)試器動態(tài)可視化運行程序進(jìn)行程序設(shè)計教學(xué)的方法
浦路平
(桂林理工大學(xué)信息科學(xué)與工程學(xué)院,廣西桂林541004)
摘要:計算機(jī)程序的動態(tài)性和抽象性是學(xué)生學(xué)習(xí)程序設(shè)計課程困難的主要原因。本文提出一種用程序調(diào)試器動態(tài)可視化運行計算機(jī)程序進(jìn)行教學(xué)的程序設(shè)計課程教學(xué)方法,通過把計算機(jī)程序動態(tài)運行路徑軌跡及其變量數(shù)值的可視化,把靜態(tài)的概念轉(zhuǎn)化為動態(tài)變化的圖形和數(shù)據(jù),化無形的抽象思維為直觀的形象思維,降低了學(xué)習(xí)難度,使學(xué)生更加容易理解程序設(shè)計課程內(nèi)容,提高了學(xué)生興趣和學(xué)習(xí)效果。
關(guān)鍵詞:運行程序;程序設(shè)計課程;教學(xué)方法;程序調(diào)試器
一、引言
計算機(jī)程序設(shè)計課程教授應(yīng)用計算機(jī)程序語言設(shè)計和編制計算機(jī)程序的理論、方法和技術(shù),可以提高學(xué)生應(yīng)用計算機(jī)解決問題的能力,提升其就業(yè)競爭力。但有些學(xué)生在學(xué)習(xí)時會遇到較大困難,這主要是由于計算機(jī)程序具有動態(tài)性和抽象性導(dǎo)致的。目前計算機(jī)程序設(shè)計課程教學(xué)主要采用教科書、板書或者PPT等靜態(tài)方法,難以建立起程序運行的動態(tài)概念,在計算機(jī)上運行程序?qū)嵗菔竞蜕蠙C(jī)實驗也只有最終結(jié)果輸出,如同黑箱一般無法看見中間運行過程。因此亟需尋找能夠降低計算機(jī)程序設(shè)計課程中抽象邏輯思維和建立動態(tài)概念難度的新的教學(xué)方法。
本文提出一種通過動態(tài)可視化運行程序進(jìn)行計算機(jī)程序設(shè)計課程的教學(xué)方法,通過把程序運行路徑軌跡和變量數(shù)據(jù)的白箱式動態(tài)可視化,把靜態(tài)的抽象概念轉(zhuǎn)化為直觀的動態(tài)圖形,化無形的抽象思維為有形的形象思維,降低了理解難度,使學(xué)生更加容易理解程序設(shè)計課程內(nèi)容,更加容易建立程序算法模型的動態(tài)概念,提高學(xué)生的學(xué)習(xí)興趣和效果。
二、原理
計算機(jī)程序是用于計算機(jī)運行的,因此計算機(jī)程序只有通過其動態(tài)運行才能真正理解其運行原理和算法原理。計算機(jī)程序運行的動態(tài)變化包括其運行軌跡的變化和運行中變量值的變化。所以計算機(jī)程序具有抽象性和動態(tài)性的特點,這是造成初學(xué)者學(xué)習(xí)困難的主要原因之一。通過程序運行過程的白箱式動態(tài)可視化,把左腦抽象思維與右腦形象思維結(jié)合起來進(jìn)行整體思維,可以降低計算機(jī)程序抽象性和動態(tài)性引發(fā)的理解難度,提升學(xué)習(xí)效果。
1.計算機(jī)程序的抽象性和動態(tài)性
計算機(jī)程序是為解決現(xiàn)實世界特定問題而設(shè)計出的一組計算機(jī)指令序列,用于指示計算機(jī)等機(jī)器完成信息處理等任務(wù)。在設(shè)計過程中需要對實際問題進(jìn)行抽象,形成可計算的數(shù)學(xué)模型,據(jù)此設(shè)計數(shù)據(jù)結(jié)構(gòu)和算法,根據(jù)算法設(shè)計計算機(jī)程序并編碼實現(xiàn)。一方面解決問題的算法和數(shù)據(jù)都包含在計算機(jī)程序的指令語句序列中,所以計算機(jī)程序具有抽象性;另一方面因為計算機(jī)程序是用于計算機(jī)內(nèi)部運行的,其運行過程是動態(tài)的,即其運行軌跡隨著數(shù)據(jù)而改變,在運行過程中變量數(shù)值也隨之不斷變化,因此,計算機(jī)程序具有動態(tài)性。
由于計算機(jī)程序具有抽象性與運行動態(tài)性,所以初學(xué)者僅僅根據(jù)教科書、板書或者PPT等靜態(tài)的知識載體建立起動態(tài)的程序運行概念具有一定困難。如果無法看見程序在計算機(jī)中的中間動態(tài)運行過程,難以理解和建立起計算機(jī)程序的動態(tài)概念,學(xué)生難以據(jù)此理解相應(yīng)的算法。我國的教育特點以強(qiáng)調(diào)記憶為主,多數(shù)學(xué)生死記硬背有余,而邏輯和抽象思維不足,這在文科生和來自經(jīng)濟(jì)與教育相對落后地區(qū)的學(xué)生中尤為突出,他們在學(xué)習(xí)計算機(jī)程序設(shè)計課程中感到較大困難。
腦科學(xué)表明人的左右大腦是分工的:左腦主管邏輯推理和抽象符號思維,右腦主管藝術(shù)和形象思維[1]。如果左腦邏輯思維與右腦形象思維結(jié)合進(jìn)行整體學(xué)習(xí)[2,3],就可以降低邏輯推理和抽象思維的學(xué)習(xí)難度,從而提高學(xué)習(xí)效率,同時促進(jìn)學(xué)習(xí)者的邏輯抽象思維與直觀形象思維全面平衡發(fā)展。通過把計算機(jī)程序內(nèi)部運行過程動態(tài)可視化,把左腦思維與右腦思維相結(jié)合,可以降低程序設(shè)計課程中抽象動態(tài)邏輯部分的理解難度,提高學(xué)習(xí)效率。
2.程序運行過程的白箱式動態(tài)可視化工具程序調(diào)試器
程序調(diào)試器是許多計算機(jī)高級語言集成開發(fā)環(huán)境都帶有的子系統(tǒng),通常由中斷調(diào)試狀態(tài)的進(jìn)入和退出機(jī)制、斷點設(shè)置系統(tǒng)、跟蹤系統(tǒng)、內(nèi)部變量數(shù)據(jù)查看系統(tǒng)和程序調(diào)用堆棧查看系統(tǒng)組成。程序調(diào)試器可以實現(xiàn)程序運行過程的白箱式動態(tài)可視化,是理想的計算機(jī)高級語言程序設(shè)計課程進(jìn)行動態(tài)可視化教學(xué)的工具。
3.程序調(diào)試器動態(tài)可視化運行程序的程序設(shè)計課程教學(xué)法
程序調(diào)試器既可用于演示算法運行路徑軌跡及中間數(shù)據(jù)變化情況,也可以演示變量和數(shù)組等數(shù)據(jù)結(jié)構(gòu),還可以顯示函數(shù)等過程的相互調(diào)用。程序調(diào)試器動態(tài)可視化運行程序的程序設(shè)計課程教學(xué)法就是用程序調(diào)試器按照上述方法進(jìn)行程序設(shè)計課程教學(xué)。
通過程序調(diào)試器動態(tài)可視化演示計算機(jī)程序運行過程、表現(xiàn)其運行的動態(tài)軌跡和變量數(shù)據(jù)動態(tài)變化,這些直觀的動態(tài)形象與教師或者教科書的講解的抽象概念結(jié)合可以大大降低計算機(jī)程序和算法的理解難度。
計算機(jī)程序設(shè)計課程動態(tài)可視化教學(xué)方法可以通過將計算機(jī)程序運行的路徑軌跡和各個語句結(jié)點上的變量數(shù)據(jù)變化的可視化,把靜態(tài)的抽象概念轉(zhuǎn)化為直觀的動態(tài)圖形,化無形的抽象思維為有形的形象思維,降低了難度。通過了解計算機(jī)程序的動態(tài)運行過程來對其進(jìn)行學(xué)習(xí)和理解,使學(xué)生更加容易理解程序設(shè)計課程內(nèi)容,可以提高學(xué)生興趣和學(xué)習(xí)效果。
三、實例
1. VB 程序設(shè)計程序調(diào)試器動態(tài)可視化方法
Visual Basic(簡稱VB)是適合初學(xué)者學(xué)習(xí)計算機(jī)程序設(shè)計的計算機(jī)高級語言,其集成開發(fā)環(huán)境(IDE)帶有可視化程序調(diào)試器。VB IDE的程序調(diào)試器由斷點設(shè)置、中斷進(jìn)入及退出、當(dāng)前命令指針、內(nèi)部變量數(shù)據(jù)顯示、過程調(diào)用堆棧窗口等子系統(tǒng)組成。
VB IDE有設(shè)計模式、運行模式和中斷模式三種模式[4]。在設(shè)計模式中編制程序,然后運行程序,進(jìn)入運行模式。當(dāng)程序出現(xiàn)運行錯誤和編譯錯誤時或者事先在程序中設(shè)置斷點時進(jìn)入中斷模式,此時可以通過按快捷鍵F8、或者“調(diào)試”菜單或工具欄的“逐語句”命令實施單步運行程序,與此同時代碼窗口中指向當(dāng)前執(zhí)行語句的黃色指針會隨之移動。通過連續(xù)執(zhí)行逐語句命令,可以查看程序運行軌跡。由于本地窗口顯示所有當(dāng)前模塊的變量和對象屬性的類型數(shù)值等信息,所以通過本地窗口可以觀察當(dāng)前過程變量的變化。此外還可以通過堆棧窗口查看各個過程之間的相互調(diào)用關(guān)系。
這樣,通過在需要觀察學(xué)習(xí)的程序命令處人為設(shè)置斷點,由用戶手動控制對于程序?qū)嵭袉尾阶粉?,可以追蹤到過程函數(shù)之間的相互調(diào)用關(guān)系,可以看到程序運行路徑軌跡以及程序運行過程中數(shù)據(jù)的變化。據(jù)此可以通過觀察而直觀地理解各種程序命令和內(nèi)部函數(shù)、算法原理、變量和數(shù)組、自定義函數(shù)和子過程的相互調(diào)用機(jī)制等計算機(jī)高級語言程序設(shè)計的內(nèi)容。利用這種可視化技術(shù)程序設(shè)計教學(xué),可以化抽象概念為具體內(nèi)容,把程序的動態(tài)性直觀地展現(xiàn)給學(xué)生,降低了程序動態(tài)性和抽象性的理解難度,提高了教學(xué)效果。
教學(xué)中可以由教師在課堂上進(jìn)行教學(xué)演示和講解,也可以由學(xué)生親自動手進(jìn)行上機(jī)實驗,還可以作為作業(yè)題進(jìn)行練習(xí),或者作為考試題內(nèi)容對學(xué)生進(jìn)行測試。
2.教學(xué)示例
以下以累加問題為教學(xué)示例說明VB程序調(diào)試器的動態(tài)可視化教學(xué)方法。
要求編制程序求前n個正整數(shù)之和,即求S=1+2+…+n。
首先單擊窗體后在代碼窗口輸入以下VB程序代碼:
Sub Form_Click()
Dim S as integer, i as integer, n as integer
●n=9
S=0
For i=1 to n step 1
S=S+i
Next i
Print S
End Sub
其次設(shè)置斷點:單擊n=9左端,形成程序中的斷點符號●。
然后按F5鍵運行程序,彈出窗體,單擊該窗體,進(jìn)入中斷狀態(tài)。
打開本地窗口,可以看到變量S、n、i,其值均為0。
此時代碼窗口中黃色的命令指針指向n=9語句,按F8鍵后指針下移到S=0語句,n值變?yōu)?。
繼續(xù)按F8語句指針分別到達(dá)For i=1 to n和S=S+i語句,然后不斷在For i=1 to n與next i語句之間循環(huán)。可以觀察到i初值為1后來每次增加1,S每次增加i,最后當(dāng)i大于n的時候結(jié)束循環(huán),命令指針下移到Print S和End Sub語句,過程結(jié)束。
通過觀察總結(jié),可以得到以下信息:
(1)整型變量初始化為0。
(2)S=S+i是把S變量數(shù)據(jù)取出來加上i變量數(shù)據(jù)相加后再賦值給S變量。
(3)for i=1 to n step 1…Next語句中的i循環(huán)開始被賦值1,其后每次被增加1,相當(dāng)于i=i+1;當(dāng)i>n的時候結(jié)束循環(huán)。
(4)本累加問題的算法是賦初值S=0、i=1后重復(fù)執(zhí)行S=S+i、i=i+1,直到i大于n。
此時可以啟發(fā)學(xué)生思考如果step 1改為step 2會得到什么結(jié)果?如果省略step 1又如何?要求學(xué)生自行使用調(diào)試器查看運行過程并得到結(jié)論。
四、結(jié)論
通過教學(xué)實踐和理論分析證明計算機(jī)程序設(shè)計課程白箱式程序運行動態(tài)可視化教學(xué)方法具有以下特點:
(1)計算機(jī)程序設(shè)計課程白箱式程序運行動態(tài)可視化教學(xué)方法是降低學(xué)生理解難度、提高計算機(jī)程序設(shè)計課程學(xué)習(xí)效率的有效方法。
(2)各種計算機(jī)語言的集成開發(fā)環(huán)境所帶的程序調(diào)試器是進(jìn)行計算機(jī)程序設(shè)計課程白箱式程序運行動態(tài)可視化教學(xué)方法的理想工具。
(3)通過計算機(jī)程序設(shè)計課程白箱式程序運行動態(tài)可視化教學(xué)方法有利于學(xué)生掌握計算機(jī)程序動態(tài)可視化調(diào)試技術(shù),這是程序員必須掌握的重要技能。
(4)該方法既可以作為教師教學(xué)方法,也可以當(dāng)作學(xué)生上機(jī)實驗內(nèi)容,還可以作為作業(yè)練習(xí)題和考試題的內(nèi)容。
(責(zé)任編輯:徐建平)
參考文獻(xiàn):
[1]傅世俠.右腦思維與思維方式更新[J].哲學(xué)動態(tài),1988(10):42.
[2]梁保國,樂祿祉.右腦革命與理科教學(xué)改革[J].高等理科教育,1997(1):1-7.
[3]金麗,梁保國.右腦革命與大學(xué)教學(xué)模式改革[J]. 上海高教研究教育,1997(5):51-54 .
[4]龔沛曾,陸慰民,楊志強(qiáng).VisualBasic程序設(shè)計簡明教程[M].北京:高等教育出版社,2003:50-51.
The Way of Teaching the Computer Program Design by Dynamic Visual Running Program Using Program Debugger
PU Lu-ping
(College of Information Science and Engineering, Guilin University of Technology,Guilin 541004,China)
Abstract:The dynamic and abstract of computer program is the main reason for the difficulty of the students' learning program design. This paper presents a program design course teaching method, which uses program debugger to run computer program to carry out the teaching. By means of computer program dynamic running path and variable numerical visualization, the static concept is transformed into dynamic change of graphics and data, the difficulty of learning is reduced, the program design course content is more easily understood, and the students' interest and learning effect are improved.
Key Words:dynamic visualization running of program;program design course;teaching method;program debugger
基金項目:2015年度廣西高等教育本科教改項目“計算環(huán)境下廣西高校計算機(jī)類專業(yè)實驗教學(xué)改革研究與實踐”(2015GJA243)。
收稿日期:2015-11-15修稿日期:2015-12-06
作者簡介:浦路平(1958-),江蘇南通人,博士,副教授,主要研究方向為數(shù)據(jù)挖掘和模式識別,數(shù)學(xué)地質(zhì)和地理信息系統(tǒng)。
中圖分類號:G642
文獻(xiàn)標(biāo)識碼:A
文章編號:1671-9719(2016)1-0057-03