C語言程序設計課件第01章_第1頁
C語言程序設計課件第01章_第2頁
C語言程序設計課件第01章_第3頁
C語言程序設計課件第01章_第4頁
C語言程序設計課件第01章_第5頁
已閱讀5頁,還剩41頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第1章C語言概述1.1C語言的發展簡史1.2C語言的特點1.3認識C程序1.4C程序的運行與調試[Return]本章學習目標了解C語言的發展簡史和特點掌握C語言的基本結構及如何編寫可讀性良好的C程序掌握一個C程序的編輯、編譯、運行和調試的一般過程1.1C語言的發展簡史C語言發源于著名的美國貝爾實驗室,是由該實驗室的研究人員DennisRitchie

和KenThompson兩人于二十世紀七十年代初在設計UNIX操作系統時開發出來的。在C語言誕生以前,系統軟件主要是用匯編語言編寫的,原來的UNIX操作系統就是1969年由美國貝爾實驗室的KenThompson和DennisRitchie利用匯編語言開發成功的。由于匯編語言程序依賴于計算機硬件,其可讀性和可移植性都很差;但一般的高級語言又難以實現對計算機硬件的直接操作,于是KenThompson于1970年設計出一種簡單而且接近硬件的高級語言——B語言,并用B語言寫了UNIX操作系統。1972年到1973年間,DennisRitchie在B語言基礎上又設計了C語言。后來,C語言又被多次改進,并出現了多種版本。80年代初,美國國家標準化協會(ANSI),根據C語言問世以來各種版本對C語言的發展和擴充,制定了ANSIC標準(1989年再次做了修訂)。

本書的敘述以ANSIC新標準為基礎。本書選定的編譯環境是TurboCV3.0。

目前,在微機上廣泛使用的C語言編譯系統有MicrosoftC、TurboC、BorlandC等。雖然它們的基本部分都是相同的,但還是略有差異,所以請大家注意自己所使用的C編譯系統的特點和規定(參閱相應的手冊)。[Return]C語言同時具有匯編語言和高級語言的優勢。概括如下:(1)語言簡潔、靈活,程序執行效率高。(2)運算符極其豐富,能夠實現在其他高級語言中難以實現的運算功能。(3)數據類型豐富,可實現各種復雜的數據結構的運算。(4)靈活的結構化控制語句,是理想的結構化程序設計語言;以函數為程序基本單位,容易實現模塊化程序設計。(5)語法不嚴,程序設計自由。(6)具有直接對硬件進行控制的功能。(7)可移植性好。

1.2C語言的特點(8)C語言的另一面:相對“難”學。[Return]1.3.1一個簡單的C程序

1.3認識C程序

WelcometotheCworld!/*exam1_1*/#include<stdio.h>main(){printf(“WelcometotheCworld!\n”);}程序運行結果:【例1-1】在屏幕顯示字符串“WelcometotheCworld!”【例1-2】計算兩個數的和并輸出結果。01

/*exam1_2*/02 #include<stdio.h>/*將stdio.h這個文件包含進來*/03 main() /*主函數名,函數從這里開始*/04 {05 inta,b,sum;/*定義三個整形變量:a,b和sum*/06 a=5;/*給a賦值為5*/07 b=10;/*給b賦值為10*/08 sum=a+b;/*把a+b的值賦給sum*/09 printf(“sumis%d.\n”,sum);/*輸出sum的值*/10 }1.3.2C程序的基本結構

