- C語言程序設(shè)計與實踐(第3版)
- 謝滿德 凌云等編著
- 1929字
- 2024-05-10 13:55:19
1.2.3 程序設(shè)計和程序設(shè)計語言

第03講
程序設(shè)計是按指定要求編排計算機能識別的特定指令組合的過程,而程序設(shè)計語言是為方便人進行程序設(shè)計而提供的一種手段,是人與計算機交流的語言。程序設(shè)計語言隨著計算機技術(shù)的發(fā)展而不斷發(fā)展。
計算機能直接識別的是由“0”和“1”組成的二進制數(shù)——二進制是計算機語言的基礎(chǔ)。一開始,人們只能用計算機能直接理解的語言去命令計算機工作,即寫出一串串由“0”和“1”組成的指令序列交給計算機執(zhí)行,這種語言稱為機器語言。如圖1-2a所示,由“0”和“1”組成的一行數(shù)字序列對應(yīng)一條機器語言指令。用機器語言編寫的程序非常難以閱讀,使用機器語言編寫程序是一項十分痛苦的工作,特別是在程序有錯需要查找、修改時更是如此。而且,由于每臺計算機的指令系統(tǒng)往往各不相同,因此在一臺計算機上執(zhí)行的程序,要想在另一臺計算機上執(zhí)行,必須重新修改程序,這就造成了重復(fù)工作。所以,現(xiàn)在很少有人用機器語言直接寫程序。
為了減輕使用機器語言編程的痛苦,人們進行了一種有益的改進:用一些簡潔的英文字母、有一定含義的符號串來替代一個特定指令的二進制串,比如,用“ADD”代表加法,用“SUB”代表減法,用“MOV”代表數(shù)據(jù)傳遞等,這樣一來,人們很容易讀懂并理解程序在干什么,從而使得糾錯及維護都變得方便了,這種程序設(shè)計語言稱為匯編語言,即第二代計算機語言。圖1-2a給出的八條機器語言指令可用圖1-2b所示的八條匯編語言指令來對應(yīng),它們實現(xiàn)相同的功能。然而對于計算機而言,它只認識“0”和“1”組成的指令,并不認識這些符號,這就需要一個專門的程序來將這些符號翻譯成計算機能直接識別和理解的二進制數(shù)的機器語言,完成這種工作的程序被稱為匯編程序,它充當?shù)木褪欠g者的角色。匯編語言同樣十分依賴于機器硬件,其移植性不好,但效率很高。現(xiàn)代的桌面計算機,其功能已經(jīng)非常強大,效率已經(jīng)不是首要關(guān)注目標。所以,通常只有在資源受限的嵌入式環(huán)境或與硬件相關(guān)的程序設(shè)計(如驅(qū)動程序)過程中,匯編語言才會作為一種首選的軟件開發(fā)語言。

