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)?編寫程序文檔