計算機科學(xué)概論(第3版)第6章-程序設(shè)計語言課件_第1頁
計算機科學(xué)概論(第3版)第6章-程序設(shè)計語言課件_第2頁
計算機科學(xué)概論(第3版)第6章-程序設(shè)計語言課件_第3頁
計算機科學(xué)概論(第3版)第6章-程序設(shè)計語言課件_第4頁
計算機科學(xué)概論(第3版)第6章-程序設(shè)計語言課件_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

計算機科學(xué)概論十一五國家級規(guī)劃教材

國家精品資源共享課程1計算機十一五國家級規(guī)劃教材

國家精品資源共享課程第6章

程序設(shè)計語言2計算機科學(xué)概論第6章

程序設(shè)計語言2計算機科學(xué)概論本章提要3123程序設(shè)計語言概述高級程序語言的種類程序設(shè)計的基本概念程序單元程序設(shè)計語言的執(zhí)行45高級話題6本章提要3123程序設(shè)計語言概述高級程序語言的種類程序設(shè)計的

程序設(shè)計語言:指揮計算機工作的命令。

沒有程序,計算機將無法進(jìn)行工作。

最早的程序語言:

1945年的Plankalkul,非存儲式高級程序。6.1.2程序語言的發(fā)展歷史46.1.1什么是程序語言

6.1程序設(shè)計語言程序設(shè)計語言:指揮計算機工作的命令。最早的程序語言:6.

程序設(shè)計語言的發(fā)展經(jīng)歷了三代的發(fā)展變化:

第一代:機器語言第二代:符號語言第三代:高級語言

表6.1:一些主要程序語言的發(fā)展歷史。56.1.2程序語言的發(fā)展歷史程序設(shè)計語言的發(fā)展經(jīng)歷了三代的發(fā)展變化:表6.1:一些主

按人與機器的交互程度分類:機器語言;匯編語言;高級語言。6.1.3程序語言的分類

表6.2:部分重要的程序設(shè)計語言的分類。6按人與機器的交互程度分類:6.1.3程序語言的分類表由“0”和“1”組成的二進(jìn)制碼構(gòu)成。優(yōu)點:速度快,不需要翻譯。特點:依賴機器,可讀性差,難以掌握。一個機器語言的例子:表6.3。用符號和助記符來代表機器語言,為各操作碼分配助記符。(如:Asm,Masm)優(yōu)點:速度快,可讀性較好。特點:依賴機器,較難掌握,需要翻譯。一個符號語言的例子:表6.4。76.1.4機器語言6.1.5匯編語言由“0”和“1”組成的二進(jìn)制碼構(gòu)成。用符號和助記符來代表機

用類英語描述對機器的指令。

(如:Fortran,Basic,C,Pascal,C++等。)

優(yōu)點:可讀性好,易于掌握。

特點:不依賴機器,需要翻譯。

程序設(shè)計就是尋找解決問題的方法,不需關(guān)心計算機本身的具體實現(xiàn)。 兩個高級語言的例子:表6.5、表6.6。86.1.6高級語言 用類英語描述對機器的指令。

(如:Fortran,Basi

目前常用的程序語言大約有50多種。

(詳見表6.7)

每月對程序設(shè)計語言的使用情況有一個排名:

(詳見表6.8)注:排名結(jié)果并不代表程序語言的好壞。6.2.1常用高級程序語言6.2高級程序語言的類型9目前常用的程序語言大約有50多種。6.2.1常用高級程

按照程序的運行方式分類:

1、匯編型語言

2、解釋型語言

3、編譯型語言

4、混合型語言

5、腳本性語言106.2.1常用高級程序語言按照程序的運行方式分類: 1、匯編型語言106.2.1

根據(jù)程序語言解決問題的方法及功能分類: 1、過程化語言

2、函數(shù)式語言

3、邏輯式語言

4、面向?qū)ο笳Z言

5、專用語言116.2.1常用高級程序語言根據(jù)程序語言解決問題的方法及功能分類: 1、過程化語言

又稱為命令式語言或強制性語言。

