1.1一個C語言程序
C程序由函數(shù)(Function,一種子程序)組成,函數(shù)分為系統(tǒng)函數(shù)和自定義函數(shù),其中main()函數(shù)是程序的主函數(shù)。
所有的C程序都有且只有一個main()函數(shù)。C程序從main()函數(shù)處開始運行,當main()函數(shù)結束時,程序也就結束了。
1.2程序與程序設計語言
計算機程序Program是人們?yōu)榻鉀Q某種問題用計算機識別的代碼編排的一系列加工步驟,程序的執(zhí)行過程實際上是對程序所表達的數(shù)據(jù)進行處理的過程。
一方面,程序設計語言提供了一種表達數(shù)據(jù)與處理數(shù)據(jù)的功能,另一方面,編程人員必須按照語言所要求的規(guī)范(即語法要求)進行編程。
1.2.1程序與指令
計算機最基本的處理數(shù)據(jù)的單元應該就是計算機指令了,單獨的一條指令本身只能完成計算機的一個最基本的功能,如實現(xiàn)一次加法運算或實現(xiàn)一次大小的判別,計算機所能實現(xiàn)的指令的集合成為計算機的指令系統(tǒng)。一系列計算機指令的有序集合就構成了程序。
程序在計算機中是以0、1組成的指令碼來表示的,即程序是由0、1組成的序列,這個序列能夠被計算機識別。程序與數(shù)據(jù)一樣,共同存儲在存儲器中,當程序要運行時,當前準備運行的指令從內存被調入CPU中,由CPU處理這條指令。這種將程序與數(shù)據(jù)共同存儲的思想就是目前絕大多數(shù)計算機采用的馮-諾伊曼模型的存儲程序概念。
如果程序設計直接使用0、1序列的計算機指令來寫,那將是一件令人難以忍受的事,所以,人們設計了程序設計語言,用這種語言來描述程序,同時應用一種軟件(如編譯系統(tǒng))將用程序設計語言描述的程序轉換成計算機能直接執(zhí)行的指令序列。
總的來說,計算機程序是人們?yōu)榻鉀Q某種問題用計算機可以識別的代碼編排的一系列數(shù)據(jù)處理步驟,計算機能嚴格按照這些步驟去做。
1.2.2程序設計語言的功能
1.數(shù)據(jù)表達
數(shù)據(jù)類型(Data Type)是對某些具有共同特點的數(shù)據(jù)集合的總稱。在程序設計語言中一般都實現(xiàn)定義幾種基本的數(shù)據(jù)類型,供程序員直接使用,如整型、浮點型、字符型等,這些基本數(shù)據(jù)類型在程序中的具體對象主要是兩種形式:常量Constant和變量Variable。同時,為了使程序員能更加充分的表達各種復雜的數(shù)據(jù),程序設計語言還提供了構造新的具體數(shù)據(jù)類型的手段,如數(shù)組Array、結構Structure、文件File、指針Pointer等。例如在C語言中通過int a[10]來定義一個由10個整數(shù)組成的數(shù)組變量,這樣a代表的就不是一個整數(shù),而是10個整數(shù)組成的有序序列,其中的每一個整數(shù)都稱為a的分量。
2.流程控制
程序的控制過程:一種表達數(shù)據(jù)處理過程的手段,程序的控制過程是通過程序中的一系列語句來實現(xiàn)。
結構化程序設計Structure Program:將復雜的程序獨立劃分為若干個相互獨立的模塊Modular,使每個模塊的工作變得單純而明確,在設計一個模塊時不受其他模塊的牽連。同時,通過現(xiàn)有的模塊積木式的拓展就可以形成復雜的、更大的程序模塊或程序。C語言就是支持這種設計方法的典型語言。
在結構化程序設計中,一個模塊可以是一條語句Statement、一段程序、一個函數(shù)或者子程序等。一般來說,從程序流程的角度來說,模塊只有一個入口和一個出口,這種單入單出的機構為程序的調試Debug提供了良好的條件。
三種基本的控制結構:順序控制結構Sequential Control Structure、分支控制結構Branch Control Structure、循環(huán)控制結構Loop Control Structure。這三種控制方式稱為語句級控制,實現(xiàn)程序在語句間的跳轉。
1.2.3程序設計語言的語法
源程序:用程序設計語言編寫的未經編譯的程序。
標識符:由字母、數(shù)字和下劃線組成,其中第一個字符必須是字母或者下劃線。在C語言中, ? ? ? ? ? ? ? ?標識符中的字母區(qū)分大小寫。
保留字:又稱關鍵字,是C語言規(guī)定的、賦予特定含義和有專門用途的標識符。
語句:程序中最基本的執(zhí)行單位,程序的功能就是通過執(zhí)行一系列的語句來實現(xiàn)的。
1.2.4程序的編譯與編譯環(huán)境
程序的編譯
計算機硬件能理解的只有計算機的指令,而用程序設計語言編寫的程序不能被計算機直接接受,這就需要一個軟件將相應的程序轉換成計算機能直接理解的指令序列,對C語言等許多的高級程序設計語言來說,這種軟件就是編譯器Compiler。編譯器可以發(fā)現(xiàn)程序中的語法錯誤,但是不能發(fā)現(xiàn)程序中的邏輯錯誤,最后生成可執(zhí)行的代碼。
編程環(huán)境
編寫一個程序需要做很多工作,包括程序編輯Edit、編譯Compiler、調試Debug等過程,所以,許多的程序設計語言都有相應的編程環(huán)境。程序員可以直接在該環(huán)境下完成上述一系列工作,以提高編程的效率。
總的來說,掌握一門程序設計語言,最基本的是要根據(jù)程序設計語言的語法要求,掌握數(shù)據(jù)表達、實現(xiàn)程序的控制方法和手段,并會使用編程環(huán)境進行程序設計。
1.3 C語言的特點
C語言是一種結構化語言
C語言語句簡潔緊湊、使用方便靈活
C語言程序易于移植
C語言有強大的處理能力
C語言生成的目標代碼質量高、運行效率高
不足:數(shù)據(jù)類型檢查不嚴格,表達式出現(xiàn)二義性,不能自動檢查數(shù)據(jù)越界等。