摘要:由于C語言的知識點很零碎,初學者存在著較大的困難,筆者從教學的實踐出發,給出學習C語言的方法,幫助初學者解決學習中的一些問題,尋找到適合自己的學習途徑。
關鍵詞:C語言;程序;學習
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)25-1497-03
Discussion about C Language Learning
YING Shi-yong
(Yancheng Textile Vocational and Technical College, Yancheng 224005, China)
Abstract: In regard to fragmentary knowledge of C language, the beginner have difficulty in learning it. The author puts forward some methods of studying C language from the teaching practice. It helps the beginner to solve some problems in the process of studying and seek for study methods that suit themselves.
Key words: C language; procedures; learning
1 問題的提出
隨著計算機技術的普及,學習語言程序設計的人也越來越多,尤其是學習C語言的人更是多。但是不少人對計算機語言的學習比較頭疼,感到力不從心。平心而論,對于初學者而言,這屬于正常現象。請看下面用C語言編寫的一道程序:
#include \"stdio.h\"
#definePI 3.1415
main()
{ float r,area;
printf(\"%please input the value of r:\");
scanf(\"%f\",r);
if(r>0) s=PI*r*r;
else { if(area==0) return(0);
ease return(-1); }
printf(\"area=%f\",area);}
這個程序的功能是通過鍵盤輸入一個實型數,經過程序的運行后,在屏幕上顯示以這個數作為半徑的圓的面積。這雖然是一個比較簡單的程序,卻包含了C語言的很多重要的知識點。因此,對知識點的學習就顯得很重要了。
2 C語言的特點
每一種語言都有自己的特點,C也不例外。它的特點如下:
2.1 語言簡單,使用方便
它采用類似自然語言的語法來書寫程序代碼。所謂自然語言就是接近于人思維習慣的語言。用C語言編寫程序的過程往往就是反映了編程者思考問題的過程。
2.2 運算符豐富
C語言總共有34種運算符號。從而使得C的運算類型很豐富,表達式類型多樣化,靈活使用各種運算可以實現其他高級語言中很難實現的運算。
2.3 數據結構豐富
C本身數據類型多,如整型、單精度型、雙精度型、字符型、數組型、指針型、結構體型、共同體型等,并且能實現各種復雜的鏈表、樹、棧的運算。
2.4 具有結構化的控制語句
常用的有if……else語句、while語句、do……while語句、switch語句、for語句等。用函數作為程序模塊以實現程序的模塊化。
2.5 移植性好
“基本上不作修改就能用語各種型號的計算機和各種操作系統。”[1]
3 C語言入門要點
3.1 注意C語言的書寫
比起經典的教學語言PASCAL來講,C語言的書寫是相對比較隨便,而且具有很靈活性。但是,從易讀性的角度出發還是要遵循一些規則。往往有條有理的程序在視覺上有一種美的享受。如果書寫的程序沒有一定的規律可尋,語句沒有層次感,讀者就會沒有耐心去讀了。書寫結構就如同框架、基本輪廓。養成良好的書寫習慣,對于培養嚴謹的思維很有幫助。在書寫時要尤其要注意以下幾點:
(1)一行中最好是以一個語句為佳。雖然一行中可以書寫很多的語句,但在讀的時候很煩瑣,而且在調試程序時也不容易發現錯誤;
(2){}的配對。在書寫時尤其要注意配對,對于要配對的{}盡量書寫在同一列中。
3.2 掌握C語言的結構
C語言的程序從程序結構上看主要有順序結構、選擇結構、循環結構。程序的結構也就是程序的骨架和輪廓,對程序的執行過程有著很大的影響。
3.2.1 順序結構
顧名思義,就是程序順序地從第一個操作開始,一直執行到最后一個操作[2]。流程圖如圖a。
3.2.2 條件選擇結構
例如:“如果明天下雨,我就不去看電影;如果不下雨,我就在家看電視。”我“去不去看電影”是由“天下不下雨”這個條件決定的,同時,“天下不下雨”這個條件決定了我有兩中選擇:“看電影”還是“在家看電視”。這就是條件選擇的一個模型。
對于程序設計語言來講,選擇結構是一種很重要的結構。就文章開頭的這個例程序,里面就是用了條件選擇結構。首先判斷r是否大于0,因為半徑是負數就沒有意義,所以它不可能是個負數。當半徑為0是就表示是一個點圓,面積自然就是0了。
下面來看看程序中這種結構的程序執行過程:
首先判定條件是否成立,如果成立就說這個條件是真,程序就執行條件問真的子句,如果條件不成立就是說這個條件是假,程序就跳轉執行它下面的條件為假的子句。
用流程圖來表示,如圖b。
對于這個流程圖用語言可以這樣描述:
if (P成立) A
else B
如果語句A或者是語句B中也是一個條件選擇結構結果又會怎么樣?用語言就可以這樣描述了:
if(條件P1){ if(條件P2)語句A;
else語句B;}
else{ if(條件P3)語句C;
else語句D;}
這就是條件結構的嵌套。注意嵌套在C中是很重要的一種結構,不僅是可以在條件選擇之間有嵌套,還可以和下面的要提到的重復(循環)之間構成嵌套。
3.2.3 循環結構
所謂循環結構就是:有一條或者是幾條語句在重復執行,直到它不滿足某種條件為止。典型循環結構有:當型循環和直到型循環。它們的代表語句分別是:while語句和do…while語句。當型結構的流程圖如圖c。
語句的執行過程就是:首先判定條件是否為真,當條件是真時,就重復執行語句,直到條件為假為止。特殊情況,條件永遠為真時,就會變成死循環。
3.3 注重C語言的零碎知識點
零碎的知識點就是血肉,C語言本身的特點就是知識點很零碎,不太容易做到面面俱到,但是我們應力求不要放過每一個知識點。要在細節上多花工夫。
例如:
(1)printf函數和scanf函數。這兩個函數的格式比較復雜,不同的格式要求就會有不同的輸出形式。它們都是C的庫函數。在需要使用標準I/O庫中的函數時,就要包含#include \"stdio.h\"這個宏定義。
(2)編譯預處理。C的編譯系統對程序進行通常的編譯之前,先對程序中的特殊命令進行預處理。特殊命令有:宏定義、文件包含、條件編譯。編譯預處理也是C語言中常用的寫程序的方法。
(3)數據構造方式可以分為基本類型的數據和派生類型的數據。
(4)算術表達式、關系表達式和邏輯表達式。例如:x+y、x>y和xy 分別是是算術表達式、關系表達式和邏輯表達式。算術表達式的結果是根據x,y的取值不同而不同,而關系表達式和邏輯表達式的結果只有兩個:1、0。另外,還要注意表達式的優先級。
3.4 要注重上機操作練習
C也是一個操作性很強的語言。編寫好的程序必須要通過調試。在調試程序的過程中可以學習到很多東西。因為機器是很“無私的”,會無情地指出操作中的錯誤。只要有錯就不能通過編譯,程序就無法運行下去。上機操作的主要目的就是要通過調試程序來驗證你編寫的程序。程序調試是一項很細致的工作,是需要下工夫、積累經驗的過程。上機調試程序不僅僅是 “驗證程序的正確性”,而更重要的是“掌握調試方法和技巧”。因此上機過程中要注意經驗的積累。
4 C語言提高關鍵
學好、用好C語言光靠入門知識還好似不夠的,必須學習好它的提高部分,也是C的精華部分:數組、函數和指針。
4.1 數組
數組是一組類型相同的數據的有序集合。它是一種簡單實用的數據結構。數組是用一個具有特定意義的名字代表順序排列的一組數,順序號就是下標變量的值。[3]在學習數組時,應該重點掌握:一維數組、二維數組和字符數組的定義、初始化和引用。尤其是基本的概念。如:int a[10]和a[8]的區別,二維數組的存放形式等。
4.2 函數
函數是實現語言模塊化結構的重要體現。在設計程序的過程中,經常會在不同的程序段中出現有相同或相似功能的小塊程序。如果在每個不同的程序段中都反復出現這樣的小塊程序,那么對整個大程序來講它的可讀性會降低,同時也會給設計者和讀者帶來不必要的麻煩。這就好比建造一座大樓,我們主要要做的工作是結構的設計,對于門窗、水泥和鋼材等施工材料,直接可以從廠家購買使用即可,而沒有必要再專門的成立門窗生產廠、水泥生產廠和鋼材生產廠來生產這些施工材料。因此,我們就可以將反復出現的小塊程序組成在一起形成一個模塊,然后其他的函數就可以通過語句直接調用這些模塊即可,這是函數的主要思想。
想要學好函數還得在這些方面下工夫:函數的定義、函數的參數、函數的值、局部變量和全局變量的一些基本概念;同時對于函數的調用(嵌套調用、遞歸調用等)過程要特別注意,一定要理清調用的關系及參數的正確傳遞。
要學好函數。善于利用函數減少重復編寫程序代碼的工作量。
4.3 指針
指針部分是C語言精華中的精華,主要是因為指針的應用可以使程序更加簡潔、緊湊和高效。指針使用的好處是顯而易見的,但是要學好用好它卻不是很容易的,學好指針的關鍵是要深入理解基本的概念,如指針、變量的指針、指針變量等;另外還要注意與前面的知識相聯系,如指針和數
5 結束語
C語言的應用很廣,著名的UNIX操作系統就是用C語言來寫的。現在的C++也是在C語言的基礎上發展起來的。本文粗淺地談了C語言的學習,由于篇幅所限,只是提供了學習的方法和途徑。所以有興趣的初學者應在入門之后反復練習,悉心揣摩,由淺入深,循序漸進,就一定能熟練地掌握和運用好C語言。
參考文獻:
[1] 譚浩強. C程序設計[M]. 北京:清華大學出版社,1997.
[2] 張福炎, 孫志揮. 大學計算機信息技術教程[M]. 南京:南京大學出版社,2007.
[3] 胡橘, 劉忠. 淺析C語言的學習[J]. 中國西部科技, 2006,29:33-34.