一、計(jì)算機(jī)程序
程序:一個(gè)計(jì)算機(jī)程序是一系列指令的集合。
指令:每臺(tái)計(jì)算機(jī)都配有自己能執(zhí)行的一組指令,叫作指令系統(tǒng)。每條指令都對(duì)應(yīng)一串二進(jìn)制代碼,這些二進(jìn)制代碼就是機(jī)器語(yǔ)言。
計(jì)算機(jī)語(yǔ)言:有機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言三大類(lèi)。機(jī)器語(yǔ)言是計(jì)算機(jī)唯一能夠識(shí)別并能直接執(zhí)行的語(yǔ)言。
(1)機(jī)器語(yǔ)言:二進(jìn)制數(shù)字(0和1兩種符號(hào))構(gòu)成的語(yǔ)言。
?機(jī)器語(yǔ)言編寫(xiě)困難、可讀性差、可移植性差,但程序執(zhí)行效率最高,占用存儲(chǔ)空間最小。
(2)匯編語(yǔ)言:亦稱(chēng)符號(hào)語(yǔ)言,用助記符代替代替機(jī)器指令代碼的面向機(jī)器的語(yǔ)言。簡(jiǎn)化了編程過(guò)程。還是比較繁瑣費(fèi)時(shí),通用性差;但程序執(zhí)行效率較高,需要的存儲(chǔ)空間較小。
(3)高級(jí)語(yǔ)言:直觀、語(yǔ)言格式與自然語(yǔ)言相近的計(jì)算機(jī)語(yǔ)言??勺x性高,可移植性相對(duì)較高。執(zhí)行速度相對(duì)較慢,需要的存儲(chǔ)空間相對(duì)較大。
匯編:匯編程序(assembler)把匯編語(yǔ)言編寫(xiě)的程序轉(zhuǎn)換為可執(zhí)行的機(jī)器語(yǔ)言。
編譯:編譯程序(compiler)把高級(jí)編程語(yǔ)言編寫(xiě)的程序轉(zhuǎn)換為可執(zhí)行的機(jī)器語(yǔ)言。
執(zhí)行:編譯好的程序(即指令集合)從外部設(shè)備(如硬盤(pán)),被加載到計(jì)算機(jī)之內(nèi)(如內(nèi)存中),指令串行順序執(zhí)行,直到一條跳轉(zhuǎn)或轉(zhuǎn)移指令被執(zhí)行,或者一個(gè)中斷出現(xiàn)。
二、高級(jí)語(yǔ)言要素
以C語(yǔ)言為例,這里是面向過(guò)程的。
程序入口
如C程序的入口函數(shù)main函數(shù),程序的執(zhí)行從main函數(shù)開(kāi)始,對(duì)其他函數(shù)直接或間接地在main函數(shù)中被調(diào)用。而main函數(shù)則是被操作系統(tǒng)調(diào)用。
示例:
#include <stdio.h>
main(){
????printf("Hello World");
}
規(guī)范寫(xiě)法:
int main(void){}
int main(int argc,char *argv[]){}
int main(int argc,char **argv){}
標(biāo)識(shí)符
? ? 自定義的名稱(chēng)。如變量名、函數(shù)名。不可使用關(guān)鍵字,不能以數(shù)字開(kāi)頭。
數(shù)據(jù)類(lèi)型
? ? 為了對(duì)數(shù)據(jù)進(jìn)行描述的定義,是數(shù)據(jù)集合的劃分。不同類(lèi)型的數(shù)據(jù),其占用的內(nèi)存空間,以及其運(yùn)算在機(jī)器內(nèi)部的執(zhí)行方式是不一樣。
? ? C語(yǔ)言的數(shù)據(jù)類(lèi)型:基本類(lèi)型(short int long float double char)、構(gòu)造類(lèi)型(數(shù)組 struct union enum)、指針類(lèi)型、空類(lèi)型void。
常量
常量是一個(gè)右值,可以把右值賦給一個(gè)左值。
C語(yǔ)言中的常量包括字面量和用 const 定義的變量。
字面量常量,如整數(shù)常量、浮點(diǎn)常量、枚舉常量、字符常量
const常量,如const float PI=3.14f,這個(gè)PI 就是常量。
變量
變量是一段有名字的連續(xù)存儲(chǔ)空間。在源代碼中通過(guò)定義變量來(lái)申請(qǐng)并命名這樣的存儲(chǔ)空間,并通過(guò)變量的名字來(lái)使用這段存儲(chǔ)空間。變量具有名稱(chēng)、類(lèi)型和值。
變量名是變量在程序源代碼中的標(biāo)識(shí)。變量類(lèi)型確定它所代表的內(nèi)存的大小和類(lèi)型,變量值是指它所代表的內(nèi)存塊中的數(shù)據(jù)。
在程序的執(zhí)行過(guò)程中,變量的值可以發(fā)生變化。使用變量之前必須先聲明變量,即指定變量的類(lèi)型和名稱(chēng)。
表達(dá)式
由數(shù)字、算符、數(shù)字分組符號(hào)(括號(hào))、自由變量和約束變量等以能求得數(shù)值的有意義排列方法所得的組合。約束變量在表達(dá)式中已被指定數(shù)值,而自由變量則可以在表達(dá)式之外另行指定數(shù)值。
一個(gè)表達(dá)式代表一個(gè)函數(shù),其輸入為自由變量的定值,而其輸出則為表達(dá)式因子后所產(chǎn)生出的數(shù)值。
(1)算術(shù)表達(dá)式:又稱(chēng)為數(shù)值表達(dá)式,通過(guò)算術(shù)運(yùn)算符來(lái)進(jìn)行運(yùn)算的數(shù)學(xué)公式。
(2)邏輯表達(dá)式:結(jié)果為true或false
=(等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、<>(不等于)
NOT(非)、AND(與)、OR(或)
(3) 賦值表達(dá)式:將等號(hào)右邊的表達(dá)式結(jié)果賦值給等號(hào)左邊的變量
(4) 三元表達(dá)式
????表達(dá)式1?表達(dá)式2:表達(dá)式3
? ? 表達(dá)式1為true則返回表達(dá)式2,否則返回表達(dá)式3。
語(yǔ)句和語(yǔ)句塊
語(yǔ)句可以是以分號(hào)結(jié)尾的單行代碼,或者是語(yǔ)句塊中的一系列單行語(yǔ)句。
語(yǔ)句塊括在括號(hào){}中,并且可以包含嵌套塊。
程序所執(zhí)行的操作以“語(yǔ)句”表達(dá)。常見(jiàn)操作包括聲明變量、賦值、調(diào)用方法、循環(huán)訪問(wèn)集合,以及根據(jù)給定條件分支到一個(gè)或另一個(gè)代碼塊。
控制流
控制流是指按一定的順序排列程序元素來(lái)決定程序執(zhí)行的順序。
控制語(yǔ)句即用來(lái)實(shí)現(xiàn)對(duì)程序流程的選擇、循環(huán)、轉(zhuǎn)向和返回等進(jìn)行控制。C語(yǔ)言中共有9種控制語(yǔ)句,包括32個(gè)關(guān)鍵字,可以分為"選擇語(yǔ)句“,”循環(huán)語(yǔ)句“,”轉(zhuǎn)向語(yǔ)句“,”返回語(yǔ)句“四類(lèi)。
->選擇結(jié)構(gòu) if、if-else、if-else if ?switch-case
->循環(huán)結(jié)構(gòu)while、do-while ?for、foreach
->跳轉(zhuǎn)語(yǔ)句break、 continue、 goto(認(rèn)為禁用)
->返回語(yǔ)句 return
break跳過(guò)循環(huán)體的剩余部分直接退出結(jié)構(gòu)體或循環(huán)體
continue語(yǔ)句是跳過(guò)循環(huán)體的剩余部分而繼續(xù)下一次循環(huán),非循環(huán)體跳出往后執(zhí)行。
函數(shù)
函數(shù)是包含一系列語(yǔ)句的代碼塊,出于復(fù)用目的對(duì)語(yǔ)句或語(yǔ)句塊的封裝。
函數(shù)包含返回值、函數(shù)名稱(chēng)、參數(shù)及函數(shù)體。參數(shù)放在括號(hào)中,并用逗號(hào)隔開(kāi);空括號(hào)表示不需要參數(shù)。
通過(guò)函數(shù)名實(shí)現(xiàn)對(duì)函數(shù)的調(diào)用,以達(dá)到執(zhí)行函數(shù)體中代碼的效果。
調(diào)用函數(shù)時(shí)傳入?yún)?shù),相當(dāng)于為函數(shù)的執(zhí)行設(shè)置初始條件。
調(diào)用函數(shù)的語(yǔ)句可用一個(gè)變量來(lái)接收?qǐng)?zhí)行結(jié)果。void表示無(wú)返回值,不能用變量接收。