CH02 組成敍述的要素 授課教師:王大瑾 視窗程式設計
大綱 識別字、保留字、特殊符號 常值、資料型別 宣告變數與常數的宣告方式及設定初值 算術運算式、字串運算式、複合指定運算式 辨識資料型別 數字系統 2017/9/10
識別字 程式 (Program)是由一行行的 敘述 所成的集合。 敘述(statement)是程式中可執行的最小單元。 敘述 基本是由 識別字、保留字、特殊符號、資料、 變數、常數、運算式…等所組合而成的。 在真實世界,為方便識別,對每個人、事和物都會 賦予一個名字。 同樣使用程式語言設計程式時,對程式中所用到的每個 變數、常數、結構、模組、函式、程序、類別、物件及 屬性等,使用前必須先命名,將這些在程式中被命名的 名字稱為「識別字」(Identifier)。 「識別字」就是指可自行定義或宣告的文數字。 2017/9/10
識別字命名規則 1. 識別字第一個字元必須是以大小寫字母或底線(_)開頭。 2. 第二字元以後方可由字母、數字及底線(_)組成。 1. 識別字第一個字元必須是以大小寫字母或底線(_)開頭。 2. 第二字元以後方可由字母、數字及底線(_)組成。 3. 識別字中間不得有空白字元。 4. 中文也可當識別字,但建議少用。 5. 識別字不宜太長,否則不易記且徒增鍵入的時間。 6. 識別字命名用有意義單字,程式語言所保留的識別字禁用。 7. 識別字由多個單字組成,中間加上底線(_)或 每個單字 開頭用大寫其他用小寫區隔,增可讀性。 2017/9/10
識別字例子 合法識別字: a、score、RndNum、id_no、Super5、_test 不合法識別字: 7_up ‘ 不能由數字開頭 $money ‘ 不能由$號開頭 +sum ‘ 不能由加號開頭 stud no ‘ 中間不能有空白 a-b ‘ 中間不能用減號 Mary&Tom ‘ 不能含&字號 Sub ‘ Sub為VB 2008保留字 2017/9/10
保留字 關鍵字 (Keyword) 。 程式語言中已被定義識別字,不可重複賦予 不同用途。 程式語言中已被定義識別字,不可重複賦予 不同用途。 If 當選擇敘述,在程式設計時不可將 If 當變數用。 下表是 VB 2008 保留字,用法有一定的規範, 撰寫程式時,出現在程式敘述內時會以藍色標示, 以提醒使用者不可誤用。 2017/9/10
保留字 2017/9/10
特殊符號 VB 2008 程式敘述中,有些字元符號,如: ( )、_、:、‘、“、& …,在敘述中有特別用途, 無法當識別字。 字元特殊符號有下列 10 種: 1. ( ) :小括號 在函式、方法或事件處理程序名稱的後面,利用 小括號 ( ) 來放置傳遞的參數。如: Private Sub Button1_Click(ByVal ……… ) Handles Button1.Click 小括號也被用來表示在一個運算式中,優先運算的部份 2017/9/10
特殊符號 2. _ :行接續符號 當一行敘述需分成兩行時,第一行最後一個字元後面 空一格再加底線「_」,便可將一個敘述分成兩行。 程式執行時將這兩行敘述視為一行敘述處理。 Private Sub Button1_Click(ByVal sender As Object, ByVal e As System. _ EventArgs) Handles Button1.Click 3. :合併敘述符號 若程式中有連續的多行敘述都很短時,可透過冒號 將兩行合併成一行,敘述間彼此以冒號隔開,可讀性 高而且可縮短程式的長度。如: 2017/9/10
特殊符號 4. ‘ :註解符號 使用註解符號目的是為方便日後閱讀及助憶。 VB 編譯器在編譯時會忽略註解符號後面的文字。 單引符號只能作註解用途,較長註解通常置於要說明 敘述前一行,較短註解置於該行敘述後面。 2017/9/10
特殊符號 5. “ :字串符號 文數字資料被兩個雙引號 ” ” 頭尾括起稱為 字串。 下列三個資料都屬於字串: 5. “ :字串符號 文數字資料被兩個雙引號 ” ” 頭尾括起稱為 字串。 下列三個資料都屬於字串: “我愛Visual Basic 2008” 、 “abc” 、 “123” 6. & :字串連接符號 要將兩個字串或數值合併成一個字串,在兩個 字串或數值間插入一個字串連接符號『&』如: 3 + 5 8 3 & 5 “35” 3 & “號” “3號” "我愛 " & "VB 2008“ "我愛VB 2008" 2017/9/10
特殊符號 7. .:從屬符號 每個物件都有屬性,程式中存取該物件屬性,在物件 名稱和屬性名稱間插入一個從屬符號「.」即可。 7. .:從屬符號 每個物件都有屬性,程式中存取該物件屬性,在物件 名稱和屬性名稱間插入一個從屬符號「.」即可。 格式 :物件名稱.屬性名稱 = 屬性值 如設定 Label1 標籤控制項的 Text 屬性為 『我愛 VB 2008』 Label1.Text = "我愛 VB 2008" 8. # :日期時間符號 欲將日期或時間資料指定給日期資料型別變數時, 前後要加「#」如 : Dim birthday As Date birthday = #9/1/2008 11:34:56 PM# 2017/9/10
特殊符號 9. 算術運算子(符號) 有 + (加)、- (減)、* (乘)、/ (除)、\ (整數除法)、 ^ (指數)、MOD (餘數)…等,如: sum = num1 + num2 10. 比較運算子(符號) 有 = (等於)、<> (不等於)、< (小於)、> (大於)、 <= (小於等於)、>= (大於等於)。 比較結果: True 或 False 2017/9/10
常值 用來指定給變數當「變數值」 或 指定給物件屬性當「屬性值」。 程式執行時,敘述中的每個常值,都會分配 到記憶體空間來存放。 程式執行時,敘述中的每個常值,都會分配 到記憶體空間來存放。 VB 2008 常值包括: 數值常值、字串常值、日期常值、布林常值、 物件常值。 2017/9/10
常值_數值常值 整數常值 整數常值由數字、+ (正)、- (負)所組成。 表示方式:二進制、八進制、十進制、十六進制 整數常值依表示的範圍可分類出 Byte、SByte、Short、 Integer、Long…等資料型別,如下表所示: 2017/9/10
常值_數值常值 浮點數常值是整數常值後面跟著小數點。 浮點數常值依有效範圍:Single、Double、Decimal… 2017/9/10
常值_數值常值 a:表示含小數數值,其範圍為 1≦a<10 E:代表底數10 科學記號表示法 Single 單精確度與 Double 雙精確度的資料型別為浮點數。 可表小數點的數字。 當 Single 資料型別的整數位數超過七位數, Double 資料型別超過15位數,兩者以科學記號表之。 科學記號表示方式:aE±c a:表示含小數數值,其範圍為 1≦a<10 E:代表底數10 c:代表10的指數值。若指數為正,前加「+」; 若指數為負,前加「-」號。 2017/9/10
常值_數值常值 例 516000000 5.16 × 108 5.16E+8 0.0000000516 5.16 × 10-8 5.16E-8 -516000000 -5.16 × 108 -5.16E+8 -0.0000000516 -5.16 × 10-8 -5.16E-8 下面舉例說明一些數值常值的表示方式: 23445 ‘ 為Integer型別的整數常值 2340000000000 ‘ 共13位數,為Long型別的整數常值 12.56 ‘ 有小數,為Single型別的精確度常值 6.02E+23 ‘ 為Single型別常值,即為 6.021023 -5.34E+230 ‘ 為Double型別常值,即為 -5.3410230 2017/9/10
常值_字串常值 字串常值由一連串字元組成。 包括中文字、英文字母、空格、數字、特殊符號。 程式中,字串常值需用「“ ”」雙引號頭尾括起 來。 字串常值細分: Char字元資料型別 String字串資料型別 2017/9/10
常值_字串常值 例1 例2 合法字串常值 “q”、“hello”、“h2345”、“Hi, my friend.”、 “VB 2008中文版“ 例2 “12.56” ‘ 雙引號括起來屬字串常值,非數值 “12 + num” ‘ 雙引號括起來屬字串常值,非運算式 2017/9/10
常值_布林常值 布林(Boolean)常值只有兩個值,一為true,一為 false 常被應用來表示(真與假)、(開與關)、 (男與女)、(Yes與No) 布林常值所佔的記憶體空間為2 bytes 2017/9/10
常值_日期常值 日期常值可同時 指定日期和時間 僅指定日期或僅指定時間。 日期常值所佔的記憶體空間和可表示的範圍如下: 日期常值可同時 指定日期和時間 僅指定日期或僅指定時間。 日期常值所佔的記憶體空間和可表示的範圍如下: #12:30:00 PM# ‘ 僅只指定時間 #12/3/2003# ‘ 僅只指定日期 #12/3/2003 12:45:00 PM# ‘ 同時指定日期及時間 2017/9/10
常值_物件常值 物件常值可包含任何型別的資料,屬不定型資 料型別。 在變數使用上,物件資料型別的變數很好用。 它可存放任何型別的資料,因任何型別的資料 都屬於物件型別。 物件常值所佔記憶體空間與可表示範圍: 2017/9/10
變數(Variable) 變數與常數都用來存放資料,而資料的內容 就是常值。 變數用來暫時存放程式執行過程中所處理的 中間結果。 變數與常數都用來存放資料,而資料的內容 就是常值。 變數用來暫時存放程式執行過程中所處理的 中間結果。 程式執行時,可能需暫存其值,以方便程式 做運算或比較。 大多數高階語言都使用變數來儲存這些值。 變數是為某個資料的運算而保留的記憶空間, 以因應程式執行時,這個變數會在不同時間而 擁有不同的值。 2017/9/10
變數(Variable) VB 每個變數使用前 需事先宣告,宣告同時需給予一個名稱,稱為 變數名稱。 賦予該變數一個資料型別,電腦會在記憶體配置該資料 型別大小的記憶空間來存放該變數內容。 VB 變數可存放:字串、數值、日期時間…等型別的常值。 一個變數只能存放一個常值資料,被存放的資料稱變數值。 當一個變數被宣告後,設計者或系統可立即指定一個變數值 給該變數,即所謂預設值。此變數的變數值: 可隨時重新指定(設定) 可透過運算結果來更改 2017/9/10
變數名稱的命名規則 第一個字元需以字母字元或底線 (_) 開頭。 第二個字元(含)後只能包含字母字元、十進位數字和 底線,其它字元不允許使用。 如以底線開頭,必須至少含有一個字母順序字元或 進位數字。建議少用中文字為宜。 長度不可超過 1023 個字元。變數名稱可英文字母、 中文字、數字、底線「_」任意組合。 變數名稱中的英文字母是大小寫不分如: Grade、GRADE、grade 視為相同的變數名稱。 建議變數名稱儘量以小寫表示。 變數名稱不可取與關鍵字相同名稱,關鍵字在程式中 以藍色字標示。 2017/9/10
變數名稱的命名規則 例1 合法變數 x、F4、MathScore、N2K3、分數、id_no、_num、A牌 例2 不合法變數 B&Q、Good Luck、7up [注意] 宣告不合法變數名稱,在錯誤字元下方出現藍色 波浪底線來標示,如下圖747為不合法字元,需 更改為合法字元藍色波浪底線才會消失: 2017/9/10
變數的資料型別 變數分成: 數值變數 字串變數 (String) 日期變數 (Date) 物件變數(Object) 變數宣告時未設初值,數值預設值『0』,字串預設值 為空字串『“”』。 數值變數細分為: 位元組變數(Byte) 短整數變數(Short) 整數變數(Integer) 長整數變數(Long) 單精確度變數(Single) 倍精確度變數(Double) 貨幣型別變數(Decimal) 2017/9/10
變數的宣告方式 VB 使用 Dim、Redim、Static、Public 等關鍵字配合 As來宣告變數的資料型別。 宣告變數敘述: 2017/9/10
如何設定變數的初值 數值變數,則預設值為 0 。 字元或字串變數預設值為空字元。 布林變數預設為 False 。 變數宣告時未給予初值,系統會自動給予預設值。 數值變數,則預設值為 0 。 字元或字串變數預設值為空字元。 布林變數預設為 False 。 日期變數 日期預設為 1/1/0001 時間預設為 12:00:00AM 。 物件變數預設值為「未設定」。 VB 在宣告變數同時可設定初值,方式: Dim score As Integer =90 將宣告和初值設定分開 Dim score As Integer score = 90 2017/9/10
例題一 當程式執行時按 [確定] 鈕, 將各變數的初值設定,分 別顯示在Label1~Label4 標籤 控制項上面。 2017/9/10
例題一:解題步驟 Step1 建立輸出入介面 1. 新增專案並以 varTest 為新專案名稱。 2. 在表單內依輸出要求建立 Label1~Label4 和 Button1 按鈕控制項: 2017/9/10
例題一:解題步驟 step2 分析問題 step3 編寫程式碼 1. 由輸出結果可知: - num1 需設為整數變數 - num2 需設為單精確變數 - str1 和 name 設為字串變數以便做字串合併; - birthday 設為日期變數 2. 分別宣告各變數的資料型別 再陸續設定各變數指定初值 最後將初值分別指定給 Label1~Label4 標籤控制項 的 Text 屬性即能分別顯示到表單的標籤控制項上面 step3 編寫程式碼 2017/9/10
例題一:解題步驟 2017/9/10 FileName: varTest.sln 01 Public Class Form1 02 03 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System. _ EventArgs) Handles Button1.Click 04 Dim num1 As Integer 05 num1 = 20 06 Label1.Text = num1 07 08 Dim num2 As Single 09 num2 = 123456789 10 Label2.Text = num2 11 12 Dim str1 As String 13 str1 = "哈囉!" 14 Dim name As String = "Mr. White" 15 Label3.Text = str1 & name 16 17 Dim birthday As Date 18 birthday = #9/11/2005 5:20:36 PM# 19 Label4.Text = birthday 20 End Sub 21 End Class 2017/9/10
常數 (Constant) 程式執行時,有些值在程式執行中,其值到程式結束前 都一直保持不變且重複出現。 程式執行時,有些值在程式執行中,其值到程式結束前 都一直保持不變且重複出現。 可用一個有意義的常數名稱來取代這些不變的數字或 字串。 如:稅率、圓周率、…等、或常用的字串、日期。 常數與變數都有名稱,兩者性質不同。 在程式執行中,變數隨敘述指定常值而更改其變數值。 常數經過宣告,在整個程式中一直保有當初宣告所指定 的常數值。 2017/9/10
常數 (Constant) 常數名稱是用 Const 來宣告。 宣告同時即指定一個常值做為該常數的常數值。 使用常數可增加程式可讀性,閱讀程式時較能 體會出該常值的意義且維護程式時易修改。 Const PI 3.14 ‘ PI 表圓周率 Dim r As Integer ‘ r 表半徑 r = 10 Label.Text = “2 * PI * r = “& 2* PI *r ‘ 圓周長 = 2R 2017/9/10
例題二: 2017/9/10
例題二:解題步驟 Step1 建立輸出入介面 1. 新增專案並以「Const」為新專案名稱。 2. 依輸出要求在表單內建立 - Label1 ~ Label4 標籤控制項 - Button1 按鈕控制項 2017/9/10
例題二:解題步驟 Step2 分析問題 宣告 PI 為圓周率常數,並指定 3.14 為園周率常數值。 宣告radius為整數變數,並指定 100 為變數初值。 圓周長度 = 2 x PI x 半徑(radius) 將結果指定給 Label3 的 Text 屬性,即顯示在 Label3 控制項上。 圓面積 = 圓周率 x 半徑(radius) x 半徑 結果指定給 Label4 的 Text 屬性,即顯示在 Label4 控制項上。 Step3 編寫程式碼 2017/9/10
例題二:解題步驟 Filename : const.sln 01 Public Class Form1 02 03 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click 04 Const PI As Single = 3.14 ‘ 宣告PI為常數名稱 05 Dim radius As Integer 06 radius = 100 07 Label1.Text = "1. 圓周率: " & PI 08 Label2.Text = "2. 半 徑: " & radius & "公分" 09 Label3.Text = "3. 圓周長: " & 2 * PI * radius & "公分" 10 Label4.Text = "4. 圓面積: " & PI * radius * radius & _ "平方公分" 11 End Sub 12 End Class 2017/9/10
運算式(Expression) 語法: 變數 = 運算式 運算式由 運算元(operand)和運算子(operator)組成的式子。 y、2、5屬於運算元 + (加號) 和 * (乘號)是運算子 x是一個變數名稱。 = (等號)是一個指定運算子,會將等號右邊運算式 的結果指定給等號左邊的變數。 語法: 變數 = 運算式 2017/9/10
補充教材--SWAP 視窗程式設計
b=a Dim a As Integer = 5 Dim b As Integer b = a ======================= a 的值是5 b的值是5 這就是b = a,將a的值設定給b
從遊戲看數字互換swap 瓦力猜杯子:在三個杯子中,放入一個球,在 經過數次的杯子互換後,猜那一個杯子中有 球.
如何作到兩個變數中的值互換 Dim a, b, temp As Integer a = 5 b = 10 temp = a a = b
如何作到三個變數中的值互換 如果你有三個變數a b c,你可以將它們分成兩 組(a, b) 和(b,c)來做互換的動作 Dim a, b, c, temp As Integer a = 5 b = 10 c = 15 temp = a a = b b = temp temp = b b = c c = temp
如何作到三個變數中的值互換 a c b temp Dim a, b, temp As Integer a = 5 b = 10 4 temp a c b 2 3 Dim a, b, temp As Integer a = 5 b = 10 temp = a a = b b = temp
算術運算式 算術運算式即為一般的數學計算式 運算結果為數值資料。 2017/9/10
算術運算式計算順序 2017/9/10
例題三: 2017/9/10
字串運算式 字串運算式是將不同字串資料或將字串與非字串資料 合併成一個字串的式子。 字串運算式運算子有: +運算子 和 & 運算子。 字串運算式是將不同字串資料或將字串與非字串資料 合併成一個字串的式子。 字串運算式運算子有: +運算子 和 & 運算子。 1. + 運算子 - 可將兩個字串頭尾相連做字串合併。 - 若兩個數值資料, + 運算子視為加法運算。 - 若兩個字串資料, + 運算子視為字串合併。 2017/9/10
字串運算式 2. & 運算子: - & 運算子可合併不同資料型別,合併結果為字串資料 2. & 運算子: - & 運算子可合併不同資料型別,合併結果為字串資料 - 如合併的資料一個是數值,另一個是日期,必須使用 & 運算子合併,合併結果為字串資料型別。 2017/9/10
複合指定運算式 x = x + 3 x += 3 在等號兩邊都有相同變數名稱,可採複合指定 運算式 x += 3 來表示。 程式碼較精簡且增快執行速度。 2017/9/10
複合指定運算式 2017/9/10
複合指定運算式 2017/9/10
如何辨識資料型別 當顯示出一個常值時,可用 TypeName() 函式來得知 資料型別。 2017/9/10
電腦可辨識哪些數字系統 電腦在內部作運算是以二進制為主。 二進制易造成程式閱讀與維護的不易。 導致八進制和十六進制的產生。 人類日常生活,習慣以十進制來做計數的工作,若能 以十進制來和電腦交談必能方便不少。 電腦可辨識數字系統有以上四種數字系統: 二進制 八進制 十進制 十六進制 2017/9/10
十進制系統 十進制的產生是由於人類有十根手指頭 有 0、1、2、3、4、5、6、7、8、9十種狀態。 每位數在做運算時,滿 10 便向左進位,不夠時 向左借 10。 若每位數是根據其位置的加權值而定,底數為 10。 2017/9/10
二進制系統 電腦內部是積體電路,在電路上的訊號有 高電位(約5伏特電壓)和低電位(0伏特)。 若高電位訊號用 1來表示;低電位訊號用0來表示, 自然而然形成二進制的數字系統。 每位數做運算時,滿 2 便向左進位,不夠時向左借 2。 若每位數根據其位置加權值而定,其底數為 2。 2017/9/10
十六進制系統 電腦內部是用二進制進行運算,對人而言 0 和 1 組合 實在很難一目了然,為提高可讀性,於是以 十六 進制 來代表 0 和 1 的組合。 十六進制即 16 個狀態,分別是 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E,其中 A~F 分別代表 10~15。 每位數在做運算時,滿 16 便向左進位,不夠時向左借16。 若每位數根據其位置加權值而定,其底數為16。 2017/9/10
八進制系統 八進制有 8 個狀態,分別是0、1、2、3、4、5、6、7。 每位數在做運算時,滿 8 便向左進位,不夠時向左借 8。 若每位數是根據其位置加權值而定,其底數為 8。 2017/9/10
各數字系統間的對照與轉換 2017/9/10
Windows 系統的附屬應用程式中有一個 小算盤 應用程式,若將它切換到工程型,就有數字系統的轉換功能。 下圖將十六進制的 A6 轉換成二進制結果為 10100110。 2017/9/10
八進制 數值前要加 &O (為字母O 非數字零) 十六進制 數值前要加 &H 。 2017/9/10