第1章 程序設(shè)計(jì)和C語言

1.1什么是計(jì)算機(jī)程序

程序,就是一組計(jì)算機(jī)能識別和執(zhí)行的指令运杭。每一條指令使計(jì)算機(jī)執(zhí)行特定的操作辆憔。只要讓計(jì)算機(jī)執(zhí)行這個(gè)程序虱咧,計(jì)算機(jī)就會(huì)“自動(dòng)地”執(zhí)行各條指令腕巡,有條不紊地進(jìn)行工作绘沉。

1.2什么是計(jì)算機(jī)語言

計(jì)算機(jī)語言——計(jì)算機(jī)和人都能識別的語言

計(jì)算機(jī)語言的發(fā)展階段:

機(jī)器語言?計(jì)算機(jī)工作基于二進(jìn)制豺总,從根本上說园欣,計(jì)算機(jī)智能識別和接受由0和1組成的指令。在計(jì)算機(jī)發(fā)展的初期赂弓,一般計(jì)算機(jī)的指令長度為156盈魁,即以16個(gè)二進(jìn)制數(shù)(0或1)組成一條指令杨耙,16個(gè)0和1可以組成各種排列組合珊膜。

這種計(jì)算機(jī)能直接識別和接受的二進(jìn)制代碼稱為機(jī)器指令(machine instruction)车柠。機(jī)器指令的集合就是該計(jì)算機(jī)的機(jī)器語言(machine language)竹祷。

???????? 顯然塑陵,機(jī)器語言與人們習(xí)慣用的語言差別太大令花,難學(xué)巍虫、難記、難檢查俯抖、難修改芬萍、難以推廣使用柬祠、難寫漫蛔。因此初期只有極少數(shù)的計(jì)算機(jī)專業(yè)人員會(huì)編寫計(jì)算機(jī)程序莽龟。


?符號語言?為了克服機(jī)器語言的上述缺點(diǎn)剃毒,人們創(chuàng)造出符號語言(symbolic language)搂赋,它用一些英文字母和數(shù)字表示一個(gè)指令基公,例如用ADD表示“加”酌媒,SUB代表“減”,LD代表“傳送”等掌挚。

顯然吠式,計(jì)算機(jī)并不能直接識別和執(zhí)行符號語言的指令特占,需要用一種稱為匯編程序的軟件是目,把符號語言的指令轉(zhuǎn)換為機(jī)器指令懊纳。一般嗤疯,一條符號語言的指令對應(yīng)轉(zhuǎn)換為一條機(jī)器指令。轉(zhuǎn)換的過程稱為:“代真”或“匯編”闺兢,因此茂缚,符號語言又稱為符號匯編語言(symbolic assembler language)或匯編語言(assembler language)。

???????? 雖然匯編語言比機(jī)器語言簡單好記一些,但仍然難以普及脚囊,只在專業(yè)人員中使用帖汞。

不同型號的計(jì)算機(jī)的機(jī)器語言和匯編語言是互不相通的。如凑术,用甲機(jī)器的機(jī)器語言編寫的程序在乙機(jī)器上不能使用翩蘸。機(jī)器語言和匯編語言是完全依賴于具體機(jī)器特性的,是面向機(jī)器的語言淮逊。由于它“貼近”計(jì)算機(jī)催首,或者說離計(jì)算機(jī)“很近”泄鹏,稱為計(jì)算機(jī)低級語言(low level language).

?高級語言?為了克服低級語言的缺點(diǎn)。創(chuàng)造出了高級語言。第一個(gè)高級語言為Fortran語言惜浅。

這種語言功能很強(qiáng)裸影,且不依賴于具體機(jī)器界轩,用它寫出的程序?qū)θ魏涡吞柕挠?jì)算機(jī)都是用(或只須作很少的修改)葫慎,它與具體機(jī)器距離較遠(yuǎn)艰额,故稱為計(jì)算機(jī)高級語言(high level language)祖搓。

當(dāng)然,計(jì)算機(jī)也是不能夠直接識別高級語言程序的该贾,也要進(jìn)行“翻譯”。用一種稱為編譯程序的軟件把用高級語言寫的程序(稱為源程序,source program)轉(zhuǎn)換為機(jī)器指令的程序(稱為目標(biāo)程序秩铆,object program)滚粟,然后當(dāng)計(jì)算機(jī)執(zhí)行機(jī)器指令程序亚侠,最后得到記過。高級語言的一個(gè)語句往往對應(yīng)多條機(jī)器指令爹凹。


???????? 高級語言也經(jīng)歷了不同的發(fā)展階段:

