《Visual Basic程序設(shè)計》課件1實驗_第1頁
《Visual Basic程序設(shè)計》課件1實驗_第2頁
《Visual Basic程序設(shè)計》課件1實驗_第3頁
《Visual Basic程序設(shè)計》課件1實驗_第4頁
《Visual Basic程序設(shè)計》課件1實驗_第5頁
已閱讀5頁,還剩98頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

實驗實驗1VB集成開發(fā)環(huán)境實驗2VB代碼基礎(chǔ)實驗3常用基本控件應(yīng)用實驗4基本控制結(jié)構(gòu)應(yīng)用實驗5數(shù)組與自定義數(shù)據(jù)類型實驗6過程實驗7數(shù)據(jù)文件實驗8常用控件實驗9界面設(shè)計

實驗1VB集成開發(fā)環(huán)境

1.1實驗?zāi)康?/p>

(1)掌握VB的啟動方法,熟悉VB的集成開發(fā)環(huán)境的組成及各部分的顯示與隱藏。

(2)掌握向窗體中添加控件及使用屬性窗口修改控件屬性的方法。

(3)掌握代碼窗口的應(yīng)用及錄入、編輯代碼的基本方法。

(4)了解VB程序設(shè)計的基本步驟,掌握保存VB工程文件及窗體文件的方法。

(5)初步理解事件驅(qū)動的機制。1.2實驗內(nèi)容

(1)?VB的啟動:選擇“新建”→“標準EXE”,進入集成開發(fā)環(huán)境。

(2)關(guān)閉工具箱、對象窗口、工程資源管理器窗口、屬性窗口、窗體布局窗口及工具欄,結(jié)果如實驗圖1-1所示。實驗圖1-1

(3)在“視圖”菜單中將關(guān)閉的各部分重新顯示出來。

(4)建立自己的文件夾,為存放程序做好準備。每次實驗之前,應(yīng)建立好自己的文件夾,存放實驗中建立的各種文件。

為了便于教師指導(dǎo)和交流,建議采用下述約定來命名文件:

每章實驗內(nèi)容建議存放在一個工程中,工程文件名以字符ex開頭后加實驗序號,如第1章實驗的工程文件名為ex01.vbp。

窗體文件名約定格式為:

XXYY-ZZ-??.frm

(5)按第1章中的步驟完成例1-1,并保存工程文件為ex01.vbp,窗體名為LT01-01.frm。運行程序,輸入一些數(shù)據(jù)試運行,驗證運行結(jié)果。

(6)在“工程”菜單中執(zhí)行“添加窗體”,可以看到對象窗口中出現(xiàn)新的窗體Form2,同時在工程資源管理器中也可以看到Form2,如實驗圖1-2所示。實驗圖1-2

(7)按要求在窗體Form2完成習(xí)題9,并保存窗體名為XT01-01.frm。

(8)如果一個工程中涉及到兩個以上的窗體,這種工程被稱為多窗體工程,若不經(jīng)任何設(shè)置,VB會將Form1作為啟動窗體。如果要運行Form2時,需要將Form2設(shè)置為啟動窗體,具體設(shè)置步驟如下:

①在“工程”菜單中選擇“工程n屬性...”(注意:n視具體的工程數(shù)變化),彈出如實驗圖1-3所示的對話框。實驗圖1-3②啟動對象是一個組合框,單擊其右側(cè)下拉按鈕可以列出當(dāng)前工程所包含的所有窗體,選擇Form2。

③單擊“確定”按鈕運行工程,即可運行Form2。

(9)保存工程文件,記錄實驗中出現(xiàn)的問題及解決方法,完成實驗報告。1.3常見錯誤分析

(1)標點符號錯誤。

在VB語法中只允許使用西文標點,中文標點只能出現(xiàn)在被引號引住的字符串中。當(dāng)代碼中出現(xiàn)中英文混合時,一定要注意隨時轉(zhuǎn)換輸入法。特別容易出錯的標點有逗號、分號、雙引號、嘆號等。還有一對容易混淆的標點符號是冒號和分號。

(2)字符因形似而導(dǎo)致錄入錯誤。

字母L的小寫形式“l(fā)”與數(shù)字“1”很相似,字母“O”與數(shù)字“0”也很難區(qū)別,在錄入時要注意。

(3)對象名稱寫錯。

對象名稱用于在程序中唯一地標識控件對象。每個對象都有默認的名稱,例如,Text1、Text2、Command1、Label2等,用戶可以在屬性窗口中修改對象的名稱。但對于初學(xué)者,由于程序較簡單,對象使用較少,建議使用默認的控件名。

當(dāng)程序中的對象名寫錯時,系統(tǒng)顯示如實驗圖1-4所示的對話框。單擊“調(diào)試”按鈕可進入代碼窗口,VB對出錯的語句以黃色背景顯示,根據(jù)這個提示,可以很容易找到寫錯的對象名。實驗圖1-4

(4)“名稱”屬性和Caption屬性混淆。

“名稱”屬性的值在程序中唯一地標識一個控件對象,而Caption屬性的值是在窗體上顯示標題文本。由于VB中有Caption屬性的控件(如命令按鈕、標簽等),在創(chuàng)建時,其默認的“名稱”屬性與Caption屬性是相同的,所以使得很多初學(xué)者將這兩個屬性混淆。

(5)無意形成控件數(shù)組。

