第3章程序設(shè)計(jì)_第1頁(yè)
第3章程序設(shè)計(jì)_第2頁(yè)
第3章程序設(shè)計(jì)_第3頁(yè)
第3章程序設(shè)計(jì)_第4頁(yè)
第3章程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第3 3章章 程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言7/3/20222計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo)u了解計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言、編譯原理的基本知識(shí)。了解計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言、編譯原理的基本知識(shí)。u掌握程序的概念、高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容。掌握程序的概念、高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容。第第3 3章章 程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言7/3/20223計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論3.1 程序設(shè)計(jì)語(yǔ)言概述程序設(shè)計(jì)語(yǔ)言概述3.1.1 程序的概念程序的概念 程序就是能夠?qū)崿F(xiàn)特定功能的一組指令序列程序就是能夠?qū)崿F(xiàn)特定功能的一組指令序列的集合。其中,指令可以是機(jī)器指令、匯編語(yǔ)言的集合。其中,指令可以是機(jī)器指令、匯編語(yǔ)

2、言指令,也可以是高級(jí)語(yǔ)言的語(yǔ)句命令,甚至還可指令,也可以是高級(jí)語(yǔ)言的語(yǔ)句命令,甚至還可以是用自然語(yǔ)言描述的運(yùn)算、操作命令等以是用自然語(yǔ)言描述的運(yùn)算、操作命令等。7/3/20224計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論3.1.2 計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言 程序設(shè)計(jì)語(yǔ)言使得人們能夠與計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言使得人們能夠與計(jì)算機(jī)進(jìn)行交流,其種類(lèi)非常繁多,總來(lái)說(shuō)可以進(jìn)行交流,其種類(lèi)非常繁多,總來(lái)說(shuō)可以分為分為低級(jí)語(yǔ)言低級(jí)語(yǔ)言和和高級(jí)語(yǔ)言高級(jí)語(yǔ)言?xún)纱箢?lèi)。兩大類(lèi)。7/3/20225計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論u低級(jí)語(yǔ)言低級(jí)語(yǔ)言 低級(jí)語(yǔ)言包括兩種類(lèi)型:機(jī)器語(yǔ)言和匯編語(yǔ)言。低級(jí)語(yǔ)言包括兩種類(lèi)型:機(jī)器語(yǔ)言和匯編語(yǔ)言

3、。u (1) 機(jī)器語(yǔ)言機(jī)器語(yǔ)言 機(jī)器語(yǔ)言面向機(jī)器,可以由機(jī)器語(yǔ)言面向機(jī)器,可以由CPUCPU直接識(shí)別和執(zhí)行。直接識(shí)別和執(zhí)行。 不同的機(jī)器能夠識(shí)別的機(jī)器語(yǔ)言是不相同的。不同的機(jī)器能夠識(shí)別的機(jī)器語(yǔ)言是不相同的。 機(jī)器語(yǔ)言指令都是用一串機(jī)器語(yǔ)言指令都是用一串0 0、1 1構(gòu)成的二進(jìn)制位串來(lái)表示的。構(gòu)成的二進(jìn)制位串來(lái)表示的。 指令系統(tǒng)是機(jī)器提供的機(jī)器指令的集合指令系統(tǒng)是機(jī)器提供的機(jī)器指令的集合 用二進(jìn)制編碼表示的指令,稱(chēng)為機(jī)器指令,或稱(chēng)為機(jī)器碼。用二進(jìn)制編碼表示的指令,稱(chēng)為機(jī)器指令,或稱(chēng)為機(jī)器碼。 用機(jī)器指令編寫(xiě)的程序稱(chēng)為機(jī)器語(yǔ)言程序,或稱(chēng)為目標(biāo)程用機(jī)器指令編寫(xiě)的程序稱(chēng)為機(jī)器語(yǔ)言程序,或稱(chēng)為目標(biāo)程序,

4、這是計(jì)算機(jī)能夠直接執(zhí)行的程序。序,這是計(jì)算機(jī)能夠直接執(zhí)行的程序。 機(jī)器語(yǔ)言難以閱讀和理解,編寫(xiě)和修改都比較困難,而且機(jī)器語(yǔ)言難以閱讀和理解,編寫(xiě)和修改都比較困難,而且通用性較差。通用性較差。3.1.2 計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言7/3/20226計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論u(2) 匯編語(yǔ)言匯編語(yǔ)言 匯編語(yǔ)言也稱(chēng)符號(hào)語(yǔ)言。匯編語(yǔ)言也稱(chēng)符號(hào)語(yǔ)言。 指令助記符是指令英文名稱(chēng)的縮寫(xiě),容易記憶。指令助記符是指令英文名稱(chēng)的縮寫(xiě),容易記憶。 所謂匯編語(yǔ)言,就是采用字母、數(shù)字和符號(hào)來(lái)代替由一所謂匯編語(yǔ)言,就是采用字母、數(shù)字和符號(hào)來(lái)代替由一個(gè)個(gè)個(gè)個(gè)0和和1構(gòu)成的指令操作碼、寄存器、數(shù)據(jù)和存儲(chǔ)地址構(gòu)成

5、的指令操作碼、寄存器、數(shù)據(jù)和存儲(chǔ)地址等,并在程序中用它們代替二進(jìn)制編碼數(shù),這樣編寫(xiě)出等,并在程序中用它們代替二進(jìn)制編碼數(shù),這樣編寫(xiě)出來(lái)的程序就稱(chēng)為符號(hào)語(yǔ)言程序或匯編語(yǔ)言程序。來(lái)的程序就稱(chēng)為符號(hào)語(yǔ)言程序或匯編語(yǔ)言程序。 大多數(shù)情況下,一條匯編指令直接對(duì)應(yīng)一條機(jī)器指令,大多數(shù)情況下,一條匯編指令直接對(duì)應(yīng)一條機(jī)器指令,少數(shù)對(duì)應(yīng)幾條機(jī)器指令。少數(shù)對(duì)應(yīng)幾條機(jī)器指令。 匯編語(yǔ)言具有一個(gè)本質(zhì)上與機(jī)器語(yǔ)言一一對(duì)應(yīng)的指令匯編語(yǔ)言具有一個(gè)本質(zhì)上與機(jī)器語(yǔ)言一一對(duì)應(yīng)的指令系統(tǒng)。匯編語(yǔ)言的實(shí)質(zhì)和機(jī)器語(yǔ)言是相同的。系統(tǒng)。匯編語(yǔ)言的實(shí)質(zhì)和機(jī)器語(yǔ)言是相同的。3.1.2 計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言7/3/20227計(jì)

