高樹芳
【摘 要】Raptor軟件是一種基于流程圖的圖形化的算法設(shè)計(jì)工具,本文對(duì)Raptor軟件的下載、安裝與啟動(dòng)方法、以及Raptor的基本符號(hào)和使用方法進(jìn)行了簡(jiǎn)介。利用Raptor軟件作為程序設(shè)計(jì)基礎(chǔ)課程的實(shí)驗(yàn)環(huán)境,可以把傳統(tǒng)的“寫程序”過(guò)程變成“畫程序”過(guò)程,可大大降低初學(xué)者學(xué)習(xí)編程語(yǔ)言的難度,激發(fā)學(xué)生學(xué)習(xí)興趣,提高課程教學(xué)效果。
【關(guān)鍵詞】Raptor;程序設(shè)計(jì);流程圖;教學(xué)改革
一、引言
Raptor(The Rapid Algorithmic Prototyping Tool for Ordered Reasoning,用于有序推理的快速算法原型工具),它提供6個(gè)基本圖形符號(hào),用戶可以用連接流程圖的方法創(chuàng)建算法,然后調(diào)試和運(yùn)行算法,還可以將流程圖直接轉(zhuǎn)換成C++、C#和Java等高級(jí)程序語(yǔ)言。
學(xué)習(xí)Raptor可以從零開始培養(yǎng)學(xué)生的程序設(shè)計(jì)基礎(chǔ),包括語(yǔ)言基礎(chǔ),三種控制結(jié)構(gòu)(順序、選擇、循環(huán)),也包括數(shù)組、函數(shù)、子程序等模塊化程序設(shè)計(jì)內(nèi)容,還包括圖形界面的設(shè)計(jì)以及視窗交互程序內(nèi)容。借助Raptor軟件學(xué)習(xí)編程,可以激發(fā)學(xué)生的學(xué)習(xí)興趣,培養(yǎng)學(xué)生的邏輯思維能力,促進(jìn)學(xué)生思考與創(chuàng)新。
二、Raptor軟件的使用
(一)下載、安裝與啟動(dòng)
Raptor是一款免費(fèi)的工具,可以從百度等網(wǎng)站下載,官方網(wǎng)站是http://raptor.martincarlisle.com/,網(wǎng)站提供安裝版和便攜版(綠色版本)兩種版本。本文內(nèi)容基于4.0.5漢化版。安裝Raptor后桌面上會(huì)出現(xiàn)一個(gè)程序圖標(biāo),雙擊圖標(biāo)即可啟動(dòng)程序。
Raptor有初級(jí)、中級(jí)、面向?qū)ο笕N模式,用戶可以從“模式”菜單中選擇。其中,初級(jí)模式可以創(chuàng)始建子圖,但不能創(chuàng)建子程序;中級(jí)模式既可以創(chuàng)始建子圖和子程序;面向?qū)ο竽J接糜趧?chuàng)建UML圖。
(二)Raptor的基本使用
啟動(dòng)Raptor后,工作區(qū)中默認(rèn)有開始(Start)和結(jié)束(End)兩個(gè)符號(hào)。繪制流程圖時(shí),先從左側(cè)符號(hào)區(qū)單擊某個(gè)符號(hào),然后將鼠標(biāo)指針指向流程圖中的箭頭線段,當(dāng)鼠標(biāo)指針變?yōu)樾∈中螤顣r(shí)單擊鼠標(biāo)即可畫出符號(hào),再次在箭頭線段上單擊小手則會(huì)再次畫出同樣的符號(hào)。
雙擊符號(hào)會(huì)彈出對(duì)話框以編輯符號(hào)內(nèi)容;拖動(dòng)符號(hào)可改變符號(hào)位置;右擊符號(hào)會(huì)彈出快捷菜單,可從中選擇“復(fù)制/剪切/粘貼/注釋”等選項(xiàng)進(jìn)行相應(yīng)操作;拖動(dòng)鼠標(biāo)在流程圖中拖出一個(gè)虛框(其中的符號(hào)會(huì)顯示為紅色),可以將選中部分作為一個(gè)整體復(fù)制/移動(dòng)或刪除。
單擊工具欄上的運(yùn)行按鈕運(yùn)行流程圖,運(yùn)行結(jié)果會(huì)在主控制臺(tái)輸出,同時(shí)會(huì)顯示運(yùn)算次數(shù)。在窗口左下角的觀察窗口還將動(dòng)態(tài)顯示各個(gè)變量的值。
(三)Raptor的基本符號(hào)
1)輸入符號(hào)(Input)
用于在程序執(zhí)行過(guò)程中從鍵盤輸入數(shù)據(jù)并將數(shù)據(jù)保存到一個(gè)變量。在“輸入提示”文本框中輸入提示信息,告知要輸入的數(shù)據(jù)類型、值的范圍、數(shù)據(jù)計(jì)量單位等信息,提示信息要用一對(duì)英文雙引號(hào)引起,在“輸入變量”文本框中輸入變量名稱,變量名稱以字母(不區(qū)分大小寫)和下劃線打頭,可以使用數(shù)字符號(hào),不能包含空格和保留字。例如:提示信息為”Input your age”,變量名為age,在圖形中將會(huì)顯示”Input your age” GET age字樣。
2)輸出符號(hào)(Output)
用于在主控窗口顯示加工處理后的信息,可以顯示一個(gè)或多個(gè)文字串或變量,每個(gè)文字串要用一對(duì)雙引號(hào)引起,文字串和(或)變量之間要使用“+”號(hào)連接,例如:”x=”+x。如果希望在輸出信息后另起一行,則需要選中“End current line”復(fù)選框。例如,要以“x=5,y=6”的格式輸出x和y兩個(gè)變量的值,輸出框內(nèi)容應(yīng)為:"x="+x+",y="+y 。
3)賦值符號(hào)(Assignment)
用于執(zhí)行計(jì)算然后將結(jié)果存儲(chǔ)在變量中。例如,要將8賦給age變量,應(yīng)該在“Set”文本框中輸入變量名稱age,在“to”文本框中輸入8?!皌o” 文本框中可以是常量、變量或表達(dá)式。一個(gè)賦值語(yǔ)句只能給一個(gè)變量賦值。賦值語(yǔ)句顯示為age←8。
4)選擇符號(hào)(Selection)
用于實(shí)現(xiàn)分支算法。雙擊菱形框輸入判定條件,表達(dá)式可以由常量、變量和運(yùn)算符組成,可以使用關(guān)系運(yùn)算符(如>、>=、=、!=等)構(gòu)造表達(dá)式,也可以使用邏輯運(yùn)算符“與(and)”“或(or)”“非(not)”“異或(xor)”構(gòu)造多條件表達(dá)式。
可以在Yes分支或No分支中的一個(gè)分支線段上插入流程圖符號(hào),從而形成單分支結(jié)構(gòu);也可以在Yes分支和No分支中都插入流程圖符號(hào),形成雙分支結(jié)構(gòu);還可以在Yes分支或(和)No分支中再插入選擇符號(hào),從而構(gòu)成嵌套分支結(jié)構(gòu)。
5)循環(huán)符號(hào)(Loop)
用于實(shí)現(xiàn)循環(huán)結(jié)構(gòu)。雙擊橢圓符號(hào)或菱形框符號(hào)均可輸入循環(huán)條件,條件表達(dá)式為真(true)時(shí)執(zhí)行Yes分支退出循環(huán);條件表達(dá)式為假(false)時(shí)則執(zhí)行No分支,此時(shí)將執(zhí)行循環(huán)體內(nèi)的語(yǔ)句。
可以在菱形框符號(hào)的上方或下方插入流程圖符號(hào)以設(shè)置要重復(fù)的語(yǔ)句。菱形框符號(hào)上方的語(yǔ)句“至少”會(huì)執(zhí)行一次,菱形框符號(hào)下方的語(yǔ)句是“先判斷、再執(zhí)行”,也可以一次也不執(zhí)行,可見Raptor完全可以模擬諸如C語(yǔ)言的“while”“do while”“for”三種循環(huán)結(jié)構(gòu),但是不能實(shí)現(xiàn)高級(jí)語(yǔ)言中循環(huán)的異常結(jié)束或退出功能(continue和break語(yǔ)句)。
(四)利用“子程序”實(shí)現(xiàn)模塊化程序設(shè)計(jì)
Raptor中有子圖和子程序概念。子圖是將main子圖進(jìn)行擴(kuò)展或折疊的一種方法,可以將一個(gè)大的復(fù)雜的流程圖劃分為一個(gè)main子圖和多個(gè)其他子圖,從而使圖形的閱讀和修改變得容易。所有子圖和main子圖共享所有變量,各圖之間無(wú)須定義和傳遞參數(shù)信息。
子程序是帶有參數(shù)的子圖。main子圖也可以看成一個(gè)子程序。子程序是相互獨(dú)立、級(jí)別平等的,每個(gè)子程序有各自的變量,一個(gè)子程序中的變量和調(diào)用它的程序沒有關(guān)系,一個(gè)子程序和調(diào)用它的子程序之間通過(guò)子程序的參數(shù)傳遞信息。參數(shù)有輸入、輸出、輸入/輸出(in、out、in out)三種,輸入?yún)?shù)向所調(diào)用的子程序傳遞信息;輸出參數(shù)由子程序向調(diào)用它的子圖或子程序返回信息;輸入/輸出參數(shù)在子程序和調(diào)用方雙向傳遞參數(shù)。
例如:設(shè)計(jì)判斷一個(gè)整數(shù)是否是閏年的流程圖,在main子圖中輸入一個(gè)年份nf變量,然后調(diào)用leap子程序,由子程序判斷nf是否是閏年,如果是閏年返回1,否則返回0,最后在main子圖中根據(jù)返回的值(1或0)輸出是否是閏年。leap子程序需要設(shè)置兩個(gè)參數(shù)nf和m,nf表示年份,它是輸入?yún)?shù),它從main傳遞給leap;m是輸出參數(shù),它從leap將m傳遞參數(shù)。
三、Raptor在程序設(shè)計(jì)課程中的應(yīng)用
近年來(lái),筆者在“C語(yǔ)言程序設(shè)計(jì)”課程教學(xué)中,堅(jiān)持使用Raptor輔助教學(xué),從輸入/輸出語(yǔ)句、三種結(jié)構(gòu),到數(shù)組、函數(shù)內(nèi)容教學(xué)中,都指導(dǎo)學(xué)生先使用Raptor設(shè)計(jì)流程圖,再將流程圖轉(zhuǎn)換為代碼。實(shí)踐證明,學(xué)生非常喜歡Raptor工具,在沒有寫代碼之前就有了成就感,增強(qiáng)了編程的自信心。Raptor工具的學(xué)習(xí)可以穿插在課程教學(xué)中,不需專門安排學(xué)時(shí)。在學(xué)習(xí)具體語(yǔ)言時(shí)要注意區(qū)分Raptor和編程語(yǔ)言的具體差異。
【參考文獻(xiàn)】
[1]張光建. 使用Raptor培養(yǎng)學(xué)生程序設(shè)計(jì)思維[J].福建電腦,2015,(8).
[2] Raptor官網(wǎng): http://raptor.martincarlisle.com/