C程序綜述教學(xué)講義_第1頁(yè)
C程序綜述教學(xué)講義_第2頁(yè)
C程序綜述教學(xué)講義_第3頁(yè)
C程序綜述教學(xué)講義_第4頁(yè)
C程序綜述教學(xué)講義_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C程序綜述教學(xué)講義本章要點(diǎn)程序與程序設(shè)計(jì)語(yǔ)言C程序的結(jié)構(gòu)C程序的開(kāi)發(fā)環(huán)境及開(kāi)發(fā)過(guò)程本章學(xué)習(xí)目標(biāo)了解程序設(shè)計(jì)語(yǔ)言的發(fā)展簡(jiǎn)史和分類(lèi)掌握C程序的基本結(jié)構(gòu)掌握C程序的編輯、編譯、鏈接和執(zhí)行的過(guò)程1.1什么是程序程序是為完成某一特定任務(wù)而定義的一組指令的序列。向左轉(zhuǎn)邁左腳前進(jìn)0.5步右腳跟進(jìn)向右轉(zhuǎn)邁左腳前進(jìn)1步右腳跟進(jìn)向右轉(zhuǎn)跳躍從廣義上講,這就是為完成穿越障礙而制定的程序。不難看出,只要嚴(yán)格按照我們發(fā)出的指令,不同的人均可以穿過(guò)障礙,到達(dá)目的地。另一方面,程序的執(zhí)行必須嚴(yán)格按照指令發(fā)出的順序執(zhí)行,否則將不能到達(dá)目的地。計(jì)算機(jī)執(zhí)行程序的過(guò)程與這個(gè)游戲類(lèi)似。我們先來(lái)看一下程序在計(jì)算機(jī)上執(zhí)行的原理。計(jì)算機(jī)硬件只能按部就班的執(zhí)行指令,計(jì)算機(jī)要想工作必須通過(guò)執(zhí)行程序來(lái)實(shí)現(xiàn)。在這里,計(jì)算機(jī)就是命令接收者,而程序就是我們向計(jì)算機(jī)發(fā)送的指令序列。計(jì)算機(jī)通過(guò)逐條執(zhí)行程序中定義的計(jì)算機(jī)能夠識(shí)別的指令來(lái)完成規(guī)定的任務(wù)。另外,類(lèi)似于人類(lèi)能夠理解的指令有限,計(jì)算機(jī)能夠識(shí)別的指令也是有限的(比人類(lèi)能理解的要少很多)。因此,程序必須由計(jì)算機(jī)能夠識(shí)別的指令組成。1.2程序設(shè)計(jì)語(yǔ)言語(yǔ)言就廣義而言,是一套共同采用的溝通符號(hào)、表達(dá)方式與處理規(guī)則。人類(lèi)溝通所使用的語(yǔ)言稱(chēng)為自然語(yǔ)言。程序設(shè)計(jì)語(yǔ)言是程序員與計(jì)算機(jī)交流的主要工具。程序員采用某種特定的程序設(shè)計(jì)語(yǔ)言編寫(xiě)程序,計(jì)算機(jī)執(zhí)行程序以完成規(guī)定的任務(wù)。目前世界上已知現(xiàn)存的語(yǔ)言大約有3000多種,而程序設(shè)計(jì)語(yǔ)言的種類(lèi)也多種多樣。從程序設(shè)計(jì)語(yǔ)言的發(fā)展來(lái)看,程序設(shè)計(jì)語(yǔ)言分為低級(jí)語(yǔ)言和高級(jí)語(yǔ)言?xún)纱箢?lèi)。低級(jí)語(yǔ)言又分為機(jī)器語(yǔ)言與匯編語(yǔ)言。程序設(shè)計(jì)語(yǔ)言——機(jī)器語(yǔ)言機(jī)器語(yǔ)言是機(jī)器指令的集合。機(jī)器指令就是計(jì)算機(jī)能夠直接識(shí)別并執(zhí)行的指令。計(jì)算機(jī)的機(jī)器指令是一個(gè)二進(jìn)制編碼。如應(yīng)用8086CPU完成計(jì)算s=768+12288-1280的三條機(jī)器指令如下:110001假如將程序錯(cuò)寫(xiě)成如下形式,請(qǐng)你找出錯(cuò)誤。110001程序設(shè)計(jì)語(yǔ)言——匯編語(yǔ)言匯編語(yǔ)言是匯編指令的集合。匯編語(yǔ)言與機(jī)器語(yǔ)言的區(qū)別在于指令的表示方法。機(jī)器語(yǔ)言是面向計(jì)算機(jī)的語(yǔ)言,采用二進(jìn)制的形式。而匯編指令則是面向程序員的語(yǔ)言,它采用了類(lèi)似于人類(lèi)所使用的自然語(yǔ)言的語(yǔ)法來(lái)表示這些指令,從而便于程序員閱讀和記憶。例如:將寄存器BX的內(nèi)容傳送到寄存器AX的機(jī)器指令是:11000,而對(duì)應(yīng)的匯編指令則為:movax,bx。需要說(shuō)明的是,計(jì)算機(jī)只能夠識(shí)別機(jī)器指令,因此需要將采用匯編語(yǔ)言編寫(xiě)的程序翻譯成計(jì)算機(jī)能夠識(shí)別的指令序列,這一工作的由稱(chēng)為“匯編程序”的專(zhuān)門(mén)程序完成。程序設(shè)計(jì)語(yǔ)言——高級(jí)語(yǔ)言匯編指令與機(jī)器指令基本上是一一對(duì)應(yīng),它的執(zhí)行同機(jī)器語(yǔ)言一樣受硬件底層平臺(tái)的限制。更重要的是,用一條條指令實(shí)現(xiàn)一個(gè)程序的編寫(xiě)過(guò)于繁瑣。高級(jí)語(yǔ)言是對(duì)匯編語(yǔ)言的進(jìn)一步抽象,它更接近于人類(lèi)使用的自然語(yǔ)言,同時(shí)又不依賴(lài)于計(jì)算機(jī)硬件,編出的程序能在不同體系結(jié)構(gòu)的計(jì)算機(jī)上執(zhí)行。例如,求兩個(gè)數(shù)的最大值的C語(yǔ)言代碼如下所示:if(a>b) max=a;else max=b;高級(jí)語(yǔ)言更接近于人類(lèi)的自然語(yǔ)言描述。但需要注意,計(jì)算機(jī)能識(shí)別的只有機(jī)器語(yǔ)言,因此用高級(jí)語(yǔ)言編寫(xiě)的程序也需要經(jīng)過(guò)專(zhuān)門(mén)的編譯器程序翻譯成機(jī)器指令才能在計(jì)算機(jī)上執(zhí)行。1.3C語(yǔ)言程序C語(yǔ)言是目前世界上普遍流行、使用最廣泛的高級(jí)程序設(shè)計(jì)語(yǔ)言之一。鑒于C語(yǔ)言在對(duì)底層硬件操作方面的優(yōu)勢(shì),C語(yǔ)言廣泛應(yīng)用于操作系統(tǒng)(如Windows、Linux、Unix操作系統(tǒng))、工業(yè)控制等軟件的開(kāi)發(fā);另外,C語(yǔ)言具有繪圖能力強(qiáng),可移植性好的特點(diǎn),并具備很強(qiáng)的數(shù)據(jù)處理能力,因此也適用于二維、三維圖形動(dòng)畫(huà)軟件(如3D游戲)的開(kāi)發(fā)。第一個(gè)C語(yǔ)言程序在屏幕上輸出以下內(nèi)容:Hello,World!/*輸出”hello,World!”的簡(jiǎn)單C程序*/#include<stdio.h>voidmain(){ printf(“Hello,World!\n”);/*調(diào)用格式化輸出函數(shù)*/}C語(yǔ)言程序嚴(yán)格區(qū)分代碼的大小寫(xiě)形式。例如在上述程序代碼中,main不能寫(xiě)成MAIN、Main等形式。注釋程序中,“/*”和“*/”之間包含的內(nèi)容屬于注釋?zhuān)?*”表示注釋的開(kāi)始,“*/”表示注釋的結(jié)束。注釋可以單獨(dú)占一行,也可以和程序中的其它代碼放在一行,并且注釋可以占多行。注釋一般分為序言性注釋和功能性注釋。為程序適當(dāng)增加一些注釋是一種良好的程序設(shè)計(jì)習(xí)慣。注釋可以提高程序的可讀性,同時(shí)便于程序的維護(hù)。注釋不影響程序的執(zhí)行,注釋只存在于源程序中,源程序在編譯時(shí),編譯器會(huì)忽略注釋?zhuān)傻哪繕?biāo)程序中不包含這些注釋。關(guān)鍵字上述程序中的include、void、main是C語(yǔ)言的關(guān)鍵字,關(guān)鍵字是被C語(yǔ)言本身所使用的,具有特殊含義和功能的詞匯,不能被用作其他用途。注意C語(yǔ)言中的關(guān)鍵字全部使用小寫(xiě)形式。1.3.3預(yù)處理命令程序代碼中的“#include<stdio.h>”是一個(gè)預(yù)處理命令。預(yù)處理命令均以“#”符號(hào)開(kāi)始,并且每個(gè)預(yù)處理命令要獨(dú)占一行。include表示命令名,稱(chēng)為文件包含命令。“#include<stdio.h>”用于告訴編譯器本程序要將一個(gè)叫做“stdio.h”的文件內(nèi)容包含進(jìn)來(lái)。“stdio.h”(stdio即為standardinputoutput的縮寫(xiě))是C語(yǔ)言標(biāo)準(zhǔn)函數(shù)庫(kù)中定義的一個(gè)頭文件,由于C語(yǔ)言中的輸入輸出操作均由已在標(biāo)準(zhǔn)函數(shù)庫(kù)中定義的輸入輸出函數(shù)來(lái)實(shí)現(xiàn),而在stdio.h文件中包含了這些輸入輸出函數(shù)的說(shuō)明信息。因此包含了該頭文件的內(nèi)容后,我們便可在程序中直接使用這些輸入輸出函數(shù)。函數(shù)程序中的其它代碼給出了main函數(shù)的定義,main是函數(shù)名,可稱(chēng)為主函數(shù)。函數(shù)(function)是用來(lái)構(gòu)建C語(yǔ)言程序的模塊,是C語(yǔ)言程序的基本組成單位。通過(guò)使用函數(shù)可以降低程序開(kāi)發(fā)的難度,并讓程序具有良好的結(jié)構(gòu)。函數(shù)的概念來(lái)自于了數(shù)學(xué)。在數(shù)學(xué)中,假定函數(shù)f,g的定義如下:f(x)=x3g(x,y)=f(x)+3y+1其中,f,g稱(chēng)為函數(shù)名,x,y稱(chēng)為函數(shù)的自變量(在程序設(shè)計(jì)中稱(chēng)為函數(shù)的參數(shù))。f(x)、g(x,y)的定義給出了通過(guò)自變量計(jì)算函數(shù)值的方法。另外可以看出,函數(shù)g(x,y)中調(diào)用了函數(shù)f(x),即在進(jìn)行g(shù)(x,y)的計(jì)算時(shí),x3的計(jì)算交由f(x)完成。C語(yǔ)言中的函數(shù)與數(shù)學(xué)中的函數(shù)有相似之處,也包括函數(shù)名、參數(shù)以及具體操作的定義。程序中main函數(shù)的定義可以分為兩部分,函數(shù)首部和函數(shù)體。函數(shù)首部依次給出函數(shù)類(lèi)型、函數(shù)名稱(chēng)和函數(shù)參數(shù)定義,參數(shù)定義放在函數(shù)名后的一對(duì)小括號(hào)中。函數(shù)體放在一對(duì)大括號(hào)中,其中可以包含一系列的語(yǔ)句,這些語(yǔ)句給出了函數(shù)執(zhí)行的操作。和數(shù)學(xué)函數(shù)不同的是,C語(yǔ)言的函數(shù)可以有確定的計(jì)算結(jié)果,也可以沒(méi)有,對(duì)于沒(méi)有明確計(jì)算結(jié)果的函數(shù)應(yīng)將其類(lèi)型指定為void。另外,C語(yǔ)言函數(shù)可以有參數(shù),也可以沒(méi)有參數(shù),對(duì)于沒(méi)有參數(shù)的函數(shù),其參數(shù)定義可以為空白,但函數(shù)名后的一對(duì)小括號(hào)不能省略。main函數(shù)是C語(yǔ)言程序中的一個(gè)特殊函數(shù),每個(gè)程序必須而且只能包含一個(gè)main函數(shù),它代表程序運(yùn)行時(shí)的入口。程序運(yùn)行時(shí),首先找到main函數(shù),然后依次執(zhí)行main函數(shù)中包含的每條語(yǔ)句,直到main函數(shù)的結(jié)束。每個(gè)函數(shù)(包括用戶(hù)自定義函數(shù)和系統(tǒng)定義函數(shù))都用于實(shí)現(xiàn)某一特定的功能,并且可以相互調(diào)用。調(diào)用函數(shù)時(shí),只需要使用函數(shù)名加上小括號(hào)括起來(lái)的參數(shù)即可。main函數(shù)可以調(diào)用了其它函數(shù),從而將一部分工作交給其它函數(shù)完成,被調(diào)用的函數(shù)執(zhí)行完成后將返回main函數(shù),main函數(shù)繼續(xù)執(zhí)行直到程序結(jié)束。我們?cè)诔绦蛑惺褂玫暮瘮?shù)可以分為兩類(lèi),一類(lèi)是我們?yōu)榱藢?shí)現(xiàn)某個(gè)功能自己編寫(xiě)的函數(shù),通常稱(chēng)為自定義函數(shù);另一類(lèi)是由我們使用的編譯器提供的函數(shù)庫(kù)中的函數(shù),通常稱(chēng)為庫(kù)函數(shù)。語(yǔ)句C語(yǔ)言中的語(yǔ)句是程序執(zhí)行時(shí)向計(jì)算機(jī)發(fā)出的指令,語(yǔ)句給出了計(jì)算機(jī)要執(zhí)行的操作。預(yù)處理命令、變量定義等內(nèi)容不算作語(yǔ)句。語(yǔ)句出現(xiàn)在函數(shù)體內(nèi),一個(gè)函數(shù)的執(zhí)行過(guò)程就是依次執(zhí)行函數(shù)體內(nèi)語(yǔ)句的過(guò)程,這些語(yǔ)句實(shí)現(xiàn)了函數(shù)的功能。 printf(“Hello,World!\n”);這是一個(gè)函數(shù)調(diào)用語(yǔ)句,該語(yǔ)句執(zhí)行時(shí),main函數(shù)將調(diào)用printf函數(shù),參數(shù)是一個(gè)字符串“Hello,World!\n”,printf函數(shù)將完成在顯示器上輸出該字符串,然后返回main函數(shù)。語(yǔ)句必須以分號(hào)結(jié)束。在C語(yǔ)言程序中,一個(gè)語(yǔ)句可以獨(dú)占一行,也可以占用多行,多個(gè)語(yǔ)句也可以放在一行中,因此分號(hào)是語(yǔ)句結(jié)束的唯一標(biāo)志。1.4編寫(xiě)和運(yùn)行C程序本書(shū)的編程與討論均基于VisualC++6.0(簡(jiǎn)稱(chēng)VC6.0)編譯系統(tǒng)。VC

