




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年哈工大土力學(xué)試題及答案
- 2025年網(wǎng)絡(luò)語言的面試題及答案
- 2025年民宿整改面試題及答案
- 2025年色感圖標測試試題及答案
- 泉州市2025屆高三一模地理試題參考答案
- 2025年水準尺讀數(shù)測試題及答案
- 2025年郵政內(nèi)審面試試題及答案
- 2025年數(shù)學(xué)入學(xué)考試試題及答案
- 2025年安全履職測試題及答案
- 2025年中藥1考試試題及答案
- 2025年湖南理工職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫一套
- 2024中考百日誓師大會動員講話稿
- 2025云南昆明空港投資開發(fā)集團招聘7人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年中國電力中電華創(chuàng)電力技術(shù)研究有限公司招聘筆試參考題庫附帶答案詳解
- 政務(wù)信息化可行性研究報告
- 2025年江蘇無錫市惠山國有投資控股集團有限公司招聘筆試參考題庫附帶答案詳解
- 2025-2030年中國陶瓷剎車片市場現(xiàn)狀分析及投資戰(zhàn)略研究報告
- 《職場禮儀》課程標準-32課時-
- 2024年公開招聘社區(qū)工作者報名表
- 安徽省蕪湖市2024-2025學(xué)年第一學(xué)期期末考試七年級語文試卷(含答案)
- 《家庭護士》課件
評論
0/150
提交評論