C程序設(shè)計課件.ppt_第1頁
C程序設(shè)計課件.ppt_第2頁
C程序設(shè)計課件.ppt_第3頁
C程序設(shè)計課件.ppt_第4頁
C程序設(shè)計課件.ppt_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、C程序設(shè)計課件,譚浩強(qiáng) 著 清華大學(xué)出版社,第一章 C語言概述,教學(xué)內(nèi)容: C語言出現(xiàn)的歷史背景 C語言的特點(diǎn) 簡單的C程序介紹 C程序的上機(jī)步驟,第一章 語言概述,1.1語言出現(xiàn)的歷史背景 語言是國際上廣泛流行的、很有發(fā)展前途的計算機(jī)高級語言。它適合于作為系統(tǒng)描述語言,既用來寫系統(tǒng)軟件,也可用來寫應(yīng)用軟件。 語言是第三代語言(面向過程的高級語言,第一代:機(jī)器語言;第二代:匯編語言) 以前的操作系統(tǒng)等系統(tǒng)軟件主要是由匯編語言編寫的(包括操作系統(tǒng)在內(nèi))。由于匯編語言依賴于計算機(jī)硬件,程序的可讀性和可移植性都比較差。為了提高可讀性和可移植性,最好改用高級語言,但一般高級語言難以實現(xiàn)匯編語言的某些功

2、能(匯編語言可以直接對硬件進(jìn)行操作,例如,對內(nèi)存地址的操作、位操作等)。人們設(shè)想能否找到一種既具有一般高級語言特性,又具有低級語言特性的語言,集它們的優(yōu)點(diǎn)于一身。于是,語言就在這種情況下應(yīng)運(yùn)而生了。,l 1970年美國貝爾實驗室的Ken Thompson以BCPL語言為基礎(chǔ),又作了進(jìn)一步簡化,設(shè)計出了很簡單的而且很接近硬件的B語言(取BCPL的第一個字母),并用B語言寫了第一個UNIX操作系統(tǒng),在PDP-7上實現(xiàn).1971年在PDP-11/20上實現(xiàn)了B語言,井寫了Unix操作系統(tǒng)。但B語言過于簡單,功能有限。1972年至1973年間,貝爾實驗室的D.M.Ritchie在B語言的基礎(chǔ)上設(shè)計出了

3、語言(取BCPL的第二個字母)。語言既保持了BCPL和B語言的優(yōu)點(diǎn)(精練,接近硬件),又克服了它們的缺點(diǎn)(過于簡單,數(shù)據(jù)無類型等。最初的語言只是為描述和實現(xiàn)Unix操作系統(tǒng)提供一種工作語言而設(shè)計的,1973年,K.Thompson和D.M.Ritchie兩人合作把UNIX的90%以上用C改寫(即UNIX第5版,原來的Unix操作系統(tǒng)是1969年由美國的貝爾實驗室的K. Thompson和D.M.Ritchie開發(fā)成功的,是用匯編語言寫的)。,1.2C語言的特點(diǎn) 一種語言之所以能存在和發(fā)展,并具有生命力,總是有其不同于(或優(yōu)于)其它語言的特點(diǎn)。C語言的主要特點(diǎn)如下。 語言簡潔、緊湊,使用方便、靈

4、活。 C語言一共只有32個關(guān)鍵字(見附錄II),9種控制語句,程序書寫形式自由,主要用小寫字母表示,壓縮了一切不必要的成分: C語言 Pascal語言 含 義 BEGINEND 復(fù)合語句 if (e) S; IF (e) THFN S 條件語句 int i, VAR i : INTEGER 定義i為整型變量 int a10; VAR a : ARRAY1.。10 of INTEGER 定義a為整型一維數(shù)組 int( ); FUNCTION f( ) : INTEGER 定義f為返回整型值的函數(shù) int *p; VAR P:INTEGER 定義P為指向整型變量的指針變量 =2; i=i+2 賦值

5、語句,使i i+,+i i=i+1 i自增值,i+1i 比較PASCAL可以看到:C程序比Pascal簡練,源程序短,輸入程序時工作量少。,運(yùn)算符豐富 的運(yùn)算符包含的范圍很廣泛,共有種運(yùn)算符(見附錄III)。把括號、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使的運(yùn)算類型極其豐富,表達(dá)式類型多樣化,靈活使用各種運(yùn)算符可以實現(xiàn)在其它高級語言中難以實現(xiàn)的運(yùn)算。 數(shù)據(jù)結(jié)構(gòu)豐富,具有現(xiàn)代化語言的各種數(shù)據(jù)結(jié)構(gòu) 的數(shù)據(jù)類型有:整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)(如鏈表、樹、棧等)的運(yùn)算。尤其是指針類型數(shù)據(jù),使用起來比Pascal更為靈活、多樣。 具

6、有結(jié)構(gòu)化的控制語句(如if.else語句、whi1e語句、dowhi1e語句、for語句)。 用函數(shù)作為程序模塊以實現(xiàn)程序的模塊化。是結(jié)構(gòu)化的理想語言,符合現(xiàn)代編程風(fēng)格要求。,.語法限制不大嚴(yán)格,程序設(shè)計自由度大. 例如,對數(shù)組下標(biāo)越界不作檢查,由程序編寫者自己保證程序的正確。對變量的類型使用比較靈活,例如,整型量與字符型數(shù)據(jù)以及邏輯型數(shù)據(jù)可以通用,一般的高級語言語法檢查比較嚴(yán),能檢查出幾乎所有的語法錯誤。而語言允許程序編寫者有較大的自由度,因此放寬了語法檢查。程序員應(yīng)當(dāng)仔細(xì)檢查程序,保證其正確,而不要過分依賴編譯程序去查錯?!跋拗啤迸c“靈活”是一對矛盾。限制嚴(yán)格,就失去靈活性;而強(qiáng)調(diào)靈活,就