若要在窗體上創(chuàng)建多個屬性相似的命令按鈕,很多人會先創(chuàng)建一個命令按鈕,設(shè)置好屬性后再進行復(fù)制、粘貼。但如果在系統(tǒng)顯示“是否建立控件數(shù)組?”時選擇了“是”,則會創(chuàng)建控件數(shù)組,對控件數(shù)組的編程和對普通控件的編程是不同的。初學(xué)者一定要注意,在沒有學(xué)習(xí)控件數(shù)組之前,如果想復(fù)制控件,千萬不要復(fù)制成控件數(shù)組。

(6)打開工程時找不到對應(yīng)的文件。

在VB中,一個最簡單的應(yīng)用程序一般由一個工程文件和一個窗體文件組成,工程文件記錄了該工程內(nèi)所有文件的文件名及存放在磁盤上的路徑。打開工程時顯示“文件未找到”的提示信息,這可能由以下操作引起:

①文件復(fù)制時少復(fù)制了文件引起。例如上機結(jié)束后,把文件復(fù)制到軟盤或其他文件夾時,少復(fù)制了窗體文件,或者少復(fù)制了工程文件。

②換名操作引起。若在VB環(huán)境以外,利用Windows資源管理器或其他方法將工程中某個文件改名,而工程文件內(nèi)記錄的還是原來的文件名,這樣也會導(dǎo)致打開工程時顯示“文件未找到”的提示信息。

實驗2VB代碼基礎(chǔ)

2.1實驗?zāi)康?/p>

(1)熟悉VB的各種數(shù)據(jù)類型。

(2)熟練掌握各種運算符的應(yīng)用和優(yōu)先順序。

(3)掌握各種常用函數(shù)的功能、參數(shù)和返回值。

(4)掌握立即窗口的使用方法。

2.2實驗內(nèi)容

(1)啟動VB,在“視圖”菜單中運行“立即”窗口,光標進入如實驗圖2-1所示的“立即”窗口中,拖動窗口右下角,可以改變窗口到適當(dāng)大小。實驗圖2-1

(2)驗證第2章中的各個表達式舉例,自己設(shè)計同類表達式并運算后驗證。

(3)仿照第2章中的函數(shù)示例,自己設(shè)計表達式對Abs、Sqr、Int、Fix、Ltrim、Rtrim、Trim、Left、Right、Mid、Len、LenB、Instr、String、Lcase、Ucase、Asc、Chr、Val、Now、Date、Day、Week、Day、Month、Year、Hour、Minute、Second、Timer、Time、DateDiff等函數(shù)進行驗證,并將驗證過程記錄下來。

(4)對習(xí)題中涉及到的表達式先計算再驗證,如有差異要分析原因并記錄驗證過程。

(5)設(shè)計一個程序,在文本框中輸入一個角度,用4個標簽分別輸出其正弦、余弦、正切、余切值。設(shè)計界面如實驗圖2-2所示。實驗圖2-2有學(xué)生在命令按鈕的Click事件中寫了以下代碼,有兩類共7處錯誤,請找出并改正之。

PrivateSubCommand1_Click()

Dimx!,a!,b!,c!,d!

x=Val(Text1.Text)

Rem計算

a=Sinx*3.1415926/180

b=Cosx*3.1415926/180

c=Tanx*3.1415926/180

d=1/c

Rem顯示計算結(jié)果

Label2.Caption="正弦值:"+a

Label3.Caption="余弦值:"+b

Label4.Caption="正切值:"+c

Label5.Caption="余切值:"+d

EndSub

(6)上題代碼中多次用到了“3.1415926/180”,是否可以用符號常量代替呢?請改寫程序并體會符號常量的作用。2.3常見錯誤分析

(1)圓括號問題。

除函數(shù)Rnd以外,本章涉及到的函數(shù)調(diào)用都必須加“()”,將自變量括在“()”中。例如在前面題目代碼中,將Sin(x*3.1415926/180)寫成Sinx*3.1415926/180,由于VB不能識別Sinx,所以將其認為是一個變量,但前面又沒有定義這個變量,所以默認為變體型,進行數(shù)值運算時初值為0,運算結(jié)果顯示出錯。

(2)運算符功能問題。

例如前面題目代碼中有表達式“"正弦值:"+a”,對于“+”運算符,雖然可以進行字符串連接運算,但卻不能將非數(shù)字字符型常量“"正弦值:"”和單精度變量“a”連接起來,如果必須要連接,可以改寫成“"正弦值:"+Str(a)”,即先將單精度變量“a”轉(zhuǎn)換成字符型,再將二者相連。當(dāng)然,對于這種連接其實不必這么麻煩,可以直接將“+”改為“&”即可,但要注意,在“&”兩側(cè)必須有一個以上的空格。

(3)布爾表達式的書寫問題。

運算符“Not”、“And”、“Or”和與之相連的操作數(shù)之間必須要用空格隔開,如“a<0Anda+c>0”這種寫法VB就不能識別了,正確寫法應(yīng)該是“a<0Anda+c>0”。

實驗3常用基本控件應(yīng)用

3.1實驗?zāi)康?/p>

(1)熟練掌握VB語句書寫規(guī)則。

(2)熟練掌握窗體的主要屬性及Load事件的應(yīng)用。

(3)掌握Print方法的輸出格式控制。

(4)掌握命令按鈕和標簽的主要屬性應(yīng)用。

(5)掌握文本框的主要屬性和事件應(yīng)用。