6.0不僅是一個(gè)編譯器,而且是一個(gè)基于Windows操作系統(tǒng)的可視化集成開(kāi)發(fā)環(huán)境(integrateddevelopmentenvironment,IDE)。我們可以在VC6.0內(nèi)編輯程序、編譯程序、運(yùn)行程序以及調(diào)試程序。編寫(xiě)和運(yùn)行C程序的步驟(1)啟動(dòng)和運(yùn)行VC6.0,通過(guò)單擊【開(kāi)始】菜單->【程序】->【MicrosoftVisualStudio6.0】->【MicrosoftVisualC++6.0】啟動(dòng)。編寫(xiě)和運(yùn)行C程序的步驟(2)單擊文件菜單下的【新建】子菜單,打開(kāi)新建對(duì)話框。編寫(xiě)和運(yùn)行C程序的步驟(3)單擊對(duì)話框上方的【文件】標(biāo)簽,在左邊選擇文件類(lèi)型為【C++SourceFile】,在右邊文件名輸入框中輸入程序的文件名(由于C程序源文件的擴(kuò)展名為.c,因此文件名后不要忘了加.c擴(kuò)展名);在位置輸入框中給出程序源文件的存放位置。然后單擊確定按鈕。編寫(xiě)和運(yùn)行C程序的步驟(4)輸入程序、編輯程序。編輯程序完畢后單擊“構(gòu)造”按鈕(或按F7快捷鍵)。編寫(xiě)和運(yùn)行C程序的步驟(5)單擊構(gòu)造按鈕后會(huì)彈出提示對(duì)話框。對(duì)話框的內(nèi)容為:“Thisbuildcommandrequiresanactiveprojectworkspace.Wouldyouliketocreateadefaultprojectworkspace?”。意思是說(shuō)構(gòu)造命令需要一個(gè)活動(dòng)的工程,你是否愿意創(chuàng)建一個(gè)默認(rèn)的工程工作區(qū)。為了保證程序的正常編譯,我們需要選擇“是”。編寫(xiě)和運(yùn)行C程序的步驟(6)編譯完成后,如果程序編譯成功,在下方輸出區(qū)會(huì)提示“0errors,0warnings”。如果程序有錯(cuò)誤,下方輸出區(qū)會(huì)顯示錯(cuò)誤的個(gè)數(shù),并給出相應(yīng)的錯(cuò)誤提示。警告不是錯(cuò)誤,但有可能影響程序的正常運(yùn)行,因此也需要重視。查看錯(cuò)誤或提示信息可以通過(guò)快捷鍵F4快速定位。編寫(xiě)和運(yùn)行C程序的步驟(7)至此,程序的編譯和鏈接成功,生成了相應(yīng)的可執(zhí)行文件。通過(guò)單擊右上方的“!”按鈕(或按Ctrl+F5快捷鍵),可以運(yùn)行程序以查看結(jié)果。習(xí)題一、選擇題(1)以下敘述中錯(cuò)誤的()A)

