摘要: 本文對中等職業(yè)學校程序設計課程教學現(xiàn)狀進行了探討,并主要介紹了程序設計方面的方法與技巧,旨在提高教學效果和學生的編程能力。
關鍵詞: 程序設計 方法與技巧 編程能力
一、中等職業(yè)學校程序設計課程教學現(xiàn)狀
程序語言設計是職業(yè)中專計算機專業(yè)在校學生學習的主要課程之一。中等職業(yè)學校的生源大部分是只有初中文化基礎的學生,基礎相對薄弱。而計算機程序設計課程的特點是邏輯性強,對于只有初中文化基礎的職業(yè)學校的學生來說,學習程序設計就會感覺到很吃力。一部分學生因學不會就知難而退了;有一部分學生上課也能聽懂,書上的例題也能看明白,可是到自己動手做編程時,卻不知道如何下手。發(fā)生這種現(xiàn)象的原因,一是所謂的看懂聽明白的,只是很膚淺的語法知識,而我們編寫的程序或軟件是要根據(jù)要解決問題的實際需要控制程序的流程,如果沒有深刻地理解語句的執(zhí)行過程(或流程),怎么會編寫程序解決這些實際問題呢?二是用語言編程解決實際問題,所需要的不僅僅是語言的編程知識,還有相關的專業(yè)知識。例如,如果你不知道圓的面積公式,即使命令語句學得再好你也編不出求圓的面積的程序來。
對于這些現(xiàn)狀,這就要求我們教師應該在教學上下功夫,多教學生一些程序設計的方法和技巧。只要學生們掌握一些方法與技巧,不輕言放棄,是完全可以學好的。
二、程序設計的方法與技巧
(一)掌握程序設計的步驟。
設計程序一般分為這樣幾個步驟:
1.分析階段
也就是搞清楚未來的程序應該“做什么”。這個階段的工作是程序設計的基礎,務必求精細求準,不放過任何一個不明白的工作環(huán)節(jié)。不要以為在這個階段上花費時間是沒必要的,是浪費的。這個階段的工作粗糙,將會給未來的工作帶數(shù)不清的麻煩。俗話說“磨刀不誤砍柴功”的道理就在于此。
2.設計階段
設計階段主要考慮程序應該“怎樣做”才能滿足用戶的要求。設計時首先要進行算法設計,也就是解決問題過程的設計,然后將這些算法用圖形的方式描述出來。其中流程圖是最常用的一種形式。它的優(yōu)點是直觀、清晰、易懂,便于檢查、修改和交流。
3.編碼階段
根據(jù)設計好的算法,選擇適當?shù)恼Z言編寫程序,具體實現(xiàn)。在書寫上采用縮格書寫方式,加上適當?shù)淖⑨尅T诰帉戇^程中就應注意層次清楚,思路清晰,為今后任何人閱讀程序做好準備。
4.測試階段
測試又可分兩個階段:首先是把我們的大腦當作計算機進行“人工測試”,還要靜態(tài)檢查程序中有無諸如命令拼寫、格式上等錯誤。接下來要進行“動態(tài)測試”。原程序編寫出來后不能保證在機上運行時一定正確,往往還要經過測試和調試之后才能正常順利運行,“紙上談兵”是沒用的。
(二)掌握程序的三種最基本結構。
(1)順序結構
順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。
(2)分支結構
分支程序結構又稱選擇結構,是指在程序執(zhí)行過程中,根據(jù)一定的條件來確定程序走向的一種程序結構。分支程序結構一般分單向選擇、雙向選擇和多向選擇三種。
(3)循環(huán)結構
循環(huán)結構可以減少源程序重復書寫的工作量,用來描述重復執(zhí)行某段算法的問題,這是程序設計中最能發(fā)揮計算機特長的程序結構。循環(huán)結構程序也是學生學習的重點和難點。
順序結構、分支結構和循環(huán)結構并不彼此孤立的,在循環(huán)中可以有分支、順序結構,分支中也可以有循環(huán)、順序結構。在實際編程過程中常將這三種結構相互結合,設計出相應的程序。
(三)多閱讀他人程序。
俗話說“見多識廣”。程序猶如文章,具有較強的可讀性,讀一段好程序更猶似看一篇好文章,可以得到諸多啟示和教育。語言教學要善于運用閱讀法,引導學生多看多讀多思,在讀中理解他人獨特的解題思路,在讀中體會他人的設計思想,以獲得更多解決問題的途徑。有數(shù)據(jù)說明,一個人所掌握的編程技巧中70%是通過閱讀書本或他人程序的途徑獲取的,閱讀法已被眾多事實證明是一種非常有效的學習程序設計的方式。
閱讀程序要抓住程序的主線和靈魂,堅持從大處入手,堅持從關鍵處突破。閱讀時不應拘泥于程序的局部和個別細節(jié)。多運用所學知識、經驗去理解算法,這對幫助提高閱讀效果是非常有益的。
例如,案例程序如下:
clear
set talk off
i=1
do while i<=4
j=1
do while j<=5
@ 10+i,10+jsay ‘*’
j=j+1
enddo
i=i+1
enddo
set talk on
return
閱讀該程序時,從大處我們發(fā)現(xiàn)i 是外循環(huán)控制變量,循環(huán)變化4次。j是內循環(huán)控制變量,外循環(huán)1次,其值變化5次。從細節(jié)我們發(fā)現(xiàn)@say語句輸出“*”。因此,我們便清楚了該程序的功能是打印由“*”組成的一個4行5列的圖形。外循環(huán)控制行數(shù),內循環(huán)控制每行的個數(shù)。
閱讀程序還要多考慮程序的優(yōu)化,即在充分閱讀理解程序設計思想基礎上,要讓學生多分析程序的優(yōu)缺點,力求找出更佳的思路、更有效的算法。同時我們可以組織學生開展互讀互學活動,在對比各自設計方法的過程中互相促進共同提高。
例如,案例:編程計算1—100的偶數(shù)和。