(6)熟悉VB程序獲得數(shù)據(jù)及輸出結(jié)果的基本方法。

(7)了解工程管理概念。

(8)掌握添加/刪除窗體文件、設(shè)置啟動窗體、編譯生成EXE文件、運行EXE文件的方法。3.2實驗內(nèi)容

(1)認真閱讀本章內(nèi)容,驗證本章所有例題,將這些例題保存在一個工程文件之中,工程文件名為ex03.vbp,每一個例題存一個窗體文件。調(diào)試程序時注意設(shè)置啟動窗體。

(2)請按照如下步驟驗證第3章中的一段話:

“文本框Text屬性的值為字符串,如果輸入的是數(shù)字字串,并要在程序中進行數(shù)值加法運算或數(shù)值比較時,最好用Val函數(shù)將字符串轉(zhuǎn)化為數(shù)值類型”。

第一步,添加一個新窗體并設(shè)置成啟動窗體。在窗體上添加3個文本框、4個命令按鈕,界面如實驗圖3-1所示。實驗圖3-1第二步,在窗體的Load事件中為各控件對象設(shè)置屬性。文本框Text為空,4個命令按鈕標題分別為“相加”、“相乘”、“相減”、“相比較”。

第三步,完成按鈕代碼。各按鈕單擊事件代碼分別是:

Text3.Text=Text1.Text+Text2.Text'相加

Text3.Text=Text1.Text-Text2.Text'相減

Text3.Text=Text1.Text*Text2.Text'相乘

Text3.Text=Text1.Text>Text2.Text'相比較

第四步,運行窗體。若在Text1中輸入12,Text2中輸入6,分別單擊4個按鈕,先分析可能出現(xiàn)的結(jié)果,再驗證。

第五步,修改代碼。將Text1和Text2的值先用Val進行類型轉(zhuǎn)換,再重做第四步,分析所得結(jié)果并驗證。第六步,修改代碼。在Text1和Text2兩個值中,任意只對一個進行類型轉(zhuǎn)換,再次進行第四步,分析所得結(jié)果并驗證。

對所得到的結(jié)果請從第2和第3章中找到理論依據(jù)并寫出實驗小結(jié)。

(3)模仿例3-6,用文本框的KeyDown事件測出“A”、“a”、“End”、“5”(主鍵盤)、“5”(數(shù)字鍵盤)等鍵的KeyCode碼值。能否得出這樣的結(jié)論:“一個鍵的KeyAscii值與鍵本身字符有關(guān),如主鍵盤的5和數(shù)字鍵盤的5的KeyAscii值相同,而KeyCode值與鍵的位置有關(guān)?!?(4)自行設(shè)計實驗,檢測如果向一個文本框中輸入一個字符時,KeyDown和KeyPress事件誰先被觸發(fā)。寫出檢測方案、代碼及結(jié)果。

(5)在本實驗內(nèi)容(1)的ex03工程中添加一個窗體,將該窗體設(shè)置為啟動窗體,窗體上添加3個命令按鈕,其中分別寫入代碼“Form1.Show”、“Form2.Show”、“Form3.Show”。運行窗體,單擊各命令按鈕,體會這個窗體的功能。試想一下,如果多增加一些按鈕,將該工程的所有窗體都放在一個按鈕下調(diào)用,那這個工程中的所有窗體都可以被這個窗體所聯(lián)系了。當(dāng)然,還可以用菜單代替按鈕,大家在學(xué)習(xí)過程中可以自行解決。

(6)編譯工程,生成EXE文件,并在Windows的資源管理器中運行該EXE文件。3.3常見錯誤分析

(1)注意運算符的功能。

文本框和InputBox函數(shù)獲得的數(shù)字為字符串型,在使用這些數(shù)據(jù)時要注意參與的運行符能否具有自動轉(zhuǎn)換類型的功能。

(2)類型不匹配問題。

使用InputBox函數(shù)獲得數(shù)據(jù)時,如果在出現(xiàn)的對話框中沒有輸入任何數(shù)據(jù)就按了“取消”按鈕,則變量獲得的是一個空字符串,空字符串參與數(shù)學(xué)運算時會出現(xiàn)“類型不匹配”錯誤,因為空字符串不能自動轉(zhuǎn)換為數(shù)值型。

(3)控件對象的相關(guān)屬性問題。

例如文本框的MultiLine和ScrollBars屬性就為相關(guān)屬性,要設(shè)置后者必須先對前者有正確的設(shè)置。命令按鈕的Style和Picture屬性也一樣。

(4)設(shè)置啟動窗體問題。

初學(xué)者在編寫代碼時,經(jīng)常由于忘記設(shè)置啟動窗體,使得新添加的窗體沒法運行。

(5)窗體文件與工程文件關(guān)系的問題。

一定要注意,一個工程文件可以包含多個窗體文件,但這些窗體文件的“名稱”屬性不能相同。一個窗體文件可以被多個工程所包含。

實驗4基本控制結(jié)構(gòu)應(yīng)用

一、順序結(jié)構(gòu)實驗

4.1.1實驗?zāi)康?/p>

(1)熟悉簡單VB程序的功能組成和每部分功能實現(xiàn)的具體方法。

(2)掌握提供數(shù)據(jù)的基本方法和應(yīng)用。

(3)掌握賦值語句在數(shù)據(jù)運算中的功能和使用方法。

