邊 晶 馮 萍
(長春大學,吉林 長春 130022)
在已經逐步開啟的人工智能時代,計算思維已經成為現代人,尤其是當代大學生不可或缺的基本能力素養。“大學計算機基礎課程的核心價值就是培養學生的計算思維”①。計算思維是運用計算機科學的基礎概念去求解問題、設計系統和理解人類行為的一系列思維活動,計算思維培養目前已經成為各高校的一個重要培養方向。
程序設計類課程是目前各高校培養計算思維的主陣地。一直以來,各高校都希望通過該類課程培養學生程序設計的“思想”和“方法”,進而使學生具備解決實際應用問題的思維和能力,而《C 語言程序設計》通常是該類課程的主干課。但是,C 語言較為嚴格的語法規則使學生在編程時需要花大量時間去關注或糾正語法方面的問題,久而久之,學生的學習熱情就會被時常出現的語法錯誤消耗殆盡,這樣就很難實現計算思維的深度訓練,進而使學生逐漸失去了學習興趣,也會感覺越學越吃力。
RAPTOR 可以通過拖拽的方式將基本流程圖符號元素直接搭建在一起,再經過一些簡單設置即可使程序運行。在此過程中,學生可以將全部精力投入到程序流程的設計當中,不需要考慮繁瑣的語法規則,只關注算法本身即可輕松獲取最終的運行結果,大大提高了編程的效率。同時,RAPTOR 程序的執行過程也與C 語言程序的執行方式非常類似,程序的流程和變量的變化更加清晰直觀,可以幫助學生更好地理解C 語言程序的執行過程。
RAPTOR 是一種基于流程圖的可視化算法工具,通過拖拽的方式將輸入、輸出、賦值、調用操作以及選擇結構和循環結構的流程圖符號連接起來創建算法程序。生成的算法程序可以在其環境下直接調試和運行,并且可以直觀地顯示當前程序流程執行到的位置以及所有變量的變化過程。使用RAPTOR 設計的算法程序還可以直接轉換為C++、C#、Java 等高級程序語言,這就為程序和算法的初學者提供了一種輕語法重思維、化繁為簡的學習方式。
對于程序設計語言的初學者來講,先學習語法再編寫程序往往會有一定難度,學生在編程時總是因記不住一些語法的細節要求而頻頻出錯。但如果讓學生先通過RAPTOR 算法工具直接構造出流程圖,則可以直擊算法本身,真正達到強化、鍛煉計算思維的目的。同時,通過對RAPTOR 算法程序的設計和運行,學生還可以了解程序的運行機制,熟悉程序設計三大基本結構的作用和執行過程,進而對后期的學習語法起到事半功倍的效果。
可以設計一些由淺入深的遞進式教學案例引導學生進行操作練習。先示范RAPTOR 一些最基礎構件的使用讓學生掌握一些基本操作,并讓學生完成一個基礎案例的設計,然后對這個基礎案例不斷進行功能拓展。可以按照順序結構、選擇結構和循環結構的過程進行不斷改進,從而實現計算思維的遞進式訓練,同時也可以激發學生的創作熱情,舉一反三地設計出多種多樣的實用性算法程序。
下面以“身高預測”程序為例介紹此類遞進式案例的實施過程。
“身高預測”程序基本要求:編寫一個程序,根據父母身高預測孩子成人后身高。根據男女性別、是否鍛煉身體、是否有良好飲食習慣等信息按公式進行計算。假設父親身高為h1,母親身高為h2,孩子身高為h,則:若為男孩:h=(h1+h2)*0.54;若為女孩:h=(h1*0.923+h2)/2;若愛好體育鍛煉:可增加身高2%;若有良好的飲食習慣:可增加身高1.5%。
(1)案例示范——順序結構的應用
先提取該程序的最基本功能進行案例示范:假定孩子的性別為男或女,輸入父親和母親身高,根據相應公式求孩子長大后的身高。通過案例示范可以介紹RAPTOR 的輸入(Input)、賦值(Assignment)和輸出(Output)構件的使用方法,引導學生同步操作,同時還可以介紹出程序設計的IPO(Input-Process-Output)方法,讓學生搭建起程序設計的基本框架。以男孩為例的RAPTOR 流程圖如圖1 所示。

圖1 順序結構RAPTOR流程圖示例
(2)案例功能完善——選擇結構的應用
學生繪制出示范案例后,要求將孩子的性別判斷條件加入,從而引入選擇結構及其RAPTOR 構件的介紹。在此基礎上再引導學生將“是否鍛煉身體、是否有良好飲食習慣”等其他選擇結構信息加入,從而完善程序的設計要求,實現程序的所有功能。加入性別判斷后的RAPTOR 流程圖如圖2 所示。

圖2 選擇結構RAPTOR流程圖示例
(3)案例功能拓展——循環結構的應用
在程序基本功能實現后,可以引導學生進一步思考如何實現程序的循環使用,從而引出循環結構及其RAPTOR構件的介紹。在這里需要對比介紹“當型循環結構”和“直到型循環結構”這兩種不同類型循環結構的執行過程,還需強調RAPTOR 中采用的是“直到型循環結構”(Loop 構件),而C 語言中采用的是“當型循環結構”。同時,在講解過程中可以引導學生分析并思考構成循環結構的三要素——循環的初始狀態、循環的結束條件以及循環控制變量的改變,并從多角度激勵學生思考實現循環的不同方法,從而建立循環結構的整體設計思想。圖3 為循環進行身高預測,直到循環控制變量t 接收到0 值時結束的RAPTOR 流程圖。