6、算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論u匯編匯編 雖然匯編語(yǔ)言比機(jī)器語(yǔ)言容易閱讀理解和便于檢查,所以雖然匯編語(yǔ)言比機(jī)器語(yǔ)言容易閱讀理解和便于檢查,所以仍然需要一種特殊的程序,該程序能夠?qū)⒂脜R編語(yǔ)言編寫(xiě)仍然需要一種特殊的程序,該程序能夠?qū)⒂脜R編語(yǔ)言編寫(xiě)的程序的程序“翻譯翻譯”成成CPU能夠識(shí)別的機(jī)器語(yǔ)言。能夠識(shí)別的機(jī)器語(yǔ)言。 實(shí)現(xiàn)這種翻譯功能的特殊程序稱(chēng)為實(shí)現(xiàn)這種翻譯功能的特殊程序稱(chēng)為匯編語(yǔ)言翻譯程序、匯匯編語(yǔ)言翻譯程序、匯編程序或匯編器編程序或匯編器。程序員手工編寫(xiě)的程序統(tǒng)稱(chēng)為。程序員手工編寫(xiě)的程序統(tǒng)稱(chēng)為源程序源程序,用匯編語(yǔ)言編寫(xiě)的源程序稱(chēng)為用匯編語(yǔ)言編寫(xiě)的源程序稱(chēng)為匯編語(yǔ)言源程序匯編語(yǔ)言源程序,匯編程

7、序,匯編程序?qū)⒃闯绦蚍g得到的機(jī)器語(yǔ)言程序稱(chēng)為將源程序翻譯得到的機(jī)器語(yǔ)言程序稱(chēng)為目標(biāo)程序目標(biāo)程序,翻譯的,翻譯的過(guò)程稱(chēng)為過(guò)程稱(chēng)為匯編匯編。3.1.2 計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言7/3/20228計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論 反匯編程序反匯編程序用于將目標(biāo)代碼程序轉(zhuǎn)換成相應(yīng)的匯編語(yǔ)言源用于將目標(biāo)代碼程序轉(zhuǎn)換成相應(yīng)的匯編語(yǔ)言源程序,這一過(guò)程稱(chēng)為反匯編。反匯編主要用于識(shí)別源程序程序,這一過(guò)程稱(chēng)為反匯編。反匯編主要用于識(shí)別源程序代碼,常用的調(diào)試工具程序代碼,常用的調(diào)試工具程序DEBUG就提供了反匯編功能就提供了反匯編功能。3.1.2 計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言7/3/20229計(jì)算

8、機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論u低級(jí)語(yǔ)言的特點(diǎn)低級(jí)語(yǔ)言的特點(diǎn)機(jī)器語(yǔ)言和匯編語(yǔ)言都是低級(jí)語(yǔ)言。它們具有許機(jī)器語(yǔ)言和匯編語(yǔ)言都是低級(jí)語(yǔ)言。它們具有許多相同的特征。多相同的特征。 都與特定的計(jì)算機(jī)硬件系統(tǒng)緊密相關(guān),來(lái)自于特定系都與特定的計(jì)算機(jī)硬件系統(tǒng)緊密相關(guān),來(lái)自于特定系統(tǒng)統(tǒng) 的指令系統(tǒng),可移植性差。的指令系統(tǒng),可移植性差。 對(duì)程序員專(zhuān)業(yè)知識(shí)要求高,要求對(duì)計(jì)算機(jī)硬件的結(jié)構(gòu)對(duì)程序員專(zhuān)業(yè)知識(shí)要求高,要求對(duì)計(jì)算機(jī)硬件的結(jié)構(gòu)和工作原理非常熟悉。和工作原理非常熟悉。 每條指令的功能比較單一,程序員編寫(xiě)源程序時(shí)指令每條指令的功能比較單一,程序員編寫(xiě)源程序時(shí)指令非常繁瑣。非常繁瑣。 由于直接針對(duì)特定硬件編程,所以最終的

9、可執(zhí)行代碼由于直接針對(duì)特定硬件編程,所以最終的可執(zhí)行代碼非常精煉,并且執(zhí)行效率高。非常精煉,并且執(zhí)行效率高。 兩者主要的區(qū)別在于:機(jī)器語(yǔ)言編寫(xiě)的程序無(wú)兩者主要的區(qū)別在于:機(jī)器語(yǔ)言編寫(xiě)的程序無(wú)需翻譯或編譯,需翻譯或編譯,CPU能夠直接識(shí)別和執(zhí)行。而匯編能夠直接識(shí)別和執(zhí)行。而匯編語(yǔ)言源程序必須經(jīng)過(guò)匯編才能得到目標(biāo)程序。語(yǔ)言源程序必須經(jīng)過(guò)匯編才能得到目標(biāo)程序。3.1.2 計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言7/3/202210計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論u高級(jí)語(yǔ)言高級(jí)語(yǔ)言 (1) 高級(jí)語(yǔ)言的產(chǎn)生高級(jí)語(yǔ)言的產(chǎn)生 一個(gè)問(wèn)題:如何解決程序的可移植性,即:程序員一個(gè)問(wèn)題:如何解決程序的可移植性,即:程序員編

10、寫(xiě)的源程序如何可以從一臺(tái)計(jì)算機(jī)很容易地轉(zhuǎn)到編寫(xiě)的源程序如何可以從一臺(tái)計(jì)算機(jī)很容易地轉(zhuǎn)到另一臺(tái)計(jì)算機(jī)上工作。為了解決這些問(wèn)題,人們引另一臺(tái)計(jì)算機(jī)上工作。為了解決這些問(wèn)題,人們引入了高級(jí)語(yǔ)言來(lái)編寫(xiě)程序。入了高級(jí)語(yǔ)言來(lái)編寫(xiě)程序。 所謂高級(jí)語(yǔ)言是一種由表達(dá)各種意義的所謂高級(jí)語(yǔ)言是一種由表達(dá)各種意義的“詞詞”和和“公式公式”,按照一定的,按照一定的“語(yǔ)法規(guī)則語(yǔ)法規(guī)則”來(lái)編寫(xiě)程序的來(lái)編寫(xiě)程序的語(yǔ)言,又稱(chēng)為程序設(shè)計(jì)語(yǔ)言或算法語(yǔ)言。語(yǔ)言,又稱(chēng)為程序設(shè)計(jì)語(yǔ)言或算法語(yǔ)言。 高級(jí)語(yǔ)言之所以高級(jí)語(yǔ)言之所以“高級(jí)高級(jí)”,就是因?yàn)樗钩绦騿T可,就是因?yàn)樗钩绦騿T可以完全不用與計(jì)算機(jī)的硬件打交道,可以不必了解以完全不用與計(jì)

11、算機(jī)的硬件打交道,可以不必了解機(jī)器的指令系統(tǒng)。機(jī)器的指令系統(tǒng)。 3.1.2 計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言7/3/202211計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論u(2) 高級(jí)語(yǔ)言的常見(jiàn)類(lèi)型高級(jí)語(yǔ)言的常見(jiàn)類(lèi)型 BASIC語(yǔ)言語(yǔ)言 FORTRAN語(yǔ)言語(yǔ)言 COBOL語(yǔ)言語(yǔ)言 PASCAL語(yǔ)言語(yǔ)言 C語(yǔ)言語(yǔ)言 C+和和C語(yǔ)言語(yǔ)言 其他高級(jí)語(yǔ)言其他高級(jí)語(yǔ)言 基于視窗類(lèi)操作系統(tǒng)的,如基于視窗類(lèi)操作系統(tǒng)的,如Visual Basic、Visual C+、Delphi、Power Builder、Java等等3.1.2 計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言7/3/202212計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論u高