圖1-2 三種語言程序片段
雖然機器語言發(fā)展到匯編語言已經(jīng)有了很大的進步,但是由于每條指令完成的工作非常有限,因此編程過程仍然很煩瑣,語義表達仍然比較費力。于是,人們期望有更加方便、功能更加強大的高級編程語言。這種高級語言應(yīng)該接近于數(shù)學(xué)語言或人的自然語言,同時又不依賴于計算機硬件,編出的程序能在所有機器上通用。C語言就是一種能滿足這種要求的語言,它既有高級語言的通用性又有底層語言的高效性,展示出了強大的生命力,幾十年來一直被廣泛應(yīng)用。如圖1-2c所示,一條C語言語句可以對應(yīng)多條匯編或機器語言指令。許多高校也將C語言作為計算機專業(yè)和相關(guān)專業(yè)的重要必修課,作為高校在校學(xué)生接觸的第一門編程語言。同樣,計算機本身并不“認識”C語言程序,因此需要將C語言程序先翻譯成匯編程序,再將匯編程序翻譯成機器語言,這個過程往往由編譯程序來完成。
為了使程序設(shè)計更加接近自然語言的表達,方便用戶實現(xiàn)功能,包括C語言在內(nèi)的所有程序設(shè)計語言必須具有數(shù)據(jù)表達和數(shù)據(jù)處理(稱為控制)這兩方面的能力。
1.數(shù)據(jù)表達
為了充分有效地表達各種各樣的數(shù)據(jù),人們通常會對常見數(shù)據(jù)進行歸納總結(jié),確定其共性,最終盡可能地將所有數(shù)據(jù)抽象為若干種類型。數(shù)據(jù)類型(data type)就是對某些具有共同特點的數(shù)據(jù)集合的總稱。如常說的整數(shù)、實數(shù)就是數(shù)據(jù)類型的例子。
在程序設(shè)計語言中,一般都事先定義幾種基本的數(shù)據(jù)類型供程序員直接使用,如C語言中的整型、浮點型、字符型等。這些基本數(shù)據(jù)類型在程序中的具體對象主要有兩種形式:常量(constant)和變量(variable)。常量在程序中是不變的,例如,987是一個整型常量。對于變量,則可對其做一些相關(guān)的操作,例如,改變它的值。
同時,為了使程序員能更充分地表達各種復(fù)雜的數(shù)據(jù),C語言等程序設(shè)計語言還提供了豐富的構(gòu)造新數(shù)據(jù)類型的手段,如數(shù)組(array)、結(jié)構(gòu)(struct)、聯(lián)合(union)、文件(file)和指針(pointer)等。
2.數(shù)據(jù)處理的流程控制
高級程序設(shè)計語言除了能有效地表達各種各樣的數(shù)據(jù)外,還必須能對數(shù)據(jù)進行有效的處理,提供一種手段來表達數(shù)據(jù)處理的過程,即程序的控制過程。
一種比較典型的程序設(shè)計方法是:將復(fù)雜程序劃分為若干個相互獨立的模塊,使每個模塊的工作變得單一而明確,在設(shè)計一個模塊時不受其他模塊的影響。同時,通過現(xiàn)有模塊積木式地擴展又可以形成復(fù)雜的、更大的程序模塊或程序。這種程序設(shè)計方法就是結(jié)構(gòu)化程序設(shè)計方法,C語言就是典型的采用這種設(shè)計方法的語言。按照結(jié)構(gòu)化程序設(shè)計的觀點,任何程序都可以將模塊通過三種基本的控制結(jié)構(gòu)(順序、選擇和循環(huán))的組合來實現(xiàn)。
當要處理的問題比較復(fù)雜時,為了增強程序的可讀性和可維護性,常常將程序分為若干個相對獨立的子模塊,在C語言中,子模塊的實現(xiàn)通過函數(shù)完成。
- 中國政法大學(xué)801法理學(xué)原理歷年考研真題視頻講解【12小時高清視頻】
- 商業(yè)廣告攝影與后期教程
- 國際財務(wù)管理
- 信用原理概論
- 重金屬鉻堆存場地土壤-地下水污染控制與修復(fù)
- 企業(yè)財務(wù)會計
- 2020年貴州公務(wù)員錄用考試專項題庫:資料分析【歷年真題+章節(jié)題庫+模擬試題】
- 監(jiān)理工程師《建設(shè)工程監(jiān)理基本理論與相關(guān)法規(guī)》歷年真題與模擬試題詳解
- 陶藝設(shè)計與制作
- 政府經(jīng)濟職能研究
- 北京外國語大學(xué)811英語能力測試(寫作)歷年考研真題及詳解
- 政策法規(guī)教育讀本
- 線性代數(shù)
- 2019年北京市選聘高校畢業(yè)生到村任職考試《行政職業(yè)能力測驗》考點精講及典型題(含歷年真題)詳解
- 進出口貿(mào)易實務(wù)教程