記憶語(yǔ)法、思考算法。讀懂程序、循序漸進(jìn)。記好筆記、上機(jī)_第1頁(yè)
已閱讀1頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、記憶語(yǔ)法、思考算法。讀懂程序、循序漸進(jìn)。記好筆記、上機(jī)調(diào)試。,學(xué)習(xí)方法,程序設(shè)計(jì)語(yǔ)言,計(jì)算機(jī)語(yǔ)言的種類,機(jī)器語(yǔ)言,匯編語(yǔ)言,高級(jí)語(yǔ)言,面向機(jī)器,面向過(guò)程,面向?qū)ο?,,,,,程序翻譯方式,例如:,X=1Y=2Print X+Y,main( ){int x , y; x=1; y=2; printf(“%d,%d\n”,x,y);},Basic源程序,C源程序,01代碼,01代碼,01代碼,01代碼,執(zhí)行,執(zhí)行,執(zhí)行,

2、,,,解 釋,,,,,,…,01代碼,執(zhí)行,,,,編 譯,目標(biāo)程序,常用的C語(yǔ)言編譯系統(tǒng),Turbo C 2.0,DOS環(huán)境英文界面編譯C程序,,,機(jī)房選用,,Turbo C++ 3.0,DOS界面支持鼠標(biāo)編譯C++程序.CPP兼容C程序.C,,第三版選用,,Visual C++6.0,可視化開(kāi)發(fā)環(huán)境Windows界面編譯C++程序,,實(shí)際開(kāi)發(fā),,復(fù)賽上機(jī)環(huán)境:Dev-C++ 4.9.9.2,C語(yǔ)言概述,C語(yǔ)言–––

3、既可作為系統(tǒng)軟件的程序設(shè)計(jì)語(yǔ)言,又可作為應(yīng)用軟件的程序設(shè)計(jì)語(yǔ)言。,尤其是當(dāng)今計(jì)算機(jī)應(yīng)用極為廣泛,軟件的設(shè)計(jì)、編寫質(zhì)量要求高,經(jīng)常與硬件部分打交道,如:界面設(shè)計(jì)等,所以用C語(yǔ)言編寫是最理想的。因而C語(yǔ)言也是當(dāng)前計(jì)算機(jī)語(yǔ)言中用得最廣泛的語(yǔ)言之一。,,1.1 C語(yǔ)言出現(xiàn)的歷史背景,一、操作系統(tǒng)的設(shè)計(jì)語(yǔ)言,O.S. –––操作系統(tǒng),為用戶使用計(jì)算機(jī)提供一個(gè)操作環(huán)境:系統(tǒng)命令、語(yǔ)言編程等。,如:DOS. UNIX,以前:O. S .軟件用匯編指令

4、編寫。匯編語(yǔ)言:一種二進(jìn)制指令代碼的符號(hào)表示,既煩鎖,又易出錯(cuò),可讀性差。,改進(jìn):用C語(yǔ)言編寫,既提高了程序的可讀性,又可與硬件打交道。,二、發(fā)展過(guò)程,? 1960年出現(xiàn)了Algol60語(yǔ)言,但該語(yǔ)言主要面向問(wèn)題,與硬件較遠(yuǎn),故英國(guó)劍橋大學(xué)推出了CPL(Combined Programming Language),? 1967年,Matin Richards對(duì)CPL進(jìn)行改進(jìn)、簡(jiǎn)化、推出了BCPL (Basic Combined Prog

5、ramming Language),? 1970年,美國(guó)貝爾實(shí)驗(yàn)室Ken Thomson 以BCPL為基礎(chǔ),再次簡(jiǎn)化推出了B語(yǔ)言,并寫了第一個(gè)UNIX系統(tǒng)。,? 美國(guó)貝爾實(shí)驗(yàn)室D.M. Ritchie 在B語(yǔ)言基礎(chǔ)上設(shè)計(jì)出了C語(yǔ)言,并用其將UNIX系統(tǒng)全部改寫并實(shí)現(xiàn)。,? 經(jīng)進(jìn)一步改進(jìn),至1977年出現(xiàn)了與具體機(jī)器無(wú)關(guān)的C編譯文本,從而使C語(yǔ)言廣泛應(yīng)用,各種機(jī)器皆可使用。,? 1978年,美國(guó)Brain W.Kernighan與Denn