12、級(jí)語(yǔ)言的優(yōu)點(diǎn)高級(jí)語(yǔ)言的優(yōu)點(diǎn): 語(yǔ)句的功能強(qiáng),程序員編寫(xiě)的源程序比較短,容易學(xué)語(yǔ)句的功能強(qiáng),程序員編寫(xiě)的源程序比較短,容易學(xué)習(xí),使用方便,可移植性較好,便于推廣和交流。習(xí),使用方便,可移植性較好,便于推廣和交流。u高級(jí)語(yǔ)言的缺點(diǎn)高級(jí)語(yǔ)言的缺點(diǎn): 編譯程序比匯編程序復(fù)雜,而且編譯出來(lái)的目標(biāo)程序編譯程序比匯編程序復(fù)雜,而且編譯出來(lái)的目標(biāo)程序往往效率不高,目標(biāo)程序的長(zhǎng)度比有經(jīng)驗(yàn)的程序員所往往效率不高,目標(biāo)程序的長(zhǎng)度比有經(jīng)驗(yàn)的程序員所編寫(xiě)的同樣功能的匯編語(yǔ)言程序要長(zhǎng)一半以上,運(yùn)行編寫(xiě)的同樣功能的匯編語(yǔ)言程序要長(zhǎng)一半以上,運(yùn)行時(shí)間也要長(zhǎng)一些。時(shí)間也要長(zhǎng)一些。 因此,在很多對(duì)時(shí)間要求比較高的系統(tǒng),如某些實(shí)時(shí)

13、因此,在很多對(duì)時(shí)間要求比較高的系統(tǒng),如某些實(shí)時(shí)控制系統(tǒng)或者大型計(jì)算機(jī)控制系統(tǒng)中,低級(jí)語(yǔ)言,主控制系統(tǒng)或者大型計(jì)算機(jī)控制系統(tǒng)中,低級(jí)語(yǔ)言,主要是匯編語(yǔ)言,仍然得到了一定的應(yīng)用。要是匯編語(yǔ)言,仍然得到了一定的應(yīng)用。3.1.2 計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言7/3/202213計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論3.1.3 高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容用高級(jí)語(yǔ)言編寫(xiě)的源程序能提高程序員的開(kāi)發(fā)效用高級(jí)語(yǔ)言編寫(xiě)的源程序能提高程序員的開(kāi)發(fā)效率,高級(jí)語(yǔ)言程序設(shè)計(jì)依賴(lài)于各自特定的語(yǔ)句和率,高級(jí)語(yǔ)言程序設(shè)計(jì)依賴(lài)于各自特定的語(yǔ)句和語(yǔ)法。語(yǔ)法。在高級(jí)語(yǔ)言中,語(yǔ)句是構(gòu)成源程序的基本單位。在高級(jí)語(yǔ)

14、言中,語(yǔ)句是構(gòu)成源程序的基本單位。7/3/202214計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論u 高級(jí)語(yǔ)言的共同特性高級(jí)語(yǔ)言的共同特性 1高級(jí)語(yǔ)言的基本符號(hào)高級(jí)語(yǔ)言的基本符號(hào) 高級(jí)語(yǔ)言的語(yǔ)法成分都是由基本符號(hào)組成的,基本符號(hào)高級(jí)語(yǔ)言的語(yǔ)法成分都是由基本符號(hào)組成的,基本符號(hào)可以分為單字符和多字符兩種。單字符基本符號(hào)由單個(gè)字符可以分為單字符和多字符兩種。單字符基本符號(hào)由單個(gè)字符組成,在高級(jí)語(yǔ)言中通常包括下列幾種單字符基本符號(hào)。組成,在高級(jí)語(yǔ)言中通常包括下列幾種單字符基本符號(hào)。字母:字母: 大寫(xiě)英文字母大寫(xiě)英文字母AZ,小寫(xiě)英文字母,小寫(xiě)英文字母az,共,共52個(gè)符號(hào)。個(gè)符號(hào)。數(shù)字:數(shù)字: 09,共,共10個(gè)數(shù)

15、字符號(hào)。個(gè)數(shù)字符號(hào)。 3.1.3 高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容7/3/202215計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論特殊字符特殊字符: + (加加)、- (減減)、* (乘乘)、/ (除除)、(乘方乘方)、= (等等號(hào)號(hào))、( (左括號(hào)左括號(hào))、) (右括號(hào)右括號(hào))、(大于大于)、(小小于于)、,、,(逗號(hào)逗號(hào))、 (空格空格)等。等。 多字符是由兩個(gè)或兩個(gè)以上的字符組成,如多字符是由兩個(gè)或兩個(gè)以上的字符組成,如GOTO(轉(zhuǎn)移轉(zhuǎn)移)、(小于或等于小于或等于)、AND(與與)等。等。3.1.3 高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容7/3/202216計(jì)算機(jī)科學(xué)導(dǎo)

