邊 晶 馮 萍
(長(zhǎng)春大學(xué),吉林 長(zhǎng)春 130022)
在已經(jīng)逐步開啟的人工智能時(shí)代,計(jì)算思維已經(jīng)成為現(xiàn)代人,尤其是當(dāng)代大學(xué)生不可或缺的基本能力素養(yǎng)?!按髮W(xué)計(jì)算機(jī)基礎(chǔ)課程的核心價(jià)值就是培養(yǎng)學(xué)生的計(jì)算思維”①。計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念去求解問題、設(shè)計(jì)系統(tǒng)和理解人類行為的一系列思維活動(dòng),計(jì)算思維培養(yǎng)目前已經(jīng)成為各高校的一個(gè)重要培養(yǎng)方向。
程序設(shè)計(jì)類課程是目前各高校培養(yǎng)計(jì)算思維的主陣地。一直以來,各高校都希望通過該類課程培養(yǎng)學(xué)生程序設(shè)計(jì)的“思想”和“方法”,進(jìn)而使學(xué)生具備解決實(shí)際應(yīng)用問題的思維和能力,而《C 語言程序設(shè)計(jì)》通常是該類課程的主干課。但是,C 語言較為嚴(yán)格的語法規(guī)則使學(xué)生在編程時(shí)需要花大量時(shí)間去關(guān)注或糾正語法方面的問題,久而久之,學(xué)生的學(xué)習(xí)熱情就會(huì)被時(shí)常出現(xiàn)的語法錯(cuò)誤消耗殆盡,這樣就很難實(shí)現(xiàn)計(jì)算思維的深度訓(xùn)練,進(jìn)而使學(xué)生逐漸失去了學(xué)習(xí)興趣,也會(huì)感覺越學(xué)越吃力。
RAPTOR 可以通過拖拽的方式將基本流程圖符號(hào)元素直接搭建在一起,再經(jīng)過一些簡(jiǎn)單設(shè)置即可使程序運(yùn)行。在此過程中,學(xué)生可以將全部精力投入到程序流程的設(shè)計(jì)當(dāng)中,不需要考慮繁瑣的語法規(guī)則,只關(guān)注算法本身即可輕松獲取最終的運(yùn)行結(jié)果,大大提高了編程的效率。同時(shí),RAPTOR 程序的執(zhí)行過程也與C 語言程序的執(zhí)行方式非常類似,程序的流程和變量的變化更加清晰直觀,可以幫助學(xué)生更好地理解C 語言程序的執(zhí)行過程。
RAPTOR 是一種基于流程圖的可視化算法工具,通過拖拽的方式將輸入、輸出、賦值、調(diào)用操作以及選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的流程圖符號(hào)連接起來創(chuàng)建算法程序。生成的算法程序可以在其環(huán)境下直接調(diào)試和運(yùn)行,并且可以直觀地顯示當(dāng)前程序流程執(zhí)行到的位置以及所有變量的變化過程。使用RAPTOR 設(shè)計(jì)的算法程序還可以直接轉(zhuǎn)換為C++、C#、Java 等高級(jí)程序語言,這就為程序和算法的初學(xué)者提供了一種輕語法重思維、化繁為簡(jiǎn)的學(xué)習(xí)方式。
對(duì)于程序設(shè)計(jì)語言的初學(xué)者來講,先學(xué)習(xí)語法再編寫程序往往會(huì)有一定難度,學(xué)生在編程時(shí)總是因記不住一些語法的細(xì)節(jié)要求而頻頻出錯(cuò)。但如果讓學(xué)生先通過RAPTOR 算法工具直接構(gòu)造出流程圖,則可以直擊算法本身,真正達(dá)到強(qiáng)化、鍛煉計(jì)算思維的目的。同時(shí),通過對(duì)RAPTOR 算法程序的設(shè)計(jì)和運(yùn)行,學(xué)生還可以了解程序的運(yùn)行機(jī)制,熟悉程序設(shè)計(jì)三大基本結(jié)構(gòu)的作用和執(zhí)行過程,進(jìn)而對(duì)后期的學(xué)習(xí)語法起到事半功倍的效果。
可以設(shè)計(jì)一些由淺入深的遞進(jìn)式教學(xué)案例引導(dǎo)學(xué)生進(jìn)行操作練習(xí)。先示范RAPTOR 一些最基礎(chǔ)構(gòu)件的使用讓學(xué)生掌握一些基本操作,并讓學(xué)生完成一個(gè)基礎(chǔ)案例的設(shè)計(jì),然后對(duì)這個(gè)基礎(chǔ)案例不斷進(jìn)行功能拓展。可以按照順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的過程進(jìn)行不斷改進(jìn),從而實(shí)現(xiàn)計(jì)算思維的遞進(jìn)式訓(xùn)練,同時(shí)也可以激發(fā)學(xué)生的創(chuàng)作熱情,舉一反三地設(shè)計(jì)出多種多樣的實(shí)用性算法程序。
下面以“身高預(yù)測(cè)”程序?yàn)槔榻B此類遞進(jìn)式案例的實(shí)施過程。
“身高預(yù)測(cè)”程序基本要求:編寫一個(gè)程序,根據(jù)父母身高預(yù)測(cè)孩子成人后身高。根據(jù)男女性別、是否鍛煉身體、是否有良好飲食習(xí)慣等信息按公式進(jìn)行計(jì)算。假設(shè)父親身高為h1,母親身高為h2,孩子身高為h,則:若為男孩:h=(h1+h2)*0.54;若為女孩:h=(h1*0.923+h2)/2;若愛好體育鍛煉:可增加身高2%;若有良好的飲食習(xí)慣:可增加身高1.5%。
(1)案例示范——順序結(jié)構(gòu)的應(yīng)用
先提取該程序的最基本功能進(jìn)行案例示范:假定孩子的性別為男或女,輸入父親和母親身高,根據(jù)相應(yīng)公式求孩子長(zhǎng)大后的身高。通過案例示范可以介紹RAPTOR 的輸入(Input)、賦值(Assignment)和輸出(Output)構(gòu)件的使用方法,引導(dǎo)學(xué)生同步操作,同時(shí)還可以介紹出程序設(shè)計(jì)的IPO(Input-Process-Output)方法,讓學(xué)生搭建起程序設(shè)計(jì)的基本框架。以男孩為例的RAPTOR 流程圖如圖1 所示。
圖1 順序結(jié)構(gòu)RAPTOR流程圖示例
(2)案例功能完善——選擇結(jié)構(gòu)的應(yīng)用
學(xué)生繪制出示范案例后,要求將孩子的性別判斷條件加入,從而引入選擇結(jié)構(gòu)及其RAPTOR 構(gòu)件的介紹。在此基礎(chǔ)上再引導(dǎo)學(xué)生將“是否鍛煉身體、是否有良好飲食習(xí)慣”等其他選擇結(jié)構(gòu)信息加入,從而完善程序的設(shè)計(jì)要求,實(shí)現(xiàn)程序的所有功能。加入性別判斷后的RAPTOR 流程圖如圖2 所示。
圖2 選擇結(jié)構(gòu)RAPTOR流程圖示例
(3)案例功能拓展——循環(huán)結(jié)構(gòu)的應(yīng)用
在程序基本功能實(shí)現(xiàn)后,可以引導(dǎo)學(xué)生進(jìn)一步思考如何實(shí)現(xiàn)程序的循環(huán)使用,從而引出循環(huán)結(jié)構(gòu)及其RAPTOR構(gòu)件的介紹。在這里需要對(duì)比介紹“當(dāng)型循環(huán)結(jié)構(gòu)”和“直到型循環(huán)結(jié)構(gòu)”這兩種不同類型循環(huán)結(jié)構(gòu)的執(zhí)行過程,還需強(qiáng)調(diào)RAPTOR 中采用的是“直到型循環(huán)結(jié)構(gòu)”(Loop 構(gòu)件),而C 語言中采用的是“當(dāng)型循環(huán)結(jié)構(gòu)”。同時(shí),在講解過程中可以引導(dǎo)學(xué)生分析并思考構(gòu)成循環(huán)結(jié)構(gòu)的三要素——循環(huán)的初始狀態(tài)、循環(huán)的結(jié)束條件以及循環(huán)控制變量的改變,并從多角度激勵(lì)學(xué)生思考實(shí)現(xiàn)循環(huán)的不同方法,從而建立循環(huán)結(jié)構(gòu)的整體設(shè)計(jì)思想。圖3 為循環(huán)進(jìn)行身高預(yù)測(cè),直到循環(huán)控制變量t 接收到0 值時(shí)結(jié)束的RAPTOR 流程圖。
圖3 循環(huán)結(jié)構(gòu)RAPTOR 流程圖及其運(yùn)行結(jié)果示例
借助RAPTOR 程序的實(shí)時(shí)流程指引和運(yùn)行數(shù)據(jù)展示,可以很清楚地看到循環(huán)結(jié)構(gòu)的執(zhí)行過程以及程序中各變量的變化情況,使學(xué)生直觀感受循環(huán)結(jié)構(gòu)的運(yùn)行機(jī)制。當(dāng)程序結(jié)果出現(xiàn)異常時(shí),還可以借助“單步執(zhí)行”功能,通過一次次單步運(yùn)行控制程序的執(zhí)行并同步查看變量的變化,從而快速找到錯(cuò)誤的原因。程序執(zhí)行過程中循環(huán)變量的數(shù)據(jù)顯示如圖4 所示。
圖4 程序執(zhí)行過程中循環(huán)變量的數(shù)據(jù)顯示
通過RAPTOR 的過程(Call)組件還可以輕松實(shí)現(xiàn)一些圖形的繪制,從而幫助學(xué)生更好地理解各種圖形繪制函數(shù)的使用,為后續(xù)用C 語言進(jìn)行圖形創(chuàng)作打下基礎(chǔ)。繪制圖形需要調(diào)用RAPTOR 的內(nèi)置過程,只要在過程調(diào)用的編輯對(duì)話框中輸入相應(yīng)的內(nèi)置過程函數(shù)即可。下面以“多彩冰糖葫蘆”為例講解用RAPTOR 繪制圖形的基本方法。
要繪制一個(gè)如圖5 所示的“多彩冰糖葫蘆”圖案,即在一條直線上依次繪制5 個(gè)不同顏色的填充圓。根據(jù)圖形特點(diǎn),每個(gè)填充圓的半徑相同,圓心距離相同,可以通過循環(huán)實(shí)現(xiàn)。
圖5 “多彩冰糖葫蘆”示例
為了使學(xué)生了解RAPTOR圖形繪制的基本思想和方法,可以先介紹直線和圓的基本繪制過程(如只繪制直線和最上面的兩個(gè)圓,如圖6 所示),然后再引導(dǎo)學(xué)生思考如何通過循環(huán)結(jié)構(gòu)實(shí)現(xiàn)多個(gè)圓的繪制。下面介紹案例的實(shí)施過程。
圖6 “多彩冰糖葫蘆”基本圖形示例
(1)調(diào)用open_graph_window()過程初始化圖形窗口
在RAPTOR 中繪制圖形必須先調(diào)用open_graph_window(width,height)過程進(jìn)行圖形窗口的初始化,該過程的兩個(gè)參數(shù)width 和height 分別代表開創(chuàng)圖形窗口寬度和高度的像素值,此時(shí)圖形窗口的坐標(biāo)原點(diǎn)在左下角,向右向上分別表示x 軸和y 軸的正向。本例可通過添加過程組件初始化一個(gè)200*300 的圖形窗口,雙擊過程調(diào)用符號(hào),在過程調(diào)用的編輯對(duì)話框中輸入“open_graph_window(200,300)”即可。
(2)調(diào)用內(nèi)置過程繪制直線和圓
根據(jù)圖形繪制要求,應(yīng)在圖形窗口的中央先繪制一條黑色的豎直線,再在直線的頂端繪制兩個(gè)圓。
繪制直線需要調(diào)用內(nèi)置過程draw_line(x1,y1,x2,y2,color),該過程需要五個(gè)參數(shù),分別代表直線的起點(diǎn)坐標(biāo)(x1,y1)、終點(diǎn)坐標(biāo)(x2,y2)和線條顏色color 的值。
繪制圓需要調(diào)用內(nèi)置過程draw_circle(x,y,Radius,color,filled),該過程中的五個(gè)參數(shù)分別表示圓心坐標(biāo)(x,y)、圓的半徑radius、圓的顏色color 和圓的填充模式(true-實(shí)心圓,false-空心圓)。
以上RAPTOR 內(nèi)置過程中的color 參數(shù)都是顏色設(shè)置參數(shù),可以直接用其英文顏色名稱或其顏色值表示,也可以用closest_color(r,g,b)函數(shù)生成,還可以用random_color 生成一種隨機(jī)顏色,其中:RAPTOR 的顏色值與顏色名稱對(duì)照如表1 所示,其中顏色值最大值可設(shè)置為241,但只有前15 種顏色有名稱;closest_color(r,g,b)函數(shù)通過設(shè)置紅(r)、綠(g)、藍(lán)(b)三個(gè)顏色參數(shù)進(jìn)行顏色設(shè)定,各參數(shù)的取值范圍均為[0,255]。
表1 RAPTOR 圖形顏色值與顏色名稱對(duì)照表
繪制“多彩冰糖葫蘆”基本圖形的RAPTOR 流程圖如圖7 所示。
圖7 “多彩冰糖葫蘆”基本圖形RAPTOR 流程圖
(3)通過循環(huán)結(jié)構(gòu)實(shí)現(xiàn)“多彩冰糖葫蘆”繪制
在介紹了基本的圖形繪制方法之后,可以繼續(xù)引導(dǎo)學(xué)生思考如何用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)這個(gè)有規(guī)律圖形的繪制。根據(jù)各圓具有相同半徑及其圓心位置關(guān)系的特點(diǎn),可以將圓心的y 坐標(biāo)和顏色值與循環(huán)變量及半徑建立聯(lián)系,最終可繪制如圖8所示的循環(huán)結(jié)構(gòu)“多彩冰糖葫蘆”RAPTOR 流程圖。
圖8 循環(huán)結(jié)構(gòu)“多彩冰糖葫蘆”RAPTOR 流程圖
在學(xué)生已經(jīng)掌握RAPTOR 基本構(gòu)件的使用方法后,可以通過智慧課堂的互動(dòng)教學(xué)手段讓學(xué)生進(jìn)行創(chuàng)意設(shè)計(jì)并實(shí)時(shí)展示,也可以布置相應(yīng)的開放式作業(yè)或?qū)嶒?yàn)內(nèi)容讓學(xué)生進(jìn)行思維拓展和創(chuàng)作性實(shí)踐,充分調(diào)動(dòng)學(xué)生的創(chuàng)作積極性,然后進(jìn)行歸納、總結(jié)和展示,進(jìn)一步提升教學(xué)效果。隨堂創(chuàng)意設(shè)計(jì)展示如圖9 所示。
圖9 隨堂創(chuàng)意設(shè)計(jì)展示
通過本文RAPTOR 教學(xué)案例的實(shí)施,學(xué)生對(duì)程序的運(yùn)行機(jī)制以及程序設(shè)計(jì)的三大基本結(jié)構(gòu)理解得更加透徹,對(duì)流程圖的構(gòu)建更加得心應(yīng)手,也為后續(xù)C 語言的常規(guī)教學(xué)打下了良好的基礎(chǔ),達(dá)到了事半功倍的教學(xué)效果。
注釋:
①聶蘭順,戰(zhàn)德臣,宋巧紅.計(jì)算思維的教學(xué)內(nèi)容與方法研究——以“算法”和“系統(tǒng)”兩種問題求解的計(jì)算思維為例[J].北京:工業(yè)和信息化教育,2013,(6):21-27.