(如:Fortran語言,COBOL語言,Ada語言,C語言,Basic語言,Pascal語言等。)

過程化語言程序——按順序的機器指令。

過程化語言的命令表現(xiàn)在兩個方面:

1、操作數(shù)據(jù)項。

2、控制下一條要執(zhí)行的指令。

126.2.2過程化語言 又稱為命令式語言或強制性語言。126.2.2過程化語

過程化語言的特點:過程化語言特點適用領(lǐng)域Fortran高精度運算復(fù)雜數(shù)據(jù)的處理能力指數(shù)運算()科學(xué)計算和工程應(yīng)用。COBOL能快速訪問,更新數(shù)據(jù)庫能生成大量報表方便的格式化輸出商業(yè)領(lǐng)域。Pascal結(jié)構(gòu)化編程學(xué)術(shù)界,應(yīng)用軟件。Ada具有并行處理能力大型計算機和工業(yè)領(lǐng)域。C具有一些低級指令簡潔,高效已被ANSI和ISO標(biāo)準(zhǔn)化操作系統(tǒng),系統(tǒng)軟件,應(yīng)用軟件。136.2.2過程化語言過程化語言的特點:過程化語言特點適用領(lǐng)域Fortran高

又稱為表處理語言。

(如:LISP語言,Scheme語言。)

將函數(shù)看成是“黑盒”,程序就是將一系列的“黑盒”連起來。146.2.3函數(shù)式語言又稱為表處理語言。

(如:LISP語言,Scheme語言。

函數(shù)式語言程序設(shè)計的特點:1、定義函數(shù)

(也可通過基本函數(shù)創(chuàng)建新的函數(shù)。)2、調(diào)用函數(shù)

(可通過函數(shù)的組合解決問題。)156.2.3函數(shù)式語言函數(shù)式語言程序設(shè)計的特點:156.2.3函數(shù)式語言

一個Scheme語言的范例:P.169函數(shù)(car(List))的作用:從列表List中取出第一個元素。函數(shù)(cdr(List))的作用:從列表List中取出除第一個元素

以外的所有元素?,F(xiàn)有列表List:List=491242354726則:(car(List))的結(jié)果為4(cdr(List))的結(jié)果為91242354726若要從List表中取出第四個元素,則:(car(cdr(cdr(cdrList))))166.2.3函數(shù)式語言一個Scheme語言的范例:P.169166.2.3函數(shù)

又稱為聲明式語言或說明性語言。

程序設(shè)計主要是進(jìn)行事實歸納和規(guī)則推理,適合于特定的領(lǐng)域。

(如:Prolog語言)

一個Prolog語言的例子:P.169176.2.4邏輯式語言又稱為聲明式語言或說明性語言。176.2.4邏輯式語言

采用面向?qū)ο蟮乃枷脒M(jìn)行程序設(shè)計。

(如:Smalltalk語言,C++語言,Java語言等。)

面向?qū)ο笳Z言的特點:

對象和操作被捆綁在一起。

通過對象去調(diào)用操作,有可能產(chǎn)生的結(jié)果:

1、改變對象自身的狀態(tài)

2、改變其他對象的狀態(tài)

3、改變系統(tǒng)的狀態(tài)186.2.5面向?qū)ο笳Z言采用面向?qū)ο蟮乃枷脒M(jìn)行程序設(shè)計。186.2.5面向?qū)ο罄纾簣D形用戶界面系統(tǒng)。

●圖標(biāo)——對象

●圖標(biāo)所允許的操作

(如:單擊鼠標(biāo)左鍵、右鍵,雙擊鼠標(biāo)左鍵等)——對象的操作。●操作的結(jié)果——對象通過該對象內(nèi)部的操作產(chǎn)生的結(jié)果。196.2.5面向?qū)ο笳Z言例如:圖形用戶界面系統(tǒng)。196.2.5面向?qū)ο笳Z言

應(yīng)用于網(wǎng)絡(luò)和數(shù)據(jù)庫的語言。 如:HTML語言,Perl語言,PHP語言,

SQL語言等。

