Transcript 投影片 1
基礎程式設計(一)
國立北門高中
林明璋
課綱精神:概論
• 本主題旨在培養學生對於程式設計的正確觀念,並進一步
引起學生學習程式設計的興趣。應強調程式設計的概念,
並避免過度拘泥於特定的程式語言或開發工具。教學重點
分述如下:
– 1-1 程式設計與電腦解題的關係:說明程式設計在日常生活與各領
域之用途以及重要性,並說明程式設計所須具備之資訊科學基本
知識。
– 1-2 程式設計步驟:說明程式設計步驟(分析、設計、實作、測試
與修正),以及各步驟間的關係。
– 2-1 程式語言:說明程式語言與程式設計的關係,並介紹常見的程
式語言種類,及其各自之特色。
– 2-2 直譯程式與編譯程式:說明直譯程式和編譯程式的功能,及其
與程式設計的關係。
– 2-3 整合開發環境:說明整合開發環境的功能,及其與程式設計的
關係。
2
課綱精神:基礎觀念
• 本主題主要在介紹程式語言的基礎觀念,包含變數的使用、
基本輸入輸出的語法、運算式的表示法、以及內建函式庫
的使用方法。應兼顧概念講解與實例演練,以培養學生使
用程式語言的基本能力。各子題教學重點分述如下:
– 1-1、1-2 常數/變數用途與使用方法:說明常數/變數的用途與使用
時機及命名原則。
– 1-3 變數資料型態與資料數值範圍:說明變數各種基本資料型態、
資料數值範圍。
– 2-1、2-2 基本輸入/出敘述:舉例說明如何正確地進行資料輸入/出。
– 3-1 運算元與運算子:說明運算元與運算子的定義,及優序順序關
係。
– 3-2 運算式:舉例說明數學、關係、與邏輯運算式的定義。
– 3-3 指定敍述:說明指定敘述的功能與使用方法。
– 4-1、4-2 內建函式功能與用途:說明內建函式的功能、使用時機
與使用方法。並舉例介紹程式設計常用的內建函式。
3
課綱精神:流程控制
• 本主題重點為介紹程式語言之選擇與重複敘述等
流程控制結構,並培養學生具備正確使用流程控
制語法的能力。各子題教學重點分述如下:
– 1-1 選擇敘述功能與用途:說明選擇敘述的功能,及其在程式設計
中的使用時機。
– 1-2 單一條件選擇敘述:舉例說明如何正確地使用單一選擇敘述。
– 1-3 多重條件選擇敘述:舉例說明如何正確地使用雙重、多重條件
選擇敘述、以及巢狀選擇敘述。
4
引起動機
• 以河內塔故事做開場,說明以電腦解決問
題的方法與應用。
– 【河內塔】
• 將事先準備好的簡單小遊戲試玩給全班看
及觀摩已完成的作品,以引起學生興趣。
– 【數獨】【大樂透開獎】
• 【VB研究小站】(提供範例下載及觀摩)
– http://vb.ncis.com.tw/
5
概論-程式設計的步驟
• 說明程式設計的步驟:程式設計主要的目
的,是為了利用電腦協助處理某一類問題
與挑戰,有的問題可能十分複雜,因此,
必須要依照一些步驟,逐步的加以解析與
設計。
– (1) 分析
– (2) 設計
– (3) 實作
– (4) 測試與修正
6
程式語言的類別
7
程式語言的演進
未來的程式語言
自然語言(第5代)
非程序
導向語言(第4代)
物件導向語言
VB, VB.NET, VC
結構化查詢語言
SQL,Oracle
人
高階語言
程式語言
程序
導向語言(第3代)
BASIC, C, PASCAL
組合語言(第2代)
Assembly
機械語言(第1代)
電腦內部0或1所組成
低階語言
電腦
8
低階語言
• 低階語言(Low Level Language) 可分為「機器語言
(Machine Language)」和「組合語言(Assembly
Language)」兩種。
• (1) 機器語言:
– ◆範例說明:0010 0000 0000 0100...
• (2) 組合語言(Assembly Language):
–
–
–
–
–
–
–
◆範例說明: (顯示Hello! )
mov dx, offset Message ; offset of Message
mov ah, 9h ;
function 9h = display string int 21h ;
call DOS mov ah, 4Ch ;
return to DOS (exit) int 21h ;
call DOS Message db "Hello!$" ; Message
9
高階語言
• 高階語言(High Level Language)
• 直譯程式與編譯程式的執行流程
10
高階語言種類
•
•
•
•
•
•
•
•
FORTRAN 語言
BASIC 語言
PASCAL 語言
C/C++ 語言
COBOL 語言
Ada 語言
LISP 語言
JAVA 語言
……完整內容,請參考教案資料。
11
微軟與BASIC語言
• BASIC(standing for Beginner’s All Purpose
Symbolic Instruction Code)是1964年由數學教
授John Kemeny和Thomas Kurtz在Dartmouth學
院所開發的程式語言和編譯程式。
• BASIC語言是一種非常簡單且容易學習程式語言,
其原是訓練學生或初學者作為學習程式設計的工
具和環境。BASIC是當時迷你微電腦(PC個人電
腦尚未出現)的第一種高階程式語言。
12
VB版本的演進(1)
• 在1991年5月20日微軟在亞特蘭大發表Visual
Basic 1.0版。
• 在1992年9月微軟發表Visual Basic的MS-DOS版
本。
• 同年11月微軟推出Visual Basic 2.0版,分為標準
版和專業兩種版本。
• 在1993年5月發表Visual Basic 3.0標準和專業版。
• 次年1995年12月推出支援32位元的作業系統的
Visual Basic 4.0版,讓Visual Basic開始擁有建立
物件的能力和OCX。
13
VB版本的演進(2)
• 在1997年2月微軟發表Visual Basic 5.0版。
• 在1998年6月微軟發表Visual Basic 6.0版。
• 在2002年2月推出的VB.NET(Visual Basic.NET)
2002版。
• 在2005年底推出.NET Framework 2.0版和Visual
Studio 2005,Visual Basic語言也更名為Visual
Basic 2005(即VB 8.0版)。
• 在2008年初推出最新.NET Framework 3.5版和
Visual Studio 2008,Visual Basic語言也改版成
最新的Visual Basic 2008,即VB 9.0版。
14
Visual Studio 2008簡介
• Visual Basic 2008語言的開發環境是Visual
Studio 2008,它是微軟推出的整合開發環境,能
夠在同一套應用程式編輯、編譯、除錯和測試
Visual Basic等.NET語言的應用程式。
• Visual Studio 2008是一套支援.NET Framework
的整合開發環境,可以使用Visual Basic 2008、
C#、C++和J#等語言來建立Windows、ASP.NET、
主控台和Web Services等各種不同的應用程式。
15
安裝Visual Basic
2008 Express(1)
• Visual Basic 2008 Express是Visual Studio產品線
的擴充,微軟Express系列提供實用和最少負擔程
式開發工具,可以讓學生和初學者輕鬆進入
Visual Studio和.NET Framework開發平台,快速
建立所需.NET應用程式。
• Visual Basic 2008 Express中文版包含.NET
Framework 3.5中文版和SQL Server Compact
3.5版,支援Windows Vista作業系統。
16
安裝Visual Basic
2008 Express(2)
• 下載網址:http://www.microsoft.com/express/download/
•
• 來到下載頁面,選擇你要的程式,在語言欄選擇
【Chinese(Traditional)】並且點擊「» Download」,然
後再點擊﹝儲存﹞。
• 安裝完成後請選擇立即註冊,它將會以Windows Live ID
的認證方式做確認,並發配金鑰,若您尚未註冊過,請立
即註冊。
17
簡介VB 2008工作環境
•
•
•
•
•
•
•
•
•
主視窗:標題→功能表(檔案、編輯、檢視、專案…)
內容功能表:(按滑鼠右鍵,啟動的捷徑指令)
工具列:常用功能指令的圖示按鈕
工具箱:常用控制項,可直接選用加入程式
方案總管視窗:(應用程式的檔案集合:包含表單與模組)
屬性視窗:顯示選取物件的屬性
程式碼編輯視窗:包含『表單』與『模組』的程式編寫
表單配置視窗:安排表單在應用程式出現的位置
監看視窗:程式執行時的偵錯功能
18
撰寫第一個VB2008程式
• 每一個VB2008程式是由兩個部份組合而成,
分別為「表單」及「程式」。因此,在設
計一個VB2008程式,必須要完成以下四大
步驟:
• 表單設計
– (1)從「工具箱」加入物件到表單中
– (2)設計物件的屬性之屬性值
• 程式設計
– (1)撰寫程式碼
– (2)測試執行結果
19
常數與變數
• 程式語言在資料處理時,通常把資料分成
兩類:變數 (Variable) 和常數 (Constant)。
• 變數是指程式在執行的過程中,可以改變
其值。而常數則一直保持不變。
• 例如A=B+1中1即是常數,而A、B則是變數,
也就是記憶體儲存1的位址,其內容固定無
法改變,而儲存A和B的位址其內容是可以
改變的。
20
常數介紹
• 在程式設計時,有些值會在程式中重複出現,並
且其值也不會被改變,我們可以利用一個較有意
義的名稱來取代這些不會被改變的數字或字串,
我們稱為「常數」。亦即在整個程式執行中,不
會改變內容的資料稱之。
• 一般而言,常數可分為兩種,分別為數字常數與
字串常數:
– 1.數字常數
– 2.字串常數:在Visual Basic中,字串常數前後必須使
用雙引號「"」括起來。
21
常數宣告
• 宣告常數
22
變數介紹
• 「變數」是指資料儲存在主記憶體位址的名稱,
其內容會隨著程式的執行而改變。您可以將變數
想像成一個容器,它是專門用來儲放資料的地方。
而容器的大小是由宣告時的資料型態來決定。
• 當宣告變數的名稱與資料型態,系統會自動配置
適當的記憶體空間,來存放該型態的資料。在
VB2008中每一個變數在使用之前一定要加以宣告,
否則會產生「編譯錯誤」。
23
變數宣告
• 宣告變數
• 設定初值:在宣告變數的同時,指定資料
給變數
24
變數資料型態
資料型態
數字類型態
文字類型態
Byte(位元組)
String(可動字串)
Short(短整數)
String*N
(固定長度字串)
其他類型態
布林資料
(Boolean)
日期時間(Data)
Integer(整數)
Long(長整數)
自由變數資料
(Variant)
Single(單精準度)
物件(Object)
Double(雙精準度)
Currency(貨幣)
25
基本輸入敘述
• InputBox輸入視窗可彈出一個視窗來讓使用者輸
入資料,在功能上如同文字方塊控制項。
• InputBox()函數的語法:
• c=InputBox(訊息, [標題,文字欗的預設值])
• 各參數的說明,如下所示:
– 訊息:顯示在輸入視窗的字串,InputBox()函數至少需
要提供此參數。
– 標題:顯示在標題列的文字內容。
– 文字欄的預設值:輸入資料的預設值。
26
基本輸出敘述
• MsgBox()函數可以顯示訊息視窗,提供使用者錯
誤訊息或是非題的選擇。
• 函數的語法:
• MsgBox(訊息, [樣式, 標題])
• 各參數的說明,如下所示:
– 訊息:顯示在訊息視窗的訊息字串,MsgBox()函數至
少需要提供此參數。
– 樣式:指定訊息視窗顯示哪些按鈕、圖示和預設按鈕
的樣式,這是MsgBoxStyle列舉常數。
– 標題:顯示在訊息視窗上方標題列的字串,如果沒有
指定,預設就是專案名稱。
27
運算式與指定敘述
• 電腦處理資料的過程為:輸入→處理→輸出,其
中「處理」程序通常是藉由運算式(Expression)來
完成。
• 每一行運算式都是由運算元(Operand)與運算子
(Operator)所組合而成的。例如:A=B+1,其中
「A,B,1」稱為運算元,「=,+」則稱為運算子。
• 一般而言,「運算元」都是變數或常數,而運算
子則可分為四種:
–
–
–
–
1. 指定運算子
2. 算術運算子
3. 關係運算子
4. 邏輯運算子
28
指定運算子
• 一般初學者,在撰寫程式中遇到數學上的等號「=」時,
都會有一些疑問,那就是何時才是真正的「等號」,何時
才能當作「指定運算子」來使用。
• 基本上,在VB2008中的等號「=」大部份都是當作「指定
運算子」來使用,也就是在某一行運算式中,從「=」指
定運算子的右邊開始看,亦即將右邊的運算式的結果指定
給左邊的運算元。
• 例如:將變數A與B的值相加以後,指定給Sum變數,其
程式如下:
• ※我們在撰寫運算式時,特別小心的就是不能將常數或二
個及二個變數以上放在「=」指定運算子的左邊。
29
算術運算子
• 在數學上有四則運算,而在程式語言中也
不例外,其主要的目的就是用來處理使用
者輸入的數值資料。
• 在程式語言的算術運算式中,也是由數學
運算式所構成的計算式,因此,在運算時
也要注意到運算子的優先順序。
30
關係運算子
• 關係運算子是一種比較大小的運算式 , 因此
又稱「比較運算式」。其比較種類有兩種 :
– (1)數值的大小 :數值關係運算式
– (2)字串的大小 :字串關係運算式
• 其主要目的是用來判斷條件式是否成立。
如果條件式成立,則會傳回True(真),否則
會傳回False(假)
31
邏輯運算子
• 邏輯運算式是數學家布林(Boolean)所發展出來的,
包括六種邏輯,分別是NOT(反)、AND(且)、
OR(或)、XOR(互斥或)、AndAlso、OrElse…等。
• 最常使用的為AND與OR,說明如下:
– (1) AND的用法:
當兩個或數個條件同時成立時,整個條件才算成立,
此時可以將數個條件用「AND」連結起來。
– (2) OR的用法:
若兩個條件或數個條件用「OR」連結起來時,即表示
數個條件中有一個成立時,整個條件即算成立。
32
運算子優先順序
• 在實際應用上,若三種運算式同時存在時,則必
須依照「算術運算子」最先、「比較運算子」次
之,「邏輯運算子」最後的優先順序來計算。
• 以5>3*2 OR 2^3 <> 2*3為例,其計算方式如下:
• .
綜合所有運算子之優先順序
33
範例題目練習
• (1) 年齡在30歲至35歲之間,或月入100,000元以
上的就輸出 "中高收入"。
– 【程式碼】:
– If age>=30 And age<=35 Or salary>=100000 Then
Msgbox(“中高收入”)
• (2) 國文成績為100,而且英文或數學兩科成績中,
只要任何一科為100分以上,就輸出「資優生」
– 【程式碼】:
– If Chinese = 100 And (English=100 Or math=100)
Then Msgbox("資優生")
34
內建函式與功能
• 函式 (Function) 是『具有傳回值 (Return Value)
的程序』, 透過傳回值,可讓程序的應用更具彈
性。而程序 (Procedure), 簡單的說, 就是『一段
程式敘述的集合』。當一段程式能產生特定功能,
我們就可將它們組織成一個程序。
• 內建函式指的是 VB 預先設計好的程式,使用者
可直接輸入函式名稱來用這些函式的功能,藉由
這些函式可以幫助我們快速處理日期、數字、文
字…等資料。
35
VB2008內建函式
• VB2008內建函式可簡單區分幾類:數值、字串、
時間/日期。
– (1)數值函式:專門用來處理數值資料的函式。其中
在.NET Framework類別庫中,內建有許多可供程式設
計者使用的類別,其中System基礎類別下的Math子類
別提供了許多有關數學運算的方法,方便我們使用這
些函式來進行數學運算,以省去撰寫複雜的數學運算
式及相關程式敘述。
– (2)字串函式:專門用來處理字串資料的函式。
– (3)時間/日期函式:專門用來處理時間及日期資料的函
式。
• 詳細用法,可參考教案附件說明。
36
流程控制-選擇敘述
• 撰寫程式像日常生活一樣,常遇到有些問題必須
做選擇判斷,譬如:今天全家出遊,應先看氣象
預報,若不會下雨就到露天的遊樂場遊玩;若會
下雨就改去博物館參觀。像這樣根據一個條件,
來做出不同的選擇就是「選擇結構」。
• 選擇結構是一種條件控制敘述,它是一個選擇題,
可以分為(1)單一選擇(2)二選一 (3)多選一,共三
種。
• 程式執行順序是依照關係運算式的條件,來決定
執行哪一個區塊的程式碼。
37
單一選擇
• If Then條件敘述是一種是否執行的條件,決定是
否執行程式區塊內程式碼。如果If條件為True,就
執行Then/End If間的程式碼,其語法如下所示:
If 條件 Then
程式區塊
End If
• 【範例】:分數95分以上者,頒發獎學金1000元
If 分數 >= 95 Then
獎學金 = 1000
End If
38
二選一
• 如果擁有程式中有兩個執行區塊,只能二選一。可以加上Else關鍵字,
其語法如下所示:
If 條件 Then
程式區塊1
Else
程式區塊2
End If
條件
• 上述If條件如為True,就執行Then/Else間的程式碼;False就執行
Else/End If間的程式碼。
• 【範例】:判斷及格分數
If (分數 >= 60) Then
Msgbox( "及格")
Else
Msgbox(“不及格")
End If
39
多選一(1)If Then Else
• If
Then/ElseIf條件敘述是If Then/Else條件敘述的
【範例】:頒發獎學金標準,操行90、學科95以
條件敘述
延伸,使用ElseIf來重複建立多選一條件敘述。
上者:2000元;操行90、學科90以上者:1000
元;操行80、學科80以上者:500元;其他則無。
If 條件式1 Then
程式區塊1
If (學科>=
95) And (操行>=90) Then
ElseIf
條件式2
Then
獎學金
= 2000
程式區塊2
ElseIf
(學科>= 90) And (操行>=90 ) Then
… 獎學金 = 1000
ElseIf 條件式N
Then
(學科>= 80)
And (操行>=80) Then
程式區塊N
獎學金 = 500 程式2
程式1
Else
程式區塊N+1
獎學金 = 0
EndIf
End If
程式3
程式4
40
多選一(2)Select Case
• Select Case多選一條件敘述比If Then/ElseIf多條件敘述來
• 的清楚明白,其程式碼也比較簡潔。它可以依照符合條件
【範例】:獎學金頒發標準
來執行不同區塊的程式碼:
Case值1
Select
Case 分數
Select
CaseCase
Is >=運算式
95
Case 值1
獎學金
= 2000
程式區塊1
Case
90
Case值2
Case
值2To 94
程式區塊2
獎學金
= 1000
……. 80 To 89
Case
Case
Else= 500
獎學金
程式區塊N
Case值3
Case
Else
End Case
獎學金 = 0
上述「運算式」值是用來和Case值比較,每一個Case是
End Select
一個條件,如果True,就執行之後的程式區塊。若有例外
情況則執行Case Else後的程式區塊。
41
參考資料
• 書籍
– Visual Basics 2008 程式設計。陳惠貞、陳俊榮著。學貫出版股份
有限公司。
– Visual Basic 6.0 程式設計。許華青著。高立圖書有限公司。
– 精彩Visual Basic 6.0程式設計。吳目誠、吳秉柔著。網奕資訊。
– Visual Basic 2008 程式設計範例教本。陳會安著。旗標資訊。
– Visual Basic 2008 最佳實務講座。羅慧真。恆逸資訊。
– Visual Basic 2008 程式實例教學範本。數位新知。博碩
• 網站資源
– 【阿國仔的教學筆記】http://tw.myblog.yahoo.com/lk-hsu
– 【河內塔】http://ccmp.chiuchang.com.tw/toy/hanoi/hanoi.html
– 【Visual Basic 2008 Express Edition】
http://www.microsoft.com/Express/VB/
– 【Visual Basic開發人員中心MSDN】http://msdn.microsoft.com/zhtw/library/2x7h1hfk.aspx
– 【如意網站~VB教學網】http://yes.nctu.edu.tw/vb/
42
問題討論Q&A
43