6、is. M. Ritchie 聯(lián)合出版一書(shū)《The C Programming Language》成為 ANSI C之基礎(chǔ)。,? 1983年,美國(guó)標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI) 制定了ANSI C。,? ANSI C 為基礎(chǔ):,不同機(jī)器有不同版本,尤其是函數(shù)均應(yīng)參考相應(yīng)的機(jī)器。,,1.2 C語(yǔ)言的特點(diǎn),只有通過(guò)學(xué)習(xí),方可理解C之特點(diǎn),先簡(jiǎn)敘之:,1. 簡(jiǎn)潔、緊湊、方便、靈活 32個(gè)關(guān)鍵字,9種控制語(yǔ)句, 主要用小寫字母,壓縮

7、一切不必要成分,2. 運(yùn)算符豐富 除了最基本的+、-、×、÷、%等運(yùn)算外,還將括號(hào)、賦值、類型強(qiáng)制轉(zhuǎn)換等均作為運(yùn)算符,共有34種運(yùn)算符。,3. 數(shù)據(jù)結(jié)構(gòu)豐富 除基本類型外, 有指針, 結(jié)構(gòu)體、共同體等類型。,4. 具有結(jié)構(gòu)化的控制語(yǔ)句 模塊完整,控制中的語(yǔ)句可完整化。,5. 語(yǔ)法嚴(yán)格,但有靈活性 如:數(shù)據(jù)類型可相互通用:整型、字符型通用。,6. 可與機(jī)器硬件打交道,直接訪問(wèn)內(nèi)存地址,