(4)掌握輸出數(shù)據(jù)的基本方法和應(yīng)用。

(5)學(xué)習(xí)順序結(jié)構(gòu)程序設(shè)計方法。4.1.2實驗內(nèi)容

(1)調(diào)試順序結(jié)構(gòu)有關(guān)例題,掌握數(shù)據(jù)輸入、輸出的方法,熟悉順序結(jié)構(gòu)程序設(shè)計方法。

(2)編程實現(xiàn)兩個數(shù)的和、差、積、商的運算。

(3)完成第4章習(xí)題中有關(guān)順序結(jié)構(gòu)的編程題。

4.1.3常見錯誤分析

(1)算術(shù)表達式書寫引起的語法錯誤及邏輯錯誤。

如在雞兔同籠問題中,書寫賦值語句時,初學(xué)者常會按數(shù)學(xué)上的習(xí)慣寫成:

x?=?(4h-f)/2

y?=?(f-2h)/2這種錯誤VB能在錄入代碼過程中檢查出來,并用紅色字體顯示,這種錯誤稱為語法錯誤。

有些錯誤為邏輯錯誤,程序運行時一切正常,但輸出結(jié)果不對。由于VB無法報告出這種錯誤,初學(xué)者一般不易發(fā)現(xiàn),這就要求在學(xué)習(xí)程序設(shè)計語言時注意培養(yǎng)學(xué)習(xí)的嚴謹性。

(2)運算符“&”用法。

“&”既可作為字符串連接運算符,也可當(dāng)做長整型數(shù)據(jù)的尾符,還可作為非十進制數(shù)的前導(dǎo)符號,因此“&”在用于連接字符串時,左右兩邊必須要用一個以上的空格分隔。

例如,在變量引用時使用“ab&”,其中的“&”用于說明變量ab是長整型數(shù);語句“a=&h10”中的“&”則為非十進制數(shù)的前導(dǎo)符號,表示將十六進制數(shù)10賦給變量a(其實相當(dāng)于語句“a=16”);而對于語句“a=123&456”,由于VB系統(tǒng)不能判斷這個“&”到底是尾符,還是前導(dǎo)符,或是字符串連接運算符,因此會出現(xiàn)錯誤。

(3)交換兩個變量的值。

交換兩個變量的值是程序設(shè)計中常用到的操作。如要交換變量x、y的值,初學(xué)者會使用“x=y:y=x”,結(jié)果會造成了變量x值的丟失。正確的做法應(yīng)是引入中間變量,用語句組“t=x:x=y:y=t”實現(xiàn)。

(4)程序設(shè)計應(yīng)注意的問題。

設(shè)計程序時,請按程序設(shè)計的一般方法步驟進行:分析→設(shè)計算法→編寫代碼→調(diào)試運行→驗證,這樣有利于學(xué)習(xí)程序設(shè)計方法和編寫正確的程序。

注意程序結(jié)構(gòu)和語句的書寫順序,應(yīng)先提供數(shù)據(jù),再運算,最后輸出,語句書寫順序不正確將會導(dǎo)致整個程序出錯。二、選擇結(jié)構(gòu)實驗

4.2.1實驗?zāi)康?/p>

(1)通過實驗掌握選擇結(jié)構(gòu)中每種結(jié)構(gòu)的語法格式及執(zhí)行過程。

(2)掌握條件函數(shù)的調(diào)用格式和返回值。

(3)學(xué)習(xí)順序結(jié)構(gòu)程序設(shè)計方法,培養(yǎng)使用選擇結(jié)構(gòu)解決實際問題的基本能力。

(4)掌握提高程序可讀性的基本方法(縮進格式書寫程序代碼、注釋等)。4.2.2實驗內(nèi)容

(1)調(diào)試第4章中的相關(guān)例題,學(xué)習(xí)If結(jié)構(gòu)的語法格式和執(zhí)行過程。注意提高程序可讀性的基本方法,如縮進式書寫程序、在程序中增加注釋等。

(2)調(diào)試第4章中的相關(guān)例題,學(xué)習(xí)SelectCase結(jié)構(gòu)的語法格式、條件書寫方法和執(zhí)行過程。

(3)完成第4章習(xí)題中有關(guān)選擇結(jié)構(gòu)的編程題。4.2.3常見錯誤分析

(1)選擇結(jié)構(gòu)格式錯誤。

①在塊If結(jié)構(gòu)中缺少EndIf。

②行If結(jié)構(gòu)中多寫了EndIf。

③在多分支結(jié)構(gòu)中將“ElseIf”寫成“Else?If”。

(2)?SelectCase結(jié)構(gòu)中的條件書寫錯誤。

SelectCase結(jié)構(gòu)中,Case子句中的測試表達式有多種格式,在應(yīng)用時,必須嚴格遵照格式規(guī)定書寫。具體格式請查本書中相關(guān)內(nèi)容。下面列舉兩例常見錯誤:

①若測試條件的格式為:

表達式1To表達式2

這里要求表達式1的值應(yīng)小于表達式2的值,當(dāng)大于時就不會得到結(jié)果。

②若測試條件的格式為:

is表達式

既不能寫成“xis>0”,也不能寫成邏輯表達式,如“xis>0Andxis<10”等。

(3)多分支條件書寫不當(dāng)引起邏輯錯誤。

例如,根據(jù)輸入的100分制成績(cj),顯示對應(yīng)五級的評定結(jié)構(gòu)。條件如下:

