電腦資料第10章_第1頁
電腦資料第10章_第2頁
電腦資料第10章_第3頁
電腦資料第10章_第4頁
電腦資料第10章_第5頁
已閱讀5頁,還剩133頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

10.6編程語言10.7選擇編程語言10.8小結習題前面的章節(jié)介紹了信息、數(shù)據(jù)的概念。數(shù)據(jù)是原始事實的數(shù)字記錄,它本身并沒有什么意義,而信息是經(jīng)過處理后的數(shù)據(jù),信息具有實際含義。數(shù)據(jù)轉(zhuǎn)化為信息的過程就是數(shù)據(jù)處理,也稱其為信息處理。如圖10.1所示的是數(shù)據(jù)處理的基本模型。實際的計算機系統(tǒng)中,數(shù)據(jù)由鍵盤、光電閱讀器等輸入設備進行輸入;信息則由顯示器、打印機等輸出設備進行輸出;數(shù)據(jù)處理則是由計算機程序來進行的,因此,要處理數(shù)據(jù),必須編寫程序或購買現(xiàn)成的程序。為闡述方便,本章涉及的程序代碼均采用VisualBasic編寫。圖10.1數(shù)據(jù)處理的基本模型程序是計算機任何動作的驅(qū)動力,程序是計算機為完成某一任務所必須執(zhí)行的一系列指令。沒有程序,計算機就像原地待命的士兵,什么也不做。10.1概述

10.1.1計算機程序為了理解程序?qū)τ谟嬎銠C多么重要,舉例說明。當孑身一人來到一個陌生的城市,可能首先想到去買一張交通圖,以便能按圖索驥找到目的地。計算機對于程序的需要正像對于地圖的需要,只有這樣,才能引導計算機一步步地到達目的地,實現(xiàn)目標。程序中的指令正是人們要求計算機一步步地完成任務的一個個小的命令。從存儲的角度來講,程序是保存在磁盤上的指令序列。比如,用字處理軟件編輯處理文檔時,首先啟動該軟件,啟動軟件就是將該軟件包含的主要程序從磁盤調(diào)入內(nèi)存,并執(zhí)行主要程序中的一部分指令,然后運用另一部分指令來完成文檔處理工作。運行一個程序,首先必須將其調(diào)入內(nèi)存,這是由于計算機的CPU無法直接執(zhí)行磁盤上的程序,如圖10.2所示。10.1.2程序是保存在磁盤上的指令序列圖10.2將數(shù)據(jù)調(diào)入內(nèi)存除了少量存在于ROM等存儲器中的特殊程序之外,程序大多以文件的形式存在于磁盤等外存儲器上,但存在于磁盤上的文件并不都是程序,有的可能是字處理文檔文件、圖形圖像文件、聲音和視頻多媒體文件等。程序的輸出通常也是以文件的形式保存到磁盤上,但它們是數(shù)據(jù)文件或文檔文件,它們是程序的執(zhí)行結果;程序文件則是指令的集合。程序與其處理結果的關系正像菜譜與做好的菜的關系,做好一道菜之后,還可以按照菜譜再做另一道菜。運行某一程序?qū)σ恍?shù)據(jù)進行處理有了結果之后,還可以再次運行該程序?qū)α硪恍?shù)據(jù)進行處理,得到另一些結果。問題描述指說明一些能用來解決問題的要素。一個表達清晰的問題描述具備以下3個特征:(1)能說明描述問題的任何假設。(2)列出所有的已知條件。(3)具體說明需要解決什么問題。10.2算法