(1)???? 非結(jié)構(gòu)化語言颗管。早期的BASIC比吭、FORTRAN、ALGOL等都術(shù)語非結(jié)構(gòu)化語言匈仗。

(2)???? 結(jié)構(gòu)化語言坠韩。QBASIC焰望、FORTRAN77和C語言等捆姜。

(3)???? 面向?qū)ο笳Z言。C++、C#鸯檬、visual、Basic栖茉、和java等



關(guān)于怎么快速學(xué)C/C++娜饵,可以加下小編的C/C++學(xué)習(xí)企鵝群:【870+963+251】不管你是小白還是大牛隔节,小編我都?xì)g迎肉津,不定期分享干貨妹沙,歡迎初學(xué)和進(jìn)階中的小伙伴。每天晚上20:00都會(huì)開直播給大家分享C/C++游戲編程學(xué)習(xí)知識和路線方法,群里會(huì)不定期更新最新的教程和學(xué)習(xí)方法,最后祝所有程序員都能夠走上人生峰,讓代碼將夢想照進(jìn)現(xiàn)實(shí)



1.3 C語言的發(fā)展及其特點(diǎn)

C語言主要由以下一些主要特點(diǎn)歹啼;

1).語言簡潔升略、緊湊,使用方便东帅、靈活。

2).運(yùn)算符豐富

3).數(shù)據(jù)類型豐富

4).具有結(jié)構(gòu)化的控制語句

5).語法限制不太嚴(yán)格萄金,程序設(shè)計(jì)自由度大

6).C語言允許直接訪問物理地址蟀悦,能進(jìn)行位(bit)操作,能實(shí)現(xiàn)匯編語言的大部分功能氧敢,可以直接對硬件進(jìn)行操作

7).用C語言編寫的程序可移植性好

8).生成目標(biāo)代碼質(zhì)量高日戈,程序執(zhí)行效率高

1.4 最簡單的C語言程序


1.4.1?最簡單的C語言程序舉例

例袱箱,要求在屏幕上輸入以下一行信息

Hello world

編寫程序

?Hello.c


/*程序分析

#include <stdio.h>??

#include 編譯預(yù)處理指令席覆,把括號<>中的信息調(diào)入供使用

stdio.h 是系統(tǒng)提供的一個(gè)文件名

stdio是”standard Input & output“的縮寫

文件后綴.h的意思是頭文件(header file),因?yàn)檫@些文件都是放在程序個(gè)文件模塊的開頭

*/


說明:C語言允許兩種注釋方式:

1).以//開始的單行注釋碟嘴〉脑玻可以嵌套使用 //xxxx//yyy