特點:屬于腳本語言,易于掌握。206.2.6專用語言應(yīng)用于網(wǎng)絡(luò)和數(shù)據(jù)庫的語言。206.2.6專用語言

一個HTML程序的例子:<html><head><title>標(biāo)題</title></head><body>這是一個HTML范例!</body></html>216.2.6專用語言一個HTML程序的例子:<html>216.2.6專用

過程化程序語言具有的共性:

1、標(biāo)識符

2、變量與數(shù)據(jù)類型

3、常量和文字

4、表達(dá)式和賦值語句

5、控制語句

6、注釋

過程化程序語言的語句:

1、聲明語句:說明程序中要使用的元素。

2、命令語句:描述算法的步驟。

3、注釋語句:解釋程序的功能。6.3程序設(shè)計語言的基本概念22過程化程序語言具有的共性:過程化程序語言的語句:6.

標(biāo)識符的作用:命名。

計算機通過標(biāo)識符與地址的聯(lián)系來操作數(shù)據(jù)。

不同的程序語言對標(biāo)識符有不同的規(guī)定。例如:語言正確的標(biāo)識符錯誤的標(biāo)識符Cstu_No,Number3_stu_No,stu.no,3numberFortranxyz7,ab8c,Total127xyz,AB_t,total123,ab.cPascalxtable8,Apple9xtable8,Apple_xBasicExp5,team.34game,_abc(表6.11)236.3.1標(biāo)識符標(biāo)識符的作用:命名。語言正確的標(biāo)識符錯誤的標(biāo)識符Cstu1、變量:

以標(biāo)識符作為名字,代替存儲地址。

變量的特點:保存程序的計算結(jié)果。2、數(shù)據(jù)類型

數(shù)據(jù)類型決定了數(shù)據(jù)可執(zhí)行的操作以及

數(shù)據(jù)的取值范圍。

程序設(shè)計語言的基本數(shù)據(jù)類型見表6.12。246.3.2變量與數(shù)據(jù)類型1、變量:

以標(biāo)識符作為名字,代替存儲地址。246.3.3、變量的聲明將變量指定為某種

數(shù)據(jù)類型。如:語言變量聲明語句C語言floatlength,width;intTax,Total;charSymbol;Fortran語言REALLength,widthINTEGERTax,TotalCHARACTERSymbolPascal語言varLength,width:real;Tax,Total:integer;Symbol:char;Basic語言number%price!name$256.3.2變量與數(shù)據(jù)類型3、變量的聲明語言變量聲明語句C語言floatlength常量:程序執(zhí)行過程中不能更改的數(shù)據(jù)。 常量分兩種:文字常量和命名常量。

文字常量:直接以數(shù)字的形式出現(xiàn)在程序中。 如c語言中:Area=3.14159*r*r;/*r為變量*/

命名常量:以標(biāo)識符的形式出現(xiàn)在程序中。

如c語言中:Area=PI*r*r;/*r為變量*/266.3.3常量和文字常量:程序執(zhí)行過程中不能更改的數(shù)據(jù)。266.3.3常量和1、表達(dá)式:由一系列操作數(shù)和運算符的組合構(gòu)成。

操作數(shù):變量或表達(dá)式。

(表達(dá)式的結(jié)果為一個具體的值)運算符:制定運算規(guī)則。

常用的運算符有四種(表6.14~6.17):算術(shù)運算符;

關(guān)系運算符;

邏輯運算符;

賦值運算符。276.3.4表達(dá)式和賦值語句1、表達(dá)式:276.3.4表達(dá)式和賦值語句

控制語句的作用:改變程序中語句的執(zhí)行順序。

主要有兩種:分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。1、分支結(jié)構(gòu)

有兩種分支結(jié)構(gòu):

①if~else結(jié)構(gòu)(流程圖見圖6.5)。②switch結(jié)構(gòu)(流程圖見圖6.6)。286.3.5控制語句控制語句的作用:改變程序中語句的執(zhí)行順序。286.3.52、循環(huán)結(jié)構(gòu)

有三種循環(huán)結(jié)構(gòu):