以下幾種表示方法在語法上均沒有錯,但執(zhí)行結(jié)果有所不同,請分析哪些是正確的?哪些是錯誤的?三、循環(huán)結(jié)構(gòu)實驗

4.3.1實驗?zāi)康?/p>

(1)通過實驗掌握循環(huán)結(jié)構(gòu)的語法結(jié)構(gòu)及執(zhí)行過程。

(2)培養(yǎng)閱讀程序的能力,掌握使用循環(huán)結(jié)構(gòu)編寫簡單程序的方法。

(3)掌握循環(huán)嵌套的語法結(jié)構(gòu)及執(zhí)行過程。

(4)學(xué)習(xí)使用循環(huán)嵌套分析問題的思路和算法設(shè)計的方法,培養(yǎng)用其解決復(fù)雜問題的能力。4.3.2實驗內(nèi)容

(1)閱讀和調(diào)試第4章中的相關(guān)例題,理解程序的執(zhí)行過程,體會用循環(huán)結(jié)構(gòu)編程的思路。

(2)理解For…Next結(jié)構(gòu)及執(zhí)行過程,并將用For結(jié)構(gòu)完成的例題試著改寫成Do結(jié)構(gòu)。

(3)理解循環(huán)嵌套的結(jié)構(gòu)及執(zhí)行過程,掌握循環(huán)嵌套的執(zhí)行過程及注意事項,培養(yǎng)用循環(huán)嵌套解決復(fù)雜問題的能力。

(4)閱讀和調(diào)試4.5節(jié)“應(yīng)用舉例”部分有關(guān)程序,學(xué)習(xí)其算法設(shè)計和實現(xiàn)方法。

(5)完成第4章習(xí)題中有關(guān)循環(huán)結(jié)構(gòu)的編程題。4.3.3常見錯誤分析

(1)累加(積)器與計數(shù)器變量賦初值的問題。

在循環(huán)中,常用到累加(積)與計數(shù),對累加(積)器與計數(shù)器變量賦初值和書寫位置,往往是初學(xué)者容易搞錯的。

例如,求1!?+?2!?+?3!?+?4!?+?5!。如果將程序代碼寫為:

(2)?For循環(huán)體中改變了循環(huán)變量的值。

在For循環(huán)體中改變了循環(huán)變量的值,從而改變了循環(huán)次數(shù),如下述代碼中的語句造成了循環(huán)次數(shù)的減少。

Fori=1To15

i=i+1

printi

Nexti

循環(huán)次數(shù)為8次,而不是15次。所以在For循環(huán)中最好不要采用這種格式。

(3)循環(huán)體不執(zhí)行。

For循環(huán)中,當(dāng)步長大于0且循環(huán)變量的終值小于初值時,或當(dāng)步長小于0且循環(huán)變量的終值大于初值時,循環(huán)體均不會執(zhí)行。

(4)死循環(huán)問題。

引起死循環(huán)的原因較多,可用Ctrl?+?Break鍵強行退出循環(huán)。下面列舉幾個常見的引起死循環(huán)的實例。

①Do循環(huán)中缺少改變循環(huán)控制變量值的語句。

例如,例4-13計算1?+?2?+?3?+?…?+?10的值,其程序代碼為:如果將循環(huán)體中的語句i=i+1去掉,即循環(huán)變量i的值保持初值不變,循環(huán)條件永遠成立,程序運行將會出現(xiàn)死循環(huán)。

②循環(huán)條件、循環(huán)初值、循環(huán)終值、循環(huán)步長設(shè)置存在問題,循環(huán)將永遠不能正常結(jié)束。例如,在求s=1+3+5+7+9時,若用如下代碼實現(xiàn):

n=1:s=0

DoUntiln=10

s=s+n

n=n+2

Loop

MsgBoxs則程序運行進入死循環(huán)。其原因是n初值為1,每次循環(huán)都加2,則n的變化規(guī)律是1、3、5、7、9、11,不可能出現(xiàn)等于10的情況,所以“n=10”的條件永遠不可能滿足,循環(huán)就不能正常結(jié)束。若將條件改為“n>=10”,就可以避免死循環(huán)現(xiàn)象。

為了及時跟蹤循環(huán)變量的變化情況,可以在循環(huán)中加入MsgBox函數(shù)顯示循環(huán)變量的值。對于以上循環(huán),在Loop之前加上“MsgBoxn”,則每執(zhí)行一次循環(huán)都會出現(xiàn)一個對話框,顯示變量n的值。實驗圖4-1可以看到,對于程序控制結(jié)構(gòu),VB采用后進先出的原則。所謂后進先出,就是按程序代碼的先后順序,后出現(xiàn)的控制結(jié)構(gòu)應(yīng)先結(jié)束。由于If結(jié)構(gòu)出現(xiàn)在For結(jié)構(gòu)之后,所以應(yīng)先有EndIf,才能有Nexti,在沒有遇到EndIf之前的所有語句都被認為是屬于If結(jié)構(gòu)的(除非在If結(jié)構(gòu)中又有新的結(jié)構(gòu)出現(xiàn))。所以本程序中的Nexti被認為是屬于If結(jié)構(gòu)中的循環(huán)結(jié)束語句,但在這個If結(jié)構(gòu)中又沒有For語句,因此會出現(xiàn)如實驗圖4-1所示對話框。