通過閱讀以上三個程序,學生會發(fā)現(xiàn)方法三顯然是最佳程序。該程序不但思路清楚、易懂,而且程序語句少,執(zhí)行時間短,效率高。
我們不僅要讓學生閱讀正確的程序,還要積極鼓勵學生去閱讀錯誤的程序。讓學生在發(fā)現(xiàn)錯誤、糾正錯誤的過程中增長才干。分析和排除錯誤是程序設計的重要環(huán)節(jié)。程序設計中我們應善于利用錯誤資源,教給學生如何面對錯誤、分析錯誤、排除錯誤的方法,提高學生對錯誤的識別能力,增強學生解決問題的能力和自信心。看懂別人是如何解決問題的,學習解決問題的方法和程序設計技巧,能夠提高自己的程序設計能力。
(四)多上機實踐程序。
程序設計是一門實踐性很強的課程,“紙上談兵”式的光學不練是學不好的。例如,就像游泳運動員只聽教練講解示范,而不親自下水練習,是永遠學不會游泳的。
第一步,驗證性練習。
在這一步要求按照教材上的程序實例進行原樣輸入,運行一下程序是否正確。輸入初步記憶并理解新學的知識點。
第二步,舉一反三,照葫蘆畫瓢。
在第一步輸入的程序的基礎上進行試驗性的修改,運行一下程序,看一看程序結果發(fā)生了什么變化,分析結果變化的原因,加深新學知識點的理解,實現(xiàn)“修改”加深對知識的理解。
案例:求100以內偶數(shù)的和的程序。
clear
s=0
for n=2 to 100 step 2
s=s+n
endfor
?s
return
將程序運行后,記錄程序結果,然后將for中的100改成50,運行一下程序,看有什么變化。找出程序結果變化的原因,就加深了對for語句的理解。
第三步,調試程序。
將教材中的正確的程序改成錯誤的程序,運行一下程序,看出現(xiàn)的錯誤信息提示,并記下錯誤信息,再將程序改成正確的,運行一下程序。這樣反復修改,就能夠使學生明白程序發(fā)生錯誤的原因并修改錯誤,加深對語句的理解并提高調試程序的能力。
案例:在數(shù)據(jù)表XSDJ.DBF中查找判斷某學生的數(shù)學成績是否及格,及格則顯示“及格”,不及格則顯示“不及格”。
usexsdj.dbf
accept\"請輸入學生學號:\"toxh
locate all for 學號=xh
if 數(shù)學>=60
?\"及格\"
else
?\"不及格\"
endif
use
return
學生可試將其中的endif語句刪除后,運行一下程序,看有什么結果,就會知道if 與endif必須成對出現(xiàn)。
注意:每次只改錯一個地方,目的是顯示發(fā)生該錯誤的真正原因,避免一次改動多個地方,搞清發(fā)生錯誤的真正原因。
(五)多歸納總結,抓規(guī)律。
提高編程能力一個重要的方法是研究許多典范的程序和大量的程序設計實踐中鍛煉出來的。因此,不僅教師在教學中要多歸納總結,學生在學習過程中也要及時歸納、做好小結,目的是抓規(guī)律。程序設計的教學,一般都是從局部分散地講,如果不歸納總結,學生則難以形成完整、清晰的框架。歸納可以是一個語句的歸納,也可以是對一種結構的歸納(如分支結構的歸納);總結可以是一課的總結,也可以是幾課的總結。歸納總結的形式也可以多種多樣,可以使用文字概括,也可以使用圖示總結,重難點要著重強調。這種歸納總結,一方面有利于學生理解知識、融會貫通,順利實現(xiàn)知識遷移;另一方面對于提高學生的學習效率也有很大的幫助。
例如在學習DO WHILE語句我們會歸結出這樣的規(guī)律,該語句用于計數(shù)器控制循環(huán)時,條件表達式是一個循環(huán)變量,它用來作為循環(huán)條件的一個判斷變量。首先應當設置循環(huán)變量的初值,如K=0、K=A;然后建立邏輯條件表達式,如K0;最后在循環(huán)體內要有修改循環(huán)變量的內容,如K=K+1、K=K-1,防止進入死循環(huán)。
再例如,在學完循環(huán)結構程序設計中的三個循環(huán)語句后,學生會從許多實例設計中發(fā)現(xiàn),有時同一個實例其中的二個或三個語句都可以實現(xiàn)。而有的實例只能由其中一個語句do while實現(xiàn)。通過這種實踐過程,我們可以歸納總結出:do while循環(huán)時,依賴于條件是否滿足。若滿足條件,執(zhí)行循環(huán)。do while循環(huán)使用時適用性最強;for循環(huán)一般在程序設計中,適用于需要重復固定次數(shù)的計數(shù)循環(huán);而scan掃描記錄循環(huán)只適用于對數(shù)據(jù)表中滿足條件的記錄執(zhí)行同一種操作。
(六)多信心。
大多數(shù)學生學不好是因為一開始遇到困難就放棄,很多學生是聽不懂、不想聽、放棄這樣一個過程。在初學程序設計時,可能會遇到有些問題理解不透,這就要求學生不要氣餒,不明白的地方多問多想,由淺入深、循序漸進,鼓足勇氣進行學習,始終要記住“曙光在前頭”。
當我們把握好上述幾方面后,只要學生們能克服畏難、厭學情緒,上課能專心聽講,多看、多想、多做,一定會提高程序設計能力。
參考文獻:
[1]沈大林.FOXBASE.電子工業(yè)出版社.1994年版.
[2]華燁.C語言程序設計入門學習六步曲.2006年12月.
[3]于同亞.職業(yè)學校程序設計課程教學方法初索.江蘇省經貿技師學院信息工程系.