圖3 循環結構RAPTOR 流程圖及其運行結果示例
借助RAPTOR 程序的實時流程指引和運行數據展示,可以很清楚地看到循環結構的執行過程以及程序中各變量的變化情況,使學生直觀感受循環結構的運行機制。當程序結果出現異常時,還可以借助“單步執行”功能,通過一次次單步運行控制程序的執行并同步查看變量的變化,從而快速找到錯誤的原因。程序執行過程中循環變量的數據顯示如圖4 所示。

圖4 程序執行過程中循環變量的數據顯示
通過RAPTOR 的過程(Call)組件還可以輕松實現一些圖形的繪制,從而幫助學生更好地理解各種圖形繪制函數的使用,為后續用C 語言進行圖形創作打下基礎。繪制圖形需要調用RAPTOR 的內置過程,只要在過程調用的編輯對話框中輸入相應的內置過程函數即可。下面以“多彩冰糖葫蘆”為例講解用RAPTOR 繪制圖形的基本方法。
要繪制一個如圖5 所示的“多彩冰糖葫蘆”圖案,即在一條直線上依次繪制5 個不同顏色的填充圓。根據圖形特點,每個填充圓的半徑相同,圓心距離相同,可以通過循環實現。

圖5 “多彩冰糖葫蘆”示例
為了使學生了解RAPTOR圖形繪制的基本思想和方法,可以先介紹直線和圓的基本繪制過程(如只繪制直線和最上面的兩個圓,如圖6 所示),然后再引導學生思考如何通過循環結構實現多個圓的繪制。下面介紹案例的實施過程。

圖6 “多彩冰糖葫蘆”基本圖形示例
(1)調用open_graph_window()過程初始化圖形窗口
在RAPTOR 中繪制圖形必須先調用open_graph_window(width,height)過程進行圖形窗口的初始化,該過程的兩個參數width 和height 分別代表開創圖形窗口寬度和高度的像素值,此時圖形窗口的坐標原點在左下角,向右向上分別表示x 軸和y 軸的正向。本例可通過添加過程組件初始化一個200*300 的圖形窗口,雙擊過程調用符號,在過程調用的編輯對話框中輸入“open_graph_window(200,300)”即可。
(2)調用內置過程繪制直線和圓
根據圖形繪制要求,應在圖形窗口的中央先繪制一條黑色的豎直線,再在直線的頂端繪制兩個圓。
繪制直線需要調用內置過程draw_line(x1,y1,x2,y2,color),該過程需要五個參數,分別代表直線的起點坐標(x1,y1)、終點坐標(x2,y2)和線條顏色color 的值。
繪制圓需要調用內置過程draw_circle(x,y,Radius,color,filled),該過程中的五個參數分別表示圓心坐標(x,y)、圓的半徑radius、圓的顏色color 和圓的填充模式(true-實心圓,false-空心圓)。
以上RAPTOR 內置過程中的color 參數都是顏色設置參數,可以直接用其英文顏色名稱或其顏色值表示,也可以用closest_color(r,g,b)函數生成,還可以用random_color 生成一種隨機顏色,其中:RAPTOR 的顏色值與顏色名稱對照如表1 所示,其中顏色值最大值可設置為241,但只有前15 種顏色有名稱;closest_color(r,g,b)函數通過設置紅(r)、綠(g)、藍(b)三個顏色參數進行顏色設定,各參數的取值范圍均為[0,255]。

表1 RAPTOR 圖形顏色值與顏色名稱對照表
繪制“多彩冰糖葫蘆”基本圖形的RAPTOR 流程圖如圖7 所示。

圖7 “多彩冰糖葫蘆”基本圖形RAPTOR 流程圖
(3)通過循環結構實現“多彩冰糖葫蘆”繪制
在介紹了基本的圖形繪制方法之后,可以繼續引導學生思考如何用循環結構實現這個有規律圖形的繪制。根據各圓具有相同半徑及其圓心位置關系的特點,可以將圓心的y 坐標和顏色值與循環變量及半徑建立聯系,最終可繪制如圖8所示的循環結構“多彩冰糖葫蘆”RAPTOR 流程圖。

圖8 循環結構“多彩冰糖葫蘆”RAPTOR 流程圖
在學生已經掌握RAPTOR 基本構件的使用方法后,可以通過智慧課堂的互動教學手段讓學生進行創意設計并實時展示,也可以布置相應的開放式作業或實驗內容讓學生進行思維拓展和創作性實踐,充分調動學生的創作積極性,然后進行歸納、總結和展示,進一步提升教學效果。隨堂創意設計展示如圖9 所示。

圖9 隨堂創意設計展示
通過本文RAPTOR 教學案例的實施,學生對程序的運行機制以及程序設計的三大基本結構理解得更加透徹,對流程圖的構建更加得心應手,也為后續C 語言的常規教學打下了良好的基礎,達到了事半功倍的教學效果。
注釋:
①聶蘭順,戰德臣,宋巧紅.計算思維的教學內容與方法研究——以“算法”和“系統”兩種問題求解的計算思維為例[J].北京:工業和信息化教育,2013,(6):21-27.