要解決這個問題,一個比較好的方法是嚴格按照程序的縮進規(guī)范書寫程序,以避免漏掉語句,造成結(jié)構(gòu)不完整的錯誤。實驗圖4-2

實驗5數(shù)組與自定義數(shù)據(jù)類型

5.1實驗?zāi)康?/p>

(1)通過實驗理解數(shù)組的概念與作用。

(2)掌握靜態(tài)數(shù)組與動態(tài)數(shù)組的定義方法和使用方法。

(3)掌握為數(shù)組賦值的幾種方法及各自特點。

(4)掌握一維數(shù)組和二維數(shù)組的輸出方法。

(5)掌握與數(shù)組有關(guān)的算法,包括排序、求極值、統(tǒng)計、查詢等。5.2實驗內(nèi)容

(1)閱讀和調(diào)試例5-1~例5-3,體會靜態(tài)數(shù)組和動態(tài)數(shù)組的區(qū)別,理解使用數(shù)組編程的步驟和方法。

(2)閱讀和調(diào)試例5-11,體會使用二維數(shù)組編程的步驟,以及對二維數(shù)組元素提供數(shù)據(jù)、輸出數(shù)據(jù)的方法和程序結(jié)構(gòu)。

(3)閱讀和調(diào)試例5-13,掌握自定義數(shù)據(jù)類型的定義格式、聲明自定義數(shù)據(jù)類型變量的語法格式、自定義數(shù)據(jù)類型字段的引用格式。

(4)完成習(xí)題中的編程題。實驗數(shù)據(jù)的準備:

在利用數(shù)組處理問題的練習(xí)中,經(jīng)常會用到大量的數(shù)據(jù),如果這些數(shù)據(jù)都從鍵盤上錄入會非常麻煩,我們可以利用Excel來生成大量的實驗數(shù)據(jù)。下面以為例5-13生成實驗數(shù)據(jù)為例介紹具體方法。

(1)啟動Excel,新建一個工作簿,留下第A列作為姓名列,將光標定位于B1單元格,輸入公式“=int(rand()*51)+50”,可以生成[50,100]范圍內(nèi)的隨機數(shù),向下拖動B1單元格的填充柄,即可生成一列數(shù)據(jù),如實驗圖5-1所示。實驗圖5-1

(2)選中B1:D10單元格區(qū)域,用Ctrl?+?R實現(xiàn)向右填充,即可生成需要的數(shù)據(jù),如實驗圖5-2所示。實驗圖5-2

(3)選中A1:D10單元格區(qū)域,復(fù)制后粘貼到Word中一個空白文檔中,如實驗圖5-3所示??梢缘玫揭粋€表格,選中表格,在系統(tǒng)菜單中選擇“表格”→“轉(zhuǎn)換”→“表格轉(zhuǎn)換成文本”。

再將轉(zhuǎn)換后的內(nèi)容另存為“純文本(*.txt)”文件類型即可。實驗圖5-35.3常見錯誤分析

(1)數(shù)組未定義直接使用。

可能由于受到使用簡單變量的影響,不少讀者經(jīng)常會犯不定義數(shù)組而直接引用數(shù)組元素的錯誤。例如,下述代碼想實現(xiàn)為數(shù)組a中的元素賦值(此時a為未定義數(shù)組):

Fori=1To10

a(i)=2*i-1

Nexti

運行該程序,出現(xiàn)實驗圖5-4所示的對話框。對話框提示信息表明,對于未定義而直接使用的數(shù)組a,VB系統(tǒng)把a(i)當(dāng)做子程序或函數(shù)調(diào)用處理,而不是作為數(shù)組元素對待。實驗圖5-4

(2)?Dim語句聲明靜態(tài)數(shù)組出錯。

例如程序段:

n=InputBox("請輸入待處理的數(shù)據(jù)個數(shù)")

Dima(n)

程序運行時出現(xiàn)中斷,將在Dim語句處顯示“要求常數(shù)表達式”對話框,即Dim語句中聲明的靜態(tài)數(shù)組上、下界必須是常數(shù)或常數(shù)表達式,不能是變量或含變量的表達式。若使用動態(tài)數(shù)組,應(yīng)將以上程序段改為:

Dima()

n=InputBox("請輸入待處理的數(shù)據(jù)個數(shù)")

ReDima(n)

(3)使用OptionBase語句位置錯誤。

使用OptionBase語句可改變數(shù)組元素下標的最小值。若將OptionBase放在事件過程中,將會出現(xiàn)“無效內(nèi)部過程”錯誤。通常是將OptionBase語句放在程序的聲明段中。

(4)使用數(shù)組時下標越界。

使用數(shù)組時引用了不存在的數(shù)組元素,即使用時的下標在數(shù)組聲明時的下標范圍之外。這是初學(xué)者常犯的錯誤。比如,在求斐波那契數(shù)列前20項時,正確的程序如下:

Dima(1To20)AsLong,i%

a(1)=1

a(2)=1

Fori=3To20

a(i)=a(i-1)+a(i-2)

Nexti

如果將“Fori=3To20”改成“Fori=1To20”,程序運行時會顯示如實驗圖5-5所示信息。這是因為當(dāng)?shù)谝淮窝h(huán)時,i=1,a(i-1)和a(i-2)分別指的是a(0)和a(-1),而定義數(shù)組時的下標范圍為1~20,所以下標越界。實驗圖5-5

(5)數(shù)組維數(shù)錯誤。