10.2.1問題描述在一個問題的描述中,假設是為了方便設計而假定是正確的陳述。在處理實際問題時,常常需要這樣的簡化。比如已知一個立方體容器的棱長是5m,求它的容積是多少?如果沒有其他已知條件和特別說明,顯然,這里應該將實際問題加以簡化,假定忽略容器壁的厚度,將求容積問題簡化為求體積問題,而且這個假定一般是隱含的。問題描述中的已知條件,就是可以用來解決問題的原始信息,它是解決問題所必需的,也是設計算法的依據(jù),比如,同樣是求幾何體的容積,容器的形狀則是選擇體積公式的依據(jù),實際的幾何體如果是球體,就應該選用球體公式;而棱長或半徑則是求算過程中必須輸入的數(shù)據(jù)。問題描述的第三點是應該說明程序應有的輸出是什么。即通過編程解決了什么問題,問題的答案應該就是程序的輸出結果。比如,上述問題可以做以下描述,假設:不計容器壁的厚度;已知:容器形狀為立方體,棱長5m;求:容器體積;輸出:容器的容積數(shù)據(jù)。算法是解決實際問題的方法,然而實際問題的解決往往會有多種方法,不同的方法也可能得到不同的結果。算法設計就是尋找一種適合的算法,那么什么是適合的算法呢?算法應具有以下特點:(1)有窮性。任何一個算法應該經(jīng)過有限多個操作步驟得出結果。(2)可行性。有限多個步驟應該在一個合理的范圍內(nèi)。10.2.2算法設計(3)確定性。算法的每一步驟應該有明確的含義。(4)可以定義若干個輸入和輸出。通俗地講,設計算法的過程就是解決問題的過程,編寫程序的人得先自己知道怎樣解決問題,然后才能通過程序來“教”計算機做同樣的事情。比如上述問題,必須知道立方體的體積公式,以及在已知棱長的條件下利用該公式求出體積。然后才能把這些寫進程序,讓計算機求出任一給定棱長的立方體體積。需要提出的是,這里的算法(algorithm)和數(shù)學中的計算方法(computationalmethod)是不同的概念。算法可分為兩大類:數(shù)值運算算法和非數(shù)值運算算法。數(shù)值運算算法的目的是求數(shù)值解,這屬于數(shù)學中的計算方法討論的范疇。例如,求方程的根所用的求解公式等,而非數(shù)值運算算法相反,通常沒有對應的數(shù)據(jù)模型,而且種類繁多。常見的如各種排序方法、查找方法等。對于同一個問題,也往往有不同的算法。例如,排序就有多種方法,如插入排序法、選擇排序法、冒泡排序法、希爾排序法、堆排序法、歸并排序法等。查找也有順序查找、二分法查找、分塊查找等。數(shù)值運算同樣如此,如數(shù)值積分運算就有梯形求積法、辛卜生求積法、龍貝格求積法、勒讓德-高斯求積法、拉蓋爾-高斯求積法、埃爾米特-高斯求積法、切比雪夫求積法等。(1)偽代碼法。偽代碼法,也稱自然語言法,它是用一種比較隨便的方法來描述算法,其中可以用英文短句,也可以用編程語句,也可以夾雜一些中文??傊瑢⑺惴ê茈S意地表達出來就行。使用偽代碼的目的是讓設計者把精力集中在算法的表達上,盡可能地把算法正確地表達出來,而不在乎具體的語法細節(jié)。當然,這樣的代碼也只能算是偽代碼,因為它是不能被計算機執(zhí)行的,它需要下一步按照語法細則寫成最終的程序,然后才能為計算機所承認。10.2.3算法表達(2)流程圖法。流程圖描述了計算機程序的輸入、處理、輸出模型的中間框圖,它描述的是計算機如何一步步地去完成指定的任務。流程圖雖然不包含所有的程序細節(jié),但它為最終的程序提供了邏輯結構。在繪制好能夠正確表達算法的流程圖之后,下面編寫程序的工作就會很順暢了。由于繪制流程圖比較費時間,有的初學者急功近利,不愿意去繪制流程圖,結果在程序的編寫中,花費了更多的時間。繪制流程圖需要注意兩個方面,其一是掌握構成流程圖的標準符號,讀者可以參考有關的程序設計教程,熟悉各種符號的含義和使用,如圖10.3所示列出了幾種常用的流程圖符號;其二是對要表達的算法的邏輯結構比較清楚。需要說明的是,繪制程序流程圖與編程能力是有關的,只有在學習了程序之后,才能更好地學習和使用流程圖,而在編寫程序之前,可能必須繪制流程圖。這個問題有點像“先有蛋還是先有雞”的問題。而且,許多學科也會碰到類似的問題,它們之間存在著一種相互促進、相互提高的一種互動關系。圖10.3常用的流程圖符號流程圖法與上述的自然語言描述法不僅可以用于算法問題,也可以用于其他方面問題的表達或描述。如圖10.4所示的就是一個日常生活中打電話過程的流程圖。按照流程圖和走向檢驗一下流程圖是否全面考慮了以下幾個假設:①假設在你開始打電話時電話壞了。②假設你的朋友在家并接了電話。③假設你朋友的電話占線。④假設你朋友家沒有人。⑤假設你的朋友不在家,但是他的家人接了電話。圖10.4打電話過程的流程圖算法的每一步都必須有明確的含義,絕對不能出現(xiàn)“二義性”,否則計算機將無所適從,很難獲得正確結果。計算機無法直接使用人類的語言,這是因為英語等人類語言對于計算機來說,太不明確了。人的大腦具有思維能力,能夠直覺地理解句子的含義,而計算機做不到。雖然人工智能方面的專家說,他們的研究工作能使得計算機聽懂人類的語言,但至今的研究進展,也僅僅限于孤立的單詞,距離理解人類語言實在太遠。10.2.4計算機無法處理二義性通過編程,可以讓計算機翻譯人類的語言,比如讓計算機學習下面的句子:Fruitflieslikeanapple.第一句是很普通的一個主謂賓句型,意義是“果蠅喜歡蘋果”,當“教會”了計算機“理解”這樣的句型,計算機就能翻譯出“果蠅喜歡橘子”、“果蠅喜歡香蕉”等。但是對于下面的句子:Timeflieslikeanarrow.計算機根據(jù)前面的學習,仍然會把它當作主謂賓句型來對待,結果可能是“時間蠅喜歡箭”,而人們很容易地理解這句話的真正含義:時間飛逝如箭。在數(shù)學課上,當寫了Num=Num+1這樣的式子,那肯定是錯誤的,任何數(shù)不可能等于自身加1。然而,在程序中,數(shù)學課中的等號“=”,將被稱做賦值號。賦值號“=”的含義是:獲取等號右邊的所有符號,計算它們的值,并將結果放在等號左邊的變量中。10.2.5計數(shù)器和累加器一個特別有意義的賦值式子是諸如Num=Num+1這樣的式子,事實證明它非常有用。因為它用在循環(huán)結構中,能夠統(tǒng)計出循環(huán)執(zhí)行的次數(shù)。因為每當循環(huán)一次,該變量的值就會加1,故把該式子中的變量稱為計數(shù)器變量。下面的程序清單是一個猜數(shù)的游戲程序,其猜數(shù)循環(huán)結構中使用了計數(shù)器變量Tries通過Tries=Tries+1來記錄猜了多少次。PrivateSubCommand1_Click()′NumberguessinggameClscompNum=47′Thecomputer′snumberDebug.Print″Iamthinkingofanumber...″Debug.Print″Trytoguessit.″Tries=0DoDebug.Printguess=Val(InputBox(″Whatisyourguess(between1and100)″,″guess″))If(guess<compNum)Then

Debug.Print″Yourguesswastoolow,tryagain.″ElseIf(guess>compNum)Then

Debug.Print″Yourguesswastoohigh,tryagain.″EndIfTries=Tries+1′AddonetothecounterLoopUntil(guess=compNum)Debug.Print″Yougotitinonly″;Tries;″tries!″EndSub累加器類似于計數(shù)器,如同樣的變量名出現(xiàn)在賦值號的兩邊。不同的是,累加器通常給變量增加的值不是1,而是一個數(shù),比如要求若干個學生的總分,可以使用Total=Total+Score這樣的語句,其中Score逐個輸入的某個學生的考分,最后所得的Total記錄下來的就是總分。排序算法中一般都用到交換變量的值,也就是對換變量,如圖10.5所示,交換的結果是原來變量1中的值現(xiàn)在存儲在變量2中,而原來變量2中的值卻存儲在變量1中。假如使用下列兩條語句,將變量Variable1、Variable2分別賦給了具體的值。Variable1=88Variable2=5610.2.6交換變量的值圖10.5交換變量的值要對它們進行交換,如果使用下面的語句,那就大錯特錯了。這是因為第一句將變量Variable2賦給Variable1,用Variable2的值覆蓋了原來Variable1的值,這時兩個變量的值一樣了,第二句已是多余的了。Variable1=Variable2Variable2=Variable1交換變量的值的正確方法是,使用一個中間變量,也稱為臨時變量,因為一旦交換完成,這個變量也就沒有用了。用VisualBasic的語句表示為:Temp=Variable1Variable1=Variable2Variable2=Temp順序結構,就是計算機按照程序中語句的自然順序依次執(zhí)行。第一條語句先執(zhí)行,接著第二條,……,一直到程序結束。如下面一個VisualBasic程序片段:Debug.Print″Thisisthefirstline.″Debug.Print″Thisisthesecondline.″這兩行程序的功能分別是,打印該語句引號中的內(nèi)容。它的執(zhí)行情況如圖10.6所示。10.3程序結構