下面再來看另一個簡單的C程序,并從這個例子出發說明C程序的基本結構。程序行最左邊的行號是為了方便介紹程序而添加的,實際輸入程序時是不需要的。【01】第1行為注釋,C語言的注釋以“/*”和“*/”作為注釋內容的分界符。注釋可增強程序的可讀性,幫助我們理解程序的含義。【02】第2行是讓計算機系統把文件stdio.h“包含”進來。C語言里有關輸入和輸出的函數都定義在這個文件里,要把結果輸出到屏幕上,就要調用輸出函數,也就需要把stdio.h文件包含進來。【03】第3行為程序執行的起點,即main()函數,我們把它稱為“主函數”。每一個C程序都由一個或多個函數組成,其中必須有一個名為main的函數。函數體由花括號括起來,main前的int是聲明main函數的返回值類型為整形,main右邊的園括號內的void表示這個函數沒有參數。【04】第4行的左花括號“{”為main()函數體的開始分界符。

下面我們逐行對這個程序進行詳細解說。【06】第6行是一個賦值語句,把整數5賦給a。【07】第7行也是一個賦值語句,把整數10賦給b。【08】第8行把運算表達式a+b的計算結果賦給sum。【09】第9行是調用系統函數printf(),按照雙引號(””)內的指定格式輸出結果,在%d位置上用sum的值代替,引號內的其余字符照原樣輸出,\n是換行符,告訴計算機在輸出完結果后將光標移到下一行的開頭。【10】第10行是右花括號“}”是main()函數的結束分界符。【05】第5行聲明a、b和sum為整形變量。C語言在使用變量之前必須先聲明其類型,這是與Basic語言不同的。一個C程序基本包括以下幾個部分:1.#include宏命令及頭文件2.main()函數3.花括號{}、語句塊和函數體4.變量5.語句6.輸入和輸出

當我們在程序中加入#include<filename>時,C編譯系統會自動把<>內的頭文件的內容全部包含進來,并且放置在#include這行的位置上。有時我們需要將已經編寫好的另一個程序包含到本程序中,或者在程序中需要調用系統庫函數,這時我們就需要使用#include命令。

如,上例中由于使用系統標準輸出函數printf(),所以要將含有該函數聲明信息的stdio.h文件包含進來。

#include<stdio.h>main(){…}main(){…}char*_Cdeclgets(char*s);void_Cdeclperror(constchar*s);int_Cdeclprintf(constchar*format,...);[Return]

一個C程序由一個或多個函數構成,其中必須有且只有一個主函數main(),一個函數可以調用其他函數,如上面例子中main函數調用printf函數。所有的C程序都是從main函數開始執行,并在main函數中結束。[Return]C程序以函數為單位,編寫C程序就是編寫一個個函數。每個函數的主體都包括在一對花括號“{}”內。有時把完成某個功能或操作的幾個語句用一對花括號括起來,組成一個語句塊(也叫復合語句)。若一個函數體內有多對花括號,則最外層的一對是函數體的分界符。[Return]

變量是一個C程序不可缺少的最基本的部分,是用來存放數據的。概括地說,一個計算機程序包括兩個部分,第一部分是對數據的描述,第二部分是對操作的描述。變量就是用來描述數據的。C語言的變量必須先聲明后使用,聲明時要說明變量的數據類型和名字。C語言中的數據類型有整形(int)、浮點型(float)、字符型(char)等。[Return]每個C函數由若干個語句構成,每個語句以“;”結束,可以一行書寫多個語句。C語言有表達式語句、函數調用語句、控制語句、變量定義語句等。如上面main()函數體有5個語句,第1個語句(【05】行)為變量定義語句,第2~4語句(【06】~【08】行)為賦值(表達式)語句,第5個語句(【09】行)為函數調用語句。[Return]每個程序必須有0個或多個輸入,有至少一個輸出。如果一個程序沒有輸出,我們就無從知道它的運算和操作結果。C語言的輸入和輸出是通過調用系統提供的標準輸入輸出函數實現的。如上例中調用printf()函數以指定格式輸出計算結果。上例中的“printf(“sumis%d\n”,sum);”指定以雙引號內的格式輸出,%d處將代入相應的sum的值,雙引號內的所有其它字符照原樣輸出,“\n”是換行符。1.3.3C程序中的單詞

C語言的單詞可分為標識符、關鍵字、分界符、空白、和運算符幾類。1.C語言的標識符2.C語言的關鍵字3.C語言的分界符4.C語言的空白5.C語言的運算符

在C語言中,我們稱變量、函數的名稱、符號常量或者標號為用戶標識符。C語言的標識符由英文大小寫字母、數字或下劃線所組成,首字母必須是英文字母或下劃線。標識符的長度沒有限定,決定于使用的編譯系統,如Turbo