如果數(shù)組聲明時的維數(shù)與引用數(shù)組元素時的維數(shù)不一致,會出現(xiàn)這種錯誤。如下面程序段:

Dima%(4,4)

Fori=1To4

Forj=1To4

a(i)=i*j

Nextj

Nexti程序運行到“a(i)=i*j”時出現(xiàn)“維數(shù)錯誤”,這是因為定義a時是二維數(shù)組,而引用時卻是一維的。

(6)?Array和Split函數(shù)使用問題。

Array和Split函數(shù)能夠很方便地為數(shù)組賦值,但要注意二者的區(qū)別。

實驗6過程

6.1實驗?zāi)康?/p>

(1)通過實驗理解過程的基本概念。

(2)創(chuàng)建過程的作用、方法和過程調(diào)用方法。

(3)理解Sub過程和Function過程的異同。

(4)掌握過程調(diào)用時參數(shù)傳遞的兩種方式及特點。

(5)理解過程、變量的作用域。

(6)具備使用過程編寫簡單程序的能力。

(7)理解遞歸的概念及編程方法和特點。6.2實驗內(nèi)容

(1)驗證第6章中的所有例題,理解過程中形參的類型、作用,并將例6-1、例6-3、例6-5、例6-6、例6-10~例6-14題中涉及到的過程,仿照下面給出的示例寫出相關(guān)信息。

示例:下面給出求N!?的Function過程和Sub過程,過程名分別為funfact和subfact。

Function過程代碼為:相關(guān)信息描述如下:

過程名:funfact

類型:Function過程

參數(shù)說明:參數(shù)n為傳值方式,類型為整型,因為只能為整型數(shù)求階乘

傳出結(jié)果:通過函數(shù)名funfact返回結(jié)果

結(jié)果類型:雙精度型,因為雙精度型表示的數(shù)的范圍最大

Sub過程代碼為:相關(guān)信息描述如下:

過程名:subfact

類型:Sub過程

參數(shù)說明:參數(shù)n為傳值方式,類型為整型,因為只能為整型數(shù)求階乘

傳出結(jié)果:通過形參f傳出計算結(jié)果,調(diào)用時,與之對應(yīng)的實參應(yīng)為同類型的變量

結(jié)果類型:雙精度型,因為雙精度型表示的數(shù)的范圍最大

(2)完成第6章習(xí)題中編程題的4、5、7題。6.3常見錯誤分析

本章是教學(xué)中的難點,教與學(xué)兩方面均存在一定的困難。下面所分析的問題,有的是編程中遇到的,有的是上機實習(xí)中遇到的。

(1)使用Function過程還是Sub過程。

過程是一個具有某種功能的獨立程序段,可供程序多次調(diào)用。對于一個具體問題,既可以使用Function過程,也可以使用Sub過程。但Sub過程與Function過程還是有區(qū)別的,Sub過程的過程名僅標識過程本身;Function過程的過程名除了標識過程本身以外,還有返回值的作用。因此,若過程有一個返回值時,則習(xí)慣使用Function過程,并通過函數(shù)名返回函數(shù)值;若過程不需要返回值或返回多個值時,則使用Sub過程。返回值通過實參與形參的結(jié)合帶回,當(dāng)然也可通過Function過程名帶回一個結(jié)果,其余通過實參與形參的結(jié)合帶回。

(2)過程中形參的個數(shù)和傳遞方式的確定。

對初學(xué)者,若定義過程時在確定形參的個數(shù)和傳遞方式時存在問題,可從如下方面考慮問題:

首先,理解形參和實參的作用。一方面,調(diào)用程序為Sub過程或Function過程通過實參傳遞實際處理對象;另一方面,Sub過程通過地址傳遞方式將結(jié)果傳遞給調(diào)用程序,F(xiàn)unction過程通過地址傳遞方式或函數(shù)名將結(jié)果傳遞給調(diào)用程序。形參的個數(shù)和類型就是由上述兩方面決定的。對初學(xué)者,往往喜歡把過程體中用到的所有變量全作為形參,這樣就增加了調(diào)用者的負擔(dān)和出錯概率;也有的初學(xué)者全部省略了形參,則無法實現(xiàn)數(shù)據(jù)的傳遞,既不能從調(diào)用者得到初值,也無法將計算結(jié)果傳遞給調(diào)用者。

其次,理解參數(shù)傳遞的方式和特點。VB中形參與實參的結(jié)合有傳值和傳地址兩種方式。傳值方式只能從調(diào)用程序向過程傳入初值,但不能將結(jié)果傳出;而地址傳遞既可傳入,又可傳出。

最后,注意實現(xiàn)傳值和傳地址對形參和實參的要求。在定義過程時,在形參前加ByVal關(guān)鍵字或過程調(diào)用時變量加圓括號,數(shù)據(jù)傳遞按照傳值方式;如果在形參前加ByRef關(guān)鍵字或省略(默認)或?qū)崊⑹菙?shù)組、自定義類型、對象變量等,參數(shù)傳遞只能是地址傳遞。

(3)實參和形參類型對應(yīng)問題。

第一,在地址傳遞方式時,調(diào)用過程的實參與形參類型要一致。例如:

函數(shù)過程定義如下:

PublicFunctionf!(x!)

f=x+x

EndFunction

主調(diào)用程序如下:

PrivateSubCommand1_Click()

Dimy%

y=3