10.3.1順序結構圖10.6順序結構分支結構也稱為選擇結構,程序執(zhí)行到選擇結構時,必須根據(jù)判斷的結果做出選擇,因此選擇結構中的語句只有其中之一被執(zhí)行,有所選擇必定有所放棄。在VisualBasic中,選擇結構使用的是If...Then...Else...EndIf語句。舉例說明如下:10.3.2分支結構Number=INPUTBOX(″Enteranumberfrom1to10:″)IfNumber>10Then

Debug.Print″Thatnumberisgreaterthan10.″Else

Debug.Print″Thatnumberis10orless.″EndIf分析如圖10.7所示的程序流程圖,更容易通過上述VisualBasic程序片段來理解分支結構是如何執(zhí)行的。圖10.7分支結構循環(huán)結構又稱重復控制結構或迭代結構。它可以使計算機反復多次執(zhí)行同一段程序,直到循環(huán)條件不滿足時結束。有人認為,計算機最重要的任務就是循環(huán)。成千上萬次地重復執(zhí)行某些操作,是計算機最擅長的,而且似乎永遠不知疲倦。只有程序中恰當?shù)夭捎昧搜h(huán)控制結構之后,才可能變得功能強大。10.3.3循環(huán)結構在VisualBasic中,循環(huán)結構使用的是While...end結構和For...Next結構。同樣,舉一個簡單的BASIC程序片段的例子:ForN=1TO3

Debug.Print″There′snoplacelikehome.″NextNEnd如圖10.8所示的程序流程圖,描述了上述VisualBasic程序如何執(zhí)行循環(huán)結構的。為了對循環(huán)結構有一個更深刻的理解,下面將程序的執(zhí)行過程詳細說明如下:圖10.8循環(huán)結構如圖10.9所示,用一個標有“N框”的矩形框來代表記錄循環(huán)次數(shù)的內(nèi)存變量,用另一個標有“顯示框”的矩形框來代表計算機屏幕,用來顯示結果。隨著循環(huán)一次次地進行,這兩個框中的內(nèi)容也不斷改變。①首先,執(zhí)行語句ForN=1TO3,把N賦值為1。N框中的值為1。②執(zhí)行語句Debug.Print″There′snoplacelikehome.″。顯示框中顯示“There′snoplacelikehome.”。圖10.9N框和顯示框③語句Next使程序的執(zhí)行回到語句ForN=1TO3。因為這是第二次執(zhí)行這條語句,所以N的值自動加1,N框中的值由1改為2。④測試N的值是否大于3。這是因為語句ForN=1TO3表示只有當N的值不大于3時,才能繼續(xù)循環(huán)下去。此時,N=2,繼續(xù)執(zhí)行。⑤在顯示框中再顯示“There′snoplacelikehome.”。⑥繼續(xù)執(zhí)行,又遇到Next語句,回到For語句。⑦把N框中的值改為3,并判斷此時N的值并不大于3,再次進入循環(huán)。⑧在顯示框中再顯示“There′snoplacelikehome.”。⑨繼續(xù)執(zhí)行,又遇到Next語句,回到For語句。⑩把N框中的值改為4,并判斷此時N的值已大于3,跳出循環(huán),循環(huán)結束。⑾執(zhí)行語句End,程序運行結束。如果程序需要不止一次重復一個循環(huán),比如需要打印乘法口訣表,可以使用嵌套循環(huán)。與其他語句一樣,循環(huán)語句也可以嵌套在另一個循環(huán)結構之中。如圖10.10(左)所示,顯示了一個VisualBasic的二重循環(huán)輪廓圖,圖中的外層循環(huán)執(zhí)行了9次,內(nèi)層循環(huán)在外層循環(huán)的每一次完成了一個輪回,即9次,因此內(nèi)層循環(huán)代碼總共執(zhí)行了81次。10.3.4嵌套結構圖10.10嵌套循環(huán)結構如果要打印乘法口訣表的話,就可以用這個輪廓圖所指示的二重循環(huán),它可打印出81個數(shù),如圖10.11所示。如果需要的話,可以將多個循環(huán)嵌套在一個外層循環(huán)之中。在外層循環(huán)完成它的第一次循環(huán)之前,必須將內(nèi)部的兩個或多個循環(huán)都完全執(zhí)行一個輪回。當外層循環(huán)執(zhí)行第二次的時候,內(nèi)部每個循環(huán)又將做同樣的重復,直到外層循環(huán)結束。如圖10.10(右)所示的循環(huán)結構中,每一個內(nèi)層循環(huán)代碼塊都會執(zhí)行81次。圖10.11打印乘法口訣表在使用嵌套循環(huán)時,一個要注意的問題是,Next語句與For語句成對,并且Next總是與離它最近的For匹配。如果程序中內(nèi)部循環(huán)的Next語句在外部循環(huán)的Next語句的后面,將會引起語法錯誤。DimxOut,xInasintegerForxOut=1To9ForxIn=1To9 IfxOut>=xInThen

Debug.Print

xOut*xIn;″″; EndIfNextxIn

Debug.PrintNextxOut所謂子程序,就是將程序分為更小的邏輯組成部分,這樣可簡化復雜程序的編寫,這些組成部分就叫子程序,也有的語言把它稱做過程或函數(shù),這里不加以細究,僅認為子程序是程序模塊化的一種組織形式。通過它將一項復雜的任務分為若干項子任務,并如此一步步地細分下去,直到面對更小的更具體的任務,而且能夠找到解決它的算法。因此,用子程序的思想編程有以下一些優(yōu)點:10.3.5子程序(1)子程序?qū)⒊绦蚍譃橐粋€個獨立的邏輯單位,對每個單位的調(diào)試比起一個大的程序要容易得多。(2)一個子程序可以稍做修改或不做修改再被其他程序調(diào)用,從而避免了書寫重復代碼,節(jié)省了時間和資源。在VisualBasic中,調(diào)用子程序使用GOSUB語句或CALL語句。在被調(diào)用的子程序中使用RETURN語句結束子程序,返回調(diào)用子程序的語句處繼續(xù)執(zhí)行程序。為了幫助讀者理解子程序及其調(diào)用形式,下列給出一個帶有3個子程序的完整的VisualBasic程序,在這個程序中的3個子程序分別完成的任務如下:(1)AskForData子程序要求用戶輸入10個號碼。(2)SortData子程序?qū)⑻柎a排序。(3)PrintData子程序打印號碼。通過子程序方式來組織的程序,結構非常清晰,即使不能一下子讀懂程序,也不會覺得程序的雜亂,并且很快會把注意力集中到較難的語句上?!銹rogramwithsubroutinesClsDimValues(10)GoSub

