版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第五講 程序設(shè)計(jì)語(yǔ)言和編程環(huán)境,北京大學(xué) 信息科學(xué)技術(shù)學(xué)院,2024年3月16日,2024/3/16,北京大學(xué),2,主要內(nèi)容,程序設(shè)計(jì)語(yǔ)言概述機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言及其程序的執(zhí)行若干典型的高級(jí)語(yǔ)言介紹VC6.0編程環(huán)境,2024/3/16,北京大學(xué),3,1、程序設(shè)計(jì)語(yǔ)言概述,計(jì)算機(jī)硬件組成,,2024/3/16,北京大學(xué),4,程序是由若干條指令的順序排列組成,是為信息處理任務(wù)而預(yù)先編制的工作執(zhí)行方案。,1、程序設(shè)計(jì)語(yǔ)言概述,
2、計(jì)算機(jī)指令的執(zhí)行及程序,2024/3/16,北京大學(xué),5,1、程序設(shè)計(jì)語(yǔ)言概述,程序設(shè)計(jì)語(yǔ)言軟件的基本組成部分是完成其功能的程序。程序描述了計(jì)算機(jī)處理數(shù)據(jù)、解決問題的過程,這是程序的實(shí)質(zhì)。程序的描述形式卻可以是多種多樣的,可以用不同的方式表述,這就是程序設(shè)計(jì)語(yǔ)言。程序設(shè)計(jì)語(yǔ)言(也被稱為“編程語(yǔ)言”,Programming Language)是人們描述(編制)程序所使用的規(guī)范和方法(語(yǔ)言)。機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言,202
3、4/3/16,北京大學(xué),6,2、機(jī)器語(yǔ)言,機(jī)器指令采用二進(jìn)制代碼形式,它們符合具體計(jì)算機(jī)的指令系統(tǒng),可以由計(jì)算機(jī)直接執(zhí)行。因此機(jī)器指令實(shí)際上也是一種可以在程序設(shè)計(jì)中使用的語(yǔ)言,被稱為“機(jī)器語(yǔ)言”。每一條機(jī)器指令包括兩個(gè)主要方面:操作(指出計(jì)算機(jī)應(yīng)做什么)被操作的對(duì)象(指出處理的數(shù)據(jù)或它的地址)下面給出了幾條以二進(jìn)制形式描述的 Intel 80386 指令以及對(duì)它們的文字解釋。,2024/3/16,北京大學(xué),7,2、機(jī)器語(yǔ)言,01
4、000000把一個(gè)寄存器(EAX)的值加1 10001011 00000101 00000000 01111001 10001111 10101101從某個(gè)內(nèi)存單元取出數(shù)據(jù),裝入EAX寄存器,2024/3/16,北京大學(xué),8,2、機(jī)器語(yǔ)言,從直接閱讀的角度看,二進(jìn)制代碼簡(jiǎn)直是密碼,難以理解和使用。因此也必然造成程序不易修改,無法由一種計(jì)算機(jī)環(huán)境移植到其他環(huán)境上。10101011 10100101 01000100 0
5、1011001 10011110 1011110110011011 01000101 00100000 11111001 10100111 0110110110100011 10000101 10000001 01111101 10001101 1010110101001111 10100101 01001010 01111011 10011011 10100111……用機(jī)器語(yǔ)言編程,不僅指令操作需要用規(guī)定的二進(jìn)制代碼描述,程
6、序里的數(shù)據(jù)也要程序設(shè)計(jì)者自己安排存儲(chǔ)位置。這使程序設(shè)計(jì)工作更加煩雜和容易出錯(cuò)。要檢查和發(fā)現(xiàn)程序中的錯(cuò)誤也是極端困難的。這一系列因素使得用程序開發(fā)工作的效率非常低,據(jù)統(tǒng)計(jì),一個(gè)人一天平均只能夠?qū)懗鰩讞l有效指令。,2024/3/16,北京大學(xué),9,3、匯編語(yǔ)言,從人的思維方式而言,更適合于用概念描述事物,對(duì)于煩瑣冗長(zhǎng)的數(shù)字編碼,由于它們不能與概念和概念之間的語(yǔ)義聯(lián)系產(chǎn)生任何提示作用,則顯然對(duì)設(shè)計(jì)思維沒有任何幫助作用,純粹是一種累贅。人們顯
7、然更希望用有幫助記憶作用的符號(hào)來書寫程序,例如用 “ADD” 表示“加法”操作,用“ JMP” 表示“控制性轉(zhuǎn)移”等。操作的對(duì)象(數(shù)據(jù)或數(shù)據(jù)的地址)最好也能用符號(hào)形式表示,例如用 X、Y代表兩個(gè)存儲(chǔ)數(shù)據(jù)的容器。顯然這樣做比直接采用二進(jìn)碼方便得多。這就是“匯編程序設(shè)計(jì)語(yǔ)言”的基本想法。,2024/3/16,北京大學(xué),10,3、匯編語(yǔ)言,匯編語(yǔ)言提供一組具有幫助記憶作用的“匯編指令”,每條匯編指令都和一條機(jī)器指令相對(duì)應(yīng),只是指令碼和操作數(shù)都
8、采用符號(hào)形式?! 璓USH ECXMOV ERROR, 0MOV ECX, EAXCMP ECX, 0JMP FAILCALL FACT… …,2024/3/16,北京大學(xué),11,3、匯編語(yǔ)言,對(duì)于這種匯編語(yǔ)言形式寫出的程序,計(jì)算機(jī)是不能直接執(zhí)行的,必須在交給計(jì)算機(jī)執(zhí)行之前先把它翻譯成二進(jìn)制的機(jī)器語(yǔ)言指令程序。把匯編語(yǔ)言程序翻譯到機(jī)器語(yǔ)言的工作比較機(jī)械,可以用計(jì)算機(jī)來完成這個(gè)翻譯工作?!皡R編器”(As
9、sembler)軟件就是具有這種功能的軟件,它能把用匯編語(yǔ)言書寫的程序翻譯成機(jī)器語(yǔ)言程序。,2024/3/16,北京大學(xué),12,3、匯編語(yǔ)言,在這里,我們又看到了“程序”和“數(shù)據(jù)”兩個(gè)概念的相對(duì)性:對(duì)匯編器而言,它的輸入“數(shù)據(jù)”是匯編語(yǔ)言程序,這種程序當(dāng)作數(shù)據(jù)(是一系列的字符行)被加工處理。匯編器產(chǎn)生的結(jié)果是機(jī)器代碼程序(具有二進(jìn)符號(hào)串的形式),同時(shí)它也是即將在計(jì)算機(jī)上運(yùn)行的真正的程序。,2024/3/16,北京大學(xué),13,3、匯編
10、語(yǔ)言,從程序開發(fā)的角度來看,匯編語(yǔ)言與機(jī)器語(yǔ)言類似,仍然有許多缺點(diǎn):匯編語(yǔ)言的描述機(jī)制層次太低,其基本描述單位仍然是指令,這種方式與人們描述計(jì)算過程的需要之間差距太大。匯編語(yǔ)言與計(jì)算機(jī)硬件的具體結(jié)構(gòu)、指令系統(tǒng)聯(lián)系過于緊密,這種情況造成的后果是在一種計(jì)算機(jī)上開發(fā)的程序極難搬到另一種不同結(jié)構(gòu)的計(jì)算機(jī)上使用。如果想這樣做,不僅工作量將非常大(與重寫差不多),而且很容易引出程序錯(cuò)誤,修改也非常困難。,2024/3/16,北京大學(xué),14,3、
11、匯編語(yǔ)言,樣例程序1計(jì)算表達(dá)式:135 + 22 - 1常用寄存器 AX, BX, CX 等可以用來保存中間結(jié)果;計(jì)算過程:MOV AX, 135MOV BX, 22ADD AX, BXSUB AX, 1HLT,2024/3/16,北京大學(xué),15,3、匯編語(yǔ)言,樣例程序2計(jì)算從1累加到100得到的和AX保存累加和,BX存放被加數(shù),每加完一次增加1。通過一個(gè)循環(huán)來完成累加工作。計(jì)算過程:MOV AX, 1MOV
12、BX, 2calc:CMP BX, 101JE stopADD AX, BXINC BXJMP calcstop:HLT,2024/3/16,北京大學(xué),16,,3、匯編語(yǔ)言,樣例程序3求一組數(shù)33,15,21,7,9,23,4,76,87,45中的最大值.總的思想是用一個(gè)存儲(chǔ)單元保存到目前為止的最大值,將10個(gè)數(shù)逐一取出與最大值比較,如果該數(shù)比當(dāng)前最大值更大,則將更新當(dāng)前最大值.,2024/3/16,北京大學(xué),17,
13、3、匯編語(yǔ)言,數(shù)組變量DATA存儲(chǔ)給定的十個(gè)整數(shù);BX記錄當(dāng)前計(jì)算的是第幾個(gè)數(shù),0-9;CX記錄數(shù)組中當(dāng)前沒有被計(jì)算過的數(shù),初值為10,每計(jì)算一個(gè)數(shù),它的值減1,當(dāng)它為0時(shí),停止計(jì)算(循環(huán)計(jì)數(shù));AX是16位寄存器,可以分成兩個(gè)8位寄存器AH和AL使用,每次總是將一個(gè)數(shù)復(fù)制到AL中去.,2024/3/16,北京大學(xué),18,3、匯編語(yǔ)言,MOV AL, 0MOV BX, 0MOV CX, 10next:CMP DATA[BX
14、], ALJL unchangedMOV AL, DATA[BX]unchanged:INC BXLOOP next //CX減1HLTDATA DB 33,15,21,7,9,23,4,76,87,45,2024/3/16,北京大學(xué),19,4、高級(jí)語(yǔ)言及其程序的執(zhí)行,高級(jí)語(yǔ)言在對(duì)計(jì)算過程的描述方面,完全脫離了簡(jiǎn)單的指令方式,采用類似于數(shù)學(xué)公式的書寫方式描述由一些數(shù)據(jù)計(jì)算出結(jié)果的過程,用一些更高級(jí)程序流程描述結(jié)構(gòu)取代
15、簡(jiǎn)單的跳轉(zhuǎn)指令方式,以更好地滿足書寫程序的需要。在高級(jí)程序語(yǔ)言中也使用“變量”這個(gè)概念,在這里“變量”代表一種容器,用于存放程序中處理的數(shù)據(jù)。變量對(duì)應(yīng)著存儲(chǔ)器的若干字節(jié)(存儲(chǔ)單元),但它們?cè)诖鎯?chǔ)器中的具體位置并不需要編程人員關(guān)心,這樣就大大減輕了編程人員的負(fù)擔(dān)。,2024/3/16,北京大學(xué),20,4、高級(jí)語(yǔ)言及其程序的執(zhí)行,高級(jí)語(yǔ)言中的變量采用字符串形式的名字,如 x、len、Max、Number 等。一方面名字可以幫助人們掌握變量
16、所代表的信息含義,在程序里只要用變量的名字就可以讀寫訪問它的存儲(chǔ)單元里的數(shù)據(jù)。定義確定了變量的大小。,2024/3/16,北京大學(xué),21,4、高級(jí)語(yǔ)言及其程序的執(zhí)行,高級(jí)語(yǔ)言中用于描述計(jì)算的結(jié)構(gòu)采用類似于數(shù)學(xué)中代數(shù)運(yùn)算公式的形式,這種結(jié)構(gòu)被稱為“表達(dá)式”。程序中基本的動(dòng)作單位被稱為“語(yǔ)句”,不同的語(yǔ)句實(shí)現(xiàn)不同的功能。高級(jí)語(yǔ)言里最基本語(yǔ)句就是“賦值語(yǔ)句”(Assignment Statement),這種語(yǔ)句描述把通過計(jì)算得到的結(jié)果(值)
17、賦給變量的動(dòng)作。舉例說:X = 100;Y = 2 * SIN(1.047);Z = X * Y;,2024/3/16,北京大學(xué),22,4、高級(jí)語(yǔ)言及其程序的執(zhí)行,用高級(jí)語(yǔ)言書寫的程序不可能直接在計(jì)算機(jī)上執(zhí)行,與匯編語(yǔ)言程序一樣,需要將它轉(zhuǎn)換成機(jī)器語(yǔ)言指令程序。在計(jì)算機(jī)上將高級(jí)語(yǔ)言書寫的程序轉(zhuǎn)換成機(jī)器語(yǔ)言指令程序,有兩種基本方法:編譯(Compilation)方式解釋(Interpretation)方式,2024/3/16,
18、北京大學(xué),23,4、高級(jí)語(yǔ)言及其程序的執(zhí)行,編譯方式是設(shè)法把高級(jí)語(yǔ)言程序(也稱為“源程序”)翻譯轉(zhuǎn)換成為可以由計(jì)算機(jī)直接執(zhí)行的機(jī)器語(yǔ)言指令程序,經(jīng)連接裝配后轉(zhuǎn)變?yōu)椤翱蓤?zhí)行程序”(Executable Program)。人們實(shí)現(xiàn)了高級(jí)語(yǔ)言“編譯器”(Compiler)完成這種翻譯工作。編譯器把高級(jí)語(yǔ)言程序看成是符合一定語(yǔ)法結(jié)構(gòu)的符號(hào)串,對(duì)它進(jìn)行加工變換。,2024/3/16,北京大學(xué),24,編譯器對(duì)源程序的加工一般分為兩個(gè)階段: 源程
19、序首先被翻譯成機(jī)器語(yǔ)言,這種翻譯結(jié)果稱為“目標(biāo)碼”(object code),目標(biāo)碼構(gòu)成的程序片段稱為目標(biāo)模塊。 第二步,這些目標(biāo)模塊被與其他一些基本模塊(通用目標(biāo)程序模塊,由編譯軟件或其他人提供)連接在一起,最終形成“可執(zhí)行程序”(executable program),這樣的程序就可以在計(jì)算機(jī)上實(shí)際運(yùn)行了。 第一個(gè)加工步驟稱為“編譯”(compiling),第二個(gè)步驟稱為“連接”(linking)。,4、高級(jí)語(yǔ)言及其程序的執(zhí)行,
20、2024/3/16,北京大學(xué),25,可執(zhí)行的機(jī)器語(yǔ)言指令,4、高級(jí)語(yǔ)言及其程序的執(zhí)行,解釋(Interpretation)方式由一種稱為“解釋器”(Interpreter)軟件實(shí)現(xiàn)。解釋器在工作方式上與編譯器不同,它不事先對(duì)源程序進(jìn)行翻譯,而是在執(zhí)行時(shí)即時(shí)對(duì)源程序的語(yǔ)句進(jìn)行分析和解釋,實(shí)現(xiàn)源程序所描述的功能。,2024/3/16,北京大學(xué),26,5、若干典型的高級(jí)語(yǔ)言的介紹,第一個(gè)高級(jí)程序語(yǔ)言是 FORTRAN 語(yǔ)言,它是由美國(guó) IBM
21、 公司的科技人員在五十年代開發(fā)出來的。高級(jí)語(yǔ)言的開發(fā)成功是軟件技術(shù)發(fā)展的一個(gè)重要里程碑。從那以后,人們?cè)O(shè)計(jì)并實(shí)現(xiàn)了許多高級(jí)程序語(yǔ)言。高級(jí)語(yǔ)言不但是程序開發(fā)的工具,也成為一種在人與人之間,在不同的計(jì)算機(jī)之間交流的工具。為了保證語(yǔ)言的通用性,國(guó)際標(biāo)準(zhǔn)化組織動(dòng)用很多人力物力,對(duì)應(yīng)用較廣泛的一些語(yǔ)言提出了標(biāo)準(zhǔn)語(yǔ)言文本。這些工作進(jìn)一步打通了交流渠道,推動(dòng)了計(jì)算機(jī)應(yīng)用的發(fā)展。 FORTRAN、PASCAL、C / C++COBOL、BASI
22、C、ADA、JAVA,2024/3/16,北京大學(xué),27,5.1、FORTRAN,FORTRAN 的名字是由英文 FORmular TRANslation 縮寫而成,意思是“公式翻譯”。在五十年代初期人們考慮的主要是如何有效地把數(shù)學(xué)公式描述的計(jì)算過程翻譯成計(jì)算機(jī)程序,設(shè)計(jì) FORTRAN 語(yǔ)言的主要目的是為了描述科學(xué)計(jì)算的算法。FORTRAN 語(yǔ)言大約在 1954 年設(shè)計(jì),它的編譯器在 1957 年完成。 后來這個(gè)語(yǔ)言還有很大的發(fā)展
23、,成為在科學(xué)計(jì)算(數(shù)值計(jì)算)方面最主要的編程語(yǔ)言。,2024/3/16,北京大學(xué),28,5.1、FORTRAN 程序樣例,FUNCTION FUNC1(N) ISUM = 0 DO 10 I=1, N ISUM = ISUM + I*I10 CONTINUE FUNC1 = ISUM RETURN END,求1~N的平方和,2024/3/16,北京大學(xué),29
24、,5.2、PASCAL,Pascal 語(yǔ)言是由著名瑞士計(jì)算機(jī)科學(xué)家 N. Wirth (1984年圖靈獎(jiǎng)得主)設(shè)計(jì)的一種語(yǔ)言,1968 年提出后被全世界廣泛接受,成為一種對(duì)計(jì)算機(jī)科學(xué)技術(shù)發(fā)展有巨大影響的語(yǔ)言。這個(gè)語(yǔ)言的名字是為了紀(jì)念歷史上著名的數(shù)學(xué)家和計(jì)算學(xué)科的先驅(qū) Blaise Pascal(帕斯卡)。Pascal 語(yǔ)言把許多好的東西結(jié)合在一個(gè)很簡(jiǎn)練的語(yǔ)言里,被計(jì)算機(jī)教育界廣泛采用。從七十年代末往后的很長(zhǎng)一段時(shí)間里,Pascal
25、 成為世界范圍的計(jì)算機(jī)專業(yè)教學(xué)語(yǔ)言,多數(shù)教科書用 Pascal 給出程序例子,描述計(jì)算的算法。,2024/3/16,北京大學(xué),30,5.2、PASCAL 程序樣例,function func1(N : integer) : integer;var SUM, I : integer;begin SUM = 0; for I := 1 to N do SUM := SUM + I * I; FUNC1
26、 := SUM;end,求1~N的平方和,2024/3/16,北京大學(xué),31,5.3、C語(yǔ)言,C 是由美國(guó)貝爾實(shí)驗(yàn)室的 Dennis Retchie 在 1972 年設(shè)計(jì)開發(fā)的,開發(fā)目的是想成為一種編制“系統(tǒng)程序”的工具語(yǔ)言。Retchie 等人首先用自己發(fā)明的 C 語(yǔ)言編寫了 UNIX 操作系統(tǒng)。以后 C 語(yǔ)言逐步發(fā)展成為開發(fā)系統(tǒng)軟件的主要語(yǔ)言。許多常見的軟件系統(tǒng),例如,在中國(guó)使用很廣泛的計(jì)算機(jī)輔助設(shè)計(jì)軟件 AUTOCAD,數(shù)學(xué)
27、軟件系統(tǒng) Mathematica 等,以及許多語(yǔ)言編譯系統(tǒng)本身,其軟件系統(tǒng)的全部或者部分程序就是用 C 語(yǔ)言開發(fā)的。C 語(yǔ)言已成為最重要的軟件系統(tǒng)開發(fā)語(yǔ)言,由此可見 C 語(yǔ)言在計(jì)算機(jī)領(lǐng)域地位之重要。,2024/3/16,北京大學(xué),32,5.3、C語(yǔ)言 樣例程序,int main ( ) { int n; int i, sum = 0; scanf(“%d”, &n); for (i = 1;
28、i <= n; i++) sum += i*i; return sum;},求1~N的平方和,2024/3/16,北京大學(xué),33,5.4、C++語(yǔ)言,C++ 是在 C 語(yǔ)言基礎(chǔ)上發(fā)展出的一種“面向?qū)ο蟆闭Z(yǔ)言。它是由 Bjarne Stroustrup 在美國(guó)貝爾實(shí)驗(yàn)室開發(fā)的(1983)。C++ 是 C 語(yǔ)言的一個(gè)擴(kuò)充,它一方面修正了 C 的一些弱點(diǎn)和不足,使用起來更方便可靠;另一方面,也是更重要的,這種
29、語(yǔ)言以支持“面向?qū)ο蟆保∣bject-Oreinted,簡(jiǎn)稱為OO)的程序設(shè)計(jì)方法為基本目標(biāo),提供了一套支持面向?qū)ο蟪绦蛟O(shè)計(jì)的機(jī)制,如“類”(class)、“對(duì)象”(object)等等。面向?qū)ο蟮姆椒ū徽J(rèn)為是開發(fā)復(fù)雜軟件系統(tǒng)的一種有效途徑, OO 程序設(shè)計(jì)語(yǔ)言也已經(jīng)被廣泛接受。C++ 是目前使用最廣泛的一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。,2024/3/16,北京大學(xué),34,5.5、COBOL,COBOL(COmmon Business Or
30、iented Language,通用事務(wù)處理語(yǔ)言)語(yǔ)言是在美國(guó)國(guó)防部推動(dòng)下,由政府機(jī)構(gòu)和工業(yè)界聯(lián)合開發(fā)的一種語(yǔ)言,1960 年正式推出。它的主要設(shè)計(jì)目標(biāo)是用于編制商業(yè)企業(yè)管理信息系統(tǒng)的處理程序和各種軟件。COBOL 語(yǔ)言采用一種類似英語(yǔ)的形式,對(duì)使用英語(yǔ)的人而言它的可讀性較強(qiáng),但這也帶來程序羅嗦冗長(zhǎng)的缺點(diǎn)。數(shù)據(jù)記錄(DATA RECORD)的概念是在COBOL語(yǔ)言中第一次引入的。COBOL語(yǔ)言曾經(jīng)使用非常廣泛, 七十年代曾有人統(tǒng)計(jì)
31、過,當(dāng)時(shí)程序語(yǔ)言使用的情況是:將近一半的程序(以字符數(shù)計(jì)算)是用 COBOL 語(yǔ)言書寫的。但目前的情況是 COBOL 語(yǔ)言已經(jīng)走向衰敗。,2024/3/16,北京大學(xué),35,5.6、BASIC,BASIC (Beginner‘s All-purpose Symbolic Instruction Code,初學(xué)者的通用符號(hào)指令代碼)語(yǔ)言可能仍然是世界上使用人數(shù)最多的語(yǔ)言。這個(gè)語(yǔ)言是由 John Kemeny 和 Thomas Kurtz
32、 于 1964 年開發(fā)的,基本上是 FORTRAN 語(yǔ)言的一個(gè)縮減版本。設(shè)計(jì)者當(dāng)時(shí)希望開發(fā)一個(gè)簡(jiǎn)單的交互式語(yǔ)言,用于學(xué)習(xí)程序設(shè)計(jì)。由于語(yǔ)言簡(jiǎn)單,BASIC 語(yǔ)言可以在很低檔的微機(jī)上實(shí)現(xiàn),因此得到廣泛普及,流行到世界的每個(gè)角落。可以說,無論國(guó)內(nèi)還是國(guó)外,BASIC 語(yǔ)言對(duì)于計(jì)算機(jī)的普及都發(fā)揮了重要的作用。,2024/3/16,北京大學(xué),36,5.7、ADA,Ada 這個(gè)名字是紀(jì)念歷史上第一位編程者——Ada 夫人(生活在十九世紀(jì)中葉,是
33、著名詩(shī)人拜倫的女兒),她被認(rèn)為是第一個(gè)寫程序的人,她曾經(jīng)為計(jì)算機(jī)先驅(qū)者 Charles Babbage 未完成的計(jì)算機(jī)寫程序。Ada 語(yǔ)言開發(fā)的目的是作為新一代的美國(guó)軍用程序設(shè)計(jì)語(yǔ)言(1983-1995),作為所有與國(guó)防有關(guān)的程序和軟件的統(tǒng)一語(yǔ)言標(biāo)準(zhǔn)。Ada的設(shè)計(jì)目標(biāo)是針對(duì)那些裝備在機(jī)電設(shè)備上和武器裝備里的計(jì)算機(jī)控制、管理軟件系統(tǒng)開發(fā)所使用的。這類系統(tǒng)現(xiàn)在被稱為“嵌入式計(jì)算機(jī)系統(tǒng)”,是計(jì)算機(jī)的一個(gè)重要應(yīng)用方面。Ada 語(yǔ)言的設(shè)計(jì)也特
34、別注意對(duì)復(fù)雜的大型和巨型軟件系統(tǒng)的支持。Ada語(yǔ)言自 1983 年作為標(biāo)準(zhǔn)提出后,雖由美國(guó)國(guó)防部大力推行,也受到各國(guó)軍方的重視,但不像預(yù)想的那樣成功,其中一個(gè)原因是它太復(fù)雜。,2024/3/16,北京大學(xué),37,5.7、ADA 樣例程序,FUNCTION func1 (n : IN INTEGER) RETURN INTEGER IS sum : INTEGER = 0; i : INTEGER;BEGIN
35、FOR i IN 1..n loop sum := sum + i * i; end loop; return sum;END;,求1~N的平方和,2024/3/16,北京大學(xué),38,5.8、JAVA,1991年,SUN MicroSystem公司的Jame Gosling、Bill Joe等人為在電視、控制烤箱等家用消費(fèi)類電子產(chǎn)品上進(jìn)行交互式操作而開發(fā)了一個(gè)名為Oak的軟件,1995年正式推出并更名為
36、Java。Write once, run everywhere.目前網(wǎng)絡(luò)程序開發(fā)的主要語(yǔ)言特點(diǎn)面向?qū)ο蟊阌诰W(wǎng)絡(luò)開發(fā)簡(jiǎn)單易學(xué),2024/3/16,北京大學(xué),39,5.8、JAVA 樣例程序,public int func1(int n){ int sum = 0; int i; for(i=1;i<=n;i++) sum = sum +i*i; return sum;}
37、,求1~N的平方和,2024/3/16,北京大學(xué),40,我們這門課程主要介紹C語(yǔ)言。,2024/3/16,北京大學(xué),41,6、VC6.0編程環(huán)境,基本概念基本功能編程及調(diào)試過程示例,2024/3/16,北京大學(xué),42,VC++編程環(huán)境 - 基本概念,Project(工程):VC編程環(huán)境下,編寫程序的工作是以Project為單位。在開始一個(gè)新程序時(shí),要先建立一個(gè)Project,之后在程序編寫過程中所有與這個(gè)程序有關(guān)的文件都會(huì)包含在這
38、個(gè)Project中。編制的程序可以有各種不同類型,編程環(huán)境為每種類型的程序準(zhǔn)備了一個(gè)模版,用來生成程序的最初框架。在我們這門課程里只介紹編寫Win32 Console Application類型的程序。這類程序的特點(diǎn)是:程序運(yùn)行中會(huì)打開一個(gè)類似于DOS操作系統(tǒng)的界面,所有鍵盤輸入都是通過DOS界面進(jìn)行的,而所有輸出都是輸出到DOS窗口中。,2024/3/16,北京大學(xué),43,VC++編程環(huán)境 - 基本概念,Source File(源
39、程序)源程序是我們用高級(jí)程序設(shè)計(jì)語(yǔ)言書寫的程序。源程序必須經(jīng)過編譯連接變成可執(zhí)行程序(機(jī)器代碼)才能運(yùn)行。在下面的章節(jié)中,我們主要用介紹C語(yǔ)言編寫源程序。,2024/3/16,北京大學(xué),44,VC++編程環(huán)境 - 基本概念,Compile(編譯)把源程序變成機(jī)器目標(biāo)代碼的過程稱為編譯。不同的高級(jí)語(yǔ)言有不同的編譯器。,2024/3/16,北京大學(xué),45,VC++編程環(huán)境 - 基本概念,Link(連接)各種高級(jí)語(yǔ)言都會(huì)提供一些常用的功
40、能模塊,我們自己編寫的程序里會(huì)調(diào)用這些功能模塊。同時(shí)要把我們寫的程序裝載到內(nèi)存里運(yùn)行,也需要加載一定的與環(huán)境相關(guān)的信息。所以將我們自己寫的程序編譯成機(jī)器代碼后,還需要一個(gè)連接的過程以生成最后的可執(zhí)行程序。,2024/3/16,北京大學(xué),46,VC++編程環(huán)境 - 基本概念,Build(編譯并連接)編譯并連接是把源程序編譯,如果沒有錯(cuò)誤則連接,否則給出編譯錯(cuò)誤信息。,2024/3/16,北京大學(xué),47,VC++編程環(huán)境 - 基本概念,D
41、ebug(調(diào)試)當(dāng)程序出錯(cuò)時(shí),可用調(diào)試工具發(fā)現(xiàn)錯(cuò)處的代碼,進(jìn)行改正。所謂調(diào)試是指逐條執(zhí)行或部分執(zhí)行程序代碼,并在執(zhí)行過程中查看變量的值。當(dāng)發(fā)現(xiàn)變量的值并非如我們預(yù)期或程序的執(zhí)行邏輯并非我們預(yù)期時(shí),就發(fā)現(xiàn)了錯(cuò)誤,可以進(jìn)行有針對(duì)性的改正。,2024/3/16,北京大學(xué),48,VC++編程環(huán)境 - 基本概念,Run(運(yùn)行)啟動(dòng)一個(gè)可執(zhí)行程序使其開始執(zhí)行稱為運(yùn)行。,2024/3/16,北京大學(xué),49,VC++編程環(huán)境 – 基本功能,創(chuàng)建新
42、工程 編輯源程序 編譯 / 連接 運(yùn)行 調(diào)試,2024/3/16,北京大學(xué),50,VC++編程環(huán)境 - 創(chuàng)建新工程,2024/3/16,北京大學(xué),51,VC++編程環(huán)境 - 創(chuàng)建新工程,2024/3/16,北京大學(xué),52,VC++編程環(huán)境 - 創(chuàng)建新工程,2024/3/16,北京大學(xué),53,VC++編程環(huán)境 - 創(chuàng)建新工程,2024/3/16,北京大學(xué),54,VC++編程環(huán)境 – 編輯源程序,2024/3/16,北京大學(xué),55,
43、VC++編程環(huán)境 – 編譯/連接,2024/3/16,北京大學(xué),56,VC++編程環(huán)境 – 運(yùn)行,2024/3/16,北京大學(xué),57,VC++編程環(huán)境 – 調(diào)試,2024/3/16,北京大學(xué),58,VC++編程環(huán)境 – 調(diào)試,2024/3/16,北京大學(xué),59,計(jì)算兩個(gè)整數(shù)a和b的和.,程序示例 1,2024/3/16,北京大學(xué),60,求10個(gè)數(shù)的平均值,程序示例 2,2024/3/16,北京大學(xué),61,房地產(chǎn)問題,程序示例 3,弗雷德
44、先生想在路易斯安娜州買一塊地造房子。在調(diào)查中他了解到由于密西西比河的侵蝕,路易斯安娜州正在以每年50平方英里的速度變小。因?yàn)楦ダ椎孪壬M谒男路孔永锷钪敝两K老,所以他想知道他的房子是否會(huì)被侵蝕掉。經(jīng)過進(jìn)一步研究,弗雷德發(fā)現(xiàn)將要被侵蝕的陸地呈半圓形。半圓是一個(gè)以(0,0)點(diǎn)為中心的圓的一半,半圓的直邊是X軸。X軸以下的部分在水中。在第一年的開始,圓的面積是0。問題是如果給定一點(diǎn)的X,Y坐標(biāo)(Y>=0),要求出在第幾
45、年年末,這個(gè)點(diǎn)將被侵蝕。例如:給定X,Y坐標(biāo)為(1.0,1.0),則輸出:第1年年末。,2024/3/16,北京大學(xué),62,房地產(chǎn)問題,程序示例 3,2024/3/16,北京大學(xué),63,編程及調(diào)試過程,啟動(dòng)VC創(chuàng)建新工程編輯源代碼編譯鏈接運(yùn)行:輸入/輸出,2024/3/16,北京大學(xué),64,學(xué)習(xí)安裝VC6.0 (課后,有條件的同學(xué))使用 VC6.0編程環(huán)境,進(jìn)行編程。完成編程網(wǎng)格練習(xí)輸入并運(yùn)行程序示例1、2、3。,上機(jī)練習(xí)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 1程序設(shè)計(jì)語(yǔ)言1程序設(shè)計(jì)語(yǔ)言的分類
- 編程解決問題之程序設(shè)計(jì)語(yǔ)言c語(yǔ)言
- 書名《編程解決問題之程序設(shè)計(jì)語(yǔ)言(c語(yǔ)言)》 《編程
- 《程序設(shè)計(jì)語(yǔ)言c》
- 匯編程序設(shè)計(jì)語(yǔ)言翻譯機(jī)
- 程序設(shè)計(jì)語(yǔ)言c實(shí)驗(yàn)
- 邏輯式程序設(shè)計(jì)語(yǔ)言
- 如何學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言
- 程序設(shè)計(jì)語(yǔ)言基礎(chǔ)答案
- 程序設(shè)計(jì)語(yǔ)言的層次體系
- 程序設(shè)計(jì)語(yǔ)言(c)復(fù)習(xí)題-
- 知識(shí)點(diǎn)1程序設(shè)計(jì)語(yǔ)言
- r程序設(shè)計(jì)語(yǔ)言考試試卷
- 《程序設(shè)計(jì)語(yǔ)言(c++)》課程設(shè)計(jì)
- 《c#程序設(shè)計(jì)語(yǔ)言》課程標(biāo)準(zhǔn)
- 第10章面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言
- 《程序設(shè)計(jì)語(yǔ)言(vfp)》課程教學(xué)大綱
- 程序設(shè)計(jì)語(yǔ)言基本概念與試題
- 《程序設(shè)計(jì)語(yǔ)言(fortran)》課程教學(xué)大綱
- 《程序設(shè)計(jì)語(yǔ)言(c)》課程教學(xué)大綱
評(píng)論
0/150
提交評(píng)論