第 一 章 認識程式語言 課程名稱:程式設計 授課老師:________ 2015/10/1 1 本章學習目標 1.讓讀者瞭解軟體與程式語言的關係。 2.認識視覺化「Visual」程式語言的優點及特性。 2015/10/1 2 本章內容 1-1.認識程式語言 1-2 .NET Framework簡介 1-3. VB6.0與VB2010 1-4 物件導向設計 1-5 主控台應用程式 1-6 Visual BASIC 2010語言操作環境 1-7 程式碼片斷管理員 1-8 習題 2015/10/1 3 1-1.認識程式語言 人與人之間的溝通必須要使用共通的語言(例如:國語、閩南語、英 語…等),而人想要與電腦溝通,則一樣必須要用電腦看得懂的語言, 即所謂的電腦程式語言(例如:Assemble、Basic、C、C++、JAVA、 Pascal、Delphi、Visual Basic、ASP語言及ASP.NET2.0、VB2010、 C#2010等新一代的程式語言)。而這些程式語言都只是「軟體」的一 個子集合。 2015/10/1 4 1-1.1 何謂軟體 軟體(software)就是程式,它是由一連串的指令所組成,其主要功能 就是達成某一特定的目的。在電腦系統中軟體是用來控制硬體,如果 只有硬體而沒有軟體,則電腦被視為一堆廢鐵。因此,軟體與硬體缺 一不可。就像人一樣,身軀(硬體)與精神(軟體)也是缺一不可的。如圖 1-1所示: 圖1-1 人與電腦的關係 2015/10/1 5 一般而言,軟體可分為兩大類分別為:「系統軟體」和「應用軟體」。 如圖1-2所示。 系統軟體 軟體 作業系統 DOS,Unix,Windows,Vista... 程式語言 VB,BASIC,C,VC,JAVA... 工具程式 FTP,MSN,WINZIP... 套裝軟體 WORD, EXCEL,ACCESS... 自行開發 程式 選課系統、訂票系統... 應用軟體 圖1-2 軟體分類架構圖 2015/10/1 6 1-1.2 程式語言的分類 一般而言,程式語言可分為兩大類:一為低階語言,另一為高階語言。 而低階語言又可分為機械語言與組合語言。高階語言則可分為程序導 向語言與非程序導向語言及自然語言。如圖1-3所示: 自然語言(第5代) 非程序 導向語言(第4代) 未來的程式語言 物件導向語言 VB, VB.NET, VC 結構化查詢語言 SQL,Oracle 人 高階語言 程式語言 程序 導向語言(第3代) BASIC, C, PASCAL 組合語言(第2代) Assembly 機械語言(第1代) 電腦內部0或1所組成 低階語言 圖1-3 程式語言分類架構圖 2015/10/1 電腦 7 由於電腦只看懂機械語言,因此,我們利用高階語言在撰寫程式之後, 電腦並無法直接的執行,必須要透過翻譯程式來翻譯為電腦可以接受 的語言。一般而言,從撰寫原始程式到執行時,必須要經過一連串的 步驟,例如編譯、連結、產生執行檔及執行結果。如圖1-4所示。 2015/10/1 8 高階語言(BASIC) 主記憶體 直譯程式 執行程式 高階語言(C語言) 函式庫(.lib) 編譯程式 目的程式 連結程式 可執行模組 載入程式 組合語言(Assembler) 組譯程式 副程式 執行步驟:原始程式編譯目的程式連結產生執行檔 載入到記憶體執行結果 圖1-4程式的執行流程圖 2015/10/1 9 1-1.3 程式語言的演進 一、第一代語言---機器語言(Machine languages) 這是一種比較接近電腦的語言,亦即電腦可以直接執行 的機器碼,由於電腦內部是使用0與1兩種狀態來表示資料及 邏輯閘開關的控制,因此,我們將電腦內部由 0與1所組成的 資料稱之為「機器語言(machine languages)」。 2015/10/1 10 一、第一代語言---機器語言(Machine languages)<續> 因為它是一種以0與1所構成二進位形式的碼,故並不適 合人類閱讀與學習,也不適合用來進行程式設計。如圖1-5所 示: 2015/10/1 11 一、第一代語言---機器語言(Machine languages)<續> 優點: 它是以邏輯狀態0和1直接命令電腦,不需翻譯就可以直接執 行,所以速度最快。 缺點: (1)不同的處理機(CPU),使用不同的機器語言,所以可攜性較差。 (2)只有兩種狀態0與1。因此,不僅難學、難懂、也不容易維護。 2015/10/1 12 二、第二代語言---組合語言(Assembly languages) 這是一種介於「高階語言」與「機器語言 之間的語言,由 於機器語言在使用上不方便,因此,工程師們便從機器語言中找 出規則,以英文字、數字符號來重組機器語言,使它們變成較容 易記憶的語言,這種語言便稱為「組合語言(Assembly languages)」。它是利用特定功能的符號指令稱為助譯碼 (Mnemonics code),例如:ADD代表「相加」、LDA代表「載 入」、MOV代表「搬移」;這些指令比起機器語言來說會較有 意義、容易學習,而負責翻譯的程式則稱之為組合程式 (Assembler)或組譯器。 2015/10/1 13 二、第二代語言---組合語言(Assembly languages)<續> 由於每一種計算機(電腦)皆有其獨特的機器語言,因此每一 種機器的組合語言各有不同。所以,可攜性(Portability)較差。並 且較難撰寫及維護,因此,一般使用者較少使用組合語言設計程 式。如圖1-6所示: 組合語言 ADD MOV LDA 機器語言 110110010001 110000000011 111101101010 圖1-6 人和電腦溝通示意圖(二) 2015/10/1 14 三、第三代語言---程序導向語言(Procedure-Oriented Language) 這是一種類似自然語言,它較具有結構性,可以方便讓使用者撰 寫程式。但是,在撰寫完成之後必須要再經過編譯器(Compiler) 或直譯器(Interpreter)轉換成「機器語言」之才交給電腦執行。 常見的編譯器有C、直譯器有BASIC均屬此類。如圖1-7所示: 高階語言(VB) 機器語言 IF Score>=60 Then MsgBox(“及格”) Else MsgBox(“不及格”) End If 110110010001 110000000011 111101101010 101010101011 101010111111 圖1-7 人和電腦溝通示意圖(三) 2015/10/1 15 四、第四代語言---非程序導向語言(NonProcedureOriented Language ) 由於程序導向語言在開發專案時成本較高、維護不易及重覆使用性低的 缺點。因此,後來又發展出「非程序導向語言」,其設計上的優點就是, 只要告訴電腦”要做什麼(What to do)”,而不必告訴它”如何做(How to do)”。並且部份的程式碼會自動產生(例如:ASP.NET 2.0),因此,可 以大大的縮減專案開發的時間,並且程式在維護上也更有效率。 2015/10/1 16 四、第四代語言---非程序導向語言<續> 常見的非程序導向語言有下面兩種: (1)結構化查詢語言(SQL) (2)物件導向語言(Object-Oriented Programming, OOP) 2015/10/1 17 (1)結構化查詢語言(SQL) 比程序導向語言更容易使用的語言,使用者只需將步驟寫出來, 而不必管電腦要如何去執行,這樣的電腦語言稱為查詢語言 (Query Language);這種語言減輕了使用者程式設計的負擔,常 見的是資料庫查詢語言如:SQL。如圖1-8所示: 撰寫查詢語言 Select 使用者所要看的欄位 From 資料表名稱 Where 過濾條件 執行結果 圖1-8 查詢語言示意圖 2015/10/1 18 (2)物件導向語言(Object-Oriented Programming, OOP) 所謂物件導向程式語言(Object-Oriented Programming簡稱 OOP),是把程式設計的概念具體化、物件化,並以該物件的角 度去分析和解決問題,它不但突破了以往程序導向語言只能循序 單向的設計缺失,更因物件的簡便、維護容易及可重覆使用…等 特性,而使得程式開發的速度加快,因此成為最新一代程式語言 的主流。常見的物件導向式語言有Visual BASIC 2010、Visual C++、VB.NET、ASP.NET、C#...等等。如圖1-9所示: 每一個按鈕都是獨立 的物件,當某一物件 的程式有Bug時,也 不會影響其他的物件 2015/10/1 19 五、第五代語言---自然語言(Natural languages) 就是我們日常所用的語言,如英文(english )、中文(chinese)等, 這是最接近人類所使用的語言。由於此種語言文法和語意上較為 複雜,因此在電腦處理上較不容易,所以並不合適給予電腦處理, 目前只用在人工智慧研究之一。如圖1-10所示: 圖1-10自然語言示意圖 2015/10/1 20 1-1.4 高階語言的種類 既然低階語言在學習上較為困難,因此,一般的學習者都是利用高階 語言來開發系統,而目前較常用的高階語言有下列數種。依發展的年 代說明如下: 1.FORTRAN(FORmula TRANslator) 語言 2.COBOL 語言 3.BASIC 語言 4.PASCAL 語言 5.C 語言 6.C++ 7.JAVA 2015/10/1 21 1-1.5 何謂演算法? 「演算法」在韋氏辭典中定義為:「在有限步驟內解決數學問題的程 序」。我們可以把演算法(Algorithm)定義成:「解決問題的方法」。 【題目】製作蛋糕的方法,其步驟如下: 一、撰寫演算法應遵守五點原則 1.輸入(Input):不一定要有輸入。可能沒有,也可能是多個資料輸入。 【題目】 製作蛋糕時,必須要輸入:「雞蛋、麵粉及鮮奶」等食材。 【課本例子】 例如1:不需輸入 如果想要取得系統目前的時間,不須要輸入,只要寫一行now() 函數,就可以輸出系統時間。 例如2:必需輸入 求某數為奇偶數時,則必須先要有一個輸入整數,才能進行 判斷。 一、撰寫演算法應遵守五點原則: (續) 2.明確性(Definiteness):每一行指令都必須明確,不可模稜兩可。 【題目】製作蛋糕時,要加入多少的麵粉與雞蛋及要加熱多久, 必須明確,不可模稜兩可。 【課本例子】 例如1:判斷某一數值是否為偶數。 首先我們試著用下列文字來加以描述: (1)輸入一個正整數。 (2)作餘除運算是否為0。 不具明確性 (3)為0即為偶數。 以上描述看來似乎正確,但是從演算法觀點來看,其中的第(2)點並不 符合「明確性」,因它並未說明「餘除運算」是如何運算,容易造成 混淆與不解。我們應該改寫為: (1)輸入一個正整數N。 (2)如果N 除以2,其餘數為0。 (3)則其N為偶數。 具明確性 【課本例子】 例如2: 「用功的學生才能領獎學金」就不具有明確性,因為每一個人對用 功的定義可能不盡相同,而如果改為「成績90以上的學生才能領 獎學金」就是具有明確性,因為90分是一個比較客觀的定義。 一、撰寫演算法應遵守五點原則: (續) 3.有限性(Finiteness):演算法不能有無窮迴路,必須能終止執行, 亦即必須在有限的步驟內完成。 【題目】製作蛋糕必須在有限的步驟內完成 【課本例子】 由於演算法並非是真正可以執行的程式。但是,真正的程式是可以有 無窮迴路的動作。 例如:Windows 作業系統(系統程式)除非系統關機或當機,否則它會 永遠執行一個「等待迴圈」,來等待使用者從鍵盤輸入或其他 的輸入設備。 一、撰寫演算法應遵守五點原則: (續) 4.正確性(Correctness) :既然演算法是解決問題的方法,因此, 正確性是最基本的要求。 【題目】製作出來的蛋糕必須要正確,亦即符合使用者的需求 【課本例子】 例如:以下判斷某數為奇偶數的演算法,雖然符合「明確性」,但是 「不正確」,因為N 除以2,其餘數為0,則N應該為「偶數」, 而非「奇數」。 輸入一個正整數N。 如果N 除以2,其餘數為0。 則其N為奇數。應該改為「偶數」 一、撰寫演算法應遵守五點原則:( 續) 5.輸出(Output):至少一個輸出。 【題目】在製作蛋糕時,在輸入「雞蛋、麵粉及鮮奶」之後,一定會 有輸出。 【課本例子】 例如:在電腦中,處理資料的基本過程有三個步驟: 輸入 處理 輸出 (原始資料) (程式) (有用的資訊) 所以,使用電腦來為我們處理資料時,有可能是系統自動接收 到一個訊號,來當作輸入資料,但是系統至少會輸出一項讓使 用者參考的有用資訊。 2015/10/1 33 二、描述演算法有三種方法 (一)文字敘述 【定義】演算法可用文字來加以描述,但是會比較不精確,因此一般較 不常用。 【題目】 請利用「文字敘述」來描述使用者登入帳號與密碼時,系統檢查的過程。 【解答】 步驟一:輸入使用者帳號與密碼 步驟二:判斷帳號與密碼是否正確 步驟三:如果正確時,則可以登入系統 否則,就無法登入! (二)流程圖(Flowchart) 【定義】利用圖形方式來表達欲解決問題的步驟。 【題目】 請利用「流程圖」來描述使用者登入帳號與密碼時,系統檢查的過程。 【解答】 開始 輸入 帳號與密碼 輸入 處理 真(True) 檢查帳號與密碼 假(False) 輸出(顯示) 顯示Pass 顯示NoPass 結束 說明:流程圖可以協助程式設計者設計程式,可增加程式的可讀性。 (三)虛擬碼(Pseudo Code) 【定義】兼具文字描述及流程圖的優點,其方式是用文字摻雜程式語言, 來描述解題步驟與方法。 【題目】 請利用「虛擬碼」敘述使用者登入帳號與密碼時,系統檢查的過程。 【解答】 (1)Input: UserName, Password (2)IF (UserName And Password) ALL True Output: You Can Pass! else Output: You Can not Pass! 說明:在資料結構中,一般都是利用「虛擬碼」來表示演算法。 延伸學習<觀念> 一、流程圖(Flowchart) 【定義】利用圖形方式來表達欲解決問題的步驟。 【優點】1.它可協助程式設計者設計更周詳的程式 2.可增加程式的可讀性 3.對於初學者而言可幫助奠定良好的程式設計基礎 【作法】分析那些資料是要「輸入」,經過「處理」之後,要「輸出」 那些結果。 【繪製原則】 1.流程圖必須使用標準符號,便於閱讀和分析。 2.流程圖中的文字力求簡潔、扼要,而且明確可行。 3.繪製方向應由上而下,由左至右。 4.流程線條避免太長或交叉,可多用連接符號。 延伸學習<練習> 一、流程圖(Flowchart)<續> 【舉例】請繪出使用者登入「帳號」與「密碼」時,系統檢查的流程圖。 提示: 步驟1:輸入帳號與密碼 <輸入> 步驟2:檢查是否正確 <處理> 步驟3.1:正確時,則顯示Pass。 <輸出> 步驟3.2:不正確時,則顯示NoPass。 <輸出> 開始 輸入 帳號與密碼 輸入 處理 真(True) 檢查帳號與密碼 假(False) 輸出(顯示) 顯示Pass 顯示NoPass 結束 延伸學習<比較> 二、虛擬碼(Pseudo Code)【比較「流程圖」與「虛擬碼」】 【題目】比較1+2+3+…+10的「流程圖」與「虛擬碼」。 開始 (1)設Count=1,Total=0; 設初設定 Count=1; Total=0; (2)Total=Total+Count; (3)Count=Count+1; 假 Count<=10 真 (1) Total= Total+ Count; (2) Count= Count+1; 顯示結果:55 結束 (4)若Count <=10 則回步驟(2) (5)印出Total 1-1.6 程式設計概念 我們要開始程式設計時,一定要進行下面五個步驟: 步驟1. 分析所要解決的問題(需求) 說明: (1)首先要瞭解問題的需求及條件。 (2)確定要輸入那些資料。 (3)確定要輸出那些資訊報表。 1-1.6 程式設計概念(續) 步驟2. 設計解題的步驟(演算法) 說明: 撰寫演算法可以利用(1)文字敘述(2)流程圖(3)虛擬碼來表示 解決問題的步驟。 1-1.6 程式設計概念(續) 步驟3. 編寫程式 (程式碼) 說明: 選擇適當的程式語言,將演算法的步驟寫成一個完整的程式。 1-1.6 程式設計概念(續) 步驟4. 上機測試、偵測錯誤 (偵錯) 說明: 一個「有用性」及「易用性」的程式,必須要經過多次的測試, 若有錯誤,立即更正,直到正確無誤為止。 1-1.6 程式設計概念(續) 步驟5. 編寫程式說明書(可執行) 說明: 一個功能強而完整的程式,使用者就會願意使用,因此必須有 使用說明書,以便於別人使用或日後的維護。 【實例】計算國文與英文的平均成績,並依照平均成績來求顯示 「及格」與「不及格」。 【解答】 1.分析及定義問題:兩個等級分別如下: (1)及格:60(含)以上。 (2)不及格:60以下。 2.畫出整合問題的流程圖或撰寫問題的演算法。如下圖所示。 3.撰寫及建立程式模組 題目:計算平均成績,並判斷是否及格 01 Private Sub Button1_Click(……) Handles Button1.Click 02 Dim C_Score, E_Score, Average As Integer 03 C_Score = 60 04 E_Score = 70 05 Average = (C_Score + E_Score) / 2 06 If Average >= 60 Then 07 MsgBox("及格") 08 09 10 11 Else MsgBox("不及格") End If End Sub 4.對每一個程式模組進行測試及除錯,直到沒有錯誤為止 當使用者輸入國文為60分,英文為61分時,是否可以計算出平均成績為60.5, 如果沒有則必須要進行除錯,亦即要將Average的資料型態改為float(浮點數) 1-1.7 為什麼要撰寫程式? 主要的目的:快速解決「複雜的問題」。 例如1:小華問:小明請幫我計算1加到10的總和。 小明說:1+2+3+…+10=55大家都會,太簡單了! 1-1.7 為什麼要撰寫程式?(續) 例如2: 小華又問:小明請幫我計算1加到50000時。 小明則說:太困難了,我無法馬上計算出結果。但是我可以利用 「撰寫程式」來處理。 說明:因此,我們可以非常清楚的知道,程式語言幫忙人類 「解決複雜的問題」。 1-1.8 一個好程式需要滿足條件 一、正確性(Correctness) 二、效率性(Performance) 三、可維護性(Maintainable) 一、正確性(Correctness) 既然演算法是解決問題的方法,所以正確性是一個好程式最基本的要求。 例如:設計一個判斷奇偶數的程式 說明:上面的程式處理過程中,由於程式不正確,所以產生錯誤的結果。 二、效率性(Performance) 指程式真正執行時所必須要花費的時間。一般評估執行時間是依程式碼 所被執行的總次數來計算。亦即所謂的「頻率次數)」當頻率次數愈高 時,代表所需的執行時間愈長。 例如:計算下列程式中變數Count被執行的次數為何? 三、可維護性(Maintainable) 一個好的程式,不只需要有效率地被正確地執行之外,也必須要考慮程 式的可讀性、及未來修改和擴充性,這屬於程式設計方法和風格的問題, 例如:使用模組化來設計程式和加上完整程式註解的說明。 三、可維護性(Maintainable)(續) (一) 縮排 【使用時機】在使用巢狀結構時,必須特別需要。 使用「縮排」技巧 未使用「縮排」技巧 三、可維護性(Maintainable)(續) (二) 註解 【定義】它是一種「非執行的敘述」亦即是給人看的,而電腦不會去執 行它。此功能就是用來說明某一段程式碼的作用與目的。 1.使用單引號「 ' 」的使用時機:可以寫在程式碼的後面或單獨一行註解。 Const PI As Single = 3.14 '宣告「圓周率」為.14的常數 2.使用REM的使用時機:只能寫成單獨一行註解。 REM ===設計一個求圓面積與圓周長的程式=== 三、可維護性(Maintainable)(續) (三) 變數及函數名稱的命名 好的變數宣告命名 說明:爾後維護時,看到變數名稱就可以得知變數的意義。 不好的變數宣告命名 說明:爾後維護時,無法馬上得知A與B變數所代表的意思。 1-2 .NET Framework簡介 不管是哪一種程式語言,最終都要編譯成中介語言(MSIL),所有 程式及程式元件之間的溝通介面都是以中介語言(MSIL)為基準。 VC#程式 VB程式 其他程式語言 .NET編譯 MSIL(中介語言) VC# 應用程式 VB 應用程式 其他程式語言設計 的應用程式 程式語言可跨平台傳遞資料 2015/10/1 57 1-2.1 .NET Framework 的架構 NET Framework大致可分為三部分,分別為共通語言規範(Common Language Specification)、共通語言執行環境(Common Language Runtime)及基礎類別庫(Base Class Library)。如下圖所示。 .NET Framework VB、C#、C++、J#... Common Language Specification 共通語言規範 Base Class Library 基礎類別庫 Common Language Runtime 共通語言執行環境 Windows作業系統 2015/10/1 58 1-2.2共通語言規範 (Common Language Specification) 在.NET Framework平台中,它大約可以相容25種不同的程式語言, 例如:VB, C#,J#,C++等。而程式設計師不需要學會每一種程式語言, 只要學會其中一種語言即可,並遵守共通語言規範的情況下,每一種 程式語言都可以相互轉換為與平台無關的中介語言(MSIL)。其最主要 的目的就是不同的程式語言可以相互使用所須要的資源,而不會有轉 換上的問題。 2015/10/1 59 1-2.3 共通語言執行環境 (Common Language Runtime) 「Runtime」指的是電腦在編譯某種程式語言的執行時期。而只要 以程式語言撰寫出來的程式,就必須要Runtime來執行,而且不同的 程式語言所使用的Runtime也不相同。因為Runtime提供了程式語言所 必須配備的函式與物件,而各種語言的函式與物件都不盡相同,所以 各種語言都有著自己的Runtime,無法共用。 但是.NET Framework以共通語言執行環境(CLR)來解決了這個共 用問題,IL(Intermediate Language)這個中介語言(介於程式碼與 機器碼之間的語言。 2015/10/1 60 1-2.4 基礎類別庫(Base Class Library) 不同的程式語言有自己的「Runtime」,而物件類別資料庫也是一樣。 各種語言所用的物件類別標準不一,「基礎類別庫」提供了所有.NET 程式語言的應用物件,將各種語言的物件類別作整合,建立一個所有 語言都可共用的物件類別資料庫,例如繪圖、多媒體、郵件管理等物 件類別。 2015/10/1 61 1-3 VB6.0與VB2010 最大分別是, VB6.0不是物件導向程式,而只是引用物件導向的概念。 但VB2010才是真正物件導向程式的語言。一個真正物件導向的語 言,必須要具備以下的特性: 1.抽象化(Abstraction) 2.封裝性(Encapsulation) 3.繼承性(Inheritance) 4.多形性(Polymorphism) 但是,VB6.0都沒有具備以上的這些特性。而VB2010則都則備了。 2015/10/1 62 1-4 物件導向設計 使用結構化程式設計,的確簡化了我們撰寫程式的工作,也提高 了程式的可維護性。但是,結構化程式設計在開發大型專案時,專注 於功能面(函式)的開發,而往往忽略了功能所要處理的資料。被處理 的「資料」與「功能」在結構化的程式設計是分離的關係。在大型專 案的開發上,由於要處理的問題,相對的要複雜許多,如果,「資料」 與「函式」之間沒有關聯性,很容易發生錯誤,維護起來也很不方便。 後來,物件導向程式設計的興起,就是為了解決結構化程式設計所面 臨的「資料」與「功能」分離的問題。 2015/10/1 63 常見的物件導向語言 常見的物件導向語言 程式語言 適用的領域 C#或C++ 適合用來開發各種系統軟體及應用軟體 Java 適合用來開發網際網路的應用程式 Visual Basic 2010 適合用來開發視窗應用程式 2015/10/1 64 1-5 主控台應用程式 主控台應用程式(Console Application)是物件導向VB中最簡單的 一種應用程式,其輸出環境類似DOS,大都是以純文字介面來顯 示,因為它是以命令列輸入方式為主。 【優點】程式較為簡潔並且執行速度較快 【缺點】無法提供有親和力的使用者介面。 因此,筆者不建議一般的初學者使用此方法來撰寫程式。 2015/10/1 65 方法及步驟: 主控台應用程式就是利用模組(Module)來完成,其原理為由一個 Main( )的主程序,其中包含所關相關的程式碼。而我們可以利用 Console物件所提供的方法和屬性來處理,而在模式中也可以包含其 他的副程式或函數,並且不需要由屬性視窗去設定任何的屬性資料。 安裝好Visual Basic 2010之後,你就可以開始撰寫VB2010程式了, 其步驟如下所示: 步驟一:在您的桌面選取「開始」--->「程式集」--->「Microsoft Visual Basic 2010 Express 版」即可進入了。如果是第一 次使用時,則必須要「建立一個專案」,其步驟如下所示: 2015/10/1 66 步驟一:在您的桌面選取「開始」--->「程式集」--->「Microsoft Visual Basic 2010 Express 版」即可進入了。如果是第一 次使用時,則必須要「新增專案」,其步驟如下所示: 2015/10/1 67 步驟二:在「新增專案」對話方塊中,點選「主控台應用程式」,再按「確 定」。 2015/10/1 68 在按「確定」鈕之後,即可完成新專案的建立,此時VB2010就會自動建立 一個包含程式基本架構的Module.vb檔案。如下圖所示: 2015/10/1 69 步驟三:撰寫程式 題目:第一個主控台程式 程式檔案名稱 ch1-5.sln 01 Module Module1 02 03 04 05 06 07 08 Sub Main() Console.WriteLine("我的第一個主控台程式") Console.WriteLine() '換行 Console.WriteLine("設計者:李春雄 博士") Console.Read() End Sub End Module 步驟四:執行結果 2015/10/1 70 1-6 Visual BASIC 語言操作環境 雖然我們也可以利用主控台(Console)應用程式下來設計Windows表單 的輸出入介面,但這對於初學者而言,是一件較不易學習之事。因此, 若能在「Windows 應用程式模式」下,使用Visual Basic的整合開發環 境(IDE),利用工具箱所提供的工具,如此,可以讓設計者不需要撰寫 任何的程式碼便很輕易地製作出所需要的輸出入介面,如按鈕、文字 方塊…等控制項,因此,程式設計者就只要將時間專注於了解使用者 的需求及撰寫程式流程的核心,不但節省設計輸出入畫面的時間而且 很容易維護。 2015/10/1 71 一、程序導向(Procedure Oriented) 先寫「程式碼」之後,才能呈現「畫面」,並且只能呈現「文字化」 的畫面。 請輸入半徑:3 面積:28.26 周長:18.84 功能鍵說明 R:代表計算 C:取消 E:結束 缺點:沒有「視覺化」的操作介面。 2015/10/1 72 二、物件導向(Object Oriented) Visual Basic將傳統的Basic從Dos移轉到Windows作業系統下執行,在編寫程 式時,必須先建立新的表單(Form),然後才能開始建立「物件」(如 Button(按扭)、Label(標籤),TextBox(文字框)……等),緊接著就 可以設定物件的「屬性」。最後,撰寫程式相關的程式碼。如下圖所示: TextBox物件Button 物件 Button物件 Label物件 因為Visual Basic是一種「視覺化」的開發工具,也就是說,VB程式所設計出 來的畫面,使用者只要利用滑鼠就可以輕鬆的操作所需要的功能。亦即先設 計「畫面」,再撰寫「程式碼」,並且是以「圖形化」的呈現方式。 73 1-6.1 如何啟動VB2010 安裝好Visual Basic 2010之後,你就可以開始撰寫VB2010程式了, 其步驟如下所示: 步驟一:在您的桌面選取「開始」--->「程式集」--->「Microsoft Visual Basic 2010 Express 版」即可進入了。如果是第 一次使用時,則必須要「新增專案」,其步驟如下所示: 2015/10/1 74 步驟二:在「新增專案」對話方塊中,選按「Windows應用程式」 並輸入檔案名稱之後,再按「確定」。如下圖所示: 2015/10/1 75 步驟三:認識VB2010整合環境畫面 Visual Basic 2010工作環境,分別有六大項視窗工作環境, 如下圖所示: 功能表列 一般工具列 工具箱 方案總管 表單視窗 屬性視窗 2015/10/1 76 基本上,完整VB2010視窗如上圖所示,但有時候會缺少了某些視窗, 此時你可以按「檢視」功能表列,再選取所要顯示的視窗,即可顯示之 (例如:「檢視/工具箱」即可顯示工具箱)。如果需要調整視窗大小時, 可以將游標至於視窗邊緣,當出現雙箭頭時即可拖曳來調整。其完整的 說明如下所示: (一) 功能表列 你可以在功能表列中選擇所需要的功能。 例如:要使用「即時運算視窗」時,則選擇「偵錯/視窗/即時運算」 選項。 2015/10/1 77 (二) 一般工具列 除了你可以使用功能表列來選擇你需所的功能之外,VB2010也 提供一般使用者常用的工具放在工具列中,讓使用者快速點選。例如: 當我們撰寫完成程式之後,我們可以直接在「一般工具列」中按「 」 來執行程式。而不需要在功能表列點選「偵錯/開始偵錯」等程序。 在VB中的狀態可分為:設計、中斷及執行模式三種,如下圖所示: 2015/10/1 78 (三) 工具箱視窗(Tool Box) 在工具箱中放置了許多群組的控制項,例如: 1.所有Windows Form群組、 2.通用控制項群組、 3.容器群組、 4.功能表 5.工具列群組 6.資料群組 7.元件群組 8.列印群組 9.對話方塊群組 10.一般群組等。 2015/10/1 79 我們最常使用的群組為「通用控制項群組」,其基本元件有標籤元件、 文字方塊元件及按鈕元件,如下圖所示。這些基本元件一般稱之為「控 制元件」或「控制項(Control)」,每個控制項都是一個完整的物件, 具有屬性、事件和方法,我們只要學習如何使用它,就可以設計出專業 的視窗應用程式了。 常用的控制項如下所示: 滑鼠指標 Button(命令鈕) CheckBox(核取方塊) CheckedListBox(核取清單方塊) ComboBox(下拉式清單方塊) Label (標籤 ) LinkLabel超連結標籤 ListBox(清單方塊) Masked TextBox遮罩文字方塊設計 Picture Box(圖形) RadioButton單選鈕物件 RichTextBox豐富文字方塊 TextBox(文字框) ToolTip(工具列) 2015/10/1 WebBrowser(瀏覽器) 80 (四) 表單視窗 由於每一個程式都是由「表單」與「程式」所組成,因此,設計者 在撰寫程式之前,必須先要在「設計」模式下,安排使用者介面(表單 設計)。 2015/10/1 81 (五) 方案總管 在VB2010中,常用到的檔案有「專案檔(*.vbproj)」、「表單檔 (*.vb)」,在「新增專案」之後,通常系統會自動幫我們新增一個專 案檔及表單檔,且顯示於「方案總管視窗」中,如下圖所示: 2015/10/1 82 (六) 屬性視窗 在VB2010中的屬性視窗包括(屬性與事件),各有兩種模式: 依「字母順序」排序 依「分類」排序 2015/10/1 83 1-6.2 撰寫第一個VB2010程式 每一個VB2010程式是由兩個部份組合而成,分別為「表單」及「程 式」。因此,在設計一個VB2010程式,必須要完成以下四大步驟: 將從「工具箱」加入物件到表單中 表單設計 設定物件的屬性之屬性值 撰寫程式碼 程式設計 測試執行結果 2015/10/1 84 【實例】撰寫VB2010程式四大步驟實作。 將從「工具箱」加入物件到表單中 2015/10/1 85 設定物件的屬性之屬性值 2015/10/1 86 撰寫程式碼 Private Sub Button1_Click(……) Handles Button1.Click Label1.Text = Now() End Sub 2015/10/1 87 測試執行結果 2015/10/1 88 1-7. 程式碼片斷管理員 在VB2010中內建了非常多的程式碼片段,稱為IntelliSense程式碼 片段。而每一個程式碼片段都會執行完整的程式設計工作,設計者 可以善加利用這些IntelliSense程式碼片段,如此,可以加快程式設 計的開發時程。 2015/10/1 89 加入程式碼片段的方法: 在程式碼視窗中加入程式碼片段的位置,按右鍵,此時會出現 快速功能表,請選擇你所須的功能,一層一層的往下找到你所 須的程式碼片段,最後快按二下即可插入此程式碼片段了。 [實例]利用程式碼片段的方式來設計產生亂數值。 2015/10/1 90 步驟一:在欲加入位置按右鍵,此時會出現快速功能表,再點選 「插入程式碼片段」選項,如下圖所示: 2015/10/1 91 步驟二:選擇所須的功能 92 步驟三:插入程式碼片段 Private Sub Button1_Click(……) Handles Button1.Click Dim generator As New Random Dim randomValue As Integer randomValue = generator.Next(10, 100) End Sub 93 步驟四:測試執行結果 題目:利用程式碼片段來產生亂數值 程式檔案名稱 ch17.sln 01 Public Class Form1 02 Private Sub Button1_Click(……) Handles Button1.Click 03 Dim generator As New Random 04 Dim randomValue As Integer 05 randomValue = generator.Next(10, 100) 06 MsgBox(randomValue) 07 End Sub 08 End Class 94
© Copyright 2024 ExpyDoc