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