第1章 程序設計和C語言

1.1什麼是計算機程序

程序,就是一組計算機能識別和執行的指令。每一條指令使計算機執行特定的操做。只要讓計算機執行這個程序,計算機就會「自動地」執行各條指令,有條不紊地進行工做。java

1.2什麼是計算機語言

計算機語言——計算機和人都能識別的語言算法

計算機語言的發展階段:編程

機器語言 計算機工做基於二進制,從根本上說,計算機智能識別和接受由0和1組成的指令。在計算機發展的初期,通常計算機的指令長度爲156,即以16個二進制數(0或1)組成一條指令,16個0和1能夠組成各類排列組合。ide

         這種計算機能直接識別和接受的二進制代碼稱爲機器指令(machine instruction)。機器指令的集合就是該計算機的機器語言(machine language)。模塊化

         顯然,機器語言與人們習慣用的語言差異太大,難學、難記、難檢查、難修改、難以推廣使用、難寫。所以初期只有極少數的計算機專業人員會編寫計算機程序。函數

        

         符號語言 爲了克服機器語言的上述缺點,人們創造出符號語言(symbolic language),它用一些英文字母和數字表示一個指令,例如用ADD表示「加」,SUB表明「減」,LD表明「傳送」等。spa

       顯然,計算機並不能直接識別和執行符號語言的指令,須要用一種稱爲彙編程序的軟件,把符號語言的指令轉換爲機器指令。通常,一條符號語言的指令對應轉換爲一條機器指令。轉換的過程稱爲:「代真」或「彙編」,所以,符號語言又稱爲符號彙編語言(symbolic assembler language)或彙編語言(assembler language)。翻譯

         雖然彙編語言比機器語言簡單好記一些,但仍然難以普及,只在專業人員中使用。設計

         不一樣型號的計算機的機器語言和彙編語言是互不相通的。如,用甲機器的機器語言編寫的程序在乙機器上不能使用。機器語言和彙編語言是徹底依賴於具體機器特性的,是面向機器的語言。因爲它「貼近」計算機,或者說離計算機「很近」,稱爲計算機低級語言(low level language).code

         高級語言 爲了克服低級語言的缺點。創造出了高級語言。第一個高級語言爲Fortran語言。

         這種語言功能很強,且不依賴於具體機器,用它寫出的程序對任何型號的計算機都是用(或只須做不多的修改),它與具體機器距離較遠,故稱爲計算機高級語言(high level language)。

         固然,計算機也是不可以直接識別高級語言程序的,也要進行「翻譯」。用一種稱爲編譯程序的軟件把用高級語言寫的程序(稱爲源程序,source program)轉換爲機器指令的程序(稱爲目標程序,object program),而後當計算機執行機器指令程序,最後獲得記過。高級語言的一個語句每每對應多條機器指令。

 

         高級語言也經歷了不一樣的發展階段:

(1)     非結構化語言。早期的BASIC、FORTRAN、ALGOL等都術語非結構化語言。

(2)     結構化語言。QBASIC、FORTRAN77和C語言等。

(3)     面嚮對象語言。C++、C#、visual、Basic、和java等

1.3 C語言的發展及其特色

C語言主要由如下一些主要特色;

1).語言簡潔、緊湊,使用方便、靈活。

2).運算符豐富

3).數據類型豐富

4).具備結構化的控制語句

5).語法限制不太嚴格,程序設計自由度大

6).C語言容許直接訪問物理地址,能進行位(bit)操做,能實現彙編語言的大部分功能,能夠直接對硬件進行操做

7).用C語言編寫的程序可移植性好

8).生成目標代碼質量高,程序執行效率高

1.4 最簡單的C語言程序

1.4.1 最簡單的C語言程序舉例

例,要求在屏幕上輸入如下一行信息

Hello world

編寫程序

1 #include <stdio.h>                //這是編譯預處理命令
2 
3 int main()                        //定義主函數
4 {                            //函數開始的標誌
5     printf(" Hello world. ");           //輸出鎖指定的一行信息
6     return 0;                    //函數執行完畢時返回函數值0
7 }                            //函數結束的標誌
8 
9
Hello.c

 

/*程序分析

#include <stdio.h>  

#include 編譯預處理指令,把括號<>中的信息調入供使用

stdio.h 是系統提供的一個文件名

stdio是」standard Input & output「的縮寫

文件後綴.h的意思是頭文件(header file),由於這些文件都是放在程序個文件模塊的開頭

*/

 

說明:C語言容許兩種註釋方式:

1).以//開始的單行註釋。能夠嵌套使用 //xxxx//yyy

2).以/*開始,以*/結束的塊式註釋。不能夠嵌套使用/*xxxxx/*yyyy*/zzzzz*/這是錯誤的,最後的*/會沒有匹配的/*。

 

1.4.2 C語言程序的結構

(1) 一個程序有一個或多個源程序文件組成。

在一個源程序文件中能夠包括如下3部分:

①預處理文件

②全局聲明

③函數定義

(2) 函數是C語言的主要組成部分。

函數是C語言的基本單位。編寫C語言的工做主要就是編寫一個個函數,C語言的這種特色容易實現程序的模塊化。

(3) 一個函數包括兩個部分

①函數首部

   int    max       (int          x ,        int             y)

函數類型 函數名  函數參數類型 函數參數名 函數參數類型 函數參數名

②函數體

函數體通常包括如下兩部分

·聲明部分

·執行部分

(4) 程序老是從main開始執行的

(5) 程序中對計算機的操做都是由函數中的C語言完成的。

(6) 在每一個數據聲明和語句的最後必須有一個分號

(7) C語言自己不提供輸入輸出語句

(8) 程序應當包含註釋

 

 

1.5 運行C程序的步驟與方法

在編號一個C源程序後,怎樣上機進行編譯和運行呢?通常要通過如下幾個步驟:

(1)    上機輸入和編譯源程序

(2)    對源程序進行編譯,先用C編譯系統提供的「預處理器」(又稱「預處理程序」或「預編譯器」)對程序中的預處理指令進行編譯預處理。

編譯的做用:首先是對源程序進行檢查,斷定它有無語法方面的錯誤;如有,則發出「出錯信息error」。反覆進行,直到沒有沒法錯誤爲止。

At(Attention):語法錯誤可以被檢查出來,不能夠檢查出邏輯錯誤。

在用編譯系統對源程序進行編譯時,自動包括了預編譯和正式編譯兩個階段。用戶沒必要分別發出二次指令。

(3)    進行鏈接處理

必須把全部的編譯後獲得的目標模塊鏈接裝配起來,再與函數庫相鏈接成一個總體,生成一個可供計算機執行的目標程序,稱爲可執行程序(executive program)。

在Visual C++中其後綴爲.exe,如f.exe

(4)    運行可執行程序,獲得運行結果。

 

1.6程序設計的任務

從肯定問題到最後完成任務,通常經歷如下幾個工做階段:

(1)    問題分析

(2)    設計算法

(3)    編寫程序

(4)    對源程序進行編輯、編譯和鏈接,獲得可執行程序

(5)    運行程序,分析結果

(6)    編寫程序文檔

相關文章
相關標籤/搜索