8、具有“ 高”、“ 低”級(jí)語(yǔ)言之功能。,7. 生成目標(biāo)代碼質(zhì)量高,執(zhí)行效率高。,8. 可移植性優(yōu)于匯編語(yǔ)言。,,1.3 簡(jiǎn)單的C程序介紹,例1.1:顯示一行信息。,例 1.2main ( )/*求兩數(shù)之和*/{ int a,b,sum; /*這是定義變量*/ a=123; b=456; /* 以下3行為C語(yǔ)句 */ sum=a+b; printf ("sum is

9、%d/n", sum); } 本程序的作用是求兩個(gè)整數(shù)a和b之和sum。/*……*/表示注釋部分,為便于理解,我們用漢字表示注釋,當(dāng)然也可以用英語(yǔ)或漢字拼音作注釋。注釋只是給人看的,對(duì)編譯和運(yùn)行不起作用。注釋可以加在程序中任何位置。第2行是聲明部分, 定義變量a和b,指定 a和b為整型(int)變量。第3行是兩個(gè)賦值語(yǔ)句,使a和b的值分別為123和,456。第4行使sum的值為a+b,第5行中“%d”是輸入輸出

10、的“格式字符串”,用來(lái)指定輸入輸出時(shí)的數(shù)據(jù)類型和格式(詳見(jiàn)第4章),“%d”表示“以十進(jìn)制整數(shù)形式輸出”。在執(zhí)行輸出時(shí),此位置上代以一個(gè)十進(jìn)制整數(shù)值。printf函數(shù)中括弧內(nèi)最右端sum是要輸出的變量,現(xiàn)在它的值為579(即123+456之值)。因此輸出一行信息為sum is 579,main( ) /* 主函數(shù)*/ { int a, b, c;

11、 /*定義變量*/ scanf("%d, %d", &a, &b); /*輸入變量a和b的值*/ c=max(a, b);/*調(diào)用max函數(shù),將得到的值賦給c*/ printf("max=%d",c) ; /*輸出c的值*/ },例1.3,int max (int x, int y) /*對(duì)形參x、

12、y作類型定義*/ { int z; /*max函用到的變量z,也要加以定義*/ z=y; if (x>y) z=x; return (z); /*將z的值返回,通過(guò)max帶回調(diào)用處*/ },本程序包括兩個(gè)函數(shù):主函數(shù)main和被調(diào)用的函數(shù)max。max函數(shù)的作用是將x和y中較大者的值賦給變量z。return語(yǔ)句將z的值返回給主調(diào)函數(shù)main。返回值是通過(guò)函數(shù)名max

13、帶回到main函數(shù)的調(diào)用處。main函數(shù)中的scanf是“輸入函數(shù)”的名字(scanf和printf都是C系統(tǒng)提供的標(biāo)準(zhǔn)輸入輸出函數(shù))。程序中scanf函數(shù)的作用是輸入a和b的值。&a和&b中的“&”的含義是“取地址”,此scanf函數(shù)的作用是將兩個(gè)數(shù)值分別輸入到變量a和b的地址所標(biāo)志的單元中,也就是輸入給變量a和b。,main函數(shù)中第4行為調(diào)用max函數(shù),在調(diào)用時(shí)將實(shí)際參數(shù)a和b的值分別傳送給max函數(shù)中的形式

14、參數(shù)x和y。經(jīng)過(guò)執(zhí)行max函數(shù)得到一個(gè)返回值(即max函數(shù)中變量z的值),把這個(gè)值賦給變量c。然后輸出c的值。printf函數(shù)中雙引號(hào)內(nèi)的“max=%d”,在輸出時(shí),其中“%d”將由c的值取代之,“max =”原樣輸出。程序運(yùn)行情況如下: 8,5 (輸入8和5給a和b) max=8 (輸出c的值),本例用到了函數(shù)調(diào)用、實(shí)際參數(shù)和形式參數(shù)等概念,我們只做了很簡(jiǎn)單的解釋。讀者如

15、對(duì)此不大理解,可以先不予以深究,在學(xué)到以后有關(guān)章節(jié)時(shí),問(wèn)題自然迎刃而解。在此介紹此例子,無(wú)非是使讀者對(duì)C程序的組成和形式有一個(gè)初步的了解。,通過(guò)以上幾個(gè)例子,可以看到:,1、C程序是由函數(shù)構(gòu)成的。一個(gè)C源程序至少包含一個(gè)main函數(shù),也可以包含一個(gè)main函數(shù)和若干個(gè)其他函數(shù)。因此,函數(shù)是C程序的基本單位。被調(diào)用的函數(shù)可以是系統(tǒng)提供的庫(kù)函數(shù)(例如printf和scanf函數(shù)),也可以是用戶根據(jù)需要自己編制設(shè)計(jì)的函數(shù)(例如,例1.3中的m

16、ax函數(shù))。C的函數(shù)相當(dāng)于其他語(yǔ)言中的子程序,用函數(shù)來(lái)實(shí)現(xiàn)特定的功能。程序中的全部工作都是由各個(gè)函數(shù)分別完成的。編寫C程序就是編寫一個(gè)個(gè)函數(shù)。,2、一個(gè)函數(shù)由兩部分組成:,① 函數(shù)的首部,即函數(shù)的第一行。包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)(形參)名、參數(shù)類型。例如,例1.3中的max函數(shù)的首部為int max (int x ,    int

17、y )↓ ↓ ↓ ↓    ↓ ↓ 函數(shù)類型 函數(shù)名 函數(shù)參數(shù)類型 函數(shù)參數(shù)名 函數(shù)參數(shù)類型 函數(shù)參數(shù)名 一個(gè)函數(shù)名后面必須跟一對(duì)圓括弧, 函數(shù)參數(shù)可以沒(méi)有,如main( )。,② 函數(shù)體,即函數(shù)首部下面的大括弧{……}內(nèi)的部分。如果一個(gè)函數(shù)內(nèi)有多個(gè)大括弧,則最外層的一對(duì){ }為函數(shù)體的范圍。函數(shù)體

18、一般包括: 聲明部分:在這部分中定義所用到的變量,如例1.3中main函數(shù)中的“int a,b,c;”。 在第8章中還將會(huì)看到,在聲明部分中要對(duì)所調(diào)用的函數(shù)進(jìn)行聲明。執(zhí)行部分:由若干個(gè)語(yǔ)句組成。,當(dāng)然,在某些情況下也可以沒(méi)有聲明部分(例如,例1.1)。甚至可以既無(wú)聲明部分,也無(wú)執(zhí)行部分。如:dump ( ){ }它是一個(gè)空函數(shù),什么也不干,但這是合法的。,3、 一個(gè)C程序總是從main函數(shù)開(kāi)始執(zhí)行的,而不論main函數(shù)在整個(gè)

19、程序中的位置如何(main函數(shù)可以放在程序最前頭,也可以放在程序最后,或在一些函數(shù)之前,在另一些函數(shù)之后)。,4、C程序書(shū)寫格式自由,一行內(nèi)可以寫幾個(gè)語(yǔ)句, 一個(gè)語(yǔ)句可以分寫在多行上。C程序沒(méi)有行號(hào),也不像FORTRAN或COBOL那樣嚴(yán)格規(guī)定書(shū)寫格式(語(yǔ)句必須從某一列開(kāi)始書(shū)寫)。,5、每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào)。分號(hào)是C語(yǔ)句的必要組成部分。例如: c=a+b; 分號(hào)不可少。即使是程序中最后一個(gè)語(yǔ)句也應(yīng)包含

