梁宇恩 鄒會來 戴堅鋒
摘要:針對學生學習編程過程中存在的問題,在結構化編程思想的基礎上,將流程圖應用于程序設計語言教學之中。實踐證明這種方式有助于學生理解程序設計語言中的基本控制流程,掌握自頂向下的設計方法,提高分析問題解決問題的能力。
關鍵詞:流程圖;結構化編程;程序設計語言
中圖分類號:G623.58 文獻標志碼:A 文章編號:1674-9324(2018)44-0186-02
一、引言
程序設計語言,例如C、C#、Java等,是高職計算機類專業(yè)學生必修的基礎課。學習程序設計語言的目的是能夠將其作為一種工具,解決后續(xù)學習和工作中遇到的問題。然而實際情況是不少學生經(jīng)過一到兩個學期的學習,遇到實際問題依然束手無策。分析其中的原因,最主要就是沒有解決問題的思路。通常的程序設計語言教學中,以掌握語法為主,教會學生“用”語言。但如何將語言“用”起來,也就是將程序控制結構、數(shù)據(jù)變量、語法指令有機的組合在一起去實現(xiàn)一個特定的功能,這往往是學生遇到的最大困難[1]。匯編語言和C語言曾廣泛使用流程圖描述算法思路,面對高職類學生的實際情況,本文認為流程圖可以作為程序設計語言教學的輔助工具,提高學生的分析設計能力,更好地幫助學生掌握程序設計語言[2]。
二、流程圖的功能和特點
流程圖由若干簡單的圖形符號和說明組成,用以描述程序執(zhí)行算法,它和結構化編程思想有關系。結構化編程思想由荷蘭計算機科學家Dijkstra提出,基本思想是將要設計的程序當做一個模塊,然后通過簡單的規(guī)則將模塊細分成子模塊,直到每個子模塊都可以被編碼實現(xiàn)。流程圖實際上將模塊分解結果進行了圖形化表達。流程圖構成非常簡單,主要有四種基本元素:圓形表示開始或結束;矩形方框表示處理或過程;菱形表示選擇;帶箭頭的線段代表工作流方向。利用四種基本元素可以繪制出順序、選擇和循環(huán)結構,這樣就能夠描述任意復雜度的程序邏輯。繪制流程圖時,遵循單入口單出口原則,避免程序邏輯發(fā)生歧義。流程圖還可衍生出數(shù)據(jù)流程圖、程序流程圖、系統(tǒng)流程圖、程序網(wǎng)絡圖等,本文主要討論程序流程圖。流程圖的優(yōu)點是結構簡單、形象直觀、容易理解,便于轉化為編碼,有眾多軟件工具支持流程圖的繪制。流程圖的缺點主要是占用篇幅大,修改不方便,如果不遵從一定規(guī)則,會帶來閱讀困難的問題。盡管存在缺點,但在教學過程中進行了正確取舍,就可以發(fā)揮出流程圖的優(yōu)勢[3]。
三、流程圖在教學中的應用
1.流程圖設計。流程圖繪制應當結合結構化編程思想,由下列4個步驟組成:(1)任何一個程序都可以用一個矩形框表示,前后加上開始和結束弧形框。(2)流程圖中任意一個矩形框均可以用兩個或多個矩形框代替。(3)流程圖中任意一個矩形框均可以用選擇結構語句和循環(huán)結構語句的流程圖來代替。(4)步驟(2)、步驟(3)反復應用,直到程序設計結束[4]。上述設計流程圖的過程實際上使用了結構化編程中自頂向下設計方法。考慮到流程圖中需要使用三種基本程序控制結構,課程內容編排時可先簡略介紹,讓學生有一整體認識,在此基礎上進行教學。關于引入流程圖的時機放在講解程序控制結構時較為適宜。
2.流程圖的教學設計。為了使學生易于理解和使用流程圖,本文將教學過程劃分為三階段:入門階段、基礎階端和提高階段。(1)入門階段,入門部分配合程序設計語言順序結構講解。順序結構類似于將解決一個問題的過程分解成若干個階段,每個階段完成問題的一部分工作。任務各階段有先后次序之分,通常后一個階段依賴于前一階段的工作結果。在教學內容上可安排學生繪制新生報到流程圖,學生對這類過程性任務比較熟悉,容易將自我轉變?yōu)槿蝿战巧=虒W方法上選用任務驅動方式,讓學生分成2—3人的學習小組,以小組形式完成流程圖繪制任務。小組加任務驅動方式有助于學生之間的互相學習,鍛煉溝通協(xié)作能力。入門階段教師的引導與講解十分重要,因為學生常常將過程性任務中與解決問題無關的部分引入流程圖,所以需要教師指出哪些過程細節(jié)與任務目標有關,哪些需要舍棄,并提供一些判斷經(jīng)驗供學生參考。通過教師與任務小組的互動,使學生初步掌握過程性任務的流程圖繪制方法,學會從任務細節(jié)中識別出與任務目標有關的部分。繪制順序結構流程圖形式上雖然簡單,但是對學生分析問題、識別問題關鍵部分的能力有著不低的要求,需要配合課后作業(yè)反復練習才能有效果。(2)基礎階段,流程圖基礎部分結合選擇和循環(huán)結構進行講解。解決一個問題先需要判斷某些條件,根據(jù)判斷結果采用不同策略解決,這時使用選擇結構。循環(huán)結構用于滿足某些條件的情況下重復執(zhí)行一些步驟的場景。基礎階段宜采用一些簡單卻有代表性的案例進行流程圖繪制,例如繪制學生秋游報名統(tǒng)計表流程圖。完成這個任務需要多次分解,過程如圖1所示。初次設計時將要解決的問題作為一個處理進行繪制,如圖1中的“打印秋游報名統(tǒng)計表”部分。第2次設計時,可運用順序結構將要解決的問題分解為幾個步驟,如打印表頭、打印學生信息和費用、打印費用總額、打印表尾四個步驟。然后請學生觀察第2次設計結果,識別出未能分解到能夠編碼的部分。在教師的啟發(fā)下,打印學生信息和費用部分被確定需要進一步分解。第3次設計時考慮到打印多名學生的信息和費用,教師引導學生采用循環(huán)結構作為主體繪制流程圖,并用選擇結構來控制循環(huán)次數(shù)?;A階段的關鍵是教會學生正確識別問題的本質,使用正確的流程圖元素進行表達。另外一點在于掌握結構化編程思想,學會自頂向下設計方法,將問題分解至可以編程解決的程度。(3)提高階段,在前兩階段學習的基礎上,設計案例鞏固提高流程圖繪制技能。這個部分應該引入有一定復雜度的問題,例如經(jīng)典的排序類問題作為求解目標。繪制學生熟悉的獎學金評定流程圖就是一種綜合度較高、適合提高階段的案例。成績排序是流程圖繪制的核心部分,教師可分別要求用冒泡、選擇或插入排序方式完成問題求解。提高階段重點是三種程序控制結構的綜合運用,教師著重引導與啟發(fā)。
3.效果評價。筆者在學校信息技術系的《Java程序設計基礎》課程中,將流程圖作為輔助工具融入教學過程之中,進行了一些初步的探索。根據(jù)期末考試成績和學生反饋分析,這種方式收到了較好效果,主要體現(xiàn)在三方面:首先初步掌握了結構化編程思想,其次加深了對程序語言的理解,最后學會了用語言解決實際問題。同時,一部分學生還不能適應自頂向下解決問題的過程,視流程圖為多余,這個問題需要在以后的教學改革中進一步研究解決之道。
四、結論
流程圖作為程序執(zhí)行算法的圖形化表達工具,有著結構簡單、理解容易、代碼轉化便利等特點。本文依據(jù)結構化編程思想,將流程圖用于程序設計語言的教學中,收到了較好效果。學生在學習程序設計語言的過程中,學會運用結構化思想規(guī)劃解決問題的步驟,加深對語言本身的理解,利用程序語言解決實際問題。
參考文獻:
[1]郭偉業(yè),龐英智.模擬公司項目教學模式在“Java程序設計”課程中的應用[J].中國職業(yè)技術教育,2015,(20):76-79.
[2]梁宇恩.任務驅動教學法在C#程序設計課程教學中的應用[J].教育教學論壇,2013,(1):61-62.
[3]甘玲,張璞,李興春.解析Java程序設計[M].北京:清華大學出版社,2006:20-63.
[4]雍俊海.Java程序設計教程[M].北京:清華大學出版社,2014:35-80.
Abstract:In view of the problems existing in the process of students' learning and programming,the flow chart is applied to the teaching of programming language on the basis of the idea of structured programming. Practice has proved that this way helps students to understand the basic control process of programming language,master the top-down design method,improve the ability to analyze and solve problems.
Key words:flow chart;structured programming;programming language