①for循環(huán)結(jié)構(gòu)(流程圖見圖6.7)。②while循環(huán)結(jié)構(gòu)(流程圖見圖6.7)。③do~while循環(huán)結(jié)構(gòu)(流程圖見圖6.8)。注:在不同的程序語言中,分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)

的語法描述會稍有差異。296.3.5控制語句2、循環(huán)結(jié)構(gòu)296.3.5控制語句3、強制轉(zhuǎn)移語句

是一種強命令型語句,無條件轉(zhuǎn)移程序指令。

具有統(tǒng)一的語句形式:

goto<語句標(biāo)號>goto語句的特點:

①給程序的執(zhí)行帶來極大的方便;

②會降低程序的可讀性;

③可能導(dǎo)致程序發(fā)生嚴(yán)重的錯誤。一個使用goto語句的例子:P.177

建議:不用或少用goto語句306.3.5控制語句3、強制轉(zhuǎn)移語句306.3.5控制語句

注釋是對程序的語句或功能進(jìn)行說明,

為閱讀程序提供額外的信息,幫助理解。

注釋的存在與否都不影響程序的執(zhí)行。

不同的程序語言有不同的注釋符號。 常見語言的注釋符號見表6.18。

建議:為程序?qū)懮线m當(dāng)?shù)淖⑨尅?/p>

316.3.5注釋注釋是對程序的語句或功能進(jìn)行說明,

1、過程:一些指令的集合。(指令:由順序結(jié)構(gòu)、分支結(jié)構(gòu)或循環(huán)結(jié)構(gòu)組成)

2、過程頭部:過程名。(建議用動詞作為過程名)

3、過程調(diào)用:請求過程提供服務(wù)。

注:過程就是程序的縮影。6.4程序單元326.4.1過程

程序單元:具有獨立的功能。

過程或函數(shù):具有獨立的功能的程序單元。1、過程:一些指令的集合。6.4程序單元326.4.1

過程調(diào)用的控制流:336.4.1過程過程調(diào)用的控制流:336.4.1過程1、參數(shù):過程中要用到的通用變量。

●形參:過程中制定的參數(shù)。

●實參:調(diào)用過程時傳遞給形參的數(shù)據(jù)。2、參數(shù)的位置:過程頭部的括號中。3、參數(shù)的傳遞方式: ①傳值:將實參的副本傳遞給形參。

②傳引用:將實參變量的地址傳遞給形參。

346.4.2參數(shù)1、參數(shù):過程中要用到的通用變量。346.4.2參數(shù)

C語言中描述的一個過程如下:voidpush(floatf){if(sp<Max)val[sp++]=f;

elseprint(“Error!StackFull\n”);}