16、論計(jì)算機(jī)科學(xué)導(dǎo)論u 高級(jí)語(yǔ)言的共同特性高級(jí)語(yǔ)言的共同特性2高級(jí)語(yǔ)言的基本元素高級(jí)語(yǔ)言的基本元素 基本元素由基本符號(hào)組成,可分為數(shù)、邏輯值、名基本元素由基本符號(hào)組成,可分為數(shù)、邏輯值、名字、標(biāo)號(hào)和字符串等字、標(biāo)號(hào)和字符串等5大類(lèi):大類(lèi): 數(shù)數(shù) 它由它由09共共10個(gè)基本數(shù)字和其他一些符號(hào)個(gè)基本數(shù)字和其他一些符號(hào)(如小數(shù)點(diǎn)如小數(shù)點(diǎn)“.”、正負(fù)號(hào)、正負(fù)號(hào)“、”及指數(shù)符號(hào)及指數(shù)符號(hào)“E”等所構(gòu)成。等所構(gòu)成。 邏輯值邏輯值由真由真(True)和假和假(False)兩個(gè)值構(gòu)成。兩個(gè)值構(gòu)成。3.1.3 高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容7/3/202217計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論 名字

17、名字 由字符組成,一般約定名字的開(kāi)頭是字母或者下劃由字符組成,一般約定名字的開(kāi)頭是字母或者下劃線,其后可為字母或數(shù)字,如線,其后可為字母或數(shù)字,如XYZ、A123、_C等。名等。名字可用來(lái)定義常量、變量、函數(shù)、過(guò)程或子程序的,也字可用來(lái)定義常量、變量、函數(shù)、過(guò)程或子程序的,也被用來(lái)定義成某些東西,故也稱(chēng)為標(biāo)識(shí)符。在高級(jí)語(yǔ)言被用來(lái)定義成某些東西,故也稱(chēng)為標(biāo)識(shí)符。在高級(jí)語(yǔ)言中,一般還規(guī)定了組成名字的字符的長(zhǎng)度,即字符個(gè)數(shù)。中,一般還規(guī)定了組成名字的字符的長(zhǎng)度,即字符個(gè)數(shù)。 標(biāo)號(hào)標(biāo)號(hào) 是在高級(jí)語(yǔ)言中的程序語(yǔ)句前所加的一個(gè)名字,主是在高級(jí)語(yǔ)言中的程序語(yǔ)句前所加的一個(gè)名字,主要用來(lái)指示程序可能的轉(zhuǎn)移方向

18、。要用來(lái)指示程序可能的轉(zhuǎn)移方向。 字符串字符串 由一串字符所組成。在不同的高級(jí)語(yǔ)言中,字符串由一串字符所組成。在不同的高級(jí)語(yǔ)言中,字符串中的多個(gè)字符放在一對(duì)單引號(hào)或雙引號(hào)中。中的多個(gè)字符放在一對(duì)單引號(hào)或雙引號(hào)中。3.1.3 高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容7/3/202218計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論u 高級(jí)語(yǔ)言的共同特性高級(jí)語(yǔ)言的共同特性3基本的數(shù)據(jù)類(lèi)型基本的數(shù)據(jù)類(lèi)型 任何一個(gè)計(jì)算機(jī)程序都不可能沒(méi)有數(shù)據(jù),數(shù)據(jù)是程序任何一個(gè)計(jì)算機(jī)程序都不可能沒(méi)有數(shù)據(jù),數(shù)據(jù)是程序操作的對(duì)象。通常,一種高級(jí)語(yǔ)言都會(huì)定義一些基本的數(shù)操作的對(duì)象。通常,一種高級(jí)語(yǔ)言都會(huì)定義一些基本的數(shù)據(jù)類(lèi)型,通常

19、包括整數(shù)類(lèi)型、實(shí)數(shù)類(lèi)型和字符類(lèi)型等。據(jù)類(lèi)型,通常包括整數(shù)類(lèi)型、實(shí)數(shù)類(lèi)型和字符類(lèi)型等。 高級(jí)語(yǔ)言中,在使用變量前,必須為每個(gè)變量分配所高級(jí)語(yǔ)言中,在使用變量前,必須為每個(gè)變量分配所需大小的內(nèi)存單元空間。因此,幾乎任何一種高級(jí)語(yǔ)言都需大小的內(nèi)存單元空間。因此,幾乎任何一種高級(jí)語(yǔ)言都要求變量必須先定義后使用。要求變量必須先定義后使用。3.1.3 高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容7/3/202219計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論u 高級(jí)語(yǔ)言的共同特性高級(jí)語(yǔ)言的共同特性 4結(jié)構(gòu)數(shù)據(jù)類(lèi)型結(jié)構(gòu)數(shù)據(jù)類(lèi)型 結(jié)構(gòu)數(shù)據(jù)類(lèi)型是在基本數(shù)據(jù)類(lèi)型的基礎(chǔ)上構(gòu)造出來(lái)的結(jié)構(gòu)數(shù)據(jù)類(lèi)型是在基本數(shù)據(jù)類(lèi)型的基礎(chǔ)上構(gòu)造出

20、來(lái)的數(shù)據(jù)類(lèi)型,數(shù)組和結(jié)構(gòu)體是大多數(shù)高級(jí)語(yǔ)言都支持的兩種數(shù)據(jù)類(lèi)型,數(shù)組和結(jié)構(gòu)體是大多數(shù)高級(jí)語(yǔ)言都支持的兩種最基本的結(jié)構(gòu)數(shù)據(jù)類(lèi)型:最基本的結(jié)構(gòu)數(shù)據(jù)類(lèi)型: 數(shù)組類(lèi)型數(shù)組類(lèi)型數(shù)組是若干個(gè)相同類(lèi)型數(shù)據(jù)的集合。數(shù)組是若干個(gè)相同類(lèi)型數(shù)據(jù)的集合。 用戶(hù)自定義的結(jié)構(gòu)體類(lèi)型。用戶(hù)自定義的結(jié)構(gòu)體類(lèi)型。結(jié)構(gòu)體是隸屬于同一個(gè)事物的多個(gè)不同類(lèi)型數(shù)據(jù)的集合,用來(lái)結(jié)構(gòu)體是隸屬于同一個(gè)事物的多個(gè)不同類(lèi)型數(shù)據(jù)的集合,用來(lái)表示具有若干個(gè)屬性的一個(gè)事物表示具有若干個(gè)屬性的一個(gè)事物除了以上兩種最基本的結(jié)構(gòu)數(shù)據(jù)類(lèi)型外,許多高級(jí)語(yǔ)言還有比除了以上兩種最基本的結(jié)構(gòu)數(shù)據(jù)類(lèi)型外,許多高級(jí)語(yǔ)言還有比如枚舉、集合,以及更復(fù)雜的隊(duì)列、堆棧等多種數(shù)據(jù)類(lèi)

21、型。如枚舉、集合,以及更復(fù)雜的隊(duì)列、堆棧等多種數(shù)據(jù)類(lèi)型。結(jié)構(gòu)數(shù)據(jù)類(lèi)型在使用時(shí)也必須定義相應(yīng)類(lèi)型的結(jié)構(gòu)數(shù)據(jù)類(lèi)型在使用時(shí)也必須定義相應(yīng)類(lèi)型的“變量變量”名字。名字。3.1.3 高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容7/3/202220計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論u高級(jí)語(yǔ)言的共同特性高級(jí)語(yǔ)言的共同特性 5運(yùn)算符與表達(dá)式運(yùn)算符與表達(dá)式 高級(jí)語(yǔ)言的表達(dá)式由基本符號(hào)、基本元素和各種數(shù)據(jù)高級(jí)語(yǔ)言的表達(dá)式由基本符號(hào)、基本元素和各種數(shù)據(jù)通過(guò)運(yùn)算符連接而成,運(yùn)算符大致包括以下幾類(lèi):通過(guò)運(yùn)算符連接而成,運(yùn)算符大致包括以下幾類(lèi): 邏輯運(yùn)算:與、或、非、異或等。邏輯運(yùn)算:與、或、非、異或等。 算術(shù)運(yùn)算:加

22、、減、乘、除、取模等。算術(shù)運(yùn)算:加、減、乘、除、取模等。 數(shù)據(jù)比較:大于、小于、等于、不等于等。數(shù)據(jù)比較:大于、小于、等于、不等于等。 數(shù)據(jù)傳送:輸入、輸出、賦值等。數(shù)據(jù)傳送:輸入、輸出、賦值等。 通過(guò)各種運(yùn)算符連接而得到的表達(dá)式有以下幾種類(lèi)型通過(guò)各種運(yùn)算符連接而得到的表達(dá)式有以下幾種類(lèi)型: 算術(shù)表達(dá)式:表達(dá)式的運(yùn)算結(jié)果是數(shù)值,非常近似于日常算術(shù)表達(dá)式:表達(dá)式的運(yùn)算結(jié)果是數(shù)值,非常近似于日常的數(shù)學(xué)計(jì)算公式。的數(shù)學(xué)計(jì)算公式。 關(guān)系運(yùn)算表達(dá)式:表達(dá)式的運(yùn)算結(jié)果是邏輯值。關(guān)系運(yùn)算表達(dá)式:表達(dá)式的運(yùn)算結(jié)果是邏輯值。 字符串表達(dá)式:表達(dá)式的運(yùn)算結(jié)果是字符串。字符串表達(dá)式:表達(dá)式的運(yùn)算結(jié)果是字符串。3.1

23、.3 高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容7/3/202221計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論 u高級(jí)語(yǔ)言的共同特性高級(jí)語(yǔ)言的共同特性 6語(yǔ)句語(yǔ)句 語(yǔ)句是構(gòu)成高級(jí)語(yǔ)言源程序的基本單位,是由基本元素、語(yǔ)句是構(gòu)成高級(jí)語(yǔ)言源程序的基本單位,是由基本元素、運(yùn)算符、表達(dá)式等組成。任何一種高級(jí)語(yǔ)言往往都支持賦運(yùn)算符、表達(dá)式等組成。任何一種高級(jí)語(yǔ)言往往都支持賦值、條件判斷、循環(huán)、輸入輸出等語(yǔ)句。程序員利用這些值、條件判斷、循環(huán)、輸入輸出等語(yǔ)句。程序員利用這些語(yǔ)句的結(jié)合,能夠很方便地編制出功能強(qiáng)大的程序。語(yǔ)句的結(jié)合,能夠很方便地編制出功能強(qiáng)大的程序。3.1.3 高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容高級(jí)語(yǔ)言程

24、序設(shè)計(jì)的基本內(nèi)容7/3/202222計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論 u高級(jí)語(yǔ)言的共同特性高級(jí)語(yǔ)言的共同特性 7庫(kù)函數(shù)和用戶(hù)自定義的函數(shù)庫(kù)函數(shù)和用戶(hù)自定義的函數(shù) 為了支持用戶(hù)編寫(xiě)出功能強(qiáng)大的源程序,幾乎所有的高級(jí)為了支持用戶(hù)編寫(xiě)出功能強(qiáng)大的源程序,幾乎所有的高級(jí)語(yǔ)言都為用戶(hù)提供了豐富的庫(kù)函數(shù),這些庫(kù)函數(shù)能夠?qū)崿F(xiàn)語(yǔ)言都為用戶(hù)提供了豐富的庫(kù)函數(shù),這些庫(kù)函數(shù)能夠?qū)崿F(xiàn)某些特定的功能,比如計(jì)算一個(gè)比較復(fù)雜的數(shù)學(xué)函數(shù)。某些特定的功能,比如計(jì)算一個(gè)比較復(fù)雜的數(shù)學(xué)函數(shù)。 在源程序中,用戶(hù)也可以自己定義自己的函數(shù)在源程序中,用戶(hù)也可以自己定義自己的函數(shù) (子程序或子程序或過(guò)程過(guò)程),以便以后可以反復(fù)調(diào)用這些代碼集合