AskForData′Getuser′slistofnumbersGoSub

SortData′SortthenumbersGoSub

printData′printthenumbersEndAskForData:′Gets10valuesfromtheuserDebug.Print″**NumberSortingProgram**″Fori=1To10

Values(i)=Val(InputBox(″Whatisanumberforthelist:″))NextiReturnSortData:′Sortsthe10valuesForpass=1To10Forctr=1To9 If(Values(ctr)>Values(ctr+1))Then t=Values(ctr)

Values(ctr)=Values(ctr+1) Values(ctr+1)=t EndIfNextctrNextpassReturnprintData:Debug.PrintDebug.Print″Afterthesort:″Fori=1To10

Debug.Print

Values(i);″″;NextiReturnEnd如圖10.12所示,顯示了程序的運行結果。讀者可以調(diào)試運行本程序,并參照圖10.12的結果來理解子程序的調(diào)用。圖10.12子程序的調(diào)用及其結果現(xiàn)在,如果已經(jīng)對要解決的問題,找到了一個好的算法。比如,要編程計算圓周率,可以利用公式:π/4=1-1/3+1/5-1/7+1/9-1/11+…。接下來就是編寫程序了。假設已經(jīng)初步掌握了如VisualBasic這樣的入門級程序設計語言,應該很容易地用程序來求出圓周率。10.4程序的編輯與編譯