2).以/*開始鼓拧,以*/結(jié)束的塊式注釋。不可以嵌套使用/*xxxxx/*yyyy*/zzzzz*/這是錯(cuò)誤的越妈,最后的*/會(huì)沒有匹配的/*季俩。

?

1.4.2 C語言程序的結(jié)構(gòu)

(1) 一個(gè)程序有一個(gè)或多個(gè)源程序文件組成。

在一個(gè)源程序文件中可以包括以下3部分:

①預(yù)處理文件

②全局聲明

③函數(shù)定義

(2) 函數(shù)是C語言的主要組成部分梅掠。

函數(shù)是C語言的基本單位酌住。編寫C語言的工作主要就是編寫一個(gè)個(gè)函數(shù),C語言的這種特點(diǎn)容易實(shí)現(xiàn)程序的模塊化阎抒。

(3) 一個(gè)函數(shù)包括兩個(gè)部分

①函數(shù)首部

?? int??? max?????? (int????????? x ,??????? int????????? ???y)

函數(shù)類型 函數(shù)名? 函數(shù)參數(shù)類型 函數(shù)參數(shù)名 函數(shù)參數(shù)類型 函數(shù)參數(shù)名

②函數(shù)體

函數(shù)體一般包括以下兩部分

·聲明部分

·執(zhí)行部分

(4) 程序總是從main開始執(zhí)行的

(5) 程序中對計(jì)算機(jī)的操作都是由函數(shù)中的C語言完成的酪我。

(6) 在每個(gè)數(shù)據(jù)聲明和語句的最后必須有一個(gè)分號

(7) C語言本身不提供輸入輸出語句

(8) 程序應(yīng)當(dāng)包含注釋



1.5 運(yùn)行C程序的步驟與方法

在編號一個(gè)C源程序后,怎樣上機(jī)進(jìn)行編譯和運(yùn)行呢且叁?一般要經(jīng)過以下幾個(gè)步驟:

(1)??? 上機(jī)輸入和編譯源程序

(2)??? 對源程序進(jìn)行編譯都哭,先用C編譯系統(tǒng)提供的“預(yù)處理器”(又稱“預(yù)處理程序”或“預(yù)編譯器”)對程序中的預(yù)處理指令進(jìn)行編譯預(yù)處理。

編譯的作用:首先是對源程序進(jìn)行檢查,判定它有無語法方面的錯(cuò)誤欺矫;若有纱新,則發(fā)出“出錯(cuò)信息error”。反復(fù)進(jìn)行穆趴,直到?jīng)]有無法錯(cuò)誤為止脸爱。

At(Attention):語法錯(cuò)誤能夠被檢查出來,不可以檢查出邏輯錯(cuò)誤未妹。

在用編譯系統(tǒng)對源程序進(jìn)行編譯時(shí)簿废,自動(dòng)包括了預(yù)編譯和正式編譯兩個(gè)階段。用戶不必分別發(fā)出二次指令络它。

(3)??? 進(jìn)行連接處理

必須把所有的編譯后得到的目標(biāo)模塊連接裝配起來族檬,再與函數(shù)庫相連接成一個(gè)整體,生成一個(gè)可供計(jì)算機(jī)執(zhí)行的目標(biāo)程序酪耕,稱為可執(zhí)行程序(executive program)导梆。

在Visual C++中其后綴為.exe,如f.exe

(4)??? 運(yùn)行可執(zhí)行程序,得到運(yùn)行結(jié)果迂烁。


1.6程序設(shè)計(jì)的任務(wù)

從確定問題到最后完成任務(wù)看尼,一般經(jīng)歷以下幾個(gè)工作階段:

(1)?問題分析

(2)?設(shè)計(jì)算法

(3)?編寫程序

(4)?對源程序進(jìn)行編輯、編譯和連接盟步,得到可執(zhí)行程序

(5)?運(yùn)行程序藏斩,分析結(jié)果

(6)?編寫程序文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市却盘,隨后出現(xiàn)的幾起案子狰域,更是在濱河造成了極大的恐慌,老刑警劉巖黄橘,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兆览,死亡現(xiàn)場離奇詭異,居然都是意外死亡塞关,警方通過查閱死者的電腦和手機(jī)抬探,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來帆赢,“玉大人小压,你說我怎么就攤上這事∫冢” “怎么了怠益?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瘾婿。 經(jīng)常有香客問我蜻牢,道長烤咧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任孩饼,我火速辦了婚禮髓削,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘镀娶。我一直安慰自己,他們只是感情好揪罕,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布梯码。 她就那樣靜靜地躺著,像睡著了一般好啰。 火紅的嫁衣襯著肌膚如雪轩娶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天框往,我揣著相機(jī)與錄音鳄抒,去河邊找鬼。 笑死椰弊,一個(gè)胖子當(dāng)著我的面吹牛许溅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播秉版,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼贤重,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了清焕?” 一聲冷哼從身側(cè)響起并蝗,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秸妥,沒想到半個(gè)月后滚停,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡粥惧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年键畴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片影晓。...
    茶點(diǎn)故事閱讀 40,561評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡镰吵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挂签,到底是詐尸還是另有隱情疤祭,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布饵婆,位于F島的核電站勺馆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜草穆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一灌灾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧悲柱,春花似錦锋喜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至涯冠,卻和暖如春炉奴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蛇更。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工瞻赶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人派任。 一個(gè)月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓砸逊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吨瞎。 傳聞我的和親對象是個(gè)殘疾皇子痹兜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 學(xué)完這課字旭,我真的覺得太及時(shí)了,反思崖叫,我到底有多久沒有讀完一整本書了遗淳,每次翻開就是第一面開始,然后又去做別的...
    有美媽閱讀 145評論 0 0
  • ▼ 時(shí)尚界的風(fēng)潮大抵是三十年一個(gè)輪回 原本土氣的喇叭褲在你未察覺的某一天突然流行养叛,紅配綠的“村感”猝不及防地出現(xiàn)在...
    住百家閱讀 363評論 0 1
  • 飲料分好多種各種各樣的,有的添加了色素宰翅,還有添加了糖喝了之后特甜弃甥,有的飲料是像水一樣的透明。還有的飲料是綠...
    45cbff51831c閱讀 2,750評論 3 4
  • 在敦煌的月牙泉小鎮(zhèn)汁讼,有一家何氏剪紙淆攻。 遠(yuǎn)近聞名阔墩。 店主是一個(gè)燙發(fā)的中年女子。人極淳樸瓶珊,憨厚啸箫。她叫何克鳳。人稱金剪子...
    東方地秀閱讀 418評論 2 1