25、。,以便以后可以反復(fù)調(diào)用這些代碼集合。3.1.3 高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容7/3/202223計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論 u高級(jí)語(yǔ)言的共同特性高級(jí)語(yǔ)言的共同特性 8注釋注釋 任何一種程序設(shè)計(jì)語(yǔ)言都強(qiáng)調(diào)注釋的重要性。源程序所包任何一種程序設(shè)計(jì)語(yǔ)言都強(qiáng)調(diào)注釋的重要性。源程序所包含的代碼往往比較冗長(zhǎng),添加必要的注釋不僅有助于閱讀含的代碼往往比較冗長(zhǎng),添加必要的注釋不僅有助于閱讀程序,更重要的是,在需要對(duì)程序功能進(jìn)行擴(kuò)充時(shí),注釋程序,更重要的是,在需要對(duì)程序功能進(jìn)行擴(kuò)充時(shí),注釋可以極大地幫助程序員對(duì)原始程序的理解??梢詷O大地幫助程序員對(duì)原始程序的理解。 經(jīng)常會(huì)出現(xiàn)這樣一種

26、情況,程序員自己編寫(xiě)的程序,經(jīng)過(guò)經(jīng)常會(huì)出現(xiàn)這樣一種情況,程序員自己編寫(xiě)的程序,經(jīng)過(guò)一段時(shí)間后,可能就是半年或者幾個(gè)月以后,程序員自己一段時(shí)間后,可能就是半年或者幾個(gè)月以后,程序員自己也讀不懂自己的程序了。況且,程序不僅要自己看得懂,也讀不懂自己的程序了。況且,程序不僅要自己看得懂,更重要的是也要讓別人能夠看懂。更重要的是也要讓別人能夠看懂。3.1.3 高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容7/3/202224計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論 u高級(jí)語(yǔ)言的共同特性高級(jí)語(yǔ)言的共同特性 9程序設(shè)計(jì)風(fēng)格程序設(shè)計(jì)風(fēng)格 編碼格式和編碼約定在整個(gè)程序中應(yīng)保持一致。編碼格式和編碼約定在整個(gè)程序中應(yīng)保

27、持一致。 程序中應(yīng)給出必要的注釋?zhuān)绕湓谧兞慷x、調(diào)用接口、程序中應(yīng)給出必要的注釋?zhuān)绕湓谧兞慷x、調(diào)用接口、參數(shù)傳遞處,在修改程序時(shí)應(yīng)注明修改人、時(shí)間、簡(jiǎn)要的參數(shù)傳遞處,在修改程序時(shí)應(yīng)注明修改人、時(shí)間、簡(jiǎn)要的修改原因。修改原因。 對(duì)變量、函數(shù)標(biāo)識(shí)等的命名,采用規(guī)范的命名方法,避免對(duì)變量、函數(shù)標(biāo)識(shí)等的命名,采用規(guī)范的命名方法,避免含義不明確的縮寫(xiě),從命名最好就可以一目了然讀出命名含義不明確的縮寫(xiě),從命名最好就可以一目了然讀出命名標(biāo)識(shí)的含義和數(shù)據(jù)類(lèi)型。標(biāo)識(shí)的含義和數(shù)據(jù)類(lèi)型。 采用縮進(jìn)格式,突出程序的邏輯層次結(jié)構(gòu)。采用縮進(jìn)格式,突出程序的邏輯層次結(jié)構(gòu)。 3.1.3 高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容高級(jí)語(yǔ)

28、言程序設(shè)計(jì)的基本內(nèi)容7/3/202225計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論 每一行只寫(xiě)一條語(yǔ)句,使用括號(hào)間隔表達(dá)式或語(yǔ)句的組每一行只寫(xiě)一條語(yǔ)句,使用括號(hào)間隔表達(dá)式或語(yǔ)句的組成部分,使組成部分清晰成部分,使組成部分清晰;使用結(jié)構(gòu)化、面向?qū)ο蟮木幊淌褂媒Y(jié)構(gòu)化、面向?qū)ο蟮木幊碳夹g(shù),提高程序可重用性、可擴(kuò)充性。技術(shù),提高程序可重用性、可擴(kuò)充性。 除非完全必要,應(yīng)盡量避免多任務(wù)和多重處理。除非完全必要,應(yīng)盡量避免多任務(wù)和多重處理。 盡量避免使用復(fù)雜的算術(shù)和邏輯表達(dá)式。盡量避免使用復(fù)雜的算術(shù)和邏輯表達(dá)式。 提高程序健壯性,預(yù)防用戶(hù)的操作錯(cuò)誤,做到廢進(jìn)廢出。提高程序健壯性,預(yù)防用戶(hù)的操作錯(cuò)誤,做到廢進(jìn)廢出。 3.

