【正文】
量的值為1。 //定義一個整型變量I I=1。指針類型指針類型是一種很重要的數(shù)據(jù)類型,但同時也是一種簡單卻不大好理解的數(shù)據(jù)類型。有了這個類型就可以聲明記錄型變量。記錄類型變量的一組值(或一行值)稱作元組(tuples ) ,由屬性變量的值組成。先來說數(shù)組: 以下聲明可將其連接BigArray(0)=Names() //第1元素放整個數(shù)組bigArray(1)=ages() //第2元素也放整個數(shù)組使用時用二維索引BigArray(0,7)=Names(7) //=不是VB語言符號BigArray(1,7)=Ages(7)記錄類型 引入記錄數(shù)據(jù)類型:相同或不同類型數(shù)據(jù)組成的結(jié)構(gòu)叫記錄.記錄型記錄了對象的屬性信息,記錄的各個組成部分,稱為記錄域,各個域的數(shù)據(jù)類型可以不相同。數(shù)組類型 變量代表單個數(shù)據(jù)值叫純量變量。指出數(shù)據(jù)類型的一個目的就是要避免這類錯誤的發(fā)生。E為‘真’才作S2,否則執(zhí)行enddo后面的語句。dowhiledo語句其形式是do S1 while E do S2 enddo流程圖。fordo 語句以控制變量增減值或枚舉集合值計數(shù)的循環(huán)。將它改成dowhile結(jié)構(gòu)十分容易。先執(zhí)行再判斷,若E為‘真’不再循環(huán)。循環(huán)結(jié)構(gòu)除了do S while E 之外,還有dountil和for結(jié)構(gòu)。根據(jù)條件變量Z的值單獨執(zhí)行S1,S2…,Sn,執(zhí)行完Si自動跳到endcase(C語言例外,它要加上break才跳。逐個檢查m個條件效率很低,有時似無必要。嵌套語句在否定部分用關(guān)鍵字elseif,有的語言用elsif。以下簡略說明。結(jié)構(gòu)化編程語言的其他控制結(jié)構(gòu)結(jié)構(gòu)化程序只需三種基本結(jié)構(gòu)重復(fù)和嵌套。程序語言結(jié)構(gòu)化以后,編程對流程圖的依賴就很少了。程序塊級(語句組)控制采用語句括號使程序邏輯與表示法結(jié)構(gòu)完全一致。塊中轉(zhuǎn)出也不能直接轉(zhuǎn)到程序其他處,只能轉(zhuǎn)到出口。程序控制結(jié)構(gòu)清晰,是它用關(guān)鍵字控制程序塊(語句組)。 使程序控制邏輯是結(jié)構(gòu)化的,顯式使用goto 語句,程序依然難于閱讀。 顯式使用goto 語句使得任何寫錯轉(zhuǎn)移語句標(biāo)號的小錯誤都會導(dǎo)致滅項之災(zāi)。程序一大,修改很困難。 goto 語句相互交織使設(shè)計出的程序控制結(jié)構(gòu)成為不可分解的一個整體。然而顯式地使用goto 語句是極其危險的。有了這兩個語句再加上簡單語句(賦值、調(diào)用、輸入/出),就可以實現(xiàn)程序的任何執(zhí)行控制。最基本的程序控制語句在匯編語言時代就有了Jump 指令使執(zhí)行跳轉(zhuǎn),對應(yīng)的高級語言語句是無條件轉(zhuǎn)移語句:goto loop;其中l(wèi)oop 是跳轉(zhuǎn)到的語句的標(biāo)號(數(shù)字或標(biāo)識符),加上條件判斷子句if(E)就是條件轉(zhuǎn)移語句:If(E) goto loop;其中E 是條件(布爾)表達(dá)式,求值結(jié)果是‘真’、‘假’值。但不僅限于此,計算機(jī)之所以能自動計算,它能通過判斷將程序轉(zhuǎn)到應(yīng)該執(zhí)行的地方。一個賦值語句就是一條賦值命令。不同的語言所使用的賦值號并不完全相同,比如Pascal 語言的賦值號是“:=”,而在C 語言、Java 語言、VB 等語言中,賦值號是“=”。操作系統(tǒng)的命令、BASIC 、VB 、Prolog 、LISP 、Java 、Java Script 、Post script 2 .3 .1 變量、表達(dá)式、賦值使用符號常量,只需一次性改動其賦值就行了。先作詞法分析,建立內(nèi)部符號表;再作語法和語義分析,即以中間碼建立語法樹,并作類型檢查。編譯時花費時間但程序的執(zhí)行效率提高。一般的指令格式 編譯型語言由于可進(jìn)行優(yōu)化(有的編譯器可作多次優(yōu)化),目標(biāo)碼效率很高,是目前軟件實現(xiàn)的主要方式。機(jī)器語言在內(nèi)存中開辟兩個區(qū):數(shù)據(jù)區(qū)存放數(shù)據(jù);指令區(qū)存放指令。程序設(shè)計語言是與計算機(jī)通信創(chuàng)造的語言,嚴(yán)格、小巧,沒有二義性(語句執(zhí)行只有一個解釋)。程序設(shè)計語言是人機(jī)交換信息的媒體;是表達(dá)軟件(程序)的工具;是人人交換信息的工具。第二章 程序設(shè)計語言 計算機(jī)工作是執(zhí)行相應(yīng)程序,程序規(guī)定了執(zhí)行的動作和動作的執(zhí)行順序。程序的表達(dá)手段是程序設(shè)計語言。軟件的開發(fā)和使用,協(xié)作開發(fā)、使用修改都要讀程序,程序設(shè)計語言必須規(guī)范化和標(biāo)準(zhǔn)化。 高級程序設(shè)計語言概述 最初的語言是機(jī)器語言。CPU從指令區(qū)第一個地址開始逐條取出指令并釋義執(zhí)行,直到所有的指令都被執(zhí)行完。語言編寫的源程序,都需要進(jìn)行編譯、連接,才能生成可執(zhí)行程序。對高級語言源程序采取解釋執(zhí)行的方式.解釋執(zhí)行需要有一個解釋器(Interpreter ) ,它將源代碼逐句讀入。完成檢查后把每一語句壓入執(zhí)行堆棧,壓入后立即解釋執(zhí)行。賦值和函數(shù)調(diào)用是程序語言改變變量的值的基本手段。程序中的一條語句對應(yīng)著計算機(jī)的一條命令(用一條或多條指令來實現(xiàn))。 程序的控制結(jié)構(gòu)程序約定自上向下自左向右地執(zhí)行,即順序地執(zhí)行語句(或表達(dá)式)。人們就是通過巧妙地安排控制轉(zhuǎn)移,使計算機(jī)實施算法。如果為‘真’轉(zhuǎn)移到標(biāo)號為l 的語句,為‘假’則按順序執(zhí)行下一條語句。最基本的程序控制有以下三種:順序執(zhí)行簡單語句序列S = S1;S2;…;Sn選擇執(zhí)行結(jié)構(gòu)化程序的控制結(jié)構(gòu) 早期的編程語言是語句級的.用簡單準(zhǔn)語句集合加goto 構(gòu)成復(fù)雜的程序控制。這是因為:盡管算法設(shè)計精巧,但牽一發(fā)而動全身。出了錯易于找出錯誤并修改易閱讀導(dǎo)致易擴(kuò)充、修改,大程序易于分析。任何控制轉(zhuǎn)移不能進(jìn)入這些控制塊,除非入口。在出/入口增加檢查語句就使得程序錯誤真正局部化??芍苯泳幊?。NassiSchneldermann提出了結(jié)構(gòu)化流程圖(主要取消流線及箭頭),因沒有直接用類似結(jié)構(gòu)化編程語言的偽代碼方便而沒有流行起來。但為了方便編程,第三代語言派生出許多結(jié)構(gòu)。條件分支無假塊條件分支和嵌套if語句 if(E) then ST endif if(E1) then S1 elseifE2 then S2…else Sm endif無假塊條件語句是正規(guī)條件語句的簡化,很常用。只有當(dāng)所有條件均有‘假’時才執(zhí)行else塊。case語句也叫分情形語句。否則執(zhí)行Si+1到Sn)。dountil語句形式是do S until E,基流程圖。正好和先判斷再執(zhí)行的dowhile語句是相反的。條件取反,先執(zhí)行一次S塊。fordo是dowhile的另一種變體結(jié)構(gòu),其書寫格式有多種變體。把與條件無關(guān)的部分或影響E值計算的部分作無限循環(huán)。 數(shù)據(jù)類型計算機(jī)中計算對象(不管是常量、變量)都是有類型的,不能把一個實數(shù)和邏輯‘真’值(true)相加。各語言轉(zhuǎn)換函數(shù)(inttoreal或realtiont)不盡相同,有的是把類型名作為轉(zhuǎn)換函數(shù)名,不兼容的類型,如整數(shù)和布爾一般不能轉(zhuǎn)換,但C語言例外。如果代表多個(數(shù)組)或多種(記錄)值就叫它結(jié)構(gòu)型數(shù)據(jù)的變量。下面給出用VB 聲明的一個例子:Type Person Record Name As String Age As Integer Sex As String Telnumber As String Lable As IntegerEndType類型定義中列出了屬性名和屬性的數(shù)據(jù)類型。每個屬性變量指明了一個(取值)域.也叫字段。該變量在運算中只能按域取值,域的表示法是變量后接符號“.”再接域(屬性)名。在講述指針之前,首先來看一個例子(采用C語言來描述): Int I。 //i賦值為1 I=i+1。在第三行使用了一個賦值語句:i=i+1。這個單元中存放的內(nèi)容是變化的,所以把它叫做變量。引用變量的值時直接把變量名放到用值的地方(賦值語句的兩邊)。如果某個變量的值是內(nèi)存中的地址.這個變量叫指針變量。它所指向的對象是有類型的。 ’說明它所修飾的標(biāo)識符為引用類型的變量。 r = i 。分離出來的部分叫子例程(routine ) ,執(zhí)行完后依然返回原處。函數(shù)的自變量(參數(shù))為x ,并指出其函數(shù)(返回)值是Double 類型.每當(dāng)程序中出現(xiàn)求正弦時,直接調(diào)用該過程,稱函數(shù)引用,即引用該函數(shù)的(返回)值。函數(shù)過程是參數(shù)化(更抽象)的程序。假設(shè)有一個主程序引用了30 個函數(shù),每個函數(shù)引用了100 次,如果在每個引用函數(shù)的地方都要寫出函數(shù)的代碼的話,程序?qū)⒆兊檬址彪s。還可以提高編程效率。 過程的定義 從過程關(guān)鍵字開始到過程結(jié)束之間的一段封閉的程序就是過程定義,它由型構(gòu)(signature )和過程體(body )組成,以下是兩種過程定義的結(jié)