《Visual Basic程序設計》針對非計算機專業(yè)學生的特點,以知識點為主線,以大量實例為輔助的方式,系統(tǒng)地介紹了Visual Basic相關知識。《Visual Basic程序設計》內容包括引言、可視化編程基礎、Visual Basic語言基礎、程序流程控制、過程、數組、結構和類、用戶界面設計初步、文件操作、數據庫編程、程序調試等!禫isual Basic程序設計》是Visual Basic程序設計的入門教材,采用Visual Basic2010 版本,也適合于更高的版本。《Visual Basic程序設計》內容豐富,語言敘述通俗易懂,注重理論與實踐相結合。
更多科學出版社服務,請掃碼獲取。
目錄
前言
第1章引言1
1.1Visual Basic簡介1
1.1.1計算機語言和程序1
1.1.2從機器語言到匯編語言2
1.1.3從匯編語言到高級語言2
1.1.4Visual Basic的發(fā)展史3
1.2Visual Basic開發(fā)環(huán)境4
1.2.1NET框架4
1.2.2安裝Visual Basic6
1.2.3啟動Visual Basic學習版9
1.2.4Visual Basic學習版集成開發(fā)環(huán)境界面10
1.3創(chuàng)建第一個程序11
1.3.1創(chuàng)建一個Windows應用程序11
1.3.2編寫一個控制臺應用程序13
1.4使用幫助系統(tǒng).13
思考題16
第2章可視化編程基礎17
2.1可視化編程的幾個概念17
2.1.1對象和類17
2.1.2屬性、方法和事件19
2.2窗體和幾個基本控件26
2.2.1窗體26
2.2.2標簽控件30
2.2.3文本框控件31
2.2.4命令按鈕控件33
2.3開發(fā)Windows應用程序的主要步驟34
2.3.1題目分析35
2.3.2創(chuàng)建和保存項目36
2.3.3界面設計37
2.3.4屬性設置38
2.3.5編寫代碼38
2.3.6調試運行39
思考題39
第3章Visual Basic語言基礎40
3.1程序編碼規(guī)則40
3.1.1標識符40
3.1.2編碼規(guī)則40
3.1.3注釋與空白41
3.2基本數據類型42
3.2.1數值型數據類型43
3.2.2字符型數據類型45
3.2.3日期時間型52
3.2.4邏輯型53
3.2.5對象類型53
3.3常量與變量54
3.3.1常量54
3.3.2變量55
3.4數據類型轉換61
3.5運算符與表達式63
3.5.1運算符63
3.5.2表達式68
思考題70
第4章程序流程控制71
4.1算法概述71
4.1.1引例71
4.1.2基本概念73
4.1.3流程圖74
4.1.4常用算法設計思想舉例75
4.2順序結構84
4.2.1變量的賦值85
4.2.2順序結構舉例87
4.3分支結構90
4.3.1If語句90
4.3.2SelectCase語句93
4.3.3條件函數IIf95
4.4循環(huán)結構95
4.4.1For…Next循環(huán)95
4.4.2Do…Loop循環(huán)97
4.4.3退出循環(huán)99
4.4.4嵌套循環(huán)100
4.5綜合實例102
思考題103
第5章過程104
5.1過程概述104
5.2Sub過程105
5.2.1Sub過程定義105
5.2.2Sub過程調用107
5.2.3Sub過程執(zhí)行線索109
5.3事件過程110
5.3.1事件過程定義110
5.3.2事件過程使用方法111
5.3.3事件過程使用方法115
5.4Function過程119
5.4.1Function過程定義119
5.4.2Function過程調用方法122
5.4.3Function過程的執(zhí)行線索126
5.5過程參數131
5.5.1引用調用和傳值調用131
5.5.2帶默認值的形式參數136
5.5.3指定實參和形參結合順序138
5.6過程重載139
5.7遞歸調用142
5.8變量生存期與作用域145
5.8.1類級變量146
5.8.2過程級變量147
5.8.3程序塊級變量149
5.8.4同名變量及其作用域150
思考題151
第6章數組153
6.1數組概述153
6.2數組定義153
6.2.1一維數組定義153
6.2.2多維數組定義154
6.3數組的相關操作155
6.3.1數組初始化155
6.3.2數組空間重分配158
6.3.3數組上界及元素數162
6.3.4數組遍歷164
6.3.5形參數組、形參參數數組以及數組返回值170
6.4與一維數組相關的算法舉例178
6.4.1冒泡排序178
6.4.2選擇排序182
6.4.3輸出素數表185
6.4.4輸出正整數因子187
6.5與二維數組相關的算法舉例189
6.5.1二維數組統(tǒng)計操作189
6.5.2二維數組和一維數組的相互轉換192
6.5.3楊輝三角196
思考題198
第7章結構和類199
7.1結構199
7.1.1結構的定義199
7.1.2結構類型變量的使用201
7.1.3常量成員和共享成員203
7.1.4結構成員的作用域204
7.1.5結構的屬性205
7.1.6結構的方法209
7.1.7結構的構造方法210
7.1.8一個綜合的例子212
7.2類217
7.2.1對象217
7.2.2面向對象的基本特性218
7.2.3類和對象的定義220
7.2.4在類中定義數據成員222
7.2.5對象的定義223
7.2.6在類中定義屬性224
7.2.7在類中定義方法226
7.2.8在類中定義事件228
7.2.9構造函數和析構函數231
7.3繼承與派生232
7.3.1基類和派生類232
7.3.2派生類的構造函數233
7.4類的多態(tài)236
7.4.1重載與重寫236
7.4.2多態(tài)性及其實現(xiàn)238
7.5結構和類的比較240
思考題241
第8章用戶界面設計初步243
8.1菜單設計243
8.1.1菜單類型243
8.1.2菜單對象244
8.1.3下拉式菜單的創(chuàng)建245
8.1.4彈出式菜單的創(chuàng)建248
8.1.5為菜單項編寫代碼250
8.2工具欄和狀態(tài)欄250
8.3通用對話框250
8.3.1MessageBox對話框251
8.3.2OpenFileDialog控件和SaveFileDialog控件253
8.3.3FontDialog控件257
8.3.4ColorDialog控件258
8.4多重窗體260
8.4.1添加窗體與設置啟動窗體260
8.4.2窗體的實例化與顯示261
8.4.3不同窗體間數據的訪問263
思考題264
第9章文件操作265
9.1文件概述265
9.1.1文件的基本結構265
9.1.2文件的分類266
9.1.3文件的讀寫過程267
9.2文件操作概述268
9.2.1文件的打開268
9.2.2文件的關閉270
9.2.3文件的寫入271
9.2.4順序文件的讀操作273
9.3隨機文件275
9.4二進制文件278
9.5三種文件讀寫方式的異同279
9.6文件操作相關函數及使用280
思考題282
第10章數據庫編程283
10.1數據庫概述283
10.1.1關系數據庫的基本概念286
10.1.2Access數據庫的使用287
10.1.3SQL簡介289
10.2ADO.NET292
10.2.1ADO.NET簡介292
10.2.2ADO.NET的名稱空間293
10.2.3Connection對象294
10.2.4Command對象295
10.2.5DataReader對象296
10.2.6DataSet對象306
10.2.7DataAdapter對象308
10.2.8數據綁定313
思考題319
參考文獻320
附錄1程序的調試321
附1.1錯誤的類別321
附1.2程序調試工具323
附1.3異常處理326
附錄2內部函數329
附2.1數學函數329
附2.2字符串函數331
附2.3日期與時間函數342
附2.4類型測試函數346
附2.5預定義輸入對話框函數InputBox346
附錄3常用控件348
附3.1圖片框控件348
附3.2復選框控件349
附3.3單選按鈕控件351
附3.4列表框控件352
附3.5組合框控件356
附3.6計時器控件357
附3.7框架控件357
附3.8面板控件358
附錄4實驗任務359
第1章 引言
1.1 Visual Basic簡介
1.1.1 計算機語言和程序
日常生活中,人與人之間的交流需要語言來進行,而人和計算機之間的交流,也需要語言來進行,即需要計算機語言來交流。與人類的語言相似,計算機語言就是一套具有數字、字符、詞法和語法規(guī)則的系統(tǒng),由這些規(guī)則組成計算機各種指令(或各種語句),實現(xiàn)人與計算機之間的通訊。
那么,計算機語言又是如何實現(xiàn)計算機和人之間溝通的呢?這就是人和計算機之間的“中間人”——程序的功勞了。通過計算機語言(如常見的匯編語言、C語言和Basic語言等)編制程序,在程序中就可以表達我們的意圖,而程序則負責調度各種計算機資源(申請內存和執(zhí)行計算等)來完成我們下達的命令。要通過程序向計算機傳達一個命令,必須經過下面的步驟。
首先,在源文件中用程序設計語言表達指令。用戶通過計算機語言表達指令,通常,指令是記錄在文件中以源代碼的形式出現(xiàn)的。在進行具體操作的時候,根據用戶所使用的開發(fā)平臺,具體的操作步驟可能有所不同。
然后,將源代碼編譯成可執(zhí)行文件。在源文件中記錄的指令通常是以高級程序設計語言表達的,這種語言接近于人類使用的自然語言。但是,對于計算機來說,這些符號是無法理解的,因此需要一個來完成這個“翻譯”工作的角色——編譯器。它負責將源代碼文件中以高級程序設計語言表達的指令翻譯成計算機可以理解的機器語言,并記錄在可執(zhí)行文件中(在Windows 開發(fā)平臺下,可執(zhí)行程序通常是一個擴展名為.exe的文件)。經過這個編譯過程后,就得到了可執(zhí)行的文件,也就使源代碼文件變?yōu)榱祟愃朴谶@樣的二進制序列。
最后,計算機執(zhí)行可執(zhí)行程序。這些二進制指令會被調入計算機,并遵照這些指令執(zhí)行,完成相關任務。
1.1.2 從機器語言到匯編語言
計算機工作基于二進制,從根本上說,計算機只能識別由1和0組成的指令。在計算機發(fā)展的初期,一般計算機的指令長度為16位,即以16個二進制數(0 或1)組成一條指令。16個0和1可以組成各種排列組合。例如,用讓計算機進行一次加法運算。用戶想要計算機知道和執(zhí)行自己的意圖,就要編寫許多條由1 和0 組成的指令,然后用紙袋穿孔機以人工的方法在特質的黑色紙帶上穿孔,在指定的位置上有孔代表1,無孔代表0。一個程序往往需要一個長長的紙帶,在需要運行此程序時就將紙帶裝在光電輸入機上,當光電輸入機從紙帶讀入信息時,有孔處產生一個電脈沖,指令變成電信號,讓計算機執(zhí)行各種操作。
這種計算機能直接識別和接受的二進制代碼稱為機器指令(machine instruction) ,機器指令的集合就是該計算機的機器語言(machine language) ,在語言的規(guī)則中規(guī)定各種指令的表現(xiàn)形式和作用。
顯然,機器語言與人們習慣用的語言差別太大,難學、難寫、難記、難檢查、難修改,且難以推廣使用,因此初期只有極少數的計算機專業(yè)人員會編寫這樣的計算機程序。
為了克服機器語言的上述缺點,人們創(chuàng)造出符號語言(symbolic language),它用一些英文字母和數字表示一個指令,如ADD代表“加”,SUB代表“減”,LD代表“傳送”等。例如,兩個數相加的機器指令可以用下面符號指令代替:
ADD A,B (執(zhí)行A+B=>A,將寄存器中A 的數與寄存器B中的數相加,放到寄存器A中)
顯然,計算機并不能直接識別和執(zhí)行符號語言的指令,需要用一種稱為匯編程序的軟件,把符號語言的指令轉換為機器指令。一般地,一條符號語言的指令對應轉換為一條機器指令,轉換的過程稱為“代真”或“匯編”語言,因此符號語言又稱為符號匯編語言(symbolic assembler language)或匯編語言(assembler language)。
1.1.3 從匯編語言到高級語言
雖然匯編語言比機器語言簡單好記一些,但仍然難以普及,只在專業(yè)人員中使用。不同型號計算機的機器語言和匯編語言是互不通用的,即用甲機器的機器語言編寫的程序在乙機器上不能使用。機器語言和匯編語言是完全依賴于具體機器特征的,是面向機器的語言。由于它“貼近”計算機,或者說離計算機“很近”,因此稱為計算機低級語言(low level language) 。
為了克服低級語言的缺點,20 世紀50 年代創(chuàng)造出了第一個計算機高級語言——FORTRAN 語言。它很接近于人們習慣使用的自然語言和數學語言。程序中用到的語句和指令使用英文單詞表示,所用的運算符和運算表達式與人們日常所用的數學式子差不多,很容易理解。程序運行的結果用英文和數字輸出,十分方便。例如,在FORTRAN 語言程序中,若要輸出只需寫出下面這樣一個語句:
即可得到計算結果,顯然這是很容易理解和使用的。
這種語言功能很強,且不依賴于具體機器,用它寫出的程序對任何型號的計算機都適用(或只需做很少的修改)。它與具體機器距離較遠,故稱為計算機高級語言(high level language) 。
當然,計算機是不能直接識別高級語言程序的,首先要進行“翻譯”,用一種稱為編譯程序的軟件把用高級語言寫的程序(稱為源程序,source program) 轉換為機器指令的程序(稱為目標程序,object program) ,然后讓計算機執(zhí)行機器指令程序,最后得到結果。高級語言的一個語句往往對應多條機器指令。
自從有了高級語言后,一般的科技人員、管理人員、大中學生以及計算機愛好者,都能較容易地學會用高級語言編寫程序,指揮計算機進行工作,而完全不顧什么機器指令,也可以不必深入懂得計算機的內部結果和工作原理,就能得心應手地利用計算機進行各種工作,為計算機的推廣普及創(chuàng)造了良好的條件。
數十年來,全世界涌現(xiàn)了2500 種以上高級語言,每種高級語言都有其特定的用途,其中應用較廣泛的有100 多種,影響較大的有FORTRAN 和ALGOL(適合數值計算)、BASIC 和QBASIC(適合初學者的小型會話語言)、COBOL(適合商業(yè)管理)、Pascal(適合數學的結構程序設計語言)、PL/1(大型通用語言)、LISP 和PROLOC(人工智能語言)、C(系統(tǒng)描述語言)、C++(支持面向對象程序設計的大型語言)、Visual Basic(支持面向對象程序設計的語言)和Java(適于網絡的語言)等。
1.1.4 Visual Basic 的發(fā)展史
BASIC 語言屬于高級語言的一種,英文名稱的全名是“Beginner’s All-Purpose Symbolic Instruction Code”,取其首字字母簡稱“BASIC”,就名稱的含意來看,是適用于“初學者的多功能符號指令碼”。最初,它是為初學計算機的人員設計的,作為交互計算的第一個語言,且附加了很多特征,簡單易學而且能適應各種程序設計任務。
到了20 世紀70 年代,BASIC 語言得到了較全面的完善并能處理相當復雜的應用問題。BASIC 語言在早期發(fā)展過程中有很多版本,其中微軟公司于1987 年推出MSDOS 環(huán)境下的Quick BASIC ,克服了原BASIC 結構化程度差和運算速度慢的缺點,具有與FORTRAN 和C 語言相媲美的完善程度,有方便全面的編程環(huán)境和庫管理功能,可以說Quick BASIC 的易學性和BASIC 差不多,而功能則大為擴充,因此得到了廣泛好評。
從20 世紀80 年代末到90 年代初,隨著Windows 操作系統(tǒng)的發(fā)展和逐步流行,PC 的操作方式由命令行的方式向圖形用戶界面方式轉變。Cooper 公司總裁Alan Cooper 開始開發(fā)一個新的開發(fā)環(huán)境,在這個開發(fā)環(huán)境中,甚至連基于窗口的用戶界面的屏幕布局都用鼠標來驅動,其目標是針對那些為產生一個用戶界面連代碼都懶得寫的程序員。因此,他決定這個產品使用的語言應該是BASIC 語言的一個變種。1991 年,在Alan Cooper 的工作成果基礎上,微軟公司推出了名為Visual Basic 的產品,版本號為1.0。程序員可以安裝它,并能立即寫出Windows 界面程序。雖然該產品功能很少,但是它首次集成了可視化的程序界面設計和事件驅動機制,具有劃時代的意義。
在Windows 操作系統(tǒng)的不斷發(fā)展和成熟中,Visual Basic 也在不斷地發(fā)展中。到1998年時,Visual Basic 發(fā)展到了6.0 的版本。在版本的變化中逐步增加了處理關系數據庫的功能,也增加了對類和自建控件的支持,并開始支持中文等,最終成為一個非常穩(wěn)定、強健的開發(fā)工具,至今仍然擁有數以百萬計的用戶。
隨著微軟提出的.NET 框架思想,在1999 年,微軟公司決定將Visual Basic 改成真正的面向對象的語言,并于2002 年在.NET平臺中正式推出Visual Basic.NET,2005 年推出Visual Basic 2005 版本。值得注意的是從這個版本開始去掉了“.NET”字樣,而且這個版本與前面的版本相比有了很多重大的變革,增加了My偽命名空間、泛型和操作符重載等眾多新特性。其后幾年間微軟公司發(fā)布了若干個版本,直到最近的Visual Basic 2015 版本。
本書是基于Visual Basic 2010 版本(書中統(tǒng)稱Visual Basic) 編寫的。
1.2 Visual Basic 開發(fā)環(huán)境
1.2.1 .NET 框架
.NET 框架由微軟開發(fā),是一個致力于敏捷軟件開發(fā)、快速應用開發(fā)、平臺無關性和網絡透明化的軟件開發(fā)平臺,其中包含了許多有助于互聯(lián)網和內部網應用迅捷開發(fā)的技術。.NET 框架是以一種采用系統(tǒng)虛擬機運行的編程平臺,支持多種語言(C#、Visual Basic 、C++和Python 等)的開發(fā)。.NET 也為應用程序接口(Application Programming Interface,API)提供了新功能和開發(fā)工具。這些革新使得程序設計員可以同時進行Windows 應用軟件和網絡應用軟件以及組件和服務的開發(fā)。.NET 框架的結構如圖1-1所示。
圖1-1 .NET 框架
.NET 框架是一個多語言組件開發(fā)和執(zhí)行環(huán)境,它由以下三個主要部分組成。
1.公共語言運行時
公共語言運行時(Common Language Runtime,CLR)名稱不能準確反映它的全部功能。實際上,公共語言運行時在組件的開發(fā)及運行過程中,都扮演著非常重要的角色。在組件運行過程中,運行時負責管理內存分配、啟動或刪除線程和進程、實施安全性策略,同時滿足當前組件對其他組件的需求。在開發(fā)階段,運行時的作用有些變化:與現(xiàn)今的組件對象模型(Component Object Model,COM)相比,運行時的自動化程度大為提高(如可自動執(zhí)行內存管理),因此開發(fā)人員的工作變得非常輕松。.NET框架的關鍵作用在于,它提供了一個跨編程語言的統(tǒng)一編程環(huán)境,這也是它能獨樹一幟的根本原因。
2.統(tǒng)一的編程類
.NET 框架為開發(fā)人員提供了一個統(tǒng)一、面向對象、層次化和可擴展的類庫集(API),F(xiàn)今,C++ 開發(fā)人員使用的是Microsoft 基類庫,Java開發(fā)人員使用的是Windows 基類庫,而Visual Basic 用戶使用的又是Visual Basic API集,只要簡單地使用.NET框架就可以統(tǒng)一微軟當前的各種不同類框架。這樣,開發(fā)人員無需學習多種框架就能順利編程。遠不止于此的是,通過創(chuàng)建跨編程語言的公共類庫集,.NET框架可實現(xiàn)跨語言繼承性、錯誤處理功能和調試功能。實際上,從JScript 到C++的所有編程語言,都是相互等同的,開發(fā)人員可以自由選擇理想的編程語言。
3.活動服務器頁面
活動服務器頁面(Active Server Page,ASP)是使用.NET 框架提供的編程類庫構建而成的,它提供了Web 應用程序模型,該模型由一組控件和一個基本結構組成。有了它,Web 應用程序的構建就變得非常容易。
查看全部↓