29、1.3 高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容7/3/202226計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論 u高級(jí)語(yǔ)言的共同特性高級(jí)語(yǔ)言的共同特性 10高級(jí)語(yǔ)言程序的運(yùn)行高級(jí)語(yǔ)言程序的運(yùn)行 使用高級(jí)語(yǔ)言編寫(xiě)程序的一般過(guò)程可以歸納為以下使用高級(jí)語(yǔ)言編寫(xiě)程序的一般過(guò)程可以歸納為以下幾個(gè)步驟幾個(gè)步驟: 使用文本編輯工具,逐條編寫(xiě)源程序的語(yǔ)句。保存源程使用文本編輯工具,逐條編寫(xiě)源程序的語(yǔ)句。保存源程序的文件時(shí),文件的后綴名與所用的高級(jí)語(yǔ)言有關(guān)。序的文件時(shí),文件的后綴名與所用的高級(jí)語(yǔ)言有關(guān)。 編譯源程序文件,生成目標(biāo)文件,文件后綴名通常為編譯源程序文件,生成目標(biāo)文件,文件后綴名通常為obj。 鏈接目標(biāo)

30、文件,生成可執(zhí)行文件,文件后綴名通常為鏈接目標(biāo)文件,生成可執(zhí)行文件,文件后綴名通常為exe。 在計(jì)算機(jī)上運(yùn)行可執(zhí)行程序,并進(jìn)行調(diào)試和維護(hù)。在計(jì)算機(jī)上運(yùn)行可執(zhí)行程序,并進(jìn)行調(diào)試和維護(hù)。 3.1.3 高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容高級(jí)語(yǔ)言程序設(shè)計(jì)的基本內(nèi)容7/3/202227計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論3.1.4 高級(jí)語(yǔ)言的數(shù)據(jù)表示手段高級(jí)語(yǔ)言的數(shù)據(jù)表示手段u1常量常量 常量也稱(chēng)常數(shù),是一種恒定的、不隨時(shí)間改變常量也稱(chēng)常數(shù),是一種恒定的、不隨時(shí)間改變的數(shù)值或數(shù)據(jù)項(xiàng)。的數(shù)值或數(shù)據(jù)項(xiàng)。u2變量變量 變量是指在程序的運(yùn)行過(guò)程中可以發(fā)生改變的變量是指在程序的運(yùn)行過(guò)程中可以發(fā)生改變的量,是程序中數(shù)據(jù)的臨時(shí)存放場(chǎng)

31、所。量,是程序中數(shù)據(jù)的臨時(shí)存放場(chǎng)所。u3數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 用來(lái)約束數(shù)據(jù)的解釋。用來(lái)約束數(shù)據(jù)的解釋。u4表達(dá)式表達(dá)式 表達(dá)式是操作符、操作數(shù)和標(biāo)點(diǎn)符號(hào)組成的序表達(dá)式是操作符、操作數(shù)和標(biāo)點(diǎn)符號(hào)組成的序列,其目的是用來(lái)說(shuō)明一個(gè)計(jì)算過(guò)程。列,其目的是用來(lái)說(shuō)明一個(gè)計(jì)算過(guò)程。7/3/202228計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論3.2 聲明和類(lèi)型聲明和類(lèi)型u1聲明聲明 聲明用于說(shuō)明每個(gè)標(biāo)識(shí)符的含義,而不必為每個(gè)標(biāo)聲明用于說(shuō)明每個(gè)標(biāo)識(shí)符的含義,而不必為每個(gè)標(biāo)識(shí)符預(yù)留存儲(chǔ)空間。預(yù)留存儲(chǔ)空間的聲明稱(chēng)為定義。識(shí)符預(yù)留存儲(chǔ)空間。預(yù)留存儲(chǔ)空間的聲明稱(chēng)為定義。u2類(lèi)型類(lèi)型 類(lèi)型檢查是利用一組邏輯規(guī)則來(lái)推理一個(gè)程序在運(yùn)類(lèi)型檢查

32、是利用一組邏輯規(guī)則來(lái)推理一個(gè)程序在運(yùn)行時(shí)刻的行為。行時(shí)刻的行為。7/3/202229計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論3.3 類(lèi)型系統(tǒng)類(lèi)型系統(tǒng) 類(lèi)型系統(tǒng)用于定義如何將程序語(yǔ)言中的數(shù)值和表達(dá)式類(lèi)型系統(tǒng)用于定義如何將程序語(yǔ)言中的數(shù)值和表達(dá)式歸類(lèi)為許多不同的類(lèi)型、如歸類(lèi)為許多不同的類(lèi)型、如 何操作這些類(lèi)型、這些類(lèi)型何操作這些類(lèi)型、這些類(lèi)型如何互相作用。如何互相作用。u類(lèi)型系統(tǒng)提供的主要功能如下:類(lèi)型系統(tǒng)提供的主要功能如下: 安全性。安全性。 最佳化。最佳化。 可讀性??勺x性。 抽象化。抽象化。7/3/202230計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論3.4 編譯原理編譯原理 3.4.1 編譯程序概述編譯程序概述u高

33、級(jí)語(yǔ)言編寫(xiě)的源程序需要高級(jí)語(yǔ)言編寫(xiě)的源程序需要“翻譯翻譯”成計(jì)算機(jī)能夠識(shí)別的成計(jì)算機(jī)能夠識(shí)別的機(jī)器語(yǔ)言,機(jī)器才能執(zhí)行,這種機(jī)器語(yǔ)言,機(jī)器才能執(zhí)行,這種“翻譯翻譯”程序被稱(chēng)為語(yǔ)言程序被稱(chēng)為語(yǔ)言處理程序。處理程序。 語(yǔ)言處理的過(guò)程語(yǔ)言處理的過(guò)程:7/3/202231計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論 編譯程序的功能如圖所示編譯程序的功能如圖所示: 編譯程序 低級(jí)語(yǔ)言程序 高級(jí)語(yǔ)言程序 3.4 編譯程序概述編譯程序概述7/3/202232計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論u編譯程序編譯程序 將高級(jí)語(yǔ)言編寫(xiě)的源程序翻譯為機(jī)器語(yǔ)言程序?qū)⒏呒?jí)語(yǔ)言編寫(xiě)的源程序翻譯為機(jī)器語(yǔ)言程序的方式有解釋和編譯的方式有解釋和編譯: (

34、1)解釋解釋 解釋程序在處理源程序時(shí),執(zhí)行方式類(lèi)似于日常生解釋程序在處理源程序時(shí),執(zhí)行方式類(lèi)似于日常生活中的活中的“同聲翻譯同聲翻譯”。 解釋一句、執(zhí)行一句,立即產(chǎn)生運(yùn)行結(jié)果。解釋程解釋一句、執(zhí)行一句,立即產(chǎn)生運(yùn)行結(jié)果。解釋程序不產(chǎn)生目標(biāo)代碼,不能脫離其語(yǔ)言環(huán)境獨(dú)立執(zhí)行。序不產(chǎn)生目標(biāo)代碼,不能脫離其語(yǔ)言環(huán)境獨(dú)立執(zhí)行。 解釋程序?qū)υ闯绦虻慕忉寛?zhí)行比編譯程序產(chǎn)生的目解釋程序?qū)υ闯绦虻慕忉寛?zhí)行比編譯程序產(chǎn)生的目標(biāo)代碼程序的執(zhí)行速度要慢。標(biāo)代碼程序的執(zhí)行速度要慢。3.4 編譯程序概述編譯程序概述7/3/202233計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論u編譯程序編譯程序 (2)編譯編譯 編譯程序是把高級(jí)語(yǔ)言程序