10.4.1使用編輯器要編寫一個程序,首先需要選擇一種編輯器。實際上,編輯器可以選用現(xiàn)成的任何一個字處理器。因為在編寫程序的過程中,要做的操作就是向計算機中輸入程序代碼,輸入過程中可能要做的復制、移動、刪除等操作以及輸入完成后的存儲操作等都是字處理器的基本功能。只要具備基本的文本編輯功能,就可用來作程序的編輯器。Windows操作系統(tǒng)下的“記事本”就是一個非常適合于編寫程序的一個文本編輯器。相反,如果使用像MicrosoftWord那樣的功能復雜的字處理器,由于它的格式排版功能,可能會在程序代碼中夾雜一些不該有的格式控制符而使程序運行出錯。如果要將曾經(jīng)出現(xiàn)過的編輯器分類的話,那就應該分為兩類:行編輯器和全屏編輯器。較早出現(xiàn)的是MS-DOS下的Edline行編輯器,行編輯器不允許使用光標移動鍵上下左右在屏幕上來回地移動光標,使用起來很不方便,現(xiàn)在基本上不再使用。但在UNIX操作系統(tǒng)之下,可能不得不使用這種編輯方式。一些撥號上網(wǎng)的計算機,因為使用了不允許全屏控制的調(diào)制解調(diào)器,也必須使用這種編輯方式。另一類是全屏編輯器,現(xiàn)在絕大多數(shù)編程語言都帶有自己的全屏編輯器。全屏編輯器一般都提供下拉菜單和鼠標點擊操作方式,所以只要曾經(jīng)使用過字處理器,就不會對在編輯器進行程序編輯操作感到困難,當然必要時,可以使用幫助菜單或使用幫助鍵(如F1)。有兩種語言翻譯器:解釋器和編譯器,它們的作用是將編寫的源程序代碼轉(zhuǎn)換成計算機能夠直接執(zhí)行的機器代碼,盡管采用不同的方法,但目的是一樣的,如圖10.13所示。10.4.2語言編輯器圖10.13解釋器和編譯器將源代碼翻譯成機器代碼1.解釋器有些語言使用解釋方式的語言翻譯器,如BASIC、APL等,稱之為解釋式程序設計語言,其翻譯器稱做解釋器。解釋器的工作方式是對源程序代碼每轉(zhuǎn)換一行,就執(zhí)行一行。有點像英文老師在講解一篇課文,讀一句,翻譯一句,明白一句。由于這種方式一次解釋一行,執(zhí)行一行,解釋結果并不保留,以后再次執(zhí)行之前,仍需同樣的解釋。2.編譯器使用編譯器,在編譯過程中將源程序所有代碼都轉(zhuǎn)換為計算機能識別的目標代碼。當然,如果程序有錯誤,必須在編譯成功之前改正所有的錯誤。使用編譯器轉(zhuǎn)化源程序代碼,就像不愿意學英文的人,要閱讀用英文寫的文章,那只有請人先將這篇文章翻譯成中文,直接閱讀它的“中文版”。更多的人愿意使用編譯型的編程語言,因為程序一旦編譯好,其編譯結果就以目標代碼文件保存起來,可以反復運行,再次運行時的速度比解釋方式下要快得多。使用編譯型語言的另一個優(yōu)點是,生成的可執(zhí)行文件可以脫離編譯器,在沒有編譯器的情況下照樣運行,為程序的發(fā)布提供了條件。軟件公司出售的軟件是經(jīng)過編譯以后的可執(zhí)行代碼,無法知道它的源代碼,這一方面增加了程序的安全性,另一方面也避免了軟件產(chǎn)權的糾紛。為了使用方便,現(xiàn)在大多數(shù)程序設計語言,都將程序編輯器和程序解釋器或編譯器集成在一起??梢允褂孟嗤淖烂姝h(huán)境和同一套菜單命令來進行程序的輸入、編輯、編譯、運行,這些都在同一個地方進行。這種簡單易用性,可以使設計者將更多的精力集中到程序編寫上。10.4.3集成開發(fā)環(huán)境在集成編輯編譯環(huán)境下,輸入了程序之后,可以用菜單命令將程序編譯成機器語言,無須離開編輯環(huán)境就可以運行程序,并且可以通過簡單的方式在編輯程序的窗口與觀察程序的輸出的窗口之間切換。比如VisualBasic,它的工作環(huán)境是集成開發(fā)環(huán)境,簡稱IDE,它在一個公共環(huán)境里集成了許多的功能,包括設計、編輯、編譯和調(diào)試。如圖10.14所示。圖10.14VisualBasic集成開發(fā)環(huán)境VisualBasic的菜單欄中包含使用VisualBasic所需要的命令。它除了提供標準“文件”、“編輯”、“視圖”、“窗口”和“幫助”菜單之外,還提供了編程專用的功能菜單,例如“工程”、“格式”、“調(diào)試”、“外接程序”等。VisualBasic的工具欄在編輯環(huán)境下提供對于常用命令的快速訪問。單擊工具欄上的按鈕,即可執(zhí)行相應的操作??梢酝ㄟ^“視圖”菜單中的“工具欄”中的命令顯示或隱藏某一工具。工具欄能緊貼在菜單欄下方,或以垂直條狀緊貼在邊框上,如果用鼠標將它從某欄下面移開,則它能“懸”在窗口中。工程窗口的功能實際上類似于一個Windows的資源管理器,主要用來管理用戶在制作項目時的項目文件,也稱做工程管理器。通過工程管理器可以很方便地找到需要的文件和窗體,還可以添加和刪除項目文件。窗體窗口是屏幕中央的主窗口,它可以為用來設計應用程序的界面自定義窗口。用戶可以在窗體中添加控件、圖形和圖片以設計出所希望的應用程序界面。每個窗口必須有一個窗體名字,建立窗體時默認名為Form1、Form2...。窗體名即窗體的“Name”屬性,窗體文件名不必相同。工具箱提供了一組工具,用于設計時在窗體中放置控件生成應用程序和用戶接口。系統(tǒng)啟動后默認的General工具箱就會出現(xiàn)在屏幕左邊,上面共有21個常用“部件”??梢詫⒉辉诠ぞ呦渲械钠渌鸄ctiveX控件放到工具箱中。通過“工程”菜單中的“部件”命令或從“工具箱”快捷菜單中選定“部件”選項卡,就會顯示系統(tǒng)安裝的所有ActiveX控件清單。要將某控件加入到當前選項卡中,單擊要選定控件前面的方框,選定的控件就出現(xiàn)在工具欄中。代碼窗口,即代碼編輯窗口。在VisualBasic中,所有的代碼都是在代碼窗口中編寫的。代碼窗口實際上就是一個文本編輯器,它可以用來編寫、顯示和編輯窗體、事件和方法程序的代碼,應用程序的每個窗體或標準模塊都有一個單獨的代碼編輯器窗口??纱蜷_任意多個代碼窗口,從而方便地查看、復制和粘貼來自不同窗體的代碼。代碼窗口如圖10.15所示。圖10.15VisualBasic代碼窗口屬性是指對象的特征,如大小、標題或顏色等數(shù)據(jù)。在VisualBasic設計模式中,屬性窗口列出了當前選定窗體或控件的屬性及其值,用戶可以對這些屬性值進行設置。立即窗口可用來鍵入或粘貼一行代碼,然后執(zhí)行它,如顯示某變量的當前值;也可以通過在程序中,插入“debug.print變量名”語句,檢測在執(zhí)行一個應用過程時某個變量值。監(jiān)視窗口是為調(diào)試應用程序提供的,只在運行工作模式下才有效。自己編寫的程序,第一次運行,成功的可能性是極小的,除非程序極其簡單,否則總會出現(xiàn)這樣那樣的錯誤。程序調(diào)試是自己尋找和排錯的過程。前人把程序中的錯誤稱做為“蟲子”,是因為第一個有記錄的計算機運行錯誤確實是一只蟲子。MarkⅡ計算機是一臺1945年建造的機電式計算機,有一天,它神秘地停止了工作。通過艱難地搜尋,最后竟然發(fā)現(xiàn)在繼電器的接觸點上夾住了一只飛蛾,于是工作人員將它夾在工作日志中,并記錄:“這是第一個實際找到的錯誤”。因此,把除去計算機運行中的錯誤稱做DEBUG(除去蟲子)。10.5程序的調(diào)試(1)編譯錯誤。編譯錯誤是由結構不正確的代碼造成的。如果鍵入了一個拼寫錯誤的關鍵詞,遺漏了某個必需的標點符號,或使用For語句時丟失了Next語句。這類錯誤編譯系統(tǒng)會做出提示,指出錯誤所在的行號,以便在調(diào)試時及時發(fā)現(xiàn)并改正,如圖10.16所示。10.5.1錯誤的種類圖10.16編譯錯誤提示(2)運行錯誤。當一條語句試圖執(zhí)行一個不可能執(zhí)行的操作時,會發(fā)生運行錯誤。最常見的運行錯誤是除數(shù)為0錯誤。如程序中含有A=B/C這樣的語句。但如果在運行時,變量C的值可能為0,則該除法是一個無效的運算,而語句本身是正確的,并且變量C的值如果不是0的情況下程序是會得到正確結果的。另外,還有諸如求平方根函數(shù)的參數(shù)為負數(shù)等,這樣一類錯誤,必需在程序運行時才能發(fā)現(xiàn)。(3)邏輯錯誤。當應用程序沒有按預定的方式運行,則發(fā)生的是邏輯錯誤。一個應用程序在語法上代碼有效,運行時無任何無效的操作,即未發(fā)生以上兩類錯誤,但得不到正確的運行結果。比如,在編寫求球體積的程序中,使用的數(shù)學公式為4/3*3.14159*r*r,顯然正確的球體積公式應該是4/3*3.14159*r*r*r。編譯系統(tǒng)在編譯時是不能查出此類錯誤的,因此,這類錯誤具有更大的的隱蔽性,只有通過已知結果的數(shù)據(jù)進行運行測試并分析后,才能發(fā)現(xiàn)和改正。這類錯誤的排除難度更大,很大程度上需要的是程序調(diào)試者的經(jīng)驗和耐心。VisualBasic也提供了程序調(diào)試的一些手段,而且這些手段與大多數(shù)功能強大的Windows下的編程環(huán)境十分相似。這里以VisualBasic為例來介紹程序的常用調(diào)試手段。VisualBasic的調(diào)試菜單中幾個菜單項及其功能如表10.1(見書358頁)所示,可以利用這些菜單項來調(diào)試程序。10.5.2用VisualBasic練習調(diào)試(1)單步執(zhí)行。選擇“調(diào)試”菜單中的“逐語句”菜單項或按F8快捷鍵,開始跟蹤。每按一次F8鍵,VisualBasic執(zhí)行一條語句,并且使正在執(zhí)行的語句加亮顯示。一直按F8鍵單步執(zhí)行每一句,觀察加亮語句的變換,必要時輸入需要的數(shù)據(jù)。單步執(zhí)行方式對檢查循環(huán)結構中語句的執(zhí)行非常有幫助,可以直接地看到程序的執(zhí)行有沒有進入循環(huán)體,循環(huán)了幾次,從而判斷循環(huán)條件設置得是否正確。在單步執(zhí)行方式下,如果程序中含有debug.print語句,則可以在立即窗口中查看輸出,以了解至目前為止程序的輸出是否一直無誤。當然,在找到并修改了程序中的錯誤之后,也可以按F5鍵,以非跟蹤方式完成程序中其他語句的執(zhí)行。不過,如果修改關系到程序結構的語句,像循環(huán)結構或者在程序中間定義了一個新的變量,則VisualBasic會要求重新運行程序而不是繼續(xù)運行程序。(2)跳過過程。“調(diào)試”菜單中的“逐過程”菜單項能夠一次執(zhí)行一個函數(shù)或過程,而不是一句句地跟蹤其每一行。單步執(zhí)行到調(diào)用函數(shù)revStr$()的語句Debug.print″yournamebackwardsis:″;revStr$(name$)時,并不進入該函數(shù)內(nèi)部一句句地執(zhí)行。當知道該函數(shù)肯定沒有錯誤時,可使用“逐過程”菜單項,以免浪費時間跟蹤到其內(nèi)部。(3)打印變量。在調(diào)試VisualBasic或其他語言的程序時,可能需要查看某些變量的值,以確定程序中的錯誤所在。VisualBasic及其他語言的調(diào)試器也提供了這種功能。在VisualBasic集成開發(fā)環(huán)境中,可以使用諸如“Form1.printx”的“對象.print”語句在對象上打印變量的值。最常用的是“debug.printx”語句,它在VisualBasic提供的立即窗口輸出變量的值。這樣,能夠在程序運行完查看某些變量的值或程序的執(zhí)行結果。例如,對于如圖10.17所示的求1+2+…+100之和的這樣一段程序,如果想知道當For循環(huán)結束時,循環(huán)控制變量i的值是多少,可以在For循環(huán)的Next語句后加上debug.print″I=″;I,這樣,在程序運行結束后,可以在立即窗口中看到I的值是101。其他類似的問題都可以通過立即窗口來查看。不過,如果程序中的錯誤被改正之后,為了程序的簡捷,應該將它們刪除掉。另外,立即窗口中的操作類似于命令行方式,輸入一條語句,按Enter鍵則會立即執(zhí)行,這種方式最適合于打印表達式的值,驗證表達式是否正確,或者查看函數(shù)的值如何。圖10.17使用立即窗口(4)設置斷點。當程序出現(xiàn)邏輯錯誤時,由于邏輯錯誤的隱蔽性,很難從一個較長的程序中找到錯誤所在。這時在程序的某個語句處設置斷點,是一種比較有效的辦法。它可以使程序分段執(zhí)行,便于分段驗證程序的正確性。在VisualBasic中,將光標定位在要設置斷點的語句行,按F9鍵或執(zhí)行“調(diào)試”菜單中的“切換斷點”菜單項,該語句行出現(xiàn)紅色背景,表明這里設置了斷點,如圖10.18所示。圖10.18設置斷點的語句行在程序中設置了斷點之后,程序運行到這里時,會暫停下來,進入中斷模式,此時,可以在立即窗口中查看有關變量的值,從而確定錯誤所在。斷點信號可設在需要的任何語句處,但是斷點信號是臨時的,它不能隨程序代碼而保存,下次打開程序文件后,需要的話,可能要重新設置斷點。在過去的幾十年里出現(xiàn)了上百種編程語言。一些語言的開發(fā)為了提高編程效率,降低出錯率。另一些則是為專門的編程提供高效的指令集,例如商業(yè)程序和科技程序。其他的用于教學。這些語言在描述如何工作和如何給合適任務類型提供信息時各具特色。例如,Pascal語言是一種可編譯的過程性高級語言。當需要選擇語言來編程時,了解這些語言的特色和優(yōu)缺點將很有幫助。10.6編程語言用過程性語言編寫的程序包含一系列的描述,告訴計算機如何執(zhí)行這些過程來完成特定的工作。帶有過程性特征的語言稱為過程性語言。編寫求解立方體體積的VisualBasic語言程序就具有過程性特征,那些語句確切地告訴了計算機如何工作:顯示信息請求用戶輸入形狀;請求輸入大??;然后請求輸入價格;然后根據(jù)形狀選擇公式等。10.6.1過程性語言過程性的編程語言適合于那些順序執(zhí)行的算法。用過程性語言編寫的程序有一個起點和一個終點。程序從起點到終點執(zhí)行的流程是直線型的,即計算機從起點開始執(zhí)行寫指令序列,直到終點。只需具體說明問題的規(guī)則并定義一些條件即可。語言自身內(nèi)置了方法把這些規(guī)則解釋為一些解決問題的步驟,這就把編程的重心轉(zhuǎn)移到描述問題和其規(guī)則上,而不再是數(shù)學公式。因此說明性語言更適于思想概念清晰但數(shù)學概念復雜的編程工作。不同于過程性的程序,用說明性語言編寫程序只需告訴計算機要做什么,而不需告訴它如何去做。10.6.2說明性語言HTML是一種語言嗎?HTML一般稱為腳本語言。腳本語言以腳本的形式定義一項任務。腳本需要一個主機應用系統(tǒng)依附來運行,不能單機運行。例如,用HTML標簽為顯示網(wǎng)頁編寫一個腳本,這個腳本由網(wǎng)絡瀏覽器解釋,這里網(wǎng)絡瀏覽器就是主機應用系統(tǒng),沒有它,HTML腳本就不能運行。10.6.3腳本語言腳本語言包含在許多應用程序中,像字處理軟件和電子制表軟件??梢杂媚_本使應用程序中的任務自動化。這些自動化例程即通常所說的宏指令。腳本語言使用起來比其他編程語言要簡單,但它提供的控制選項很少。如果想應用軟件中的功能自動定制完成的話,HTML對不擅長編程的人是一個很好的選擇。低級語言需要為計算機系統(tǒng)低層硬件編寫指令,像處理器、寄存器和內(nèi)存地址等。低級語言對直接在硬件水平上操作機器很有用。通常使用低級語言編寫像編譯器、操作系統(tǒng)和設備驅(qū)動程序之類的系統(tǒng)軟件。低級語言中的指令一般和處理器的指令相對應。使用低級語言編程,即使是兩數(shù)相加這樣簡單的操作也要數(shù)條指令才能實現(xiàn)。10.6.4低級語言面向?qū)ο蟮某绦蛟O計語言是建立在用對象編程的方法基礎之上的。對象就是程序中使用的實體或“事物”,例如,按鈕,就是一個對象,并且已經(jīng)習慣于用鼠標單擊一個按鈕。程序員可以使用面向?qū)ο蟮恼Z言來定義按鈕對象,在程序運行時把它顯示出來。10.6.5面向?qū)ο笳Z言對象屬于一個具有一定特性的類或組。窗口類是比較常見的類,所有的窗口對象,包括應用程序窗口,都屬于窗口類,它們具有相同的屬性,如都具有一個標題欄和一個“關閉”按鈕。在創(chuàng)建一個窗口對象時,它就獲得或者說繼承了窗口類的屬性和操作,但一個特定的窗口實例可以具有自己特定的屬性,如標題、大小、屏幕上的位置均可不同,如圖10.19所示。圖10.19兩類窗口同一對象可用在不同的程序中,這無形中就擴大了程序員的生產(chǎn)率。例如,許多應用軟件都給用戶文件提供了打開、保存、另存為、打印等操作,如果編寫這樣的應用程序,定義一個對象來完成這些操作會很方便,只要程序中用到這些操作,隨時都可調(diào)用這些對象,避免了重復勞動。對象是一種現(xiàn)有的非常明顯的良好的編程思想。微軟公司的Windows包含一個Comdlg.dll文件,其中就有用于打開、保存、打印文件的菜單對象和對話框?qū)ο?。程序事件是指程序必須作出響應的動作或表現(xiàn),比如按鍵和單擊。用事件驅(qū)動語言編程可以使用程序隨時檢測并響應事件。使用圖形界面的程序大部分都是事件驅(qū)動的,它們在屏幕上顯示諸如菜單這樣的控件,并在用戶作用控件時采取某一動作。事件驅(qū)動和程序中,代碼段要和圖形化的對象相關聯(lián),比如命令按鈕和圖標。用戶操作某一對象時產(chǎn)生一個事件。10.6.6事件驅(qū)動語言比如單擊“畫圖”按鈕,該事件就觸發(fā)與此對象關聯(lián)的指令執(zhí)行。如圖10.20所示的是一個事件驅(qū)動程序的界面和該事件的代碼。代碼窗口列出的是對象Command1的單擊事件代碼,代碼的功能是繪制若干個同心圓和兩條相互垂直的直徑。圖10.20一個事件驅(qū)動程序的界面和該事件的代碼程序中的對象從何而來?實際中,面向?qū)ο蟪绦蛑械膶ο笫怯沙绦蛟O計者生成的。但程序員可以購買一些稱為構件或庫的對象。構件是事先寫好的對象,可以應用到自己的程序中,對于目前流行的編程語言,構件可以買到。使用構件編程稱為構件程序設計。10.6.7構件假設你被聘用為政府編寫一個研究資源再生的軟件。工程師要求該軟件能周期性生成一些圖形來比較玻璃、紙、鋁和其他可再生材料的量。圖形構件可以為軟件提供這種功能。只需把圖形庫與程序連接。如果還需要填寫政府的表格,可以再買一些表格構件加上“再生”軟件來生成所需的表格。可以選擇各種各樣的構件來增強功能,比如,電子表格、數(shù)據(jù)庫管理、專家系統(tǒng)、報表生成、在線幫助、數(shù)據(jù)查詢、文字編輯、科幻和3D圖形等。通常情況下,一項任務可以用多種編程語言來實現(xiàn)。為一項工程選擇語言時,應該考慮下面幾個問題:(1)這種編程語言是否適合于手中的任務?(2)這種語言在其他的應用程序中是否也經(jīng)常使用?(3)小組中的人是否都精通這門語言?如果這些問題的回答都是肯定的,那么這門語言對這項工程是一個很好的選擇。了解當今一些流行的語言特性對你回答第一個問題會有幫助。10.7選擇編程語言BASIC是為初級編程者設計的。自從1964年問世以來,已經(jīng)出現(xiàn)了幾種流行的版本,包括IBM-PC上的GW-BASIC和微軟的VisualBasic。由于BASIC容易使用和適合于各種計算機系統(tǒng),它已成為最流行和最廣泛使用的語言之一。BASIC是一種過程性的高級語言,它的大多數(shù)版本都是解釋執(zhí)行的語言,但也有一些是編譯執(zhí)行的。10.7.1BASIC語言BASIC早期的版本對于開發(fā)復雜的商用程序非常有限,但一些新版本,如微軟公司的VisualBasic(VB)就是綜合性的且功能強大的編程語言,適合于專業(yè)編程項目,尤其適用于帶有圖形界面的事件驅(qū)動程序設計。美國海軍上將GraceHopper,第一只計算機臭蟲的發(fā)現(xiàn)者,和她的工作小組,設計了一種用于商業(yè)方面計算的語言——COBOL。COBOL是CommonBusinessOrientedLanguage(通用商務對象語言)的縮寫。10.7.2商務語言COBOLCOBOL是發(fā)展于20世紀60年代的一種語言,適于大型計算機系統(tǒng)上的事務處理。COBOL是編譯執(zhí)行的過程性高級語言,主要被一些專業(yè)程序員用來開發(fā)和維護大型商業(yè)集團的復雜程序。COBOL程序往往很長,但容易讀懂、調(diào)試和維護。這種特性對于大型商業(yè)組織機構尤其重要,因為許多重要的程序必須由不同的程序員維護和修改。FORTRAN的含義是方程翻譯器(formulatranslator)。它主要用于數(shù)學計算和科學應用。FORTRAN適用于對高精度數(shù)字進行處理,并且提供一個優(yōu)良的三角函數(shù)庫,專門用于針對科學開發(fā)者的需求。多年以來,程序員們對FORTRAN語言添加了許多內(nèi)容,使其具有了更強的字符處理能力。FORTRAN的早期版本主要考慮的是解決數(shù)學計算,而對結果的表達形式?jīng)]有太多的關注,較新的版本則在保持其數(shù)學運算能力的基礎上,大大增強了對字符數(shù)據(jù)的處理能力。10.7.3FORTRAN語言表10.2(見書364頁)中是一個FORTRAN程序的例子清單,目的在于通過具體的程序例子真正地接觸一下FORTRAN程序。FORTRAN是一門高級語言,其程序比匯編語言程序要容易閱讀,但它并不是一門初學者語言,對于初學者來說,它并不是足夠地淺顯易懂。FORTRAN語言以其擅長于數(shù)據(jù)計算的特點一直在科學研究領域中占有立足之地,多年來,它的領地雖已被Pascal、C和C++蠶食了不少,但是其超強的數(shù)值計算能力仍是其他語言不可替代的。Pascal開發(fā)于1971年,用于幫助學生學習計算機編程。Pascal是編譯執(zhí)行的過程性高級語言。它開了結構化程序設計的先河,但Pascal很少用于專業(yè)編程和商用軟件的開發(fā)。10.7.4Pascal語言C語言是編譯執(zhí)行的過程性高級語言并帶有低級語言的接口,這種特性給程序員帶來很大的靈活性。利用這種靈活性。有經(jīng)驗的程序員可以使程序速度快、效率高,但也使C程序難于理解、難于調(diào)試和維護。C++是支持面向?qū)ο蟮腃語言。許多人認為C++的面向?qū)ο筇匦钥梢蕴岣叱绦騿T的效率,但面向?qū)ο蟮某绦蛟O計的思維方式與過程性設計迥然不同,因此,剛剛使用C++編程的程序員往往困難重重。10.7.5C語言LISP和Prolog是說明性高級語言,一般用于開發(fā)專家系統(tǒng)。它們分別開發(fā)于1960年1971年,相對于過程性的語言,它不算很流行,這或許是因為早期的計算機應用程序一般是處理一些需要簡單重復運算的任務,而這正是過程性語言所擅長的。那些需要對字符數(shù)據(jù)進行復雜的邏輯處理的任務則適合用說明性語言來實現(xiàn)。10.7.6LISP和Prolog語言SQL語言是為數(shù)據(jù)庫的定義和操作開發(fā)的一種標準語言。SQL是說明性的高級語言,只需程序員和用戶對數(shù)據(jù)庫中數(shù)據(jù)元素之間的關系和欲讀取的信息的類型予以描述。雖然數(shù)據(jù)庫也可用COBOL等過程性的語言操作,但SQL語句由于更適用于數(shù)據(jù)庫操作而效率更高。10.7.7SQL語言Java和J++是以C++為基礎的但更適于網(wǎng)絡應用的面向?qū)ο蟮母呒壵Z言。Java和J++尤其適用于生成網(wǎng)頁上栩栩如生的圖畫和稱為Applet的Java應用程序,其中包含用戶定制的按鈕、復選框和文字輸入框之類的網(wǎng)頁控件。當瀏覽器和附有Java和J++程序的網(wǎng)頁連接時,計算機就會下載這段程序并執(zhí)行。既然程序是在計算機上而非網(wǎng)絡服務器上運行,則在輸入和接受響應時就避免了傳輸時間。10.7.8java和J++Java和J++有一個很大的不同之處。Java是一種獨立于平臺的語言,這就意味著Java程序不但能在計算機上運行,而且可運行在Macintosh和UNIX機上。J++提供給程序員的工具要求Windows的支持。使用這些工具可以編寫更快、更高效的應用程序,但它只能運行在Windows操作系統(tǒng)的機器上。不要把JavaScript和Java混淆起來,JavaScript屬于腳本語言,只是Java的一個子集。JavaScript就像HTML標簽一樣是嵌入網(wǎng)頁的。網(wǎng)絡瀏覽器接受到一個網(wǎng)頁時便解釋JavaScript。JavaScript的主要用途就是交互地生成網(wǎng)頁。8086匯編語言是一種低級語言,由一些容易記憶的短語組成,用匯編語言編寫的計算機程序也需要將它們轉(zhuǎn)化成目標程序,才能為計算機所運行。8086匯編語言指令集只適用于Intel8086微處理器,用它編寫的程序只能運行在裝有x86系列微處理器的計算機上,現(xiàn)在8086匯編語言主要用在那些程序盡可能短的或速度要求很高的場合。專業(yè)程序員把8086匯編語言嵌入應用程序使其執(zhí)行速度快,匯編語言也常用來編寫系統(tǒng)軟件來控制計算機硬件。10.7.98086匯編語言跟人類所使用的語言一樣,計算機程序設計語言也處在不斷地改變和進化之中,在新的語法和表達式不斷充實已有語言的同時,那些舊的和過時的東西也因為不用而逐漸消退。人類使用的語言的變化是一個緩慢而持久的過程,但計算機語言卻不然,它的變化則是逐步的,它往往隨著該語言的發(fā)行廠商的修改或標準化組織對其進行標準化而發(fā)生變化。10.8小結20世紀70年代末,Kemeny和Kurtz兩人開發(fā)出BASIC語言,它很快成為大眾的程序設計語言,被裝在成千上萬的計算機上。隨后,一些“更新的和改進的版本”允許程序員使用結構化原則進行BASIC程序的設計,但此時的語法和用戶的界面都沒有變化。但微軟公司于1991年開發(fā)出了VisualBasic語言,它大體上還是從老版本的BASIC語言中繼承過來的。隨后的6年中,微軟公司接連發(fā)布了4個版本的VisualBasic產(chǎn)品,這使得程序員們不得不花大量的時間和精力去重新學習,這導致了程序員們幾乎不能完整地做完一個程序項目。喪失了對語言的熟練掌握,程序員們有時不得不聚在一起討論一個很基本的對程序的理解問題,這是由于語言功能的增強所造成的后果。VisualBasic的更新反映了技術和程序設計方法的進步,例如,程序從16位向32位的轉(zhuǎn)變、Windows95的引入、網(wǎng)絡編程的需要和面向?qū)ο蠹夹g的引入等都引起了VisualBasic的更新。這些版本的更新所花的代價比起它所能提供的好處來說,究竟值不值得?一些跡象顯示,廣大和程序員們和信息系統(tǒng)的主管們對市場上計算機語言商家的商業(yè)需求和他們所保證的語言新特點越來越感到厭惡和抵制了??磥碓谟嬎銠C市場上,人們需要的是穩(wěn)定。相關知識點介紹如下:1.軟件軟件的定義比較公認的一種定義為軟件由3部分組成:(1)在運行時能提供所希望的功能和性能的指令集,即程序。(2)使得程序能夠正確運行的數(shù)據(jù)結構。(3)描述程序研制過程、方法及使用的文檔。相對硬件而言,軟件有自己的特點:(1)它是一種邏輯實體,因而具有抽象性,雖然可以記錄在存儲介質(zhì)上,但無法看到軟件本身的形態(tài)。(2)它是在研制、開發(fā)活動中被創(chuàng)造出

溫馨提示

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

評論

0/150

提交評論