- C語(yǔ)言程序設(shè)計(jì)
- 肖捷 侯家利
- 2165字
- 2019-09-30 13:11:30
1.1 程序與程序語(yǔ)言
1.1.1 程序的基本概念
程序的概念來(lái)源于日常生活,通常,完成一項(xiàng)復(fù)雜的任務(wù)需要分解成一系列的具體步驟。這些按一定的順序安排的具體步驟就是程序。例如,開(kāi)學(xué)典禮程序、聯(lián)歡晚會(huì)程序等。
隨著計(jì)算機(jī)的出現(xiàn)和發(fā)展,程序成了計(jì)算機(jī)的專(zhuān)有名詞,計(jì)算機(jī)都是在程序的控制下運(yùn)行的。所謂計(jì)算機(jī)程序,就是用計(jì)算機(jī)語(yǔ)言描述的解決某一問(wèn)題的一系列加工步驟,是符合一定語(yǔ)法規(guī)則的符號(hào)序列。程序設(shè)計(jì)就是借助計(jì)算機(jī)語(yǔ)言,告訴計(jì)算機(jī)要處理什么(即處理數(shù)據(jù))以及如何處理(即處理步驟)。執(zhí)行程序就是向計(jì)算機(jī)發(fā)出一系列指令,讓計(jì)算機(jī)按程序規(guī)定的步驟和要求解決特定問(wèn)題。
同一問(wèn)題有不同的解決方法,不同用戶(hù)編寫(xiě)的程序也并不完全相同。而且不同的程序有不同的效率,這就涉及程序的優(yōu)化,涉及程序所采用的數(shù)據(jù)結(jié)構(gòu)和算法等方面。
1.1.2 程序設(shè)計(jì)語(yǔ)言
程序設(shè)計(jì)離不開(kāi)程序設(shè)計(jì)語(yǔ)言。了解程序設(shè)計(jì)語(yǔ)言的發(fā)展過(guò)程,有助于讀者加深對(duì)程序設(shè)計(jì)語(yǔ)言的認(rèn)識(shí),使其能更好地利用程序設(shè)計(jì)語(yǔ)言解決實(shí)際問(wèn)題。
程序設(shè)計(jì)語(yǔ)言的發(fā)展很快,新的程序設(shè)計(jì)語(yǔ)言不斷出現(xiàn),功能也越來(lái)越強(qiáng)大。從其發(fā)展過(guò)程來(lái)看,程序設(shè)計(jì)語(yǔ)言的發(fā)展大致經(jīng)歷了以下幾個(gè)階段。
1.機(jī)器語(yǔ)言
所謂機(jī)器語(yǔ)言,就是指計(jì)算機(jī)能夠識(shí)別的指令集合,即指令系統(tǒng)。在機(jī)器語(yǔ)言中,每條指令都用二進(jìn)制0和1組成的序列來(lái)表示。例如,某計(jì)算機(jī)的加法指令為10000000,減法指令為10010000。不同類(lèi)型的計(jì)算機(jī),機(jī)器語(yǔ)言也不相同。
用機(jī)器語(yǔ)言編寫(xiě)的程序,計(jì)算機(jī)可以直接執(zhí)行,且執(zhí)行效率高,這是機(jī)器語(yǔ)言的優(yōu)點(diǎn)。但機(jī)器語(yǔ)言的指令不直觀,難認(rèn)、難記、難理解,容易出錯(cuò),編程缺乏通用性,編程人員需要查閱機(jī)器指令系統(tǒng),編程效率低。因此,目前很少直接用機(jī)器語(yǔ)言編寫(xiě)程序。
2.匯編語(yǔ)言
由于機(jī)器語(yǔ)言的編程效率低,為了減輕程序開(kāi)發(fā)人員的編程負(fù)擔(dān),開(kāi)始采用一些助記符號(hào)來(lái)表示機(jī)器語(yǔ)言中的機(jī)器指令,這樣便出現(xiàn)了匯編語(yǔ)言。助記符號(hào)一般采用代表某種操作的英文單詞縮寫(xiě),與機(jī)器語(yǔ)言相比,便于識(shí)別和記憶。例如,上述兩條加法指令和減法指令可以用助記符號(hào)ADD和SUB來(lái)表示。
用匯編語(yǔ)言編寫(xiě)的程序稱(chēng)為源程序,計(jì)算機(jī)不能直接執(zhí)行,必須經(jīng)過(guò)匯編程序翻譯成機(jī)器語(yǔ)言程序才能執(zhí)行。
對(duì)比機(jī)器語(yǔ)言,匯編語(yǔ)言指令和機(jī)器語(yǔ)言指令具有一一對(duì)應(yīng)關(guān)系,不同類(lèi)型的計(jì)算機(jī),其匯編語(yǔ)言也不盡相同,編程時(shí)仍需要熟悉機(jī)器的內(nèi)部結(jié)構(gòu),比較煩瑣。但相對(duì)機(jī)器語(yǔ)言而言,其編程效率有較大提高。在實(shí)際應(yīng)用中,如果對(duì)程序運(yùn)行時(shí)間比較嚴(yán)格,與硬件操作比較緊密,程序設(shè)計(jì)人員還是常用匯編語(yǔ)言編程來(lái)解決實(shí)際問(wèn)題的。
3.高級(jí)語(yǔ)言
機(jī)器語(yǔ)言和匯編語(yǔ)言都是面向機(jī)器的編程語(yǔ)言,同屬低級(jí)語(yǔ)言的范疇。主要缺點(diǎn)是編程效率低、需要熟悉機(jī)器硬件。為了克服低級(jí)語(yǔ)言的這一缺點(diǎn),提高程序設(shè)計(jì)人員的編程效率,出現(xiàn)了面向算法過(guò)程的程序設(shè)計(jì)語(yǔ)言,稱(chēng)為高級(jí)語(yǔ)言。例如,F(xiàn)ortran語(yǔ)言、Pascal語(yǔ)言、C語(yǔ)言等。
高級(jí)語(yǔ)言比較接近自然語(yǔ)言的形式,功能強(qiáng)大,一條語(yǔ)句相當(dāng)于多條匯編語(yǔ)言指令或機(jī)器語(yǔ)言指令。編程時(shí),不需要熟悉機(jī)器的內(nèi)部結(jié)構(gòu),編程人員可以把精力集中在研究問(wèn)題的求解方法上,大大降低了編程的難度,提高了編程的效率和質(zhì)量,而且設(shè)計(jì)的程序也更容易閱讀和理解。因此,在實(shí)際應(yīng)用中被廣泛用來(lái)解決實(shí)際問(wèn)題。
當(dāng)然,計(jì)算機(jī)也不能直接執(zhí)行高級(jí)語(yǔ)言源程序,必須經(jīng)過(guò)編譯和連接過(guò)程,將其翻譯成機(jī)器語(yǔ)言程序才能由計(jì)算機(jī)執(zhí)行。
4.面向任務(wù)的程序設(shè)計(jì)語(yǔ)言
高級(jí)語(yǔ)言是面向過(guò)程的編程語(yǔ)言,用高級(jí)語(yǔ)言編程求解一個(gè)復(fù)雜問(wèn)題,必須首先分析解題過(guò)程,描述問(wèn)題的求解算法,然后才能用高級(jí)語(yǔ)言編程實(shí)現(xiàn)。面向任務(wù)的程序設(shè)計(jì)語(yǔ)言是非過(guò)程化語(yǔ)言,無(wú)須知道問(wèn)題如何求解,只需描述求解什么問(wèn)題,便可編程實(shí)現(xiàn)。
數(shù)據(jù)庫(kù)語(yǔ)言便是一種面向任務(wù)的程序設(shè)計(jì)語(yǔ)言。例如,SQL Server是一種關(guān)系數(shù)據(jù)庫(kù)系統(tǒng),它提供了數(shù)據(jù)庫(kù)查詢(xún)語(yǔ)言(SQL),采用SQL提供的select語(yǔ)句,便可方便、快速地查詢(xún)出數(shù)據(jù)庫(kù)中的數(shù)據(jù)信息。例如,查詢(xún)語(yǔ)句select * from student where sex='男',其功能就是查詢(xún)學(xué)生信息表(student)中所有男性學(xué)生的全部信息。
由于面向任務(wù)的程序設(shè)計(jì)語(yǔ)言不僅大大降低了編程的復(fù)雜度,而且提高了應(yīng)用程序的開(kāi)發(fā)速度和質(zhì)量,使得編程工作不再是計(jì)算機(jī)專(zhuān)業(yè)人員的專(zhuān)利,許多非計(jì)算機(jī)專(zhuān)業(yè)人員也能很方便地使用面向任務(wù)的程序設(shè)計(jì)語(yǔ)言開(kāi)發(fā)自己的應(yīng)用程序。這類(lèi)語(yǔ)言被廣泛應(yīng)用在管理信息系統(tǒng)應(yīng)用軟件的開(kāi)發(fā)方面。
5.面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言
面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言于20世紀(jì)90年代開(kāi)始流行,目前已成為程序設(shè)計(jì)的主流語(yǔ)言。C++就是一種非常優(yōu)秀的面向?qū)ο蟮某绦蛘Z(yǔ)言,它是由C語(yǔ)言發(fā)展而來(lái)的。
面向?qū)ο蠓椒▽W(xué)是一種分析方法、設(shè)計(jì)方法和思維方法的綜合。它的出發(fā)點(diǎn)和所追求的基本目標(biāo)就是使人們分析、設(shè)計(jì)和實(shí)現(xiàn)一個(gè)系統(tǒng)的方法盡可能接近人們認(rèn)識(shí)一個(gè)系統(tǒng)的方法。
面向?qū)ο蟮木幊蹋绦虮豢闯上嗷f(xié)作的對(duì)象集合,每個(gè)對(duì)象都是某個(gè)類(lèi)的實(shí)例,所有的類(lèi)構(gòu)成一個(gè)通過(guò)繼承關(guān)系相聯(lián)系的層次結(jié)構(gòu)。面向?qū)ο蟪绦蛟O(shè)計(jì)就是針對(duì)客觀事物(對(duì)象)設(shè)計(jì)程序,與面向過(guò)程的編程方法相比,編程工作更加直觀、清晰,編程效率更高,更適合開(kāi)發(fā)大型復(fù)雜的軟件。
面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言通常具有類(lèi)的定義功能、對(duì)象的生成功能、消息傳遞機(jī)制和類(lèi)的繼承機(jī)制。目前,Java就是一種流行的、被廣泛應(yīng)用的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。
綜上所述,可以知道,每一種語(yǔ)言都有其優(yōu)點(diǎn)和不足,對(duì)于不同的問(wèn)題,需要根據(jù)實(shí)際情況來(lái)選擇程序設(shè)計(jì)語(yǔ)言,以便更加高效、更加優(yōu)質(zhì)地解決相關(guān)的問(wèn)題。
- Learn Type:Driven Development
- JavaScript從入門(mén)到精通(第3版)
- Unity 5.x By Example
- Mastering RStudio:Develop,Communicate,and Collaborate with R
- Building Serverless Applications with Python
- Learning Vaadin 7(Second Edition)
- Learning Unity 2D Game Development by Example
- Java EE核心技術(shù)與應(yīng)用
- C語(yǔ)言開(kāi)發(fā)基礎(chǔ)教程(Dev-C++)(第2版)
- Python語(yǔ)言實(shí)用教程
- Java語(yǔ)言程序設(shè)計(jì)教程
- PHP與MySQL權(quán)威指南
- Mastering Concurrency in Python
- 零基礎(chǔ)學(xué)Java第2版
- Access數(shù)據(jù)庫(kù)應(yīng)用教程(2010版)