C允許標識符長度為32個字符。通常取前8個字符為有效字符,所以給變量或函數取名時最好保證前8個字符能夠區別不同。要注意的是,系統的保留字(又稱關鍵字),是不可以用作標識符的。

以下是合法的標識符例子:

min,t,SIZE,M1,x10,count_1,_myargument以下是不合法的標識符例子:for 使用關鍵字8h以數字開頭-5以減號開頭A*出現非法字符*x<y出現非法字符<下面是三個不同的標識符:count,Count,COUNT。[Return]

關鍵字是編譯系統本身提供給用戶使用的標識符,用戶在進行編程時必須按照系統規定的方式使用這些關鍵字,而不能更改或者重新定義它們。所以用戶自定義的變量名或函數名等標識符不能與關鍵字相同,如上面的for和short都是關鍵字,所以不可用作標識符。C語言提供的關鍵字共有32個,如表1-1所示。※注意:C語言是大小寫敏感的!所有關鍵字都是小寫的,若把某個或全部字母寫成大寫形式,則系統不把它當做關鍵字,而當成普通標識符。auto

break

case

char

const

continue

default

do

double

else

enum

extern

float for

goto

if

int

long register

return

short

signed

sizeof static

struct

switch

typedef union unsigned void

volatile while 表1-1C語言的關鍵字[Return]※注意:為避免遺漏必須配對使用的符號,例如注釋符號、函數體的起止標識符(花括號)、圓括號等等,在輸入時,可連續輸入這些起止標識符,然后再在其中進行插入來完成內容的編輯。C語言的分界符是用來分隔特定的語法單位的。如,花括號“{}”用來界定函數體的范圍;圓括號“()”用來界定函數的參數;中括號“[]”用來界定數組的下標;“/*”和“*/”用來界定注釋內容的范圍;分號“;”用來表示一個語句的結束;等等。[Return]

一個C程序除了必需的關鍵字和用戶自定義的標識符以外,一般還需要有一些輔助性的字符,如空格(space)、制表符、回車、換行、注釋等,這些字符起到使程序的版面的層次、段落分明,反映出程序的邏輯結構,從而提高程序的可讀性的作用。這些字符在編譯時不會被生成任何代碼,所以稱它們為空白(blank)。[Return]

運算符在表達式中表示對數據執行某類運算。C語言的運算符非常豐富,共有13類34種,其中最常用到的有,算術運算符:加(+)、減(-)、乘(*)、除(/)、求余(%)5種,關系運算符:大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)、不等于(!=)6種,賦值運算符(=),等等。各種運算符的作用將分散在后面各章節分別作詳細介紹。※注意:C語言的等于運算符由兩個“=”組成,即“==”,而賦值運算符是一個“=”。千萬別寫錯!1.3.4如何編寫可讀性良好的C程序1.命名風格2.注釋風格3.布局風格

標識符的命名習慣,盡量遵循如下原則:(1)含義明確(2)規范縮寫(3)規范分隔(4)限制長度(5)大小寫約定[Return]

C語言的注釋格式為:/*……*/。注釋時要注意以下幾點:(1)“/*”和“*/”

必須成對使用,且“/”和“*”、以及“*”和“/”之間不能有空格,否則都出錯。(2)注釋的位置,可以單占1行,也可以跟在語句的后面。(3)如果1行寫不下,可另起1行繼續寫。(4)注釋中允許使用漢字。在非中文操作系統下,看到的是一串亂碼,但不影響程序運行。(5)編寫程序時先編寫注釋、后編寫代碼;修改程序時先修改注釋、后修改代碼。(6)注釋不僅僅是只列出代碼執行的功能,而且還應給出為什么如此編寫代碼的原因或理由。[Return]

一個程序的可讀性與它的版面布局有很大關系。程序的版面布局又與花括號的格式和空白的使用密切相關。下面介紹常見的幾種花括號格式以及空白的使用:(1)花括號的格式1)

1TBS2)

Allman3)

Whitesmith4)