C語(yǔ)言源程序經(jīng)編譯后生成后綴為.obj的目標(biāo)程序B)

C程序經(jīng)過(guò)編譯、連接步驟之后才能形成一個(gè)真正可執(zhí)行的二進(jìn)制機(jī)器指令文件C)用C語(yǔ)言編寫(xiě)的程序稱(chēng)為源程序,它以ASCII代碼形式存放在一個(gè)文本文件中D)

C語(yǔ)言中的每條可執(zhí)行語(yǔ)句和非執(zhí)行語(yǔ)句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令

(2)以下敘述中錯(cuò)誤的是()

A)計(jì)算機(jī)不能直接執(zhí)行用C語(yǔ)言編寫(xiě)的源程序B)

C程序經(jīng)c編譯程序后,生成后綴為.obj的文件是一個(gè)二進(jìn)制文件C)后綴為.obj的文件,經(jīng)連接程序生成后綴為.exe的文件是一個(gè)二進(jìn)制文件D)后綴為.obj和.exe的二進(jìn)制文件都可以直接運(yùn)行(3)對(duì)于一個(gè)正常運(yùn)行的C程序,以下敘述中正確的是()A)程序的執(zhí)行總是從main函數(shù)開(kāi)始,在main函數(shù)結(jié)束B(niǎo))程序的執(zhí)行總是從程序的第一個(gè)函數(shù)開(kāi)始,在main函數(shù)結(jié)束C)程序的執(zhí)行總是從main函數(shù)開(kāi)始,在程序的最后一個(gè)函數(shù)中結(jié)束D)程序的執(zhí)行總是從程序中的第一個(gè)函數(shù)開(kāi)始,在程序的最后一個(gè)函數(shù)中結(jié)束(4)C語(yǔ)言源程序名的后綴是()A).exeB).CC).objD).cp(5)計(jì)算機(jī)能直接執(zhí)行的程序是()

A)源程序 B)目標(biāo)程序 C)匯編程序 D)可執(zhí)行程序(6

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論