Printf(y)

EndSub上例形參x是單精度型,實參y是整型,程序運行時會顯示“ByRef參數(shù)類型不符”的編譯出錯信息。

第二,在值傳遞時,若是數(shù)值型,則實參按形參的類型將值傳遞給形參。例如,

函數(shù)過程定義如下:

PublicFunctionf!(ByValx%)

f=x+x

EndFunction主調(diào)用程序如下:

PrivateSubCommand1_Click()

Dimy!

y=3.4

Printf(y)

EndSub

程序運行后顯示的結(jié)果是6。因為調(diào)用程序聲明y的類型為單精度類型,對應(yīng)位置上的形參x的類型為整型數(shù)據(jù)類型,實參y和形參x按照值傳遞方式,因此實參按形參的類型將值傳遞給形參,即y的值3.4傳給x時,x接收的值為3。

(4)變量的生命周期。

過程級動態(tài)變量是在過程調(diào)用時分配變量的存儲空間,當(dāng)過程調(diào)用結(jié)束,回收分配的存儲空間,也就是調(diào)用一次,初始化一次,變量不保存值;過程級靜態(tài)變量是當(dāng)過程調(diào)用結(jié)束后,其值還保留。

示例:一個窗體上有一個文本框和一個命令按鈕,向文本框中每輸入一個數(shù)據(jù),再單擊命令按鈕后可將這些數(shù)累加起來。如果代碼如下:

PrivateSubCommand1_Click()

Dims!,x!

x=Text1.Text

s=s+x

MsgBox"目前累加的結(jié)果是:"&s

EndSub

則每次運行后得到的結(jié)果都只能是最后一次錄入的那個數(shù)。將程序中“Dims!,x!”改為“Statics!,x!”,即可達到要求的結(jié)果。

窗體級變量的特點是:當(dāng)窗體裝入,分配該變量的存儲空間,直到該窗體從內(nèi)存卸掉,才回收該變量分配的存儲空間。

實驗7數(shù)據(jù)文件

7.1實驗?zāi)康?/p>

(1)通過實驗掌握數(shù)據(jù)文件的概念。

(2)理解順序文件、隨機文件和二進制文件的存取特點。

(3)掌握建立、讀取、修改順序文件的方法與步驟。

(4)掌握建立、讀取、修改隨機文件的方法與步驟。

(5)了解VB中常用的文件操作語句和函數(shù)。

7.2實驗內(nèi)容

(1)完成本章涉及到的所有例題,注意,為了便于說明,本書中將所生成的數(shù)據(jù)文件均寫在了“C:\”下,實驗時最好與讀者的程序文件放在同一文件夾中。

(2)完成習(xí)題中編程題的2、3、4、5題。7.3常見錯誤分析

(1)順序文件打開方式錯誤。

Open語句中的打開文件的方式不同,其作用也是不同的,不得隨意相互替代。如果打開方式為“ForOutput”方式,表示建立新文件;如果為“ForInput”方式,表示讀取已經(jīng)存在的文件。例如,在讀取一個文件時使用了“ForOutput”方式,則會覆蓋原來的全部數(shù)據(jù)。

(2)建立和訪問文件時使用相對路徑,以避免找不到文件的錯誤。

如果在建立文件時不帶路徑,VB會將文件建立在默認文件夾下,此時如果應(yīng)用程序和文件不在同一文件夾下,或訪問文件時忘記指明路徑,就會出現(xiàn)找不到文件的錯誤。解決此問題的方法是使用相對路徑,在建立和使用數(shù)據(jù)文件時,文件路徑都用“App.Path”,則數(shù)據(jù)文件就會與應(yīng)用程序在同一個文件夾下,也就避免出現(xiàn)“文件找不到”的錯誤。例如,

OpenApp.Path&"\testfile.dat"ForOutputAs#1

建立了一個名為testfile.dat的數(shù)據(jù)文件,文件與應(yīng)用程序同在一個文件夾下。

(3)文件使用完畢應(yīng)及時關(guān)閉,避免不必要的錯誤。

使用數(shù)據(jù)文件有一個基本要求是:使用時應(yīng)打開,使用完畢應(yīng)及時關(guān)閉。如果不及時關(guān)閉文件會產(chǎn)生以下問題:

第一,不能及時釋放內(nèi)存空間,占用大量資源。

第二,只有關(guān)閉文件才能斷開數(shù)據(jù)文件與內(nèi)存緩沖區(qū)的聯(lián)系,也才能保證文件完整地保存到磁盤上;否則容易造成數(shù)據(jù)丟失。

第三,在下一次打開這個文件時,會出現(xiàn)“文件已打開”的錯誤信息,也就會影響程序的運行。

第四,在刪除或修改時會出現(xiàn)錯誤。

實驗8常用控件

8.1實驗?zāi)康?/p>

(1)熟練掌握計時控件、選擇性控件(單選按鈕和復(fù)選框)、列表框和組合框的常用屬性、方法和事件。

(2)掌握框架控件、文件系統(tǒng)控件和滾動條控件的常用屬性、方法和事件。

(3)掌握ActiveX控件的使用方法。

(4)了解常用ActiveX控件的使用:ProgressBar控件、Slider控件、ListView控件、TreeView控件及SSTab控件。8.2實驗內(nèi)容

(1)完成本章例8-2~例8-5、例8-7、例8-9和例8-10,掌握常用內(nèi)部控

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論