20、分號(hào)。,6、C語(yǔ)言本身沒(méi)有輸入輸出語(yǔ)句。輸入和輸出的操作是由庫(kù)函數(shù)scanf和printf等函數(shù)來(lái)完成的。C對(duì)輸入輸出實(shí)行“函數(shù)化”。由于輸入輸出操作牽涉到具體的計(jì)算機(jī)設(shè)備,把輸入輸出操作放在函數(shù)中處理,就可以使C語(yǔ)言本身的規(guī)模較小,編譯程序簡(jiǎn)單,很容易在各種機(jī)器上實(shí)現(xiàn),程序具有可移植性。,7、可以用/*……*/對(duì)C程序中的任何部分作注釋。一個(gè)好的、有使用價(jià)值的源程序都應(yīng)當(dāng)加上必要的注釋,以增加程序的可讀性。,比如:例1.3中的max函

21、數(shù),延伸知識(shí):,許多程序設(shè)計(jì)語(yǔ)言中,可以將一段經(jīng)常需要使用的代碼封裝起來(lái),在需要使用時(shí)可以直接調(diào)用,這就是程序中的函數(shù)。,,編譯系統(tǒng)的庫(kù)文件提供的庫(kù)函數(shù),C程序的上機(jī)步驟,我們已經(jīng)看到了一些用C語(yǔ)言編寫的程序。為了使計(jì)算機(jī)能按照人們的意志進(jìn)行工作,必須根據(jù)問(wèn)題的要求,編寫出相應(yīng)的程序。所謂程序,就是一組計(jì)算機(jī)能識(shí)別和執(zhí)行的指令。每一條指令使計(jì)算機(jī)執(zhí)行特定的操作。程序可以用高級(jí)語(yǔ)言(例如QBASIC,F(xiàn)ORTRAN,PASCAL,C等)編

22、寫。用高級(jí)語(yǔ)言編寫的程序稱為“源程序”(source program)。從根本上說(shuō),計(jì)算機(jī)只能識(shí)別和執(zhí)行由0和1組成的二進(jìn)制的指令,而不能識(shí)別和執(zhí)行用高級(jí)語(yǔ)言寫的指令。為了使計(jì)算機(jī)能執(zhí)行高級(jí)語(yǔ)言源程序,必須先用一種稱為“編譯程序”的軟件,把源程序翻譯成二進(jìn)制形式的“目標(biāo)程序”, 然后將該目標(biāo)程序與系統(tǒng)的函數(shù)庫(kù)和其他目標(biāo)程序連接起來(lái),形成可執(zhí)行的目標(biāo)程序。,在編好一個(gè)C源程序后,如何上機(jī)運(yùn)行呢? 在紙上寫好一個(gè)程序后,要經(jīng)過(guò)以下幾個(gè)步驟

23、:1.上機(jī)輸入與編輯源程序 2.對(duì)源程序進(jìn)行編譯 3.與庫(kù)函數(shù)連接 4.運(yùn)行目標(biāo)程序這樣幾個(gè)步驟。以上過(guò)程如圖1.1所示。其中實(shí)線表示操作流程,虛線表示文件的輸入輸出。例如,編輯后得到一個(gè)源程序文件f.c, 然后在進(jìn)行編譯時(shí)再將源程序文件f.c輸入,經(jīng)過(guò)編譯得到目標(biāo)程序文件f.obj,再將目標(biāo)程序文件f.obj輸入內(nèi)存,與系統(tǒng)提供的庫(kù)函數(shù)等連接,得到可執(zhí)行的目標(biāo)程序文件f.exe,最后把f.exe調(diào)入內(nèi)存并使之運(yùn)行。在了解了C語(yǔ)言

溫馨提示

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

評(píng)論

0/150

提交評(píng)論