過程的調(diào)用:push(12.3);356.4.2參數(shù)C語言中描述的一個過程如下:voidpush(floa

函數(shù)與過程類似。

函數(shù)與過程的不同之處:

函數(shù)必須向調(diào)用它的地方傳回一個值。(函數(shù)必須要有一個計算結(jié)果。)

函數(shù)的頭部:函數(shù)名。(建議用名詞作函數(shù)名)366.4.3函數(shù)函數(shù)與過程類似。366.4.3函數(shù)

一個C語言函數(shù)的例子:floatmyroot(floatx,floaty,floatz){floattemp;

temp=y*y-4*x*z;

if(temp<0.0)return-1;

elsereturn(root(temp));}

函數(shù)調(diào)用:

X1=(-b+myroot(a,b,c))/(2*a);

X2=(-b-myroot(a,b,c))/(2*a);376.4.3函數(shù)一個C語言函數(shù)的例子:floatmyroot(floa

由程序語言的實現(xiàn)提供的一種底層操作,與開發(fā)工具一起提供給程序設(shè)計人員。

常用的標(biāo)準(zhǔn)輸入/輸出語句如下:PRINTaINPUTaBasicwirteln(a)readln(a)Pascal語言PRINT*,aREAD*,aFortran語言將變量a的值輸出到屏幕上。printf(“%d\n”,a);

從鍵盤接收整型變量a的值。scanf(“%d”,&a);C語言功能輸出函數(shù)功能輸入函數(shù)

庫函數(shù)語句6.4.4輸入與輸出38由程序語言的實現(xiàn)提供的一種底層操作,與開發(fā)工具一起提供給程序翻譯就是對源程序進(jìn)行編譯。

源程序:由程序設(shè)計語言編寫的程序。

注:源程序是不能被執(zhí)行的。

將源程序變成可執(zhí)行程序的過程:6.5程序設(shè)計語言的執(zhí)行396.5.1程序翻譯第1步第2步程序翻譯就是對源程序進(jìn)行編譯。6.5程序設(shè)計語言的執(zhí)行

源程序的翻譯:由編譯器完成。編譯器的三個重要進(jìn)程:

①詞法分析;

分析源程序中的哪些符號串代表了一個實體的進(jìn)程,將結(jié)果

保存在一個稱為記號的結(jié)構(gòu)單元里。

②語法分析;

對記號進(jìn)行分析,根據(jù)一系列的語法規(guī)則來識別程序的語法

結(jié)構(gòu)所代表的進(jìn)程。

③目標(biāo)代碼生成;

將沒有語法錯誤的程序指令轉(zhuǎn)換成機器語言指令。406.5.1程序翻譯源程序的翻譯:由編譯器完成。406.5.1程序翻譯

一個C語言源程序編譯的例子:第1步:編輯源程序:mytest.c第2步:用microsoftC編譯器,命令方式進(jìn)行編譯:

cl–cmytest.c

結(jié)果:若源程序沒有錯誤,會生成目標(biāo)代碼程序:

mytest.obj。注:①不同的程序語言有不同的編譯器。②編譯的方式不是唯一的。416.5.1程序翻譯一個C語言源程序編譯的例子:416.5.1程序翻譯

目標(biāo)代碼并不是可執(zhí)行代碼。

要獲得可執(zhí)行的程序,需將目標(biāo)代碼鏈接起來。

鏈接器的任務(wù)就是將目標(biāo)程序鏈接成可執(zhí)行的程序

(或稱載入模塊)。426.5.2鏈接程序目標(biāo)代碼并不是可執(zhí)行代碼。426.5.2鏈接程序

一個鏈接C語言目標(biāo)代碼的例子:第1步:對源程序mytest.c編譯后生成了目標(biāo)代碼程序

mytest.obj;第2步:用microsoftC編譯器,命令方式進(jìn)行鏈接:

link/out:mytest.extmytest.obj結(jié)果:

如果不發(fā)生錯誤,會生成一個載入模塊:

mytest.exe注:①不同的程序語言有不同的鏈接器。②鏈接的方式不是唯一的。436.5.2鏈接程序一個鏈接C語言目標(biāo)代碼的例子:436.5.2鏈接程序

集成開發(fā)環(huán)境(IDE):也稱為軟件開發(fā)包、開發(fā)工具。

將編輯器、翻譯器、鏈接器和其他軟件單元集合在一起。

集成開發(fā)環(huán)境一般都是為特定的程序語言定制的。

(不同的程序語言有不同的開發(fā)環(huán)境)

同一種語言的開發(fā)包也會有一些不同的產(chǎn)品和版本。446.5.3集成開發(fā)環(huán)境集成開發(fā)環(huán)境(IDE):也稱為軟件開發(fā)包、開發(fā)工具。446

幾種常用程序語言的開發(fā)環(huán)境:程序語言軟件開發(fā)包CTurboC,BorlandC,gcc,Microsoftc/c++等C++BorlandC++,VisualC++,BuildC++,Microsoftc++等Fortranf77,PowerstationFortran等PascalTurborPascal,Dephi

等456.5.3集成開發(fā)環(huán)境幾種常用程序語言的開發(fā)環(huán)境:程序語言軟件開發(fā)包CTurbo

用面向?qū)ο蟮姆椒▉碓O(shè)計程序。

(與過程化程序設(shè)計方法不同)

面向?qū)ο蟮南到y(tǒng)需包含三個要素:

對象、類和繼承。1、對象所有資源都是對象。

資源:以數(shù)據(jù)和模塊的形式表

溫馨提示

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

評論

0/150

提交評論