35、編譯程序是把高級(jí)語(yǔ)言程序(源程序源程序)作為一個(gè)整體來(lái)處理,作為一個(gè)整體來(lái)處理,首先將程序源代碼首先將程序源代碼“翻譯翻譯”成目標(biāo)代碼成目標(biāo)代碼(機(jī)器語(yǔ)言機(jī)器語(yǔ)言),編譯,編譯后與系統(tǒng)提供的代碼庫(kù)鏈接,形成后與系統(tǒng)提供的代碼庫(kù)鏈接,形成個(gè)完整的可執(zhí)行的機(jī)個(gè)完整的可執(zhí)行的機(jī)器語(yǔ)言程序器語(yǔ)言程序(目標(biāo)程序代碼目標(biāo)程序代碼)。 目標(biāo)程序可以脫離其語(yǔ)言環(huán)境獨(dú)立執(zhí)行,使用比較方便、目標(biāo)程序可以脫離其語(yǔ)言環(huán)境獨(dú)立執(zhí)行,使用比較方便、效率較高。相應(yīng)地,由于每次執(zhí)行之前必須通過(guò)編譯得到效率較高。相應(yīng)地,由于每次執(zhí)行之前必須通過(guò)編譯得到可執(zhí)行程序,所以,可執(zhí)行程序一旦需要修改,必須先修可執(zhí)行程序,所以,可執(zhí)行程

36、序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標(biāo)文件改源代碼,再重新編譯生成新的目標(biāo)文件(*.obj)才能執(zhí)行。才能執(zhí)行。3.4 編譯程序概述編譯程序概述7/3/202234計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論 編譯程序的工作過(guò)程編譯程序的工作過(guò)程 如圖如圖: 詞法分析器 語(yǔ)法分析器 語(yǔ)義分析器 中間代碼生成 優(yōu)化 目標(biāo)代碼生成 源程序 目標(biāo)代碼 表格管理 出錯(cuò)處理 3.4 編譯程序概述編譯程序概述7/3/202235計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論3.4.2 詞法分析詞法分析 其任務(wù)是從左到右一個(gè)字符、一個(gè)字符地對(duì)源程序其任務(wù)是從左到右一個(gè)字符、一個(gè)字符地對(duì)源程序進(jìn)行掃描,讀入源程序,對(duì)構(gòu)成源程

37、序的字符流進(jìn)進(jìn)行掃描,讀入源程序,對(duì)構(gòu)成源程序的字符流進(jìn)行掃描和分解,通過(guò)詞法分析從而識(shí)別出一個(gè)個(gè)單行掃描和分解,通過(guò)詞法分析從而識(shí)別出一個(gè)個(gè)單詞詞(也稱(chēng)單詞符號(hào)或符號(hào)也稱(chēng)單詞符號(hào)或符號(hào))。 例例1 對(duì)表達(dá)式:對(duì)表達(dá)式:position := initial + rate * 100;進(jìn)行;進(jìn)行詞法分析。詞法分析。 對(duì)其進(jìn)行詞法分析后得到以下結(jié)果:對(duì)其進(jìn)行詞法分析后得到以下結(jié)果:7/3/202236計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論 單詞類(lèi)型單詞類(lèi)型 單詞值單詞值 標(biāo)識(shí)符標(biāo)識(shí)符1(id1)position 算符算符(賦值賦值) := 標(biāo)識(shí)符標(biāo)識(shí)符2(id2)initial 算符算符(加加)+ 標(biāo)識(shí)符

38、標(biāo)識(shí)符3(id3)rate 算符算符(乘乘)* 整數(shù)整數(shù)100 分號(hào)分號(hào);3.4.2 詞法分析詞法分析7/3/202237計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論3.4.3 語(yǔ)法分析語(yǔ)法分析 語(yǔ)法分析是編譯過(guò)程的第二個(gè)階段,任務(wù)是語(yǔ)法分析是編譯過(guò)程的第二個(gè)階段,任務(wù)是在詞法分析的基礎(chǔ)上將單詞序列分解成各類(lèi)語(yǔ)法在詞法分析的基礎(chǔ)上將單詞序列分解成各類(lèi)語(yǔ)法短語(yǔ),如短語(yǔ),如“程序程序”、“語(yǔ)句語(yǔ)句”、“表達(dá)式表達(dá)式”等等。等等。一般這種語(yǔ)法短語(yǔ)也稱(chēng)為語(yǔ)法單位。一般這種語(yǔ)法短語(yǔ)也稱(chēng)為語(yǔ)法單位。7/3/202238計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論例例2 按照例按照例1的結(jié)果,對(duì)表達(dá)式:的結(jié)果,對(duì)表達(dá)式:position

39、:= initial + rate * 100;進(jìn)行語(yǔ)法分析。;進(jìn)行語(yǔ)法分析。 語(yǔ)法規(guī)則:語(yǔ)法規(guī)則: :=“:=” :=“+” :=“*” :=“(”“)” := := :=3.4.3 語(yǔ)法分析語(yǔ)法分析7/3/202239計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論 依據(jù)源程序的語(yǔ)法規(guī)則把源程序的單詞序列組成依據(jù)源程序的語(yǔ)法規(guī)則把源程序的單詞序列組成語(yǔ)法短語(yǔ)語(yǔ)法短語(yǔ)( (表示成語(yǔ)法樹(shù)表示成語(yǔ)法樹(shù)) ),見(jiàn)圖,見(jiàn)圖: : 賦值語(yǔ)句 標(biāo)識(shí)符 表達(dá)式 表達(dá)式 + 表達(dá)式 表達(dá)式 標(biāo)識(shí)符 整數(shù) 標(biāo)識(shí)符 := 表達(dá)式 * 3.4.3 語(yǔ)法分析語(yǔ)法分析7/3/202240計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論 把把id1:=id2

