摘要:本文分析了程序的功能成分和高級語言的功能成分以及算法的意念作用,指出了高級語言的各功能成分與程序設計之間的關系,提出了“高級語言程序設計”的功能意念教學法
關鍵詞:程序設計;高級語言;算法設計;功能意念
中圖分類號:G642 文獻標識碼:B
1引言
“高級語言程序設計”是各類學校計算機相關專業的一門重要的專業基礎課,許多學校都將其安排在新生入學后的第一學期開設。
對剛接觸這門課程的學生而言,“高級語言程序設計”課程的中心內容包括兩個部分:高級語言和程序設計。從高級語言和程序設計的關系來說,程序設計應該是這門課程的核心內容。
對于如何搞好“高級語言程序設計“的教學,不同的人有不同的看法。筆者在多年的教學實踐中,多次嘗試采用“功能意念教學法”,取得了教好的效果。本文就是這一教學法的簡單總結。
2功能意念教學法
“高級語言程序設計”的功能意念教學法就是從程序的一般功能、程序的一般結構以及程序設計的一般過程出發,按照功能+意念+機制的方式組織教學。簡單地說,就是為了設計一個程序,先解決我們需要做些什么,然后解決程序需要做些什么,最后解決高級語言怎么做到等一序列問題,也就是從問題和任務出發進行教學。
以上所述主要圍繞程序最基本的功能展開,至于其它功能部分,比如C語言的編譯預處理、宏、模塊化、混合語言編程、指針、文件、鏈表等,也可以從功能意念的角度展開教學。
在具體實施教學的過程中,可以根據教學要求按照自頂向下的原則制定出所教授的高級語言的基本功能意念表,以方便教學。
3算法的意念作用
筆者認為,程序設計其實就是為了解決某個問題而從我們所熟悉的程序設計語言中挑選合適的語句做一個適當的排列組合。
在上面的這段話中,明顯地有兩個值得我們進一步探討的關鍵詞:合適的語句和適當的排列組合。現在我們的問題是,如何挑選合適的語句?又怎樣做適當的排列組合?
這兩個問題的解決有賴于所謂算法的概念。因此,為了解決這兩個問題,我們必須針對面臨的具體問題設計出有效的算法。
算法是解決特定問題的一序列操作的集合,代表的就是一種意念,換言之,就是設計者所希望的對數據進行加工處理的有序的步驟。這種操作步驟的有序性就決定了如何對所挑選的語句做適當的排列組合。
由粗到細是我們解決問題的一種典型的思維過程。按照這一思維特點,算法設計也有一個由粗到細的過程,即算法細化。
算法細化要適可而止,即有一個度的問題,那么我們又該如何把握這個度呢?一般而言,算法細化只要細化到其中的每一操作步在準備采用的語言中都能找到對應的語句直接加以實現即可,而且也必須細化到這種程度!算法細化好了,如何挑選合適的語句也就解決了。
總之,算法決定了如何挑選合適的語句以及怎樣對所挑選的語句做適當的排列組合!因此有了算法,我們只需要通過很簡單的翻譯轉換就可以很容易地得到程序。
4高級語言的相關功能成分
高級語言是書寫和記錄程序的工具。為了適應程序的功能需要,高級語言自然應該提供相應的手段或機制讓程序設計人員借以實現所需要的程序功能,高級語言的相關功能成分指的就是這些手段和機制。
4.1數據安排機制
高級程序設計語言中的數據安排機制主要體現為用于定義常量、變量、數組和記錄(或結構體)等的功能成分。單純從語言成分的角度來看,這些功能的實現主要是由一組和數據類型有關的關鍵字來體現的。換言之,高級語言為我們提供了一組與數據類型有關的關鍵字以便程序設計人員根據自己的意愿對數據空間進行組織和安排。以C語言為例,這些關鍵字主要有:char、int、float、double、struct以及signed、unsigned、short、long,等等。在源程序中來看,數據空間的組織和安排都是通過基于上述關鍵字的數據定義語句來實現的,比如:
1)int abc;
2)char abc[12] ;
3)*float abc;
4)struct abc{x char;y int;z float;}
struct abc xyz;
作為程序設計的工具,為了盡可能給程序設計人員帶來方便,高級語言除了支持基本數據類型外,還支持用戶自定義類型,如上面的例4)。
4.2數據I/O機制
高級語言中的數據I/O機制主要體現為各種用于數據輸入/輸出的語句或函數(庫函數)等。在C語言中,這些函數常用的有:
fprintf、printf、sprintf、vprintf、vfprintf、vsprintf、
fscanf、scanf、sscanf、fgetc、fputc、getc、putc、getchar、putchar、fgets、fputs、pus、gets等。
以上列出的是所謂系統預定義函數,即標準函數或庫函數。此外,用戶還可以根據自己的需要以上述標準函數為基礎自行定義一些可以得到某些特殊I/O效果的函數。
4.3數據處理機制
前面已經提到,數據的內部加工處理主要包括數據在主機內部的傳送和各種運算,高級語言的數據處理機制就
是指為此目的而提供的各種運算符。在C語言中,這些運算符包括為數據傳送提供的賦值運算符“=”和為數據運算提供的算術運算符“+、-、*、/、%、++、--”、關系運算符“>、>=、<、<=、==、|=”、邏輯運算符“、||、!”和位運算符“、|、~、<<、>>”等等。
4.4流程控制機制
高級語言中的流程控制機制主要體現為用來實現分支程序結構、循環程序結構以及子程序結構的功能成分,換言之,就是分支語句、循環語句以及子程序的定義和調用機制等。在C語言中,這些語句包括:if語句、switch語句、goto語句、break語句、continue語句、for語句、while語句、do…while語句以及return語句等。
5結束語
歷史上高級程序設計語言有好多種,目前仍然流行的也有好幾種,而且還在不斷的推陳出新。從“功能意念”的角度,不難看出,所有的高級語言都應該有相類似的功能成分,以解決程序設計所面臨的共同問題。因此,只要我們認真地學好一種語言,重點掌握好程序設計的一般思想方法,就可以很容易地掌握另外一種。從一種語言過渡到另一種語言,從語言的角度來說,只不過是一種形式上的轉換而已,它們的內容(程序的功能)和程序設計的思想和方法卻總是相通的。
參考文獻:
[1] 譚浩強. C程序設計(第三版)[M]. 北京:清華大學出版社,2005.
[2] Brian W.Kernighan, Dennis M. Ritchie. C程序設計語言(第二版)[M]. 北京:清華大學出版社,2002.
[3] Bruce Eckel著. 劉宗田等譯. C++編程思想第1卷:標準C++導引[M]. 北京:機械工業出版社,2002.
[4] 鄭啟華. PASCAL程序設計(第二版)[M]. 北京:清華大學出版社,1996.
[5] 沈軍. 程序設計方法解析——Java描述[M]. 北京:清華大學出版社,2004.
[6] 覃征,虞凡等著. 程序設計方法與優化(第二版)[M]. 西安交通大學出版社,2007.