GNUfor(i=1;i<=100;i++){

sum=sum+i;

}for(i=1;i<=100;i++)

{

sum=sum+i;

}for(i=1;i<=100;i++)

{

sum=sum+i;

}for(i=1;i<=100;i++)

{

sum=sum+i;

}[Return](2)空白的使用

在一個程序中適當地使用空白可提高程序的可讀性。下面重點說明一下縮進的格式和標識符周圍的空白。1)

縮進for(

j=0;j<2;j++)sum=sum+a[j];2)標識符周圍的空白for(j=0;j<2;j++)??for(k=0;k<3;k++)??scanf(“%d”,&a[j][k]);for(j=0;j<2;j++)??for(k=0;k<3;k++)??printf(“a[%d][%d]=%d\n”,j,k,a[j][k]);一個采用4個空格的縮進的例子:在圓括號旁使用空格和在分號的右側使用空格例子:[Return]1.4C程序的運行與調試1.4.1C程序設計的基本步驟1.規劃程序——流程圖

2.編寫程序代碼及注釋——源程序(.C文件)3.編譯程序代碼——目標程序(.obj文件)

4.鏈接與執行程序——可執行程序(.exe文件)

5.排錯與測試

6.程序代碼的優化、修飾和保存[Return]下面以一個簡單的例子說明如何繪制程序流程圖。【例1-5】畫出求5!的程序流程圖。

(1)使result=1

(2)使i=2

(3)使result*i=>result(用=>表示存放)

(4)使i+1=>i

(5)如果i的值不大于5,返回(3)繼續執行;否則輸出result(此時的result的值就是5!),算法結束。用自然語言描述的算法(求解步驟)如下:繪制成流程圖如下:圖1-5求5!的流程圖結束1=>result開始2=>iresult*i=>resulti+1=>ii>5?輸出resultfalsetrue開始/結束程序前進方向數據處理判斷預定義函數文件輸入/輸出連接點圖1-6常用的流程圖符號[Return]

在完成對程序的規劃之后,我們便可以根據程序流程圖編寫程序代碼了。在編寫代碼的過程中,我們會體會到先做規劃的好處。程序規劃得好,編寫程序時邏輯清晰,不容易產生邏輯上的錯誤,避免反復修改,從而提高效率。編寫代碼時,不要忘記加上注釋。加上注釋不但方便別人了解程序的功能,而且方便日后對程序的維護與擴展。總之,一個好的程序員應該養成給編寫的代碼加上注釋的好習慣。

程序編寫完后,這些用計算機高級語言編寫出來的源代碼還不能直接被計算機執行,我們知道計算機能夠理解的是由0和1所組成的二進制代碼,所以還必須將寫好的源程序翻譯成為計算機能夠理解的目標代碼文件(擴展名為obj)。這個工作由高級語言系統提供的編譯程序來完成。[Return]

一個源程序經過編譯后,若這個程序與庫函數或其它程序沒有任何聯系,便可以執行了。否則,還必須經過鏈接(link),才能夠生成可執行文件(擴展名為exe)。這時運行這個可執行文件,便可看到程序的運行結果了。[Return]

程序通過了編譯和鏈接,執行后得到的并不一定是期望的結果。這就說明程序雖然在語法上沒有問題,但是可能在邏輯上出了問題,從而導致輸出非預期的結果。這種情況下我們必須根據流程圖,逐個排除每個語句的邏輯錯誤。另外,有時程序在某種輸入數據條件下輸出正確結果,但是在其它一些輸入數據條件下得到不正確的結果。所以我們還必須使用各種可能的輸入數據,對程序進行測試,才能保證在任何情況下程序都能正常運行,并得到正確結果,即確保程序的“健壯性”。[Return]

當程序經過測試證明結果完全正確后,有時我們還需要對程序進行優化,以提高程序的運行效率。另外,還要對源程序進行適當的排版、增加注釋等修飾性操作,使程序更加層次分明,更加易讀。最后,千萬別忘記把我們的勞動成果妥善保存起來。1.4.2如何使用TurboC/C+

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論