版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1.1計(jì)算思維與程序設(shè)計(jì)語(yǔ)言
1.1.1
二進(jìn)制思維與程序設(shè)計(jì)語(yǔ)言的分類計(jì)算機(jī)系統(tǒng)采用二進(jìn)制來(lái)表示數(shù)值型信息。二進(jìn)制的每一位基值只有0和1,因易于電子器件實(shí)現(xiàn)而應(yīng)用于計(jì)算機(jī)系統(tǒng)。也就是說(shuō),計(jì)算機(jī)系統(tǒng)是0和1的世界,使用0和1表示數(shù)值,也表示邏輯(0為假,1為真),從而實(shí)現(xiàn)自動(dòng)化。0和1,以及邏輯運(yùn)算代表的二進(jìn)制思維是計(jì)算思維的基礎(chǔ)。因此,人類世界中的信息只有表示為0和1的組合,才能進(jìn)入計(jì)算機(jī)系統(tǒng)。早期的程序員就使用二進(jìn)制來(lái)編寫程序讓計(jì)算機(jī)執(zhí)行,
從而完成某種任務(wù)。
這種二進(jìn)制語(yǔ)言稱為機(jī)器語(yǔ)言。機(jī)器語(yǔ)言是機(jī)器指令的集合。機(jī)器指令就是計(jì)算機(jī)能夠直接識(shí)別并執(zhí)行的指令。計(jì)算機(jī)的機(jī)器指令是一個(gè)二進(jìn)制編碼。下一頁(yè)返回1.1計(jì)算思維與程序設(shè)計(jì)語(yǔ)言
例如,應(yīng)用8086CPU完成計(jì)算s=768+12288-1280的三條機(jī)器指令如下:101100000000000000000011000001010000000000110000001011010000000000000101假如將指令誤寫成以下形式,運(yùn)算將錯(cuò)誤。101100000000000000000011000001010000000000011000001011010000000000000101不難看出,用機(jī)器語(yǔ)言編寫程序是非常困難的。無(wú)論是記住這些二進(jìn)制編碼,還是找出其中的一些錯(cuò)誤,都非常麻煩。上一頁(yè)下一頁(yè)返回1.1計(jì)算思維與程序設(shè)計(jì)語(yǔ)言
早期的程序員們很快就發(fā)現(xiàn)了使用機(jī)器語(yǔ)言帶來(lái)的麻煩,于是,匯編語(yǔ)言產(chǎn)生了。匯編語(yǔ)言是匯編指令的集合。匯編指令采用了類似人類所使用的自然語(yǔ)言的語(yǔ)法來(lái)表示這些指令,從而便于程序員閱讀和記憶。例如,將寄存器BX的內(nèi)容傳送到寄存器AX的機(jī)器指令是“1000100111011000”,而對(duì)應(yīng)的匯編指令則為“MOVAX,BX”。很明顯,后者更便于程序員閱讀和記憶。由于計(jì)算機(jī)只能識(shí)別機(jī)器指令,因此需要將采用匯編語(yǔ)言編寫的程序翻譯成計(jì)算機(jī)能夠識(shí)別的指令序列,這一工作由專門程序來(lái)完成。匯編指令與機(jī)器指令基本上一一對(duì)應(yīng),
它的執(zhí)行與機(jī)器語(yǔ)言一樣受硬件底層平臺(tái)的限制。更重要的是,用多條指令實(shí)現(xiàn)一個(gè)程序的編寫過(guò)于煩瑣。于是,
高級(jí)語(yǔ)言產(chǎn)生了!高級(jí)語(yǔ)言是對(duì)匯編語(yǔ)言的進(jìn)一步抽象,它更接近于人類使用的自然語(yǔ)言,
同時(shí)又不依賴于計(jì)算機(jī)硬件,編出的程序能在不同體系結(jié)構(gòu)的計(jì)算機(jī)上執(zhí)行。上一頁(yè)下一頁(yè)返回1.1計(jì)算思維與程序設(shè)計(jì)語(yǔ)言
例如,求兩個(gè)數(shù)的最大值的C語(yǔ)言代碼如下所示:if(a>b)
max=a;
else
max=b;
可見(jiàn),高級(jí)語(yǔ)言更接近于人類的自然語(yǔ)言描述。但由于計(jì)算機(jī)只能識(shí)別機(jī)器語(yǔ)言,因此用高級(jí)語(yǔ)言編寫的程序也需要經(jīng)過(guò)專門的編譯器程序翻譯成機(jī)器指令,才能在計(jì)算機(jī)上執(zhí)行。綜上所述,程序員發(fā)現(xiàn)使用更接近于自然語(yǔ)言的高級(jí)語(yǔ)言更容易實(shí)現(xiàn)計(jì)算機(jī)軟件的設(shè)計(jì)與開發(fā),只需運(yùn)用計(jì)算思維來(lái)解決問(wèn)題,
而無(wú)須考慮計(jì)算機(jī)硬件平臺(tái)的要求與限制。上一頁(yè)下一頁(yè)返回1.1計(jì)算思維與程序設(shè)計(jì)語(yǔ)言
1.1.2
計(jì)算思維與程序設(shè)計(jì)以計(jì)算機(jī)學(xué)科為代表的計(jì)算思維又稱構(gòu)造思維,其以設(shè)計(jì)和構(gòu)造為特征,最本質(zhì)的內(nèi)容是抽象與自動(dòng)化。抽象與自動(dòng)化反映了計(jì)算的根本問(wèn)題,即什么能被有效地自動(dòng)進(jìn)行。程序是讓計(jì)算機(jī)自動(dòng)執(zhí)行的指令序列,數(shù)據(jù)、指令和程序是計(jì)算思維最基本的內(nèi)容,程序設(shè)計(jì)與構(gòu)造是一種計(jì)算思維。程序設(shè)計(jì)語(yǔ)言和計(jì)算思維相輔相成,語(yǔ)言是思維的體現(xiàn),思維是語(yǔ)言的載體。對(duì)于程序設(shè)計(jì)課程來(lái)說(shuō),學(xué)生應(yīng)掌握的編程能力是計(jì)算思維和技能化知識(shí)的綜合體,
實(shí)踐操作是對(duì)計(jì)算思維能力結(jié)果的一種驗(yàn)證。上一頁(yè)下一頁(yè)返回1.1計(jì)算思維與程序設(shè)計(jì)語(yǔ)言
1.1.
3
計(jì)算思維在C語(yǔ)言程序設(shè)計(jì)中的應(yīng)用C語(yǔ)言是一種面向過(guò)程的程序設(shè)計(jì)語(yǔ)言,是目前世界上普遍流行、使用非常廣泛的高級(jí)程序設(shè)計(jì)語(yǔ)言之一,由美國(guó)貝爾實(shí)驗(yàn)室的DennisMRitchie設(shè)計(jì)。當(dāng)前最新的C語(yǔ)言標(biāo)準(zhǔn)為C11,在它之前的C語(yǔ)言標(biāo)準(zhǔn)為C99。鑒于C語(yǔ)言對(duì)底層硬件操作方面的優(yōu)勢(shì),C語(yǔ)言廣泛應(yīng)用于操作系統(tǒng)(如Windows、Linux、UNIX等操作系統(tǒng))、工業(yè)控制等軟件的開發(fā)。另外,C語(yǔ)言具有繪圖能力強(qiáng)、可移植性好的特點(diǎn),并具備很強(qiáng)的數(shù)據(jù)處理能力,因此也適用于二維、三維圖形動(dòng)畫軟件的開發(fā)。計(jì)算思維是模型與算法相結(jié)合的思維過(guò)程,是抽象與自動(dòng)化實(shí)現(xiàn)的過(guò)程。在C語(yǔ)言程序設(shè)計(jì)中,先把待解決的問(wèn)題抽象成與其相應(yīng)的模型,然后確定算法,編寫程序求解問(wèn)題,最后由機(jī)器自動(dòng)執(zhí)行。上一頁(yè)下一頁(yè)返回1.1計(jì)算思維與程序設(shè)計(jì)語(yǔ)言
一個(gè)C語(yǔ)言程序的設(shè)計(jì)與構(gòu)造,首先將簡(jiǎn)單的語(yǔ)句組合成復(fù)雜的結(jié)構(gòu)化語(yǔ)句,進(jìn)而抽象為函數(shù),最后將多個(gè)函數(shù)組合為復(fù)雜的程序。函數(shù)機(jī)制有利于實(shí)現(xiàn)窮舉法、遞推法、遞歸法、回溯法、
迭代法、
分治法、
貪心法和動(dòng)態(tài)規(guī)劃法等典型算法,同時(shí)使程序更簡(jiǎn)短而清晰,有利于維護(hù),并提高代碼的重用性,
從而提高程序開發(fā)的效率。上一頁(yè)返回1.2C程序的基本結(jié)構(gòu)
先來(lái)看一個(gè)最小的C程序———helloc,
以此來(lái)了解C程序的基本結(jié)構(gòu)。
該程序能在屏幕上輸出以下內(nèi)容:可以看出,一個(gè)C程序由注釋、預(yù)處理命令和主程序組成,主程序由一組函數(shù)組成。每個(gè)程序至少有一個(gè)函數(shù),即主函數(shù)main。下一頁(yè)返回1.2C程序的基本結(jié)構(gòu)
1.2.1
注釋在helloc代碼清單的第一部分,
包含在“/?”
和“?/”之間的內(nèi)容屬于注釋。
注釋既可以單獨(dú)占一行,也可以和程序中的其他代碼在同一行。注釋可以占多行,稱為塊注釋。
在現(xiàn)在的編譯系統(tǒng)中,注釋也可以從“//”開始到本行結(jié)束,稱為行注釋。注釋是程序員用自然語(yǔ)言向其他程序員傳遞該程序的有關(guān)信息,不是真正執(zhí)行的語(yǔ)句,不影響程序的執(zhí)行。注釋一般分為序言性注釋和功能性注釋:(1)序言性注釋通常在程序的開始,
用于說(shuō)明程序的名稱、
功能、
設(shè)計(jì)思想、
版本、設(shè)計(jì)者等信息。(2)功能性注釋通常在程序代碼內(nèi)部,
用于說(shuō)明關(guān)鍵數(shù)據(jù)、
語(yǔ)句、
控制結(jié)構(gòu)的含義和作用。注釋能夠提高程序的可讀性,便于程序的維護(hù),為程序適當(dāng)增加一些注釋是一種良好的程序設(shè)計(jì)習(xí)慣。上一頁(yè)下一頁(yè)返回1.2C程序的基本結(jié)構(gòu)
1.2.2
預(yù)處理helloc代碼清單的第二部分是預(yù)處理命令。C語(yǔ)言的編譯分為預(yù)處理和編譯,先執(zhí)行預(yù)處理,再執(zhí)行編譯。預(yù)處理命令均以“?!狈?hào)開始,且每條預(yù)處理命令獨(dú)占一行。常用的預(yù)處理命令是庫(kù)包含。
“#include<stdioh>”
用于告訴編譯器,
本程序要將一個(gè)“stdioh”文件的內(nèi)容包含。“stdioh”(stdio即standardinputoutput的縮寫)是C語(yǔ)言標(biāo)準(zhǔn)輸入/輸出函數(shù)庫(kù)中定義的一個(gè)頭文件,包含了標(biāo)準(zhǔn)函數(shù)庫(kù)中定義的輸入/輸出函數(shù)的說(shuō)明信息。函數(shù)printf是標(biāo)準(zhǔn)函數(shù)庫(kù)stdio的輸出函數(shù),要想使用函數(shù)printf,就必須在預(yù)編譯階段包含此庫(kù)函數(shù)的頭文件stdioh。上一頁(yè)下一頁(yè)返回1.2C程序的基本結(jié)構(gòu)
1.2.3
主程序程序helloc的最后一部分是主程序,是算法的描述。C語(yǔ)言程序是由一個(gè)主函數(shù)main和若干子函數(shù)組成的。函數(shù)可以分為兩部分———函數(shù)首部和函數(shù)體。
函數(shù)的概念來(lái)自數(shù)學(xué)。
表1-1所示為C語(yǔ)言函數(shù)與數(shù)學(xué)函數(shù)的對(duì)比。在數(shù)學(xué)函數(shù)f(x)=x2+x+1中,f稱為函數(shù)名,x稱為函數(shù)的自變量,f(x)的定義給出了通過(guò)自變量計(jì)算函數(shù)值的方法。C語(yǔ)言函數(shù)定義與數(shù)學(xué)函數(shù)類似,
函數(shù)首部intmain()等同于數(shù)學(xué)函數(shù)中等號(hào)的左邊部分,
函數(shù)體等同于數(shù)學(xué)函數(shù)中等號(hào)的右邊部分。函數(shù)首部(函數(shù)頭)中的int表示函數(shù)的執(zhí)行結(jié)果是一個(gè)整數(shù),main是函數(shù)名,()中是函數(shù)的參數(shù),相當(dāng)于數(shù)學(xué)函數(shù)中的自變量。在本例中,函數(shù)沒(méi)有參數(shù),()中的內(nèi)容為空。上一頁(yè)下一頁(yè)返回1.2C程序的基本結(jié)構(gòu)
main函數(shù)是C語(yǔ)言程序中的一個(gè)特殊函數(shù),每個(gè)程序有且僅有main函數(shù),它代表程序運(yùn)行時(shí)的入口。程序運(yùn)行時(shí),首先找到main函數(shù),然后依次執(zhí)行main函數(shù)中包含的每條語(yǔ)句,直到main函數(shù)結(jié)束。除了main函數(shù)外,程序中使用的函數(shù)可以分為兩類:一類是我們?yōu)榱藢?shí)現(xiàn)某項(xiàng)功能而自己編寫的函數(shù),通常稱為“自定義函數(shù)”;另一類是由編譯器提供的函數(shù)庫(kù)中的函數(shù),通常稱為“庫(kù)函數(shù)”。上述程序中所使用的printf函數(shù)就是一個(gè)庫(kù)函數(shù)。函數(shù)體是實(shí)現(xiàn)如何從自變量得到函數(shù)值的過(guò)程,即算法的描述。C語(yǔ)言函數(shù)的定義部分被放在一對(duì)大括號(hào)中,可以包含一系列語(yǔ)句,這些語(yǔ)句給出了函數(shù)執(zhí)行的操作。在C語(yǔ)言程序中,分號(hào)是語(yǔ)句結(jié)束的唯一標(biāo)志;一條語(yǔ)句既可以獨(dú)占一行,也可以占用多行;多條語(yǔ)句可以放在同一行。上一頁(yè)下一頁(yè)返回1.2C程序的基本結(jié)構(gòu)
程序helloc包含以下兩條語(yǔ)句:(1)printf("Hello,World!\
n");函數(shù)printf用于格式化輸出到屏幕,在頭文件stdioh中聲明。(2)return0;return語(yǔ)句用于表示退出程序,0是函數(shù)的值。上述程序中的int、include、void、return是C語(yǔ)言的保留字,保留字又稱為關(guān)鍵字。每種程序設(shè)計(jì)語(yǔ)言都規(guī)定了自己的一套保留字。保留字是具有特殊含義和功能的詞匯,不能被用作其他用途。C語(yǔ)言有30多個(gè)保留字,全部使用小寫形式。后續(xù)章節(jié)將逐步介紹C語(yǔ)言的其他保留字。上一頁(yè)返回1.3C程序的編譯
使用任何文本編輯器都可以創(chuàng)建一個(gè)擴(kuò)展名為c的C程序文件,但要把C程序文件轉(zhuǎn)換為機(jī)器可以執(zhí)行的程序,則需要以下3個(gè)步驟:(1)預(yù)處理。
程序首先被送給預(yù)處理器。
預(yù)處理器執(zhí)行以#開頭的命令,
其功能類似編輯器,它既可以向程序添加內(nèi)容,也可以對(duì)程序進(jìn)行修改。(2)編譯。
修改后的程序可以進(jìn)入編譯器。
編譯器將程序翻譯成機(jī)器指令(即目標(biāo)代碼)。(3)連接。
連接器把編譯器產(chǎn)生的目標(biāo)代碼和所需的其他附加代碼整合,
產(chǎn)生完全可執(zhí)行的程序。這些附加代碼包括程序中用到的庫(kù)函數(shù)。上述工作煩瑣而復(fù)雜,幸運(yùn)的是,這些工作由現(xiàn)有的系統(tǒng)程序自動(dòng)實(shí)現(xiàn),無(wú)須用戶完成,這類系統(tǒng)程序一般稱為編譯器。現(xiàn)有的C語(yǔ)言編譯器多種多樣,接下來(lái)將簡(jiǎn)單介紹常用的幾種。下一頁(yè)返回1.3C程序的編譯
1.3.1
UNIX操作系統(tǒng)的CC編譯器在UNIX操作系統(tǒng)中,用于編譯和連接的程序稱為CC編譯器。為了編譯和連接程序helloc,需要在終端或命令行窗口中輸入下述命令:%cchelloc說(shuō)明:字符%為UNIX操作系統(tǒng)的提示符,無(wú)須輸入。在使用CC編譯器時(shí),系統(tǒng)會(huì)自動(dòng)進(jìn)行連接操作。在編譯和連接程序后,CC編譯器會(huì)把可執(zhí)行程序放到默認(rèn)名為aout的文件中。在UNIX系統(tǒng)中,
執(zhí)行如下命令可以把程序helloc生成的執(zhí)行文件命名為hello:%cc-ohellohelloc其中,-o選項(xiàng)允許為可執(zhí)行程序的文件選擇名字。上一頁(yè)下一頁(yè)返回1.3C程序的編譯
1.3.2
Linux操作系統(tǒng)的GCC編譯器在Linux操作系統(tǒng)中,
GCC(GNUCompilerCollection)編譯器是最流行的C程序編譯器之一,這種編譯器的使用與UNIX操作系統(tǒng)中的CC編譯器相似。例如,在Linux操作系統(tǒng)中,
執(zhí)行如下命令可以把程序helloc生成的執(zhí)行文件命名為hello:%gcc-ohellohelloc現(xiàn)在的GCC編譯器能夠編譯Ada、C、C++、Fortran、Java和Objective-C等多種語(yǔ)言。GCC編譯器不僅是開源的、免費(fèi)的,還能為多種不同的CPU生成代碼,所以GCC編譯器廣泛應(yīng)用于商業(yè)軟件開發(fā)。上一頁(yè)下一頁(yè)返回1.3C程序的編譯
1.3.3
Windows操作系統(tǒng)的集成開發(fā)環(huán)境在Windows操作系統(tǒng)中,
常用的編譯系統(tǒng)為集成開發(fā)環(huán)境(IntegratedDevelopmentEnvironment,IDE),即一個(gè)軟件包,集編輯、編譯、連接、執(zhí)行、調(diào)試于一體。在該環(huán)境中,既可以編輯c文件,也可以編譯c文件為可執(zhí)行文件。當(dāng)編譯器發(fā)現(xiàn)程序有錯(cuò)時(shí),它會(huì)在編輯器中把包含出錯(cuò)代碼的行突出顯示。上一頁(yè)下一頁(yè)返回1.3C程序的編譯
Windows操作系統(tǒng)的常用集成開發(fā)環(huán)境有:1
VisualC++60VisualC++60(簡(jiǎn)稱VisualC++、MSVC、VC++或VC)是Microsoft公司推出的以C++語(yǔ)言為基礎(chǔ)的Windows開發(fā)環(huán)境程序,是面向?qū)ο蟮目梢暬删幾g系統(tǒng)。C++語(yǔ)言全面兼容了C語(yǔ)言,此環(huán)境包含了C語(yǔ)言的編譯環(huán)境。由于VisualC++6
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《生活化教學(xué)在小學(xué)品德與社會(huì)課程中的教育評(píng)價(jià)研究方法實(shí)踐研究》教學(xué)研究課題報(bào)告
- 供應(yīng)鏈管理企業(yè)信息化管理制度
- KTV消防安全管理制度標(biāo)準(zhǔn)范本7篇
- 2026江西農(nóng)業(yè)大學(xué)校園建設(shè)處非全日制環(huán)衛(wèi)合同工招聘1人備考題庫(kù)完整參考答案詳解
- 2026年濱州無(wú)棣縣事業(yè)單位公開招聘人員備考題庫(kù)有完整答案詳解
- 2026吉林通化市集安市公益性崗位招聘54人備考題庫(kù)有答案詳解
- 2026安徽城市管理職業(yè)學(xué)院引進(jìn)高層次人才10人備考題庫(kù)及一套完整答案詳解
- 2026北京市環(huán)球時(shí)報(bào)新媒體部實(shí)習(xí)生招募備考題庫(kù)及答案詳解(新)
- 2026上海科技大學(xué)物質(zhì)科學(xué)與技術(shù)學(xué)院電鏡平臺(tái)招聘工程師1名備考題庫(kù)及完整答案詳解1套
- 2025恒豐銀行北京分行實(shí)習(xí)生招聘11人備考題庫(kù)及1套參考答案詳解
- 房地產(chǎn)項(xiàng)目回款策略與現(xiàn)金流管理
- 非連續(xù)性文本閱讀(中考試題20篇)-2024年中考語(yǔ)文重難點(diǎn)復(fù)習(xí)攻略(解析版)
- 《CAD的簡(jiǎn)介和作用》課件
- 畜禽糞污資源化利用培訓(xùn)
- 《搶救藥物知識(shí)》課件
- 建筑工程咨詢服務(wù)合同(標(biāo)準(zhǔn)版)
- 2024年4月自考05424現(xiàn)代設(shè)計(jì)史試題
- 綜合能源管理系統(tǒng)平臺(tái)方案設(shè)計(jì)及實(shí)施合集
- 甲苯磺酸奧馬環(huán)素片-藥品臨床應(yīng)用解讀
- 共享單車對(duì)城市交通的影響研究
- 監(jiān)理大綱(暗標(biāo))
評(píng)論
0/150
提交評(píng)論