40、+id3*N轉(zhuǎn)換成語(yǔ)法樹(shù)見(jiàn)圖轉(zhuǎn)換成語(yǔ)法樹(shù)見(jiàn)圖: := + N 100 * id1 position id2 initial id3 rate 3.4.3 語(yǔ)法分析語(yǔ)法分析7/3/202241計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論3.4.4 語(yǔ)義處理語(yǔ)義處理 在詞法分析程序和語(yǔ)法分析程序?qū)υ闯绦虻恼Z(yǔ)法結(jié)構(gòu)在詞法分析程序和語(yǔ)法分析程序?qū)υ闯绦虻恼Z(yǔ)法結(jié)構(gòu)進(jìn)行分析之后,一般要由語(yǔ)法分析程序調(diào)用相應(yīng)的語(yǔ)義子進(jìn)行分析之后,一般要由語(yǔ)法分析程序調(diào)用相應(yīng)的語(yǔ)義子程序進(jìn)行語(yǔ)義處理。程序進(jìn)行語(yǔ)義處理。u編譯過(guò)程中的語(yǔ)義處理實(shí)現(xiàn)兩個(gè)功能:編譯過(guò)程中的語(yǔ)義處理實(shí)現(xiàn)兩個(gè)功能: 審查每個(gè)語(yǔ)法結(jié)構(gòu)的靜態(tài)語(yǔ)義,即驗(yàn)證語(yǔ)法結(jié)構(gòu)合法的審查

41、每個(gè)語(yǔ)法結(jié)構(gòu)的靜態(tài)語(yǔ)義,即驗(yàn)證語(yǔ)法結(jié)構(gòu)合法的程序是否真正有意義,有時(shí)把這個(gè)工作稱(chēng)為靜態(tài)語(yǔ)義分析程序是否真正有意義,有時(shí)把這個(gè)工作稱(chēng)為靜態(tài)語(yǔ)義分析或靜態(tài)審查。或靜態(tài)審查。 如果靜態(tài)語(yǔ)義正確,則語(yǔ)義處理要執(zhí)行真正的翻譯,要如果靜態(tài)語(yǔ)義正確,則語(yǔ)義處理要執(zhí)行真正的翻譯,要么生成程序的一種中間表示形式么生成程序的一種中間表示形式(中間代碼中間代碼),要么生成實(shí),要么生成實(shí)際的目標(biāo)代碼。際的目標(biāo)代碼。7/3/202242計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論 例例3 按照例按照例1和和2的結(jié)果,對(duì)表達(dá)式:的結(jié)果,對(duì)表達(dá)式:position := initial + rate * 100;進(jìn)行語(yǔ)義處理。;進(jìn)行語(yǔ)義處

42、理。 Program p(); Var rate:real; Var initial :real; Var position :real ; position := initial + rate * 100;3.4.4 語(yǔ)義處理語(yǔ)義處理7/3/202243計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論100:= + * Id1 position Id2 initial Id3 rate inttoreal 下圖是得到的語(yǔ)義分析樹(shù):下圖是得到的語(yǔ)義分析樹(shù):3.4.4 語(yǔ)義處理語(yǔ)義處理7/3/202244計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論 語(yǔ)義分析階段審查源程序有無(wú)語(yǔ)義錯(cuò)誤,為代碼生成階語(yǔ)義分析階段審查源程序有無(wú)語(yǔ)義錯(cuò)誤

43、,為代碼生成階段收集類(lèi)型信息。比如語(yǔ)義分析的一個(gè)工作是進(jìn)行類(lèi)型段收集類(lèi)型信息。比如語(yǔ)義分析的一個(gè)工作是進(jìn)行類(lèi)型審查,審查每個(gè)算符是否具有語(yǔ)言規(guī)范允許的運(yùn)算對(duì)象,審查,審查每個(gè)算符是否具有語(yǔ)言規(guī)范允許的運(yùn)算對(duì)象,當(dāng)不符合語(yǔ)言規(guī)范時(shí),編譯程序亦報(bào)告錯(cuò)誤。如有的編當(dāng)不符合語(yǔ)言規(guī)范時(shí),編譯程序亦報(bào)告錯(cuò)誤。如有的編譯程序要對(duì)實(shí)數(shù)用作數(shù)組下標(biāo)的情況報(bào)告錯(cuò)誤。又比如譯程序要對(duì)實(shí)數(shù)用作數(shù)組下標(biāo)的情況報(bào)告錯(cuò)誤。又比如某些語(yǔ)言規(guī)定運(yùn)算對(duì)象可被強(qiáng)制,那么當(dāng)二目運(yùn)算施于某些語(yǔ)言規(guī)定運(yùn)算對(duì)象可被強(qiáng)制,那么當(dāng)二目運(yùn)算施于整型和實(shí)型時(shí),編譯程序應(yīng)將整型轉(zhuǎn)換成實(shí)型而不能認(rèn)整型和實(shí)型時(shí),編譯程序應(yīng)將整型轉(zhuǎn)換成實(shí)型而不能認(rèn)為是源

44、程序的錯(cuò)誤。為是源程序的錯(cuò)誤。3.4.4 語(yǔ)義處理語(yǔ)義處理7/3/202245計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論3.4.5 中間代碼生成中間代碼生成 所謂所謂“中間代碼中間代碼”是一種結(jié)構(gòu)簡(jiǎn)單、含義明確的記號(hào)系統(tǒng),是一種結(jié)構(gòu)簡(jiǎn)單、含義明確的記號(hào)系統(tǒng),這種記號(hào)系統(tǒng)可以設(shè)計(jì)為多種多樣的形式,重要的設(shè)計(jì)原這種記號(hào)系統(tǒng)可以設(shè)計(jì)為多種多樣的形式,重要的設(shè)計(jì)原則為兩點(diǎn):一是容易生成;二是容易將它翻譯成目標(biāo)代碼。則為兩點(diǎn):一是容易生成;二是容易將它翻譯成目標(biāo)代碼。 常用的中間代碼形式有逆波蘭式、三元式和四元式。常用的中間代碼形式有逆波蘭式、三元式和四元式。7/3/202246計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論 采用三地

45、址指令表示采用三地址指令表示t2 := id3 * t1,會(huì)得到以下的結(jié)果:,會(huì)得到以下的結(jié)果: ( * id3 t1 t2) 表達(dá)式表達(dá)式id1:= id2 + id3 * 100按照三地址指令生成中間代碼:按照三地址指令生成中間代碼: (1) (inttoreal,100-t1) (2) (*id3t1t2) (3) (+id2t2t3) (4) (:=t3-id1)3.4.5 中間代碼生成中間代碼生成7/3/202247計(jì)算機(jī)科學(xué)導(dǎo)論計(jì)算機(jī)科學(xué)導(dǎo)論3.4.6 中間代碼優(yōu)化中間代碼優(yōu)化 中間代碼優(yōu)化的任務(wù)是對(duì)中間代碼進(jìn)行變換或進(jìn)行改造,中間代碼優(yōu)化的任務(wù)是對(duì)中間代碼進(jìn)行變換或進(jìn)行改造,目的是使生成的目標(biāo)代碼更為高效,即節(jié)省時(shí)間和空間。目的是使生成的目標(biāo)代碼更為高效,即節(jié)省時(shí)間和空間。 常用的優(yōu)化技術(shù)有刪除多余運(yùn)算、強(qiáng)度削弱、變換循環(huán)控常用的優(yōu)化技術(shù)有刪除多余運(yùn)算、強(qiáng)度削弱、變換循環(huán)控制條件、合并已知量與復(fù)寫(xiě)傳播、刪除無(wú)用賦值等。制條件、合并已知量與復(fù)寫(xiě)傳播、刪除無(wú)用賦值等。7/3/2022

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論