7、必然放松限制。一個不熟練的人員,編一個正確的程序可能會比編一個其它高級語言程序難一些。也就是說,對用語言的人,要求對程序設(shè)計更熟練一些。 語言允許直接訪問物理地址 能進(jìn)行位()操作,能實現(xiàn)匯編語言的大部分功能,可以直接對硬件進(jìn)行操作,因此既具有高級語言的功能,又具有低級語言的許多功能,可用來寫系統(tǒng)軟件。語言的這種雙重性,使它既是成功的系統(tǒng)描述語言,又是通用的程序設(shè)計語言。有人把稱為“高級語言中的低級語言”,也有人稱它為“中級語言”意為兼有高級和低級語言的特點(diǎn)。,生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。 一般只比匯編程序生成的目標(biāo)代碼效率低。 用語言寫的程序可移植性好(與匯編語言比)。 基本上不作修

8、改就能用于各種型號的計算機(jī)和各種操作系統(tǒng)。 上面我們只介紹了語言的最容易理解的一般特點(diǎn),至于語言內(nèi)部的其它特點(diǎn)將結(jié)合以后各章的內(nèi)容作介紹。由于語言的這些優(yōu)點(diǎn),使語言應(yīng)用面很廣。許多大的軟件都用編寫,這主要是由于的可移植性好和硬件控制能力高,表達(dá)和運(yùn)算能力強(qiáng)。許多以前只能用匯編語言處理的問題現(xiàn)在可以改用語言來處理了。,1.3 簡單的程序介紹 下面先介紹幾個簡單的程序,然后從中分析程序的特性。 例1.1 /* Example 1.1 */ main () printf (This is a C program n); ,本程序的作用是輸出以下一行 This is a C program 其中mai

9、n表示“主函數(shù)”,每一個程序都必須有一個main函數(shù)。函數(shù)體由大括弧括起來。 printf是語言中的輸出函數(shù);“n”是換行符。,例1.2 /* Example 1.2 */ main ( ) int a, b, sum; a=123;b=456; sum=a+b; printf(Sum is %dn,sum); 本程序的作用是求兩個整數(shù)和b之和sum 本程序輸出結(jié)果:Sum is 579 * *表示注釋部分,為便于理解,用漢字表示注釋,也可以用英語或漢字拼音作注釋。注釋只是給人看的,對編譯和運(yùn)行不起作用,注釋可以加在程序中任何位置。,例1.3 /* Example 1.3 */ main()

10、* 主函數(shù) * int a,b,c; *定義變量* printf(Input a,b:); scanf(%d,%d, /* 將z的值返回,通過max帶回調(diào)用處 * ,由3個程序示例可以總結(jié)以下7點(diǎn)結(jié)論: 程序是由函數(shù)構(gòu)成的。 一個源程序至少包含一個函數(shù)(main函數(shù)),也可以包含 一個main和若干其他函數(shù)。C的函數(shù)相當(dāng)于其它語言中的子程序。用函數(shù)來實現(xiàn)特定的功能??梢哉f是函數(shù)式的語言。程序全部工作都是由函數(shù)來完成的。的函數(shù)庫十分豐富,的這種特點(diǎn)使得容易實現(xiàn)程序的模塊化。 一個函數(shù)由兩部分組成: (1)函數(shù)的說明部分。包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)(形參)名、形式參數(shù)類型。 例如例1

11、.3中的max函數(shù)的說明部分為。 int max ( x,) 函數(shù)類型 函數(shù)名 函數(shù)參數(shù) int ,y; 形參類型 形參 函數(shù)名后面必須跟一對圓括弧,函數(shù)參數(shù)可以沒有,如main( )。,(2)函數(shù)體,即函數(shù)說明部分下面的大括弧內(nèi)的部分。如果一個函數(shù)內(nèi)有多個大括弧,則最外層的一對 為函數(shù)體的范圍。 函數(shù)體一般包括: 變量定義。如例中main函數(shù)中的“int a,b,c”。 執(zhí)行部分。由若干個語句組成。 當(dāng)然,在某些情況下也可以沒有變量定義部分(例如例)。甚至可以既無變量定義也無執(zhí)行部分。如: () 它是一個空函數(shù),什么也下干,但這是合法的。 一個程序總是從main函數(shù)開始執(zhí)行的,而不論main

12、函數(shù)在整個程序中的位置如何(main函數(shù)可以放在程序最前頭,也可以放在程序最后,或在一些函數(shù)之前在另一些函數(shù)之后)。,程序書寫格式自由,一行內(nèi)可以寫幾個語句,一個語句可以分寫在多行上人程序沒有行號,也不象O或那樣嚴(yán)格規(guī)定書寫格式(語句必須從某一列開始書寫)。 每個語句和數(shù)據(jù)定義的最后必須有一個分號。分號是語句的必要組成部分。例如: 十; 分號不可少。即使是程序中最后一個語句也應(yīng)包含分號(這是和語言不同的)。 語言本身沒有輸入輸出語句。輸入和輸出的操作是由庫函數(shù)scanf和printf等函數(shù)來完成C對輸入輸出實行函數(shù)化 可以用*對程序中的任何部分作注釋,一個好的,有使用價值的源程序都應(yīng)當(dāng)加上必要的注釋,以增加程序的可讀性,1.4 程序的上機(jī)步驟 用

溫馨提示

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

評論

0/150

提交評論