15-1 程式語言的發展與種類 程式語言的發展與種類 1. 程式語言是用來命令電腦執行各種作業的工具, 是人類與電腦溝通的語言 2. 程式語言的分類 : 3. 低階語言 : 較接近電腦的語言, 執行速度快, 但編寫不易 例如 : 機器語言 組合語言 (1) 機器語言 完全由 0 與 1 來表示要執行的命令, 程式不易編寫與閱讀 電腦唯一能直接辨識的語言, 不需經過翻譯, 執行速度最快 無法適用在不同機型的電腦, 可攜性低 (2) 組合語言 最接近機器語言的程式語言, 以符號來表示要執行的命令 例如 : 用 ADD 代表相加,SUB 代表相減, 但是對一般使用者而言仍然相當困難 必須經過組譯才能被電腦所接受 4. 高階語言 : 較接近人類的日常用語, 程式容易編寫與閱讀 例如 :Visual Basic C Java 等 (1) 須翻譯成機器語言才能執行, 執行效率較低階語言差 (2) 相同的命令敘述可適用於不同機型的電腦, 可攜性較高 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-1
計算機概論總複習 5. 組譯 直譯與編譯 : 將組合語言或高階語言所撰寫的原始程式, 翻譯成機器語言讓電腦執行 (1) 組譯 : 利用組譯器 (Assembler) 將組合語言翻譯成機器語言 例如 :MS Assembler (2) 直譯 : 利用直譯器 (Interpreter) 將原始程式的指令逐一翻譯並執行, 每次執行需重新翻譯 例如 :GWBASIC (3) 編譯 : 利用編譯器 (Compiler) 將原始程式翻譯成目的程式, 透過連結程式 (Linker) 產生可執行程式, 不需重新翻譯 例如 :Visual BASIC 6. 程式語言的比較 : 編寫難易度 執行速度 可攜性 高階語言 組合語言 機器語言 ( 易難 ) 機器語言 組合語言 高階語言 ( 快慢 ) 高階語言 組合語言 機器語言 ( 佳差 ) 7. 高階語言的發展 : 由 程序導向語言 到 物件導向語言 (1) 程序導向語言 : 依作業處理程序來設計, 執行時是按照指令的先後順序, 為傳統的程式設計方式 BASIC: 適合程式設計初學者學習 C: 程式執行能力介於高階語言與低階語言之間, 雖是高階語言, 但仍具有低階語言的特性 可攜性高於其他高階語言, 適合用來開發軟體, 許多作業系統都是用 C 語言所編寫 (2) 物件導向語言 : 物件導向是一種新的規劃程式的方法, 將複雜問題依其個別的資料及操作程序一一封裝起來, 成為不同的 物件 物件導向程式設計則是以此種觀念完成程式的設計 C++: 由 C 語言修改而來, 提供更多的函式以方便設計, 並加入了物件導向的特性 Java: 昇陽電腦公司 (SUN) 依據 C++ 簡化修改而成, 在跨平台和安全性方面都相當優越, 適合用來開發網際網路相關的應用軟體 15-2
第 15 章基本程式語言 Visual BASIC: 由微軟公司 (Microsoft) 所推出, 將 BASIC 語言加入了物件導向的特性 Delphi:Borland 公司推出的應用程式開發軟體, 專長於資料庫程式設計 5 C#( 發音為 C Sharp): 一種 簡單 現代 通用 的高階物件導向程式語言 C# 程式看似基於 C++ 寫成, 但又融入如 Delphi Java Visual BASIC 等其他語言 8. 物件導向程式設計的元素 : (1) 類別 (class): 對於具有類似性質 行為及共同關係的物件之描述 例如 : 老鷹 鴿子 麻雀都是屬於鳥類 ; 而飛機 汽車 機車都是運輸類 (2) 物件 (object): 任何具體或抽象的事物都是物件 例如 : 人 車子 電腦 ; 或是抽象的概念, 如 : 電腦中的檔案 程式等 VB 中的表單或是命令鈕都是物件 (3) 屬性 (property): 用來描述該物件的外觀特性 例如 : 大小 顏色等 在 VB 中可藉由屬性視窗來設定物件的名稱 樣式 顏色等 例如 : 將命令鈕的屬性 Text 改為 開始 (4) 方法 (method): 內建於物件中的功能動作 例如 : 當你踩下油門時, 車子會前進 ; 按選台器時, 電視可切換頻道 這些本能的反應稱之為 方法 在 VB 中的圖片方塊 (PictureBox) 具有 Load 方法, 可以載入所給定的資料夾內的圖片到圖片方塊中 ;VB 的內建函數亦可視為系統物件的方法 (5) 事件 (event): 驅動物件執行該物件所設定的動作 例如 : 踩油門或點一下滑鼠 在 VB 中的命令鈕按一下滑鼠 (Click) 的動作即是 事件 (6) 事件程序 (event procedure): 事件驅動後, 根據程式碼的編寫而產生不同反應, 這種能藉由外在設定而產生不同的反應稱之為 事件程序 例如 : 印出 "I Love VB" 字樣等, 這列印的動作便是 事件程序 9. 物件導向程式設計的特性 : (1) 封裝 (encapsulation): 將物件的屬性與方法加以包裝, 其內部結構具有隱密性, 使用時只要知道此物件提供何種操作即可 開發人員在設計軟體時不必了解該物件內部的設計, 只要明白使用物件所擁有的屬性 方法及能觸發它反應的事件即可 如引擎 蓄電池等零件封裝在汽車內 (2) 繼承 (inheritance): 可由既有的類別 (class) 導出另一個類別, 新的類別擁有之前類別的屬性與方法, 若無法滿足開發人員的使用需求時, 可以利用繼承的方式衍生出子類別 (subclass), 再以此子類別產生一個實體的物件來使用, 可提昇軟體設計的彈性 如汽車 船 飛機繼承於交通工具 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-3
計算機概論總複習 (3) 多型 (polymorphism): 子類別可重新改寫由父類別繼承下來的方法, 使得不同的子類別擁有相同名稱但有不同功能的方法 例如 : 同樣是交通工具的移動, 卻有空中飛行 水上航行以及在陸地上行走等各種形式 ( 多型 ) 可以讓設計者以相同的功能介面來操作不同類型的物件, 以呈現不同的行為 ( ) 1. 相對於低階語言, 下列何者不是高階語言的特性? (A) 可攜性較高 (B) 使用者較易學習 (C) 較容易除錯 (D) 程式執行速度較快又較有效率 102 統測 D ( ) 2. 下列關於組合語言的敘述何者錯誤? (A) 組合語言程式透過編譯器才能夠翻譯成機器語言 (B) 組合語言可用來撰寫裝置的驅動程式 (C) 組合語言與機器語言均屬於低階語言 (D) 組合語言是用特定的英文縮寫字來輔助撰寫程式 102 統測 A ( ) 3. 下列哪一種程式語言所撰寫的程式, 在執行前無須先經過組譯 直譯或編譯的程序? (A) 組合語言 (B) 機器語言 (C) 物件導向語言 (D) 程序性高階語言 100 統測 B ( ) 4. 在物件導向程式語言中, 用於描述物件外觀 大小 位置等的特徵值, 稱之為何? (A) 方法 (B) 繼承 (C) 屬性 (D) 裝封 101 統測 C ( ) 1. 小明用 Visual Basic 2010 寫了一個遊戲小程式, 下列對於小明所使用軟體的描述, 何者不正確? (A) 是一種高階語言 (B) 需要經過組譯才能執行 (C) 屬於物件導向程式語言 (D) 可攜性高 ( ) 2. 下列關於機器語言及組合語言在不同電腦中使用的敘述, 何者正確? (A) 需使用相同的機器語言和相同的組合語言 (B) 需使用相同的機器語言和不同的組合語言 (C) 需使用不同的機器語言和相同的組合語言 (D) 需使用不同的機器語言和不同的組合語言 ( ) 3. 關於程式語言的敘述, 下列何者不正確? (A) 機器語言對硬體有很強的控制能力 (B)Visual Basic 具有視覺化的設計, 屬於物件導向語言 (C) 組合語言可以用來寫硬體驅動程式, 屬於高階語言 (D)Java 具有物件導向特性, 可應用在網際網路程式 ( ) 4. 下列哪一種程式語言不具有 物件導向 的相關特性? (A)C++ (B)Java (C)Pascal (D)Delphi ( ) 5. 在物件導向程式語言中, 子類別 (subclass) 會分享父類別 (superclass) 所定義的結構與行為, 下列何者最能描述此種特性? (A) 封裝 (encapsulation) (B) 繼承 (inheritance) (C) 多型 (polymorphism) (D) 委派 (delegation) 15-4
第 15 章基本程式語言 ( ) 6. 當程式設計師以物件導向方式開發一個 校務行政課程管理系統 時, 下列何者通常不會以類別 (class) 來表示? (A) 學生 (B) 教師 (C) 課程 (D) 姓名 ( ) 7. 在物件導向程式語言中, 父類別和子類別之間可以擁有相同名稱但不同功能的方法 (method), 此種特性稱為 : (A) 封裝 (encapsulation) (B) 繼承 (inheritance) (C) 多型 (polymorphism) (D) 委派 (delegation) ( ) 1. 下列有關高階與低階電腦程式語言的比較, 何者正確? (A) 高階語言程式撰寫比較困難 (B) 低階語言程式執行速度較快 (C) 高階語言程式除錯比較困難 (D) 低階語言程式維護比較容易 96 統測 ( ) 2. 下列哪一項不是物件導向語言具有的特性? (A) 封裝 (B) 繼承 (C) 類別 (D) 多型 96 統測 ( ) 3. 下列哪一種程式語言, 同時具有封裝性 繼承性及多型性的特性? (A)BASIC (B)COBOL (C)FORTRAN (D)JAVA 97 統測 ( ) 4. 高階語言所編寫的程式原始檔, 須經由下列何種程式的轉換之後, 才會成為可執行檔? (A) 編譯程式 連結程式 (B) 驅動程式 載入程式 (C) 組譯程式 驅動程式 (D) 連結程式 載入程式 98 統測 ( ) 5. 在物件導向的程式設計中, 子類別會具備父類別的基本特性 ( 包括屬性和方法 ), 此種特性稱為 : (A) 封裝性 (B) 抽象性 (C) 繼承性 (D) 多態性 98 統測 ( ) 6. 下列何種資訊最有可能是儲存於電腦主記憶體內的機械碼指令? (A)01010010 00000111 (B)ADD AL #11 (C)PRINT "Visual Basic" (D)STAND UP PLEASE 98 統測 ( ) 7. 下列何者不是 物件導向程式設計 的特性? (A) 機密性 (B) 封裝性 (C) 繼承性 (D) 多形性 99 統測 ( ) 8. 下列有關程式語言之敘述, 何者不正確? (A) 組合語言為低階語言 (B)JAVA 程式可以在不同作業系統間移植 (C) 物件導向語言具封裝 繼承與多型特性 (D) 組合語言不需經過組譯即可執行 99 統測 ( ) 9. 下列何者不是一般的高階語言程式編譯器 (compiler), 在編譯高階語言原始程式碼時, 會進行的編譯步驟? (A) 原始程式碼之掃描 (B) 修正原始程式碼的錯誤語法 (C) 語法語意分析 (D) 產生中間碼或目的碼 99 統測 ( ) 10. 代表編譯程式原始碼 代表編寫程式原始碼 代表載入可執行程式碼 代表產生程式目的碼 代表連結程式目的碼, 下列何種順序是正確的程式編寫與編譯過程? (A) (B) (C) (D) 99 統測 ( ) 11. 關於 Visual Basic 的表單事件 Paint 的敘述, 下列何者正確? (A) 該事件發生在表單被印表機列印時 (B) 該事件發生在表單被記憶體儲存時 (C) 該事件發生在表單上的 Paint 按鈕被按一下時 (D) 該事件發生在表單被搬動 放大或覆蓋表單的物件被移開時 100 統測 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-5
計算機概論總複習 ( ) 12. 機器語言及組合語言是屬於下列何種程式語言類別? (A) 物件導向語言 (B) 低階語言 (C) 中階語言 (D) 高階語言 101 統測 B 1. B 2. D 3. C 4. C 5. B 6. D 7. C 1. B 2. C 3. D 4. A 5. C 6. A 7. A 8.D 9. B 10. D 11. D 12. B 9. 編譯器僅能將原始程式碼編譯成目的碼, 無法修正原始程式錯誤的語法 10. 程式編寫與編譯的過程為 : 撰寫程式碼 編譯程式碼 產生程式目的檔 連結所需程式碼 載入可執行程式 11. 表單事件 Paint 是用於 視窗 ( 表單 ) 的重繪, 所以當視窗位置 大小改變... 等, 導致視窗需要重新繪製時,Windows 會觸發該事件, 以便該視窗程式能進行程式設計師安排要執行的事項 15-6
值變數第 15 章基本程式語言 15-2 基本資料型態 常數 變數與運算式 變數 常數與基本資料型態 1. 變數 : 程式執行時暫時存放資料的地方, 其值會隨程式執行而改變 2. 常數 : 程式執行時其值不會被改變, 用 Const 來宣告 例如 : 宣告 P 為圓周率,Const P=3.1416 3. 變數命名規則 : (1) 使用的字元可為英文字母 數字 底線或中文字, 但開頭第一個字元不可以使用數字 例 :( ) H_2 ( ) 身高 ( ) 3H ( ) Cmd2.cal ( ) Cmd2+cal ( ) Cmd2-cal (2) 不可以使用系統保留字 例 :( ) Prin ( ) Integer ( ) Dim (3) 變數名稱總長度不可超過 1023 字元 (4) 英文字母大小寫視為相同 例如 :Age 和 age 視為同一個變數 VB 6.0 大不同 變數命名 :VB 6.0 的變數名稱最多到 255 個字元 4. 基本資料型態 : 資料型態資料種類儲存空間說明數Byte 正整數位元組 1 Byte 有效範圍 :0~2 8-1 = 0~255 Short 短整數 2 Bytes 有效範圍 : -2 15 ~2 15-1 = -32768~32767 Integer 整數 4 Bytes 有效範圍 :-2 31 ~2 31-1 Long 長整數 8 Bytes 有效範圍 :-2 63 ~2 63-1 Single 單精度浮點數 4 Bytes 可儲存整數和小數 Char 字元 2 Bytes 儲存 1 個 Unicode 字元 String 字串 依軟硬體平台而異 能存 2 31 個 Unicode 字元 Date 日期 / 時間 8 Bytes 資料的前後需加上 # 符號, 如 :#7/31/2012# #14:45:8# Boolean 布林依軟硬體平台而異只能存 True 或 False Object 不定型依軟硬體平台而異可以儲存任何型別的資料 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-7
計算機概論總複習 5. 變數宣告 : (1) 變數宣告語法 :Dim 變數名稱 As 資料型態 (2) 多個相同資料型態的變數一起宣告時, 可用逗號區隔 例如 :Dim a,b,c As Integer (3) 變數宣告時若未設定初始值, 則數值變數預設值為 0 字串變數預設值為" "( 空字串 ) (4) 當變數宣告為任一種整數型別時, 若設定值含有小數, 則四捨六入取整數值, 若小數為.5, 則整數部分為偶數時捨去, 整數部分為奇數時進位 例 : 若宣告變數 N 為短整數 :Dim N As Short 1 當 N = 5.5, 顯示結果為 6 ( 小數為.5, 整數為奇數, 須進位 ) 2 當 N = 6.5, 顯示結果為 6 ( 小數為.5, 整數為偶數, 須捨去 ) 當 N = 1234567, 會出現錯誤訊息, 因 1234567>32767, 超出短整數範圍 (5) 單精度變數 Single 有效位數為 7 位數, 雙精度變數 Double 有效位數為 15 位數, 超過此範圍時會以科學記號方式表示 例如 :Dim a As Single, 當 a=12345678.9 時,a 值會表示為 1.234568E+07 (6) 變數若未宣告, 則預設為 "Object"( 不定型變數 ), 資料型態視程式中指定的資料而定, 可為任一種資料型態, 較浪費記憶體空間, 執行效率較差 VB 6.0 大不同 變數資料型別 :VB 6.0 的整數資料型別與 VB 2010 有些差異, 其在記憶體中所佔的容量大小也有所不同 ; 另外,VB 6.0 是以 Variant 表示不定型別 資料型別名稱儲存空間 Integer 整數 2 Bytes Long 長整數 4 Bytes 6. 區域變數與公用變數 : (1) 區域變數 : 變數宣告放在 Private Sub 程序內, 將此變數宣告為區域變數, 只有這個程序可以使用 例 :Private Sub Dim 變數 : End Sub (2) 公用變數 : 變數宣告放在 Public Class 底下, 將此變數宣告為公用變數,Public 底下的所有程序都可以使用 例 :Public Class Dim 變數 Private Sub : End Sub End Class 15-8
第 15 章基本程式語言 ( ) 1. 在 Visual Basic 程式中, 想要宣告一個數值變數用來儲存成績資料的平均值, 精確度必須達小數點後兩位, 那麼在 Dim 的指令中, 應該要使用下列哪一種資料型態? (A)Byte (B)Integer (C)Long (D)Single 100 統測 D ( ) 2. 以下四種 Visual Basic 的資料型別, 何者占用最多的記憶體? (A) 布林 (Boolean) (B) 單精準度浮點數 (Single) (C) 長整數 (Long) (D) 日期時間 (Date) 101 統測 VB 6 D ( ) 3. Visual Basic 中變數命名的規則及限制, 下列何者不正確? (A) 須以英文字母為起頭 (A ~Z 或 a~z) (B) 變數名稱的字數沒有限制 (C) 不可使用保留字 (D) 英文字母大小寫並無區別 99 統測 B ( ) 4. 下列 Visual Basic 宣告敘述, 何者不正確? (A)Dim Print As Integer (B)Dim T As String (C)Dim A(19) As Integer (D)Dim Beauty As Boolean 101 統測 A Print 為保留字, 不可宣告成變數來使用 ( ) 5. 下列 Visual Basic 程式片段執行時, 會在哪裡產生錯誤? (A)Const A As Integer = 2 (B)Dim B As Integer (C)B = 1 (D)A = B 99 統測 D Const A As Integer = 2 Dim B As Integer B = 1 A = B 運算式 1. 算術運算 : 運算符號 ^ - * / \ Mod + - 功能次方值負數值乘除整除 ( 商 ) 餘數加減 範例 5^2 10/3 10\3 10 Mod 3 結果 25 3.333 3 1 (1) 優先順序 : 若優先順序相同, 則順序為由左而右 ^ ( 次方值 ) > - ( 負數值 ) > * ( 乘 ) / ( 除 ) > \ ( 整除 ) > Mod ( 餘數 ) > + ( 加 ) ( 減 ) 例 :25 Mod 4 * 3 + 2 ^ 3 = 25 Mod 12 + 8 = 1 + 8 = 9 (2) \ ( 整除 ) 運算子, 若被除數與除數有小數, 則先化為整數後再運算 ( 四捨六入取整數值, 若小數為 5, 則整數部分為偶數時捨去, 整數部分為奇數時加 1) 例 :16.3 \ 3.8 = 16 \ 4 = 4 16.5 \ 3 = 16 \ 3 = 5 15.5 \ 3 = 16 \ 3 = 5 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-9
計算機概論總複習 (3) VB 2010 的 Mod ( 餘數 ) 運算子可以用小數表示 例 :16.3 Mod 3.8 = 1.1 16.5 Mod 3 = 1.5 VB 6.0 大不同 Mod( 餘數 ):VB 6.0 的 Mod( 餘數 ) 運算子和 \( 整除 ) 運算子一樣, 若被除數與除數有小數時, 需先利用四捨六入的方式取整數值 例 :16.3 Mod 3.8 = 16 Mod 4 = 0 16.5 Mod 3 = 16 Mod 3 = 1 15.5 Mod 3 = 16 Mod 3 = 1 (4) 運算式的表示法 : 注意運算子的優先順序及小括號的使用 數學式 ax 2 +bx+c + 2 b b 4ac 2a BASIC 運算式 a*x^2+b*x+c (-b+(b^2-4*a*c)^(1/2))/(2*a) (5) VB 2010 另外提供 ^= *= /= \= += -= &= 等指定運算子 例如 :X+=2 ( 即 X=X+2) 2. 字串運算 : (1) + 用於字串與字串的連結 例如 :"Good-"+"morning" 運算結果是 "Good-morning" (2) & 用於不同資料型態的連結, 如字串和數值資料連結 例如 : " 幸運號碼 = " & 6, 運算結果是 " 幸運號碼 = 6" 3. 關係運算 : 運算符號 > = < >= <= <> 或 >< 功能 大於 等於 小於 大於等於 小於等於 不等於 (1) 條件成立, 則為 True( 真 ); 條件不成立, 則為 False( 假 ) (2) 字串資料比較大小時, 依其 ASCII 碼做比較 (3) 阿拉伯數字 < 大寫字母 < 小寫字母 :"0" < < "9" < "A" < < "Z" < "a" < < "z" 例 :"HELLO" > "hello" 結果為 False "Hello" <= "h" 結果為 True 15-10
第 15 章基本程式語言 4. 邏輯 ( 布林 ) 運算 : 運算符號 NOT ( 反 ) AND ( 且 ) OR ( 或 ) XOR ( 互斥或 ) 口訣 相反真變假, 假變真 兩個真為真有一假即為假 兩個假為假有一真即為真 相異為真一真一假才是真 真值表 A F T NOT A T F A B A AND B F F F F T F T F F T T T A B A OR B F F F F T T T F T T T T A B A XOR B F F F F T T T F T T T F (1) 邏輯運算子的優先順序 :NOT ( 反 ) > AND ( 且 ) > OR ( 或 ) > XOR ( 互斥或 ) (2) VB 2010 的邏輯運算多了兩個邏輯運算子 AndAlso 和 OrElse, 可以用較少的運算找到結果, 例如 :2<1 AndAlso 1<2 AndAlso 3<4 = False, 只要判斷出第一個比較結果為 False 即可, 沒有必要再往下運算 5. 綜合運算 : (1) 運算子的優先順序 : 算術運算 > 字串運算 > 比較運算 > 邏輯運算 (2) 根據各種運算子的優先順序來執行 例 :6 > 4 * 2 Or 6 * 2 <> 15 And 2 ^ 3 * 5 <= 40 = 6 > 8 Or 12 <> 15 And 8 * 5 <= 40 = False Or True And 40 <= 40 = False Or True And True = False Or True = True ( ) 1. 執行下列 Visual Basic 程式片段後, 變數 L 的值為何? (A)-21 (B)-19 (C)19 (D)21 K = 4 102 統測 D L = (-K ^ 2 \ -3 ) * 4 + K Mod -3 (-4 ^ 2 \ -3 ) * 4 + 4 Mod -3 = (-16 \ -3 ) * 4 + 1 = 5 * 4 + 1 = 21 ( ) 2. 下列哪一個 Visual Basic 的運算式執行後的計算結果值為 3? (A)5 \ 2 + 2 ^ 0 (B)5 / 2 + 5 Mod 2 (C)5-2 = 3 (D)"2" + "1" 100 統測 A 5 / 2 + 5 Mod 2 = 2.5 + 1 = 3.5;5-2 = 3 為錯誤的運算式表示法 ;"2" + "1" = "21" Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-11
計算機概論總複習 ( ) 3. 執行完下列 Visual Basic 程式片段後, 要使變數 c 的結果為 "ABC123ABC", 須執行下列哪 一選項? (A)c=a+b+a (B)c =a&b&a (C)c=a+b&a (D)c =a&b+a 101 統測 B Dim a,c As String Dim b As Integer a="abc" : b =123 ( ) 4. 下列 Visual Basic 運算式, 何者為真 (True)? (A)"abdc" > "string" (B)(2 > 9) Or (3 < 8) (C)((9 Mod 4) > 2) And (8 < 3) (D)Not((1 < > 2) Or (5 = 4)) 99 統測 B ( ) 5. 下列 Visual Basic 程式片段執行後,X 之值為何? (A)FALSE (B)NOT (C)OR (D)TRUE 100 統測 D Dim X As Boolean X = NOT FALSE AND TRUE OR FALSE OR TRUE X = NOT FALSE AND TRUE OR FALSE OR TRUE = TRUE AND TRUE OR FALSE OR TRUE = TRUE OR FALSE OR TRUE = TRUE OR TRUE = TRUE ( ) 1. 小華在小學的數學課中就已經學會了數學運算式要先乘除後加減, 但是在 VB 中還有其他的運算符號, 請問下列哪一個優先順序的排列是正確的? (A) ^ > - ( 負數 ) > * / > \ > Mod > + (B) - ( 負數 )> ^ > * / > \ > Mod > + (C) - ( 負數 )> ^ > * / > Mod > \ > + (D) ^ >- ( 負數 ) > * / > Mod > \ > + ( ) 2. 在 VB 2010 程式語言中, 如果要用一個變數代表考試成績 ( 滿分一百分, 沒有小數 ), 此時使用下列哪一個資料型態所占的儲存空間最小? (A)Byte (B)Short (C)Integer (D)Single ( ) 3. 在 Visual Basic 程式語言中, 哪一個不是正確的變數名稱? (A)DeFG (B)de_fg (C)de-fg (D)deAfg ( ) 4. 在 Visual Basic 程式語言中, 當變數 test 宣告成下列哪一種資料型態時, 所需的記憶體最多? (A)Boolean (B)Integer (C)Double (D)Single ( ) 5. 在 Visual Basic 語言中, 一整數變數佔用 2 位元組的記憶體, 則此變數可表示的數值範圍為 : (A) 32768~+32768 (B) 32768~+32767 (C) 32767~+32767 (D) 65535~ +65535 15-12
第 15 章基本程式語言 ( ) 6. 在 VB 中, 欲使用變數 X=1234.56, 應該將 X 變數宣告成何種型態? (A)String (B)Date (C)Single (D)Long ( ) 7. 在 VB 中, 如果要定義一個變數用來儲存身分證字號, 最適合的資料型態是? (A)Integer (B)String (C)Byte (D)Double ( ) 8. 下列何者不是 Visual Basic 的整數型態資料? (A)11 (B)-123 (C)3,000 (D)245 ( ) 9. 在 VB 中, 運算式 "12"+"34" 的運算結果為何? (A)46 (B)12 34 (C)1234 (D) 錯誤訊息 ( ) 10. 在 VB 2010 程式語言中, 要宣告一個可以儲存英文字母的變數 A, 下列何者正確? (A)Dim A As String (B)Const A As Char (C)Dim A As Integer (D)Dim A As Byte ( ) 11. 使用 VB 2010 程式語言,NOT (3 ^ 2 = 6) OR (6 < > 3 * 2) 的運算結果為何? (A)-1 (B)False (C)2 (D)True ( ) 12. 在 VB 2010 中, 運算式 25^0.5 的運算結果為何? (A)5 (B)10 (C)75 (D)12.5 ( ) 13. 若 A = -1:B = 0:C = 1, 下列邏輯運算的結果何者為真? (A)A>B And C>B (B)A<B Or C<B (C)(B-C)=(B-A) (D)(A-B)< >(B-C) ( ) 14. 在 Visual Basic 中, 關於運算的優先順序, 下列何者正確? (A) 算術運算 > 關係運算 > 邏輯運算 (B) 關係運算 > 邏輯運算 > 算術運算 (C) 邏輯運算 > 算術運算 > 關係運算 (D) 關係運算 > 算術運算 > 邏輯運算 ( ) 15. 在 VB 2010 程式表單中, 若有兩個按鈕物件的事件程序中都會使用同一個變數 A 時, 應該將 A 宣告為下列何種變數? (A) 區域變數 (B) 公用變數 (C) 靜態變數 (D) 陣列變數 ( ) 1. 於 Visual Basic 中, 若 A=False : B=True : C=True, 則執行下列程式碼後, 何者所得結果為 True? (A)Print Not A Or B And Not C (B)Print A And B Or Not C (C)Print Not A And Not B Or Not C (D)Print A Or B And Not C 96 統測 VB6 ( ) 2. 有關下列 Visual Basic 程式碼的執行結果, 何者正確? (A)2 (B)4 (C)7 (D)9 Private Sub Form_ Activate() Cls A = 4 : B = 5 : C = 6 C = A + B * 2 Mod 3 + 2 Print C End Sub 96 統測 VB 6 ( ) 3. 下列有關 Visual Basic 算術運算子的優先順序依序為 : (A)^ + / MOD (B)* ^ \ MOD (C)^ * \ + (D)^ \ * + 96 統測 ( ) 4. 在 Visual Basic 程式語言中, 下列何者不符合變數名稱的命名規則? (A)5A_B (B)ABD$ (C)FOR5 (D)PRIN 96 統測 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-13
計算機概論總複習 ( ) 5. 若邏輯運算式 :NOT((A) OR (B)), 執行結果得出值為 True, 則 A 與 B 的值, 應該是多少? (A)A=False B=False (B)A=False B=True (C)A=True B=False (D)A=True B= True 97 統測 ( ) 6. 下列 Visual Basic 程式語言之變數宣告, 佔用記憶體空間最大者為何? (A)Dim AA% (B)Dim AA& (C)Dim AA! (D)Dim AA# 97 統測 VB6 ( ) 7. 下列何種程式語言無法宣告資料型態? (A)C (B)Visual BASIC (C) 機器語言 (D)COBOL 98 統測 ( ) 8. 下列 BASIC 程式片段, 執行之後的顯示結果為何? (A)50 (B)5 (C)0 (D)AA Dim AA as Integer AA = 50 Print AA 98 統測 VB6 ( ) 9. 下列 BASIC 程式敘述執行的結果為何? (A)10 (B)30 (C)25 (D)55 Print 5 ^ 2 + 30 / 6 5 98 統測 VB6 ( ) 10. 下列 Visual Basic 語言運算式之值, 何者正確? (A) ( 3 > 4 )Or ( 2 < > 5 ) 值為 False (B) 7 \ 3 + 7 * 3 值為 22 (C) 3 + 4 Mod 2 + 5 值為 8 (D) "12" + "34" 值為 46 98 統測 ( ) 11. 下列 BASIC 程式敘述, 何者為計算 5*4*3*2*1 的正確表示法? (A)Print 5! (B)Print 5^5 (C)Print 5..1 (D)Print 5*4*3*2*1 98 統測 VB6 ( ) 12. 下列何者不屬於 Visual Basic 程式語法中資料型態的符號? (A)String (B)Boolean (C)Date (D)Int 98 統測 ( ) 13. 下列 BASIC 程式敘述, 何者可獲得 2 的 3 次方之運算結果? (A)Print 2*3 (B)Print 2+3 (C)Print 2^3 (D)Print 2\3 98 統測 VB6 ( ) 14. 在 Visual Basic 執行下列哪一項指令的結果為假 (False)? (A)PRINT (3 > 2) XOR (4 > 3) (B)PRINT (NOT(4 > 5)) XOR (5 > 6) (C)PRINT ((3 > 4) XOR (5 > 4)) AND (7 > 6) (D)PRINT ((6 > 5) AND (7 > 6)) OR ((3 > 4) AND (5 > 6)) 98 統測 VB6 ( ) 15. 下列何者為給定之 Visual Basic 程式片段執行後的結果? (A)6 (B)12 (C)13 (D)15 Month = 12 Money = 150 R = Money \ Month Print R 99 統測 VB6 ( ) 16. 下列何者為給定之 Visual Basic 程式片段執行後的結果? (A)0 (B)1 (C)2 (D)3 A = 1 : B = 3 T = A : A = B Print A / B 99 統測 VB6 ( ) 17. 執行 Visual Basic 運算式 3 ^ 2 * 2-10 Mod 4 / 2 所得之結果為何? (A)17 (B)18 (C)80 (D)81 99 統測 15-14
第 15 章基本程式語言 ( ) 18. 根據 Visual Basic 變數與常數命名的規則, 下列何者是正確的變數或常數名稱? (A)Case (B)Sub (C)Tha (D)Then 100 統測 ( ) 19. 在 Visual Basic 中, 下列哪一種資料型態所佔用的記憶體空間最多? (A) 整數 (Integer) (B) 長整數 (Long Integer) (C) 單精準度浮點數 (Single-precision Floating-point) (D) 倍精準度浮點數 (Double-precision Floating-point) 100 統測 VB 6 ( ) 20. 在 Visual Basic 中, 位元組 (Byte) 資料型態可儲存的最大數字為何? (A)127 (B)255 (C)32767 (D)65535 101 統測 ( ) 21. 在 Visual Basic 中, 下列何者為正確日期資料? (A)$1/1/2012$ (B)@1/1/2012@ (C) %1/1/2012% (D)#1/1/2012# 101 統測 ( ) 22. 在 Visual Basic 中, 運算式 3*2^2 Mod 3*2+6\4/2, 結果為何? (A)3 (B)4 (C)5 (D)6 101 統測 1. A 2. A 3. C 4. C 5. B 6. C 7. B 8. C 9. C 10. A 11. D 12. A 13. B 14. A 15. B 1. A 2. C 3. C 4. A 5. A 6. D 7. C 8. A 9. C 10. C 11. D 12. D 13. C 14. A 15. B 16. B 17. B 18. C 19. D 20. B 21. D 22. A 6. VB 宣告變數時也可以用符號來表示, 如 : 整數 (AA%) 長整數(AA&) 單精度 (AA!) 雙精度(AA#) 字串(AA$) 10. (A) ( 3 > 4 ) Or ( 2 < > 5 ) = F Or T = T (B) 7 \ 3 + 7 * 3 = 2 + 21 = 23 (C) 3 + 4 Mod 2 + 5 = 3 + 0 + 5 = 8 (D) "12" + "34" = "1234" 14. (A) ( 3 > 2 ) XOR ( 4 > 3 ) = T XOR T = F (B) ( NOT ( 4 > 5 )) XOR ( 5 > 6 ) = ( NOT( F )) XOR F = T XOR F = T (C) (( 3 > 4 ) XOR ( 5 > 4 )) AND ( 7 > 6 ) = ( F XOR T ) AND T = T AND T = T (D) (( 6 > 5 ) AND ( 7 > 6 )) OR (( 3 > 4 ) AND ( 5 > 6 )) = ( T AND T ) OR ( F AND F ) = T OR F = T 18. Case Sub 及 Then 皆為程式保留字, 不可用來作為變數或常數名稱 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-15
計算機概論總複習 15-3 Visual Basic 2010 Express 環境介紹及基本操作 VB 的視窗環境介紹 1. 工具箱 : 用來存放建立視窗應用程式輸出入介面的工具, 其中的每一個圖形按鈕各代表一個控制元件, 又稱為 控制項 常用控制項 功能說明 Button 命令鈕 製作控制命令按鈕 Label 標籤 用來顯示文字資料 TextBox 文字方塊 用來輸入文字資料 PictureBox 圖片工具 用來顯示圖片 RadioButton 選項按鈕 製作只能單選的選項按鈕 CheckBox 核取方塊 製作能夠複選的核取方塊 2. 方案總管 : 用來管理各種和程式相關的檔案, 建立 VB 程式時會先產生一個方案 (Solution), 方案內可以有多個專案 (Project), 每個專案中包含表單 類別等檔案 3. 屬性視窗 : 用來瀏覽和修改控制項的屬性值, 例如 : 控制項的名稱 字型 顏色 大小等 控制項的屬性值在程式碼中表示為 控制項名稱. 屬性 = 屬性值, 例如 : Label1.Text=" 世紀首選 ",Label1.BackColor=Color.Red 4. 表單與程式碼視窗 : 表單是建立 Windows 應用程式的輸出入介面, 程式碼視窗是撰寫程式碼的地方 (1) 用拖曳的方式或快按兩下工具箱中的控制項, 可將控制項佈置在表單上, 控制項周圍有 8 個控制點可調整大小 (2) 快按兩下表單上的控制項, 或按方案總管視窗的 檢視程式碼 鈕, 可以開啟程式碼視窗, 進行程式碼的撰寫 5. VB 2010 檔案類型 : 檔案類型 *.sln *.vbproj Form1.vb \bin\debug\*.exe 說明方案檔, 儲存方案中使用的相關資料 專案檔, 儲存專案中使用的相關資料 表單檔, 儲存表單各控制項物件的事件程序 執行檔, 自動產生在 \bin\debug 資料夾中 15-16
第 15 章基本程式語言 VB 6.0 大不同 檔案類型 :VB 6.0 沒有方案檔, 主要的檔案類型有 : 專案檔 (*.vbp) 和表單檔 (*.frm) ( ) 1. 設計 Visual Basic 程式時, 若在表單上建立按鈕物件, 則該按鈕物件至多會出現多少個控制點, 供程式設計師拖曳以調整按鈕物件的大小? (A)2 (B)4 (C)6 (D)8 100 統測 D ( ) 2. 在 Visual Basic 的整合式開發環境中, 下列哪一個區域, 最適合用來在表單上建立一個按 鈕物件? (A) 工具箱 (B) 工作清單 (C) 專案總管 (D) 即時運算視窗 100 統測 A ( ) 3. 在 Visual Basic 中, 如果我們要改變標籤控制物件 (Label) 上的標題文字 (Caption), 則我們應該使用下列哪一個視窗? (A) 屬性視窗 (Properties Window) (B) 專案總管視窗 (Project Explorer) (C) 表單配置視窗 (Form Layout Window) (D) 監看視窗 (Watch Window) 96 統測 VB 6 A 標籤 (Label) 的標題文字 (VB 6.0 中為 Caption;VB 2010 中為 Text) 是標籤物件的外觀文字屬性 ( ) 4. 右圖 Visual Basic 表單中, 共使用幾個控制物件 ( 表單本身不 計 )? (A)4 (B)7 (C)8 (D)12 C ( ) 5. 在 Visual Basic 中, 下列哪一個控制項, 可以用來提供使用者輸入文字資料, 也可以用來顯示文字資料? (A) 標籤 (Label) (B) 指令按鈕 (Command Button) (C) 文字方塊 (Text Box) (D) 圖片方塊 (Picture Box) 97 統測 C ( ) 6. 下列何者為 VB 2010 的方案檔案類型的副檔名? (A).vbp (B).sln (C).frm (D).exe B VB 的輸入與輸出 1. 程式設計主要分成三個部分 : 輸入資料 運算處理 輸出結果 2. VB 2010 的專案程式常用的有 :Windows Form 應用程式和主控台應用程式 Windows Form 應用程式是藉由表單來作為輸入與輸出的介面 ; 而主控台應用程式則是以文字為介面 3. Windows Form 應用程式的輸入與輸出 : (1) InputBox( ) 函數格式 : 變數 =InputBox( 提示訊息,[ 標題 ], [ 預設值 ]) Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-17
計算機概論總複習 說明 : 呼叫 InputBox 函數會出現一個對話方塊, 等待使用者輸入資料, 並將輸入的資料指定到相對應的變數中 提示訊息 : 提示使用者輸入 標題 : 對話方塊標題欄上的文字 預設值 : 若使用者沒有輸入任何資料, 則該函數傳回預設值 [ ] 中的參數可省略 例 :A=InputBox(" 請輸入密碼 ", " 通關密語 ", "dreamer") (2) MsgBox( ) 函數 格式 1:MsgBox( 訊息,[ 回覆鈕 + 訊息圖示 ],[ 標題 ]) 格式 2: 傳回值 =MsgBox( 訊息,[ 回覆鈕 + 訊息圖示 ],[ 標題 ]) 說明 : 用來顯示錯誤 警告 等訊息的對話方塊 [ ] 中的參數可省略 可依回覆鈕傳回相對應的值, 供程式後續處理 例 :A = MsgBox(" 密碼錯誤, 再試一次?", vbabortretryignore + vbcritical, " 通關密語 ") 回覆鈕和訊息圖示可用下表所列的常數名稱 : 常數名稱回覆鈕和圖示常數名稱回覆鈕和圖示 vbok vbokcancel vbabortretryignore vbyesnocancel vbyesno vbretrycancel vbcritical vbquestion vbexclamation vbinformation 15-18
第 15 章基本程式語言 (3) 控制項的輸入與輸出 : 利用文字方塊 (TextBox) 和標籤 (Label) 控制項, 也可作為輸入和輸出的工具 例如 :A=TextBox1.Text 可作為資料輸入 ;TextBox1.Text=" 歡迎光臨 " 或 Label1.Text=" 歡迎光臨 " 可作為資料輸出 VB 6.0 大不同 輸入與輸出 :VB 6.0 有 Print 可作為輸出指令,VB 2010 則沒有 4. 主控台應用程式的輸入與輸出 : (1) 輸入函數 :Console.Read( ), 可從鍵盤讀取一個字元 (2) 輸入函數 :Console.ReadLine( ), 可從鍵盤讀取一行字串 (3) 輸出函數 :Console.Write( 字串或變數 ), 可從螢幕顯示字串或變數值 (4) 輸出函數 :Console.WriteLine( 字串或變數 ), 可從螢幕顯示字串或變數值, 並跳至下一行 (5) 要輸出多個變數值時, 例如 : Console.Write("a= {0}; b={1}", a, b) 說明 :{0} 代表其後的第 1 個參數,{1} 代表其後的第 2 個參數 例 : Console.WriteLine(" 四則運算 ") ' 顯示字串並跳行 Console.Write(" 請輸入 A 值 :") ' 顯示字串不跳行 A=Console.ReadLine( ) ' 將從鍵盤輸入的資料存入變數 A Console.Write(" 請輸入 B 值 :") B=Console.ReadLine( ) C = A + B Console.WriteLine("{0} + {1} = {2}", A, B, C) ' 顯示結果並跳行 Console.Read( ) ' 等待從鍵盤輸入字元, 可讓螢幕畫面停住 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-19
計算機概論總複習 ( ) 1. 欲以 Visual Basic 製作表單 (Form) 程式, 功能為在表單上有一 請按我 按鈕, 按了此按鈕後, 就出現一個訊息方塊寫道 恭喜快考完了, 範例請見下圖 為達成目的, 在 VB 整合式開發環境中, 建立一個新專案 (project), 在 Form 物件上先新建立一個名稱為 Command1 的按鈕, 將物件 Command1 的 Caption 屬性值改為 請按我 後, 再進行下列哪一動作即可完成程式? (A) 在程序 Command1_Click 內新增敘述 MsgBox (" 恭喜快考完了 ") (B) 在程序 請按我 _Click 內新增敘述 MsgBox (" 恭喜快考完了 ") (C) 在程序 Command1_Click 內新增敘述 Print (" 恭喜快考完了 ") (D) 在程序 請按我 _Click 內新增敘述 Print (" 恭喜快考完了 ") 統測 VB 6 A ( ) 2. 下列哪一項可以在 Visual Basic 語言執行中顯示對話方塊? (A)ImageBox (B)PictureBox (C)TextBox (D)MsgBox 統測 D ( ) 3. Visual Basic 語言的執行畫面, 如圖所示, 是哪一項指令執行的結果? (A)MsgBox(" 成績公佈 ",vbokcancel+vbinformation," 國文成績 90") (B)MsgBox(" 國文成績 90",vbOKCancel+vbInformation," 成績公佈 ") (C)MsgBox(" 成績公佈 ",vbyesno+vbinformation," 國文成績 90") (D)MsgBox(" 國文成績 90",vbYesNo+vbInformation," 成績公佈 ") 98 統測 B ( ) 1. 小潔從網路下載並試用多款塗鴉軟體, 用了都覺得不甚滿意, 想要的功能並沒有一個軟體能夠全數支援, 於是她透過 XX 軟件網找到一個友人願意為她開發一個符合她所需的塗鴉軟體, 請問下列何者正確? (A) 友人可以使用 PhotoImpact 強大的圖像處理能力, 設計出一個能夠快速反應的繪圖軟體 (B) 友人可以利用 Visual Basic 設計這個塗鴉軟體, 因為 Visual Basic 可以開發多用途的軟體, 所以可以用來開發繪圖軟體 (C) 友人可以使用 PHP 的程式開發工具, 因為 PHP 擁有良好的繪圖物件工具箱, 並足以設計出優異的跨平台軟體設計能力 (D) 在 Windows 作業系統的控制台提供多樣化的元件, 友人可以利用關於顯示器設定的功能設計出良好的繪圖軟體 15-20
第 15 章基本程式語言 ( ) 2. 在 VB 的程式中,Label4 是一個控制項, 對於 Label4.Text = "Rank" 此語法的敘述, 下列何者正確? (A)Text 是 Label4 的方法 (B)Label4 可以用標籤控制項來設計 (C) "Rank " 是用來取得一列數值的排名 (D)Text 代表 Label4 控制項的物件 ( ) 3. 在 VB 2010 的工作環境中, 下列哪一個可以用來製作使用者輸入數據的控制項? (A) (B) (C) (D) ( ) 4. 將 VB 2010 的軟體設計架構由大到小列出, 下列哪一個選項是正確? (A) 方案 (Solution)> 專案 (Project)> 表單 (Form) (B) 專案 (Project)> 方案 (Solution)> 表單 (Form) (C) 專案 (Project)> 表單 (Form)> 方案 (Solution) (D) 表單 (Form)> 專案 (Project)> 方案 (Solution) ( ) 5. 使用 VB 2010 設計軟體, 原始檔會包含一個.vbproj 檔, 這個類型的檔案是用來存放下列哪一項資訊? (A) 一個方案裡擁有的相關訊息 (B) 一個多表單軟體要包含的程式碼 (C) 一個表單內使用的控制項的相關資料, 如名稱 位置 大小等 (D) 軟體專案內要具有的資料 ( ) 6. 在 VB 中使用 MsgBox 函數製作介面, 想產生只包含兩個按鈕的對話方塊, 應使用下列哪一個常數? (A)vbSureCancel (B)vbYesNo (C)vbOKCancel (D)vbQuestion ( ) 7. 下列哪一個 VB 2010 的功能無法作為使用者輸入資料之用? (A)InputBox (B)TextBox (C)RadioButton (D)MsgBox ( ) 8. 執行 VB 2010 的敘述 Console.Write("({0}, {1})", 0.1, 15), 會得到下列哪一項結果? (A)(0, 1), 0.1, 15 (B)(0.1, 15) (C)0, 1 (D)"(0.1, 15)" ( ) 9. 以 VB 2010 撰寫主控台程式, 想讓使用者輸入資料, 應使用下列哪一項功能? (A)Console.Read (B)Console.WriteLine (C)TextBox (D)Button 1. B 2. B 3. B 4. A 5. D 6. C 7. D 8. B 9. A Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-21
計算機概論總複習 15-4 程式語言的基本結構 演算法與流程圖 1. 演算法 (Algorithm): 用文字敘述或圖形表示的方式, 來表達完成一個任務的具體步驟和方法 2. 演算法的特性 : (1) 輸入 (Input): 由外界提供資料輸入 (2) 明確性 (Definiteness): 每個步驟必須清楚且明白 (3) 有效性 (Effectiveness): 每個命令必須為可執行的步驟, 並正確的解決問題 (4) 有限性 (Finiteness): 必須在有限步驟內完成, 確保在預估時間內能執行完畢 (5) 輸出 (Output): 要顯示運算處理或解決問題的結果 3. 演算法的優點 : (1) 有助於程式的除錯 (Debug) 及維護 (2) 可協助程式設計師與使用者之間的溝通 (3) 可減少程式設計的錯誤 4. 流程圖 (Flow Chart): 以特定的圖形符號來表達解決問題的程序 5. 常用的流程圖符號 : 流程圖符號名稱及意義使用範例 BASIC 指令 開始或結束輸入或輸出處理決策判斷迴圈副程式 End A=InputBox(" 提示訊息 ") MsgBox(A) S=A +B+C If A>B Then Else For I=1 To 6 Step 2 Next I Sub S(A,B) End Sub Function F(A,B) End Function 15-22
第 15 章基本程式語言 流程圖符號名稱及意義使用範例 BASIC 指令 註解 Rem S 代表總和 ' S 代表總和 列印 流向 連接 6. 程式設計的步驟 : (1) 分析 : 分析程式需求並定義問題所在 (2) 設計 : 設計處理程序並繪出流程圖或演算法 (3) 撰寫 : 用程式語言實際撰寫程式碼 (4) 測試 : 對程式進行測試除錯 (5) 維護 : 維護程式並整理製作文件檔案及製作操作說明手冊 ( ) 1. 下列何者是演算法所必須具備的特性之一? (A) 開放性 (Openness) (B) 有限性 (Finiteness) (C) 一致性 (Consistency) (D) 不可分割性 (Atomicity) 100 統測 B ( ) 2. 請問在流程圖中, 資料輸入或輸出 與 報表輸出 分別以何種圖示表示? (A) 與 (B) 與 (C) 與 (D) 與 101 統測 C : 人工作業, : 螢幕輸出 ( ) 3. 依據美國國家標準協會 (ANSI) 編製的標準化流程圖符號, 以下何者名稱與其符號不相 符? (A) 處理 : (B) 判斷 ( 決策 ): (C) 列印 : (D) 副程式 : 102 統測 C ( ) 4. 執行完下列 Visual Basic 程式片段後, 印出的結果為何? (A)R (B)11 (C)0 (D)R=T+K 101 統測 VB6 C Dim T,K,R As Integer T=5 : K =6 : R =0 Rem R =T+K Print R Rem 為註解, 表示該列不會執行, 所以會直接印出 R 的值 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-23
計算機概論總複習 結構化程式 1. 結構化程式設計的特徵 : (1) 使用三種基本控制結構 : 循序 ( 順序 ) 選擇 ( 決策判斷 ) 重複 ( 迴圈 ) (2) 每種結構都是 單入口 / 單出口 (3) 避免使用 GOTO 指令 (4) 採用 模組化 程式設計, 簡化程式的複雜度, 使程式易於維護 (5) 將程式由上而下區分為多個模組, 每個模組負責一個獨立的工作 2. 結構化程式設計的流程圖 : 循序 ( 順序 ) 選擇 ( 決策判斷 ) 重複 ( 迴圈 ) ( ) 1. 結構化程式設計通常由循序 選擇及重覆結構組成, 下列何者不是其主要的特點? (A) 從上而下將程式分解成多個程式模組 (B) 每一個程式模組都具有多個入口及出口 (C) 每一個程式模組分別負責一件獨立的工作 (D) 簡化程式的複雜 96 統測 B ( ) 2. 當利用結構化程式設計的法則進行程式編寫時, 下列何種流程圖的圖形不適用於循序結構之設計? (A) (B) (C) (D) 98 統測 C ( ) 3. 下列何者不是結構化程式設計的控制結構之一? (A) 循序結構 (B) 選擇結構 (C) 宣告結構 (D) 重複結構 100 統測 C ( ) 4. 結構化的程式語言應避免採用下列哪一種結構? (A) 跳躍結構 (GOTO) (B) 重複結構 (repeat) (C) 選擇結構 (selection) (D) 循序結構 (sequential) 101 統測 A If-Then-Else 1. If-Then 敘述 格式 :If 條件 Then 敘述 15-24
第 15 章基本程式語言 說明 : 若條件成立, 則執行 Then 之後的敘述, 否則繼續往下執行 例 : A=15:K=20 執行結果 : If A>10 Then K = K *2 K=50 K=K+10 說明 : 若第 1 列改成 A=10:K=30, 則執行結果 K=40 2. If-Then-Else- 敘述 格式 1: 格式 2: If 條件 Then If 條件 Then 敘述區段敘述區段 1 Else 敘述區段 2 說明 : 條件成立, 執行 Then 下方的敘述 ; 條件不成立, 則執行 Else 下方的敘述 每一個 If 後必須對應一個 作為結束 敘述區段中, 可以有多個敘述 例 1: A=20:B=5:C=10 執行結果 : If A>B And B<C Then A=A-3 A=17 B=11 C=28 B=B+6 C=A+B 說明 : 若第 1 列改成 A=5: B=10:C=20, 則執行結果為 A=5 B=10 C=15 例 2: P=InputBox(" 請輸入密碼 ") If P="BASIC" Then MsgBox(" 歡迎光臨 ") Else MsgBox(" 生人勿近 ") 執行結果 : 請輸入密碼 :VB 生人勿近請輸入密碼 :BASIC 歡迎光臨 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-25
計算機概論總複習 ( ) 1. 下列 BASIC 程式片段, 執行之後的顯示結果為何? (A)5 (B)10 (C)50 (D)2 AA = 5 : BB = 10 If AA < BB Then AA = BB Print AA 98 統測 VB 6 B ( ) 2. 下列這段 BASIC 程式碼, 可以由身高及性別計算標準體重, 計算後所印出的 Weight 值為 何? (A)54 (B)56 (C)60 (D)63 97 統測 VB 6 C Sex = "F" Height = 170 If Sex = "M" then Weight = (Height 80) * 0.7 Else Weight = (Height 70) * 0.6 Print Weight ( ) 3. 使用 BASIC 程式語言執行下列程式碼後, 則螢幕輸出結果是多少? (A)0 (B)1 (C)4 (D)5 97 統測 VB 6 D X = 9 Y = 5 Z = 6 IF (X Mod Y) > Z Then Print (Y Mod X) Else Print (Y Mod Z) End IF ( ) 4. 下列何者為給定之 Visual Basic 程式片段執行後的結果? (A)12 (B)4 (C)1 (D)0 X = 12 : Y = 4 IF X < Y Then M = X Else M = Y Print M 99 統測 VB 6 B 15-26
第 15 章基本程式語言 3. 巢狀 If 格式 : If 條件 1 Then If 條件 2 Then 敘述區段 A Else 敘述區段 B Else 敘述區段 C 說明 : (1) 各個敘述區段執行的情形如下 : 當 2 個條件都成立時, 執行敘述區段 A 當條件 1 成立而條件 2 不成立時, 執行敘述區段 B 當條件 1 不成立時, 執行敘述區段 C (2) 由於 Else 可以省略以及 If 敘述可以寫成一行, 故 Then Else 與 的數目不一定會相同 執行結果 : 例 : C=11 A = 15 : B = 4 : C = 10 If A > 10 Then 說明 : If B < 5 Then 若第 1 列改成 A=15:B=6:C=10, C = C + 1 則執行結果 C=8 Else C = C - 2 若第 1 列改成 A=5:B=4:C=10, 則執行結果 C=10 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-27
計算機概論總複習 4. If-Then-ElseIf 敘述 格式 : If 條件 1 Then 敘述區段 A ElseIf 條件 2 Then 敘述區段 B Else 敘述區段 C 說明 : (1) 各個敘述區段執行的情形如下 : 當條件 1 成立時, 執行敘述區段 A 當條件 1 不成立, 條件 2 成立時, 執行敘述區段 B 當 2 個條件都不成立時, 執行敘述區段 C (2) 通常用於在多個條件中找到一個符合條件的敘述 例 : D = 5 : E = 10 : F = 20 執行結果 : If D > E Then F=17 F = F + 7 ElseIf E > 5 Then F = F - 3 Else F = F + 5 ( ) 1. 下列 VB 程式片段, 執行後的 C 值何者正確? (A)C=1 (B)C=2 (C)C=3 (D)C=4 A=1:B=2:C=3 If B>1 Then If A<1 Then C=2 Else C=4 D 15-28
第 15 章基本程式語言 ( ) 2. 下列 Visual Basic 程式片段, 執行後的結果為何? (A)ma (B)mb (C)fa (D)fb X = 1: Y = 150: Z = 56.25 97 統測 VB 6 A B = Z / ( Y / 100 )^ 2 If ( X Mod 2 < > 0) Then If B < 26 Then Print "ma" Else Print "mb" Else If B < 24 Then Print "fa" Else Print "fb" 因為 X Mod 2<>0 而且 B=56.25/(150/100)^2=25<26, 所以程式會執行 Print "ma" Select-Case 1. Select Case 敘述 格式 : Select Case 運算式 Case 運算式 1 敘述區段 1 Case 運算式 2 敘述區段 2 Case 運算式 N 敘述區段 N Case Else 敘述區段 End Select Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-29
計算機概論總複習 說明 : (1) 運算式有三種表示的方法 : 運算式 [, 運算式,...] 例 :Case 1,3,5 運算式 1 To 運算式 2 ( 運算式 2 必須大於運算式 1) 例 :Case 40 To 60 Is 關係運算式 ( 關係運算式 <,<=,=,<>,>,>=) 例 :Case Is<=100 (2) 若符合多個 Case 條件, 則僅執行第一個符合的 Case (3) 當所有 Case 均不符合時, 則執行 Case Else 敘述 例 : S=InputBox(" 請輸入成績 ") Select Case S Case Is<60 MsgBox (" 不及格 ") Case 60 To 99 MsgBox (" 及格 ") Case 100 MsgBox (" 滿分 ") Case Else MsgBox (" 輸入錯誤 ") End Select 執行結果 : 請輸入成績 :80 及格說明 : 當輸入成績 S=120 時, 執行結果將印出 " 輸入錯誤 " ( ) 1. 以下是一個體重評估的 Visual Basic 程式片段, 假設小明和小華的身高和體重相同, 都是 height=160,weight=54, 但是小明的性別 sex="m", 而小華的 sex="f", 若由以下程式進行評估, 執行之後 evaluation 的結果分別為何? 100 統測 D (A) 小明和小華 evaluation 的結果都是 " 太瘦 " (B) 小明和小華 evaluation 的結果都是 " 太胖 " (C) 小明 evaluation 的結果為 " 適中 ", 而小華 evaluation 的結果為 " 太胖 " (D) 小明 evaluation 的結果為 " 太瘦 ", 而小華 evaluation 的結果為 " 適中 " Dim standard, height, weight As Integer Dim sex, evaluation As String If sex = "M" Then standard = (height - 80) * 0.7 Else standard = (height - 70) * 0.6 15-30
第 15 章基本程式語言 Select Case weight standard Case Is > 0 evaluation = " 太胖 " Case Is < 0 evaluation = " 太瘦 " Case Else evaluation = " 適中 " End Select 小明 :standard = (160-80) * 0.7 = 56,evaluation = 54 56 = -2 < 0 太瘦小華 :standard = (160-70) * 0.6 = 54,evaluation = 54 54 = 0 適中 ( ) 2. 下列 Visual Basic 程式片段執行後,s 之值為何? (A)"a" (B)"b" (C)"c" (D)"d" Dim i As Integer = 20, s As String Select Case i Case Is > 10 s = "a" Case 10 To 30 s = "b" Case 15, 20 s = "c" Case 20 s = "d" End Select 若符合多個 Case 條件, 僅執行第一個符合的 Case 100 統測 A 計數迴圈 For-Next 1. For-Next 格式 : For 變數 = 初值 To 終值 [Step 增值 ] 敘述區段 Next [ 變數 ] 說明 : (1) 當變數值介於初值和終值之間時, 會執行迴圈內的敘述, 每執行一次迴圈後 ( 即每執行一次 Next 指令 ) 便加一次增值 ( 增值可能為正或負數 ), 直到變數值超過終值時跳出迴圈 (2) 增加量為 1 時,Step 可以省略 (3) Next 後之控制變數可以省略 (4) 若中途要跳出迴圈, 可用 Exit For 指令, 讓程式執行 Next 之後的敘述 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-31
計算機概論總複習 例 : 2. 巢狀 For-Next For I=2 To 6 Step 2 Console.Write ("{0} ", I); Next I Console.WriteLine ( ) Console.Write (" 迴圈結束後 I 值為 " & I) 格式 : 內圈外圈For 控制變數 1 = For 控制變數 2 = Next [ 控制變數 2] Next [ 控制變數 1] 執行結果 : 2 4 6 迴圈結束後 I 值為 8 說明 : 若將第 1 列改為 For I=5 To -5 Step -3 則執行結果為 5 2-1 -4 迴圈結束後 I 值為 -7 說明 : (1) 上述是兩層的 For-Next 格式,VB 可以有更多層的 For-Next 迴圈 (2) 外圈和其內圈不可相交 (3) 外圈和內圈的控制變數名稱不可相同 (4) 內層迴圈可以跳至外層迴圈內, 或跳至外層迴圈外 外層迴圈不可以跳至內層迴圈內 例 1: 1 2 3 4 5 6 7 For I=1 To 2 Console.WriteLine ("##########") For J=1 To 3 Console.WriteLine ("I={0} J={1}", I, J) Next J Console.WriteLine ("**********") Next I 執行結果 : ########## I= 1 J= 1 I= 1 J= 2 I= 1 J= 3 ********** ########## I= 2 J= 1 I= 2 J= 2 I= 2 J= 3 ********** 說明 : 第 3 到 5 列為內層迴圈的敘述, 共執行 6 次 第 1 2 6 7 列為外層迴圈的敘述, 各執行 2 次 15-32
第 15 章基本程式語言 例 2: 01 02 03 04 05 06 07 08 A=0:S=0 For I=1 To 3 For J=1 To I A=A+1 S=S+J Next J Next I Console.Write ("{0} {1}", A, S) 執行結果 : 6 10 說明 : 第 4 列和第 5 列為內層迴圈, 皆執行 6 次 變數值變化情 形如下 : I J A S 1 1 1 1 2 1 2 2 2 3 4 3 1 4 5 2 5 7 3 6 10 3. 累加問題例 : 1 Sum=0 2 For I=1 To 100 3 Sum=Sum+I 4 Next I 執行結果 : Sum=5050 說明 : 此程式可求 1 到 100 的總和, 即 1+2+3+ +100 之值 說明 : (1) 由程式的第 2 列可以控制所求式子 ( 等差數列 ) 的起值 終值和差值 欲求的算式 程式修改處 1+4+7+ +100 第 2 列改為 For I=1 To 100 Step 3 2+4+6+ +100 第 2 列改為 For I=2 To 100 Step 2 1+3+5+ +99 第 2 列改為 For I=1 To 99 Step 2 3+6+9+ +99 第 2 列改為 For I=3 To 99 Step 3 2+5+8+ +101 第 2 列改為 For I=2 To 101 Step 3 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-33
計算機概論總複習 (2) 由程式的第 3 列可以控制所求式子中各個項的形式 欲求的算式 程式修改處 1/1 + 1/2 + 1/3 + + 1/100 第 3 列改為 S=S+1/I 1^2 + 2^2 + 3^2 + + 100^2 1/(1^2) + 1/(2^2) + 1/(3^2) + + 1/(100^2) 1/1 + 1/3 + 1/5 + + 1/99 1*2*3* *20 第 3 列改為 S=S+I^2 第 3 列改為 S=S+1/I^2 第 2 列改為 For I=1 To 99 Step 2 第 3 列改為 S=S+1/I 第 1 列改為 S=1 第 2 列改為 For I=1 To 20 第 3 列改為 S=S*I ( ) 1. 執行下列 Visual Basic 程式片段後, 變數 S 的值為何? (A)-5 (B)-4 (C)8 (D)55 S = 1 R = 1 For I = 1 To 10 S = S + I * R R = R * (-1) Next I I S R 1 1 1 1+1*1=2-1 2 2+2*(-1)=0 1 3 0+3*1=3-1 4 3+4*(-1)=-1 1 5-1+5*1=4-1 6 4+6*(-1)=-2 1 7-2+7*1=5-1 8 5+8*(-1)=-3 1 9-3+9*1=6-1 10 6+10*(-1)=-4 1 102 統測 B ( ) 2. 執行下列 Visual Basic 程式片段後, 變數 c 的值為何? (A)0 (B)15 (C)30 (D)60 102 統測 B c=0 For a = 1 To 30 Step 2 For b = 30 To 1 Step -1 If a = b Then c = c + 1 Next b Next a 外圈變數 a=1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 內圈變數 b=30 29 1 內圈每執行完一個迴圈, 一定會有一次是 a=b, 使得變數 c 加 1, 總共會有 15 次 a=b, 因此 c=15 15-34
第 15 章基本程式語言 ( ) 3. 執行下列 Visual Basic 語言片段程式的結果為何? (A)2 (B)4 (C)6 (D)10 S = 0 For K = 1 to 4 S = S + ( K Mod 2) Next K Print S K S 0 1 0+1=1 2 1+0=1 3 1+1=2 4 2+0=2 97 統測 VB6 A ( ) 4. 執行完以下 Visual Basic 程式, 總共會在螢幕顯示幾列結果? (A)5 (B)9 (C)45 (D)81 101 統測 VB6 B Private Sub Form_Activate() Dim i,j As Integer 執行迴圈 i: 顯示總共的列數 For i=1 to 9 執行迴圈 j: 顯示每列中的計算結果 For j=1 to 9 Step 2 Print i; "x"; j; "="; i*j; " "; Next j Print Next i End Sub ( ) 5. 下列 Visual Basic 程式片段執行後,J 的值為何? (A)134 (B)140 (C)174 (D)225 J = 0 FOR K = 1 TO 5 FOR L = K TO 5 J = J + K* L NEXT L NEXT K 99 統測 B K L J 0 1 1~5 0+1*1+1*2+1*3+1*4+1*5=15 2 2~5 15+2*2+2*3+2*4+2*5=43 3 3~5 43+3*3+3*4+3*5=79 4 4~5 79+4*4+4*5=115 5 5~5 115+5*5=140 條件迴圈 Do-Loop 格式 1 ( 前測式迴圈 ): 格式 2 ( 後測式迴圈 ): Do While/Until 條件 Do 迴圈主體敘述迴圈主體敘述 Loop Loop While/Until 條件說明 : (1) Do-Loop 敘述可依條件決定迴圈執行與否 (2) 條件置於前端稱為前測式迴圈, 置於後端稱為後測式迴圈 (3) 使用 While 條件是當條件成立時, 執行迴圈主體敘述 ; 而使用 Until 條件則是當條件成立時, 離開迴圈主體敘述 (4) 若在迴圈內執行了 Exit Do 則會立即跳出迴圈, 而執行 Loop 的下一行敘述 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-35
計算機概論總複習 (5) 條件迴圈亦可用 While-End While 敘述, 其執行的原則與 Do-While-Loop 相似, 但是 Do-Loop 敘述配合 While 或 Until 可以將條件置於迴圈前端或末端, 而 While-End While 只可置於前端 ( 前測式 ) 例 1: ( 前測式 ) 例 2: I=1 Do While I<=5 Console.Write ("{0} ", I) I=I+1 Loop Loop 執行結果 : 1 2 3 4 5 I=1 Do Until I>=5 Console.Write ("{0} ", I) I=I+1 執行結果 : 1 2 3 4 ( 後測式 ) 例 3: ( 後測式 ) 例 4: I=1 Do Console.Write ("{0} ", I) I=I+1 Loop While I<=5 Loop Until I>=5 執行結果 : 1 2 3 4 5 I=1 Do Console.Write ("{0} ", I) I=I+1 執行結果 : 1 2 3 4 VB 6.0 大不同 While:VB 6.0 中的條件迴圈指令為 While Wend ( ) 1. 下列哪一個 Visual Basic 程式語言敘述, 會先判斷測試條件為真 (True) 時, 才執行迴圈內的敘述? (A)Do While...Loop (B)Do Until...Loop (C)Do...Loop While (D)Do...Loop Until 101 統測 A ( ) 2. 流程圖如右圖所示, 請依照流程圖執行, 最後印出 B 的值為何? (A)20 (B)24 (C)27 (D)36 101 統測 B A B 7 2 6 9 5 15 4 20 24 15-36
第 15 章基本程式語言 ( ) 3. 以下是一個加上行號的 Do 迴圈指令 Visual Basic 程式片段, 執行後 Ans 之值為何? (A)9 (B)14 (C)40 (D)280 100 統測 C 1 Dim i, Ans As Integer i Ans 2 Ans = 1 1 1 4 1*4 = 4 3 i = 1 7 4 Do While i <= 10 10 4*10 = 40 5 If i Mod 2 = 0 Then 13 6 Ans = Ans * i 7 8 i = i + 3 9 Loop ( ) 4. 續上題, 要將上一題的程式改以 For 迴圈指令取代, 下列程式第 4 行之中有 X Y 和 Z 等三 個變數, 應該在行號 3 同一行後方撰寫哪一行指令指定其值, 才能獲得相同的結果? (A)X=1:Y=3:Z=10 (B)X=1:Y=10:Z=3 (C)X=3:Y=10:Z=1 (D)X=10:Y=1:Z=3 1 Dim i, Ans, X, Y, Z As Integer 100 統測 B 2 Ans = 1 3 4 For i = X To Y Step Z 5 If i Mod 2 = 0 Then 6 Ans = Ans * i 7 8 Next X 為初值 = 1,Y 為終值 = 10,Z 為變化值 = 3 ( ) 5. 下列 Visual Basic 程式片段, 若執行後 power 之值為 8, 則 X 之值應設為多少? (A)2 (B)4 (C)6 (D)8 100 統測 A Dim i, power, N, X As Integer 直接用代入法測試 i = 1 : power = 1 : N = 3 : X = i power Do While i <= N 1 1*2 =2 2 2*2 =4 power = power * X 3 4*2 =8 i = i + 1 4 Loop ( ) 6. 下列 Visual Basic 程式片段執行後,T 的值為何? (A)256 (B)240 (C)225 (D)196 T = 0 99 統測 C U = 0 DO WHILE U < 30 IF U MOD 2 = 1 THEN T = T + U END IF U = U + 1 LOOP 此題為計算 1 到 29 之間的奇數和,(1+29)*15/2=225 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-37
計算機概論總複習 ( ) 1. 小林接了一個公司的程式開發案件, 花了很多時間, 總算完成了該程式的演算法 請問小林在設計演算法時, 下列何者不是必須考量的重點? (A) 輸入 (Input) (B) 相容性 (Compatibility) (C) 有效性 (Effectiveness) (D) 有限性 (Finiteness) ( ) 2. 在開始設計程式之前, 下列工作何者為最優先? (A) 決定合適的程式語言 (B) 收集一些已經寫好的程式 (C) 撰寫程式的演算法 (D) 定義要解決的問題 ( ) 3. 在程式設計工具中, 下列哪一項是以特定的圖形符號來表達程式的邏輯流程? (A) 流程圖 (B) 卡諾圖 (C) 堆疊圖 (D) 甘特圖 ( ) 4. 在處理某一問題時, 將解決問題的方法和程序, 逐步以文字敘述或圖形表達的方式展示出來, 稱之為 : (A) 系統測試 (B) 系統建置 (C) 演算法 (D) 結構化程式設計 ( ) 5. 下列有關演算法 (Algorithms) 的敘述, 何者不正確? (A) 演算法描述解決問題的步驟 (B) 每一個問題只存在一種演算法 (C) 演算法可以利用流程圖或文字敘述的方式來表達 (D) 演算法的推演步驟可以利用程式語言加以描述 ( ) 6. 程式設計以條件敘述為真, 則其程式碼就被執行 ; 敘述為假, 則其程式碼就不執行, 此種控制結構稱為? (A) 選擇結構 (B) 循序結構 (C) 迴圈結構 (D) 重複結構 ( ) 7. 下列何者不是結構化程式設計的主要特徵? (A) 使用循序 選擇與重複等三種基本控制結構 (B) 每種結構都是單一入口 / 單一出口 (C) 使用模組化的設計技巧 (D) 採用由下而上的設計方式 ( ) 8. 本題為判斷輸入密碼是否正確的演算法, 請將右列各個動作程序號碼依序配合流程圖上的甲乙丙丁戊, 選擇正確的配合順序 1 判斷密碼是否正確? 2 輸入密碼 3 提示輸入訊息 4 提示錯誤訊息 5 進入下一程序 (A)31245 (B)32154 (C)32514 (D)32145 ( ) 9. 在流程圖符號中, 下面哪一個表示輸入 / 輸出符號? (A) (B) (C) (D) ( ) 10. 在 Visual Basic 結構化程式設計中, 應該避免使用下列何種敘述? (A)IF THEN (B)GoTo (C)While Wend (D)For NEXT ( ) 11. 下列 VB 程式執行結果, 變數 A 值為何? (A)10 (B)15 (C)50 (D)75 A=10 : B=5 If A>10 Or B<6 Then A=A+B A=A*B 15-38
第 15 章基本程式語言 ( ) 12. 下列 VB 程式的執行結果為何? (A)4 (B)6 (C)A (D)B If ( 6>5 or 4>5 )Then MsgBox ("A") Else MsgBox ("B") ( ) 13. 執行下列 VB 程式, 變數 A 與 B 的執行結果為何? (A)4 9 (B)8 5 (C)3 2 (D)1 4 A=3:B=4 If A > B Then A=A+5 Else B=B-2 ( ) 14. 下列 VB 程式執行後的 m 值為何? (A)20 (B)30 (C)10 (D)23 d = 16: m = 20 If d < 5 Then m = m + 7 ElseIf d < 10 Then m = m + 3 Else m = m + 10 ( ) 15. 執行下列 VB 程式後, 輸出的結果為何? (A)4 (B)34 (C)54 (D)354 a = 3 : b = 5 : c = 4 If a > b Then If b > c Then Console.Write (a) Else Console.Write (b) Console.Write (c) ( ) 16. 下列 VB 程式執行後的 a 值為何? (A)0 (B)1 (C)2 (D)4 a=0 : j=2 If a>j Then a=a+2 Else a=a+1 a=a*j Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-39
計算機概論總複習 ( ) 17. 執行下面的 Visual Basic 程式碼後, 輸出的資料為何? (A)error (B)large (C)medium (D)small X = 5 \ 2 Select Case X Case 1 MsgBox ("small") Case 2 MsgBox ("medium") Case Else MsgBox ("large") End Select ( ) 18. 在 VB 語言中執行以下的程式碼後, 輸出結果為何? (A)A (B)B (C)C (D)ABC N=6 Select Case(N) Case Is < 6 MsgBox ("A") Case 0 To 6 MsgBox ("B") Case 6 MsgBox ("C") Case Else MsgBox ("D") End Select ( ) 19. 假設三人體重分別為 A B C 且均不相等 處理流程如下圖所示, 則下列何項為正確敘述? (A) 三人體重需經三次比較 (B) 將由大到小輸出三人體重 (C) 將由小到大輸出三人體重 (D) 輸出三人體重中之最大者 15-40
第 15 章基本程式語言 ( ) 20. 老師要小胖算 1 到 1000 的奇數整數和, 小胖從 1+3+5 算起, 加了老半天終於算出來了 小胖如果用下列哪一個 VB 程式片段, 立刻就能得到答案? (A) (B) S = 0 S = 0 For K = 1 To 1000 For K = 1 To 1000 Step 2 S = S + K S = S + K Next K Next K (C) S = 1 For K = 1 To 1000 Step 2 S = S + K Next K (D) S = 1 For K = 1 To 999 S = S + K Next K ( ) 21. 在 VB 語言中, 下列哪一種迴圈會先執行一次迴圈內的敘述, 然後再進行條件判斷, 以決定是否繼續執行迴圈內的敘述? (A)Do Until Loop (B)Do While Loop (C)Do Loop While (D)For Next ( ) 22. VB 語言中, 使用 For-Next 迴路敘述時, 增值為多少時可以省略? (A)0 (B)1 (C)2 (D)3 ( ) 23. 下列 Visual Basic 程式片段執行後, 會在螢幕上出現幾個 # 號? (A)6 (B)7 (C)8 (D)9 For I = 19 To 1 Step -3 Console.Write ("#") Next I ( ) 24. 下列 VB 程式執行後,C 值的結果為何? (A)57 (B)55 (C)32 (D)30 C=2 For I=1 To 10 If I Mod 2=0 Then C=C+I Next I ( ) 25. 下列 Visual Basic 程式片段執行後,Sum 值為何? (A)100 (B)101 (C)5050 (D)5051 Sum = 0 For i = 1 To 100 Sum = Sum + i Next I ( ) 26. 使用 Visual Basic 程式語言執行下列程式碼後,Sum 值為何? (A)5050 (B)2500 (C)2550 (D)5500 Sum=0 For I = 1 To 100 Step 2 Sum = Sum + I Next I Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-41
計算機概論總複習 ( ) 27. 下列 Visual Basic 程式片段執行後,Sum 值為何? (A)50 (B)51 (C)52 (D)53 Sum=1 For I=1 To 3 J=I^2*2 Sum=2*Sum+J Next I ( ) 28. 執行下列 Visual Basic 程式後,M 值的結果為何? (A)182 (B)186 (C)192 (D)196 M = 1 For I = 1 To 2 K = 5 * M ^2 M = M + K Next I ( ) 29. 下述 Visual Basic 程式片段執行後, 下列何者正確? (A)SUM=10 (B)SUM=17 (C)SUM=21 (D)SUM=23 SUM=0 For I=10 To 2 Step -3 SUM=SUM+I Next I ( ) 30. 執行下列 Visual Basic 程式,S 的結果為何? (A)20 (B)5 (C)6 (D)15 S = 0 : X = 20 For X = 1 To 5 S = S + X Next X ( ) 31. 下列 Visual Basic 迴圈執行完畢後, 變數 k 的值為何? (A)0 (B)10 (C)11 (D)13 For k = 1 To 10 Console.Write (k) k = k + 2 Next k ( ) 32. 執行下列 Visual Basic 語言片段程式的結果為何? (A) 總共印出 96 個星號 (*) (B) 總共印出 91 個星號 (*) (C) 總共印出 84 個星號 (*) (D) 總共印出 66 個星號 (*) For I = 10 To 16 For J = 100 To 105 Console.Write ("**") Next J Console.Write ("*") Next I 15-42
第 15 章基本程式語言 ( ) 33. 執行下列 Visual Basic 語言片段, 程式順利執行後,K 值為何? (A)0 (B) 1 (C) 2 (D) 3 K= 0 For I = 1 To 5 For J = I + 2 To 4 K = K + 1 Next J K = K 1 Next I ( ) 34. 下列 VB 程式執行後,S 值為何? (A)10 (B)13 (C)15 (D)20 S = 0 For K = 1 To 2 For J = 2 To 3 S = S + K * J Next J Next K ( ) 35. 下列 VB 程式片段, 敘述行號 30 總共執行幾次? (A)4 (B)5 (C)6 (D)7 10 I = 22 : Y = 6 20 Do While I < > Y 30 IF I > Y Then I = I Y Else Y = Y I 40 Loop ( ) 36. 使用 Visual Basic 程式語言執行以下程式碼後, 變數 T 的值為何? (A)18 (B)22 (C)24 (D)25 T = 0 : S = 1 Do While S < = 3 S = S + 1 T = T + S * (S 1) Loop T = T + S ( ) 37. 以下的 Visual Basic 程式片段執行後, 下列敘述何者不正確? (A) 變數 number 被定義為整數 (B) 在迴圈中的變數 number 每次都累加 1 (C) 在迴圈中的變數 sum 用來累加變數 number (D) 變數 sum 最後的值為 55 Dim sum, number As Integer sum=0 : number=1 Do While number<10 sum=sum+number number=number+1 Loop Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-43
計算機概論總複習 ( ) 38. 執行下列 Visual Basic 語言片段程式後的 D 值為何? (A)D=1680 (B)D=16800 (C)D=15120 (D)D=151200 C = 5:D =1 Do D = D * C C = C + 1 Loop Until C >= 10 ( ) 39. 下列 Visual Basic 程式片段執行後,S 值是多少? (A)4 (B)7 (C)9 (D)10 S = 0:C = 1 While C <= 5 For I = 1 To C S = S + 1 Next I C = C + 2 End While ( ) 40. 執行下列 VB 之片段程式後,K 的結果為何? (A)57 (B)67 (C)77 (D)87 I=16 K=0 Do While I>10 For J=1 To I K=K+J Mod 5 Next J I=I-3 Loop ( ) 41. 一流程圖如右圖所示, 依流程順利執行後, 列印 B 的值為何? (A)34 (B)40 (C)45 (D)49 15-44
第 15 章基本程式語言 ( ) 1. 下列何者為表示條件判斷之流程圖符號? (A) (B) (C) (D) 96 統測 ( ) 2. 下列這段 Basic 程式碼執行後, 將印出何種結果? (A)13 (B)12 (C)11 (D)10 X = 1 Do While X < 10 X = X * 2 If X > 6 Then X = X 1 Else X = X + 1 Loop Print X 96 統測 VB 6 ( ) 3. 使用 Visual Basic 程式語言執行下列程式碼後, 總共會輸出幾個 #? (A)6 個 (B)10 個 (C)13 個 (D)23 個 For K = 2 To 4 For J = K To K^2 Step 2 Print "#"; Next J Next K 96 統測 VB 6 ( ) 4. 下列程式執行後, 顯示的結果為何? (A)440 (B)882 (C)903 (D)44205 I = 1 For J = 1 To 3 K = 2 * I ^ 2 I = I + K Next J Print I 96 統測 VB 6 ( ) 5. 執行下列 Visual Basic 語言片段程式的結果為何? (A)4 (B)7 (C)15 (D)30 S = 0 X = 1 For K = 1 To 4 S = S + X X = X * 2 Next K Print S 96 統測 VB 6 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-45
計算機概論總複習 ( ) 6. 使用 Visual Basic 程式語言執行下列程式碼後, 所得結果為何? (A)10 (B)18 (C)23 (D)30 96 統測 VB 6 Sum = 0 J = 1 Do While J < 5 If J Mod 2 = 1 Then Sum = 3 * Sum Else Sum = Sum + J J = J + 1 Loop Print Sum ( ) 7. 執行下列 Visual Basic 程式碼, 若出現提示符號時輸入數值 100, 則正確結果為何? (A)6 (B)7 (C)8 (D)9 96 統測 VB 6 Private Sub Form_Activate() n = 0 a = InputBox("input data") While a > 0 a = a n ^ 2 n = n + 1 Wend Print n 1 End Sub ( ) 8. 執行下列 Visual Basic 語言片段程式的結果為何? (A)3 (B)4 (C)6 (D)9 S = 0 For X = 1 To 3 For Y= X + 1 To 3 S = S + 1 Next Y Next X Print S 96 統測 VB 6 ( ) 9. 執行下列 Visual Basic 語言片段程式的結果為何? (A)1 (B)2 (C)3 (D)110 X = 110 97 統測 VB 6 If X < 100 Then Y = 1 Else Y = 2 If X > 120 Then Y = 3 Print Y 15-46
第 15 章基本程式語言 ( ) 10. 下列有關演算法與程式語言的敘述, 何者正確? (A) 相同的演算法若以不同的程式語言撰寫, 其執行效率也不同 (B) 演算法可藉由無限的步驟解決問題 (C) 程式語言是一種邏輯上的推演法則, 演算法則是實現的工具 (D)BASIC 是屬於基本的低階程式語言 97 統測 ( ) 11. 下列這段 BASIC 程式碼執行後, 所印出的 X 值結果為何? (A)0 (B)2 (C)11 (D)20 X = 0 For Y = 1 To 10 Step 2 For Z = 10 To 1 Step 3 If Y = Z Then X = X + 1 Next Z Next Y Print X 97 統測 VB 6 ( ) 12. 執行下列 Visual Basic 語言片段程式的結果為何? (A)4 (B)6 (C)10 (D)30 S = 0 For X = 1 to 2 For Y = 1 to 3 S = S + 1 Next Y S = S + 2 Next X Print S 97 統測 VB 6 ( ) 13. 以下 Visual Basic 程式執行後, 會印出什麼? (A)15 (B)25 (C)35 (D)40 S = 10 For A = 1 To 5 For B = 1 To A S = S + 1 Next B Next A Print S 97 統測 VB 6 ( ) 14. 使用 BASIC 程式語言執行下列程式碼後, 則螢幕輸出多少個 * 符號? (A)12 個 (B)15 個 (C)20 個 (D)30 個 97 統測 VB 6 For I = 1 To 3 For J = 1 To 4 Step 3 For K = 1 To 5 Print "*" Next K,J,I Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-47
計算機概論總複習 ( ) 15. 以下 Visual Basic 程式執行後, 會印出什麼? (A)7 (B)10 (C)15 (D)31 X = 1 Sum = 0 While X < 20 If X < 10 Then Sum = Sum + X X = X * 2 Wend Print Sum 97 統測 VB 6 ( ) 16. 下列 Visual Basic 程式片段, 執行後的結果為何? (A)4 (B)6 (C)8 (D)10 Dim S As Integer Dim I As Integer S = 0: I = 0 While ( I < 10 ) S = S + 1 I = I * 2 + 1 Wend Print S 97 統測 VB 6 ( ) 17. 流程圖符號是表示何種意義? (A) 處理 (B) 迴圈 (C) 決策或判斷 (D) 開 始或結束 97 統測 ( ) 18. 下列 Visual Basic 程式片段, 執行後的結果為何? (A)18 (B)25 (C)33 (D)42 A = 1: B = 1 Do A = A + B Select Case A Case Is < 10: A = A * 2 Case Is > 10: A = A + 3 End Select B = B + 1 Loop Until B > 5 Print A 97 統測 VB 6 ( ) 19. 如右圖所示, 程式流程圖中存在何種錯誤? (A) 輸出的變數個數較設定初始值的變數個數少 (B) 缺少判斷符號使得程式無法在有限的執行步驟內完成 (C)S = S + A 的指令語法不明確 (D) 初始值設定不正確導致無法產生運算結果 98 統測 15-48
第 15 章基本程式語言 ( ) 20. 左圖代表何種流程圖符號? (A) 處理程序 (B) 報表輸出 (C) 連接符號 (D) 副程式 98 統測 ( ) 21. 如圖所示, 若 N 為一正偶數, 則流程圖最後列印出的 S 值為何? (A)S=1+2+...+N (B)S=2+4+...+N (C)S=1+3+...+N (D)S=1+2+...+N/2 98 統測 ( ) 22. 下列 Visual Basic 程式片段, 若在輸入資料的訊息交談視窗中, 輸入的數值 ( 在下列程式的第 2 行 ) 為 5, 請計算該程式片段的執行結果 : (A)5 (B)6 (C)0 (D)10 < 第 1 行 > K = 0 < 第 2 行 > Q = InputBox(" 輸入數值 ") < 第 3 行 > While K < 5 < 第 4 行 > Q = K + 1 < 第 5 行 > K = K + 1 < 第 6 行 > Wend < 第 7 行 > Print K 98 統測 VB 6 ( ) 23. 如圖所示, 流程圖結束後,VarP 之值為何? (A)114 (B)120 (C)130 (D)155 98 統測 ( ) 24. 下列何者不是使用流程圖輔助程式設計的優點? (A) 易於掌控重點, 減少錯誤 (B) 有助於偵錯 (C) 有助於程式日後的維護 (D) 使用流程圖所輔助設計的程式, 於電腦上執行必然快速 98 統測 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-49
計算機概論總複習 ( ) 25. 執行下列 Visual Basic 語言片段程式的結果為何? (A)0 (B)6 (C)21 (D)30 A = 42 B = 30 C = 1 DO WHILE C < > 0 C = A MOD B IF C < > 0 THEN A = B B = C END IF LOOP PRINT B 98 統測 VB 6 ( ) 26. 下列 BASIC 程式片段, 執行之後的顯示結果為何? (A)12 (B)8 (C)10 (D)6 Sum = 0 98 統測 VB 6 For I = 1 to 3 Sum = I * 2 Next I Print Sum ( ) 27. 下列有關流程圖的敘述, 何者正確? (A) 程式設計師可以利用流程圖代替編寫程式 (B) 流程圖的缺點是當符號很多時佔空間且難修改 (C) 流程圖通常是由下而上由右至左繪製 (D) 流程圖無助於程式的除錯 修改與維護 99 統測 ( ) 28. 圖 ( 二 ) 所示的流程圖符號, 其意義為何? (A) 輸入 (B) 處理 (C) 註解 (D) 顯示 99 統測 ( 圖二 ) ( ) 29. 以下是 奇偶數判別 演算法的 3 個敘述 : 敘述 : 輸入一個正整數值 N; 敘述 : 如果 R = 1, 則輸出 N 為奇數, 否則輸出 N 為偶數 ; 敘述 : 將 N 除以 2, 求餘數 R; 下列何者是正確的演算法執行步驟? (A) (B) (C) (D) 99 統測 ( ) 30. 右列 5 個程式設計步驟 : 分析需求與問題 ; 程式測試與除錯 ; 撰寫程式說明文件 ; 撰寫程式碼 ; 處理程序設計 下列何種順序是正確的設計步驟? (A) (B) (C) (D) 99 統測 ( ) 31. 下列何者為給定之 Visual Basic 程式片段執行後的結果? (A)5 (B)7 (C)11 (D)15 A = 1 : B = 5 While B < 10 B = B + 2 * A A = A + 1 Wend Print B 99 統測 VB 6 15-50
第 15 章基本程式語言 ( ) 32. 下列繪製流程圖的動作中, 何者最容易造成設計的錯誤? (A) 流程圖的繪製必定加入起始與結束的符號 (B) 用帶箭頭的流程線來標示工作處理的流向 (C) 當流程圖較大且複雜時, 須儘量將所有圖形繪製於同一張設計紙上, 並使用畫線交叉的方式標示, 以減少 使用連接符號 (D) 一般使用方形符號來標示處理的工作 99 統測 ( ) 33. 下列流程圖如圖 ( 二 ) 執行後的結果, 變數 j 的輸出值為何? (A)5 (B)6 (C)7 (D)8 100 統測 圖 ( 二 ) ( ) 34. 設計程式時, 為表達流程圖或演算法所代表的指令執行過程, 可以使用一種介於自然語言與程式語言之間的表示法, 稱之為? (A) 二進碼 (B) 對照碼 (C) 機器碼 (D) 虛擬碼 100 統測 ( ) 35. 下列何者不是描述演算法的方式? (A) 文字敘述 (B) 流程圖 (C) 虛擬碼 (D) 甘特圖 101 統測 ( ) 36. 右圖某程式片段的運算流程, 請問輸出的 A 值為何? (A)3 (B)6 (C)9 (D)12 101 統測 ( ) 37. 執行完下列 Visual Basic 程式片段後, 會在螢幕顯示幾個星號? (A)5 (B)6 (C)9 (D)10 101 統測 VB 6 Dim A,B As Integer B=10 For A=1 To B Step 1 If (A MOD 2 =0) Then Print "*" Next A Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-51
計算機概論總複習 1. B 2. D 3. A 4. C 5. B 6. A 7. D 8. B 9. C 10. B 11. D 12. C 13. C 14. B 15. C 16. C 17. C 18. B 19. D 20. B 21. C 22. B 23. B 24. C 25. C 26. B 27. A 28. B 29. C 30. D 31. D 32. B 33. C 34. C 35. B 36. C 37. D 38. C 39. C 40. A 41. C 1. D 2. A 3. C 4. C 5. C 6. A 7. B 8. A 9. B 10. A 11. B 12. C 13. B 14. D 15. C 16. A 17. D 18. C 19. B 20. C 21. D 22. A 23. C 24. D 25. B 26. D 27. B 28. C 29. A 30. A 31. C 32. C 33. D 34. D 35. D 36. C 37. A 25. 1 加到 100 的總和為 (1+100)*100/2=5050 26. 本題為計算 1 到 100 的奇數和, 所以利用梯形面積的計算方式求 Sum Sum=(1+99)*50/2=2500 27. I J Sum=1 1 1^2*2=2 2*1+2=4 2 2^2*2=8 2*4+8=16 3 3^2*2=18 2*16+18=50 28. I K M 1 5*1^2=5 1+5=6 2 5*6^2=180 6+180=186 32. 外圈 I 的值為 10~16, 共執行 7 次, 印出 7 個星號 (*); 內圈 J 的值為 100~105, 共執行 7*6=42 次, 印出 42*2=84 個星號, 總共會印出 84+7=91 個 34. 38. K J S 1 2 2 3 2 3 2 5 9 15 C D C D 5 1 8 210 6 5 9 1680 7 30 10 15120 36. 39. S T + S * (S 1) T 1 0 2 0+2*1 2 3 2+3*2 8 4 8+4*3 20 T=T+S=20+4=24 S C I S C I 0 1 1 5 2 1 3 1 6 3 2 2 7 4 3 3 8 5 4 5 1 9 7 15-52
第 15 章基本程式語言 40. I J K 16 1~16 0+1+2+3+4+0+1+2+3+4+0+1+2+3+4+0+1=31 13 1~13 31+1+2+3+4+0+1+2+3+4+0+1+2+3=57 10 4. 5. J K I 1 1 2 3 2 18 21 3 882 903 K X S 1 0 1 2 1 2 4 3 3 8 7 4 16 15 6. 7. J Sum a n 1 0 2 0 3 2 4 6 5 10 100 0 100-0=100 1 100-1^2=99 2 99-2^2=95 3 95-3^2=86 4 86-4^2=70 5 70-5^2=45 6 45-6^2=9 7 9-7^2=-40 8 n-1=8-1=7 8. 11. X Y S Y Z X 1 2 3 1 2 2 3 3 3 0 1 10,7,4,1 1 3 10,7,4,1 1 5 10,7,4,1 1 7 10,7,4,1 2 9 10,7,4,1 2 12. 13. X Y S 0 1 1 1 2 2 3 3 5 2 1 6 2 7 3 8 10 A B S=10 A B S=10 1 1 11 4 1 17 2 1 12 2 18 2 13 3 19 3 1 14 4 20 2 15 5 1 21 3 16 2 22 3 23 4 24 5 25 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-53
計算機概論總複習 14. I J K 1 2 3 1 4 1 4 1 4 1~5 1~5 1~5 1~5 1~5 1~5 迴圈總共執行 3 2 5=30 次 15. X Sum 1 0 2 0+1=1 4 1+2=3 8 3+4=7 16 7+8=15 32 16. I S 0 0 0*2+1=1 1 1*2+1=3 2 3*2+1=7 3 7*2+1=15 4 18. A B 1 1 1+1=2 2*2=4 1+1=2 4+2=6 6*2=12 2+1=3 12+3=15 15+3=18 3+1=4 18+4=22 22+3=25 4+1=5 25+5=30 30+3=33 5+1=6 22. Q K 5 0 0+1=1 1 1+1=2 2 2+1=3 3 3+1=4 4 4+1=5 5 23. 流程圖可寫成如下的程式 : VarP = 100 For K = 2 To 10 Step 2 VarP = VarP + K Next K Print VarP K VarP 100 2 102 4 106 6 112 8 120 10 130 15-54
第 15 章基本程式語言 25. 33. A B C 42 30 1 30 12 12 12 6 6 0 i j 0 1 1 0 1 1 2 1 3 2 5 3 8 5 13 8 31. B A 5 1 5+2*1=7 2 7+2*2=11 3 34. 虛擬碼 (Pseudo Code) 是描述演算法的一種方法, 並非一種現實存在的程式語言 使用虛擬碼可以幫助設計人員把程式的意思表達出來, 而不必拘泥於具體的實作 35. 甘特圖 :1917 年由美國工程師暨社會學家 Henry L. Gantt 所開發的水平橫條圖, 可當作生產管理工具, 常用於專案管理, 以圖形呈現排程表, 可協助計劃 協調及追蹤專案內的特定工作 36. A X 3 12 6 11 9 10. Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-55
計算機概論總複習 15-5 陣列 函數與副程式 陣列的宣告 1. 陣列 (1) 陣列是一群相同型態的資料, 具有相同的變數名稱, 儲存於記憶體的連續位置 例 : A(0) A(1) A(2) A(3) A(4) 說明 : A 為變數名稱 0 1 2 3 4 為其註標 (2) 陣列元素 : 陣列內的每一項資料稱為陣列元素, 例如上圖, 此陣列有 A(0) A(1) A(2) A(3) A(4) 共 5 個陣列元素 2. 陣列的宣告 格式 1: 一維陣列的宣告 Dim 陣列名稱 ( 最大註標值 ) [As 資料型態 ] 說明 : (1) 若以 Dim A(n) 宣告一個陣列, 因為註標值是從 0 開始編號, 宣告的最大註標值若為 n, 則包含陣列元素有 A(0)~A(n), 此陣列共有 (n+1) 個陣列元素 (2) 使用 As 資料型態以設定陣列可儲存的資料型態 ; 若省略, 則視為 Object 的陣列 (3) 陣列宣告後, 註標值的範圍已經確定, 若使用範圍之外的註標值會出現錯誤訊息 ( 陣列註標超出範圍 ) (4) 不可重複宣告同名稱的陣列 不可未宣告陣列而使用陣列 例 : Dim B(3) As String 陣列元素 3+1=4 個 Dim Score(50) 陣列元素 50+1=51 個 (5) 宣告一維陣列初始值的方式如下, 不需要設定陣列最大註標值, 編譯器會由初始值的個數來決定陣列元素個數 Dim 陣列名稱 ( ) [As 資料型態 ]={ 陣列元素 0, 陣列元素 1,, 最後陣列元素 } 例 :Dim A( ) As Integer={5,10,15}, 表示 A(0)=5 A(1)=10 A(2)=15 15-56
第 15 章基本程式語言 VB 6.0 大不同 VB 6.0 的陣列宣告支援最小註標的設定, 例如 :Dim A(5 TO 35) 是宣告了 A(5) A(6) A(35) 等 31 個陣列元素, 即 35-5+1 個 在 VB 6.0 未設定最小註標的陣列宣告, 預設是 0, 可以使用 Option Base 1 敘述, 改由 1 算起 格式 2: 二維陣列的宣告 Dim 陣列名稱 ( 最大註標值, 最大註標值 ) [As 資料型態 ] 說明 : (1) 宣告陣列 Dim B(3,2), 陣列元素的個數為 (3+1) (2+1)=12 個 B(0,0) B(0,1) B(0,2) B(1,0) B(1,1) B(1,2) B(2,0) B(2,1) B(2,2) B(3,0) B(3,1) B(3,2) (2) 陣列的維度可以是三維 四維, 三維陣列宣告格式如下, 更高的維度依此類推 Dim 陣列名稱 ( 最大註標值, 最大註標值, 最大註標值 ) [As 資料型態 ] (3) 宣告二維陣列初始值的方式如下 : Dim 陣列名稱 (, ) [As 資料型態 ]={{ 第一維初始值 },{ 第二維初始值 }} 例 :Dim A(, ) As Integer={{1,3},{2,4}}, 表示 A(0,0)=1 A(0,1)=3 A(1,0)=2 A(1,1)=4 VB 6.0 大不同 在 VB 6.0 中宣告二維陣列 Dim A(5 TO 7,3 TO 5), 則陣列元素的個數有 (7-5+1) (5-3+1)=9 個 A(5,3) A(5,4) A(5,5) A(6,3) A(6,4) A(6,5) A(7,3) A(7,4) A(7,5) ( ) 1. 在 Visual Basic 語言中宣告陣列為 Dim A(5,7), 試問陣列 A 中有多少個元素? (A)48 個 (B)42 個 (C)35 個 (D)96 個 A Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-57
計算機概論總複習 ( ) 2. 若陣列 A 之宣告為 DIM A(2,3) As Integer,A 之內容如圖所示, 執行 Print A(A(1,2)-1,A(2,3)+1) 指令後, 答案為何? (A)0 (B)1 (C)2 (D)3 97 統測 VB 6 C 先求 A(1,2)=2,A(2,3)=1; 再求 A(A(1,2)-1,A(2,3)+1)=A(2-1,1+1)=A(1,2)=2 ( ) 3. 執行下列 Visual Basic 程式片段時, 請問陣列 A 占用記憶體多少 Bytes 的儲存空間? (A)144 (B)72 (C)80 (D)40 Dim A(5,2) As Double A(5,2) 的陣列元素共有 (5+1) (2+1)=18 個,Double 雙精度資料型態每個元素佔 8Bytes, 共佔用 18 8=144Bytes A 陣列資料的處理 例 1: 1 Sub Main( ) 2 Dim A(5) 3 For I=1 To 5 4 A(I)=2*I+5 5 Next I 6 MsgBox(A(2)+A(5)) 7 End Sub 執行結果 說明 : A(0) = 0 ( 未設值 ) A(1) = 7 (2*1+5=7) A(2) = 9 (2*2+5=9) A(3) = 11 (2*3+5=11) A(4) = 13 (2*4+5=13) A(5) = 15 (2*5+5=15) 24 例 2: 1 Sub Main( ) 2 Dim A(3,2),B(2,3) 3 For I=1 To 3 4 For J=1 To 2 5 A(I,J)=I*10+J 6 B(J,I)=A(I,J) 7 Next J,I 8 MsgBox (A(2,1) + B(1,3)) 9 End Sub 執行結果 說明 : I J A(I,J) B(J,I) 1 1 A(1,1) = 11 = B(1,1) 2 A(1,2) = 12 = B(2,1) 2 1 A(2,1) = 21 = B(1,2) 2 A(2,2) = 22 = B(2,2) 3 1 A(3,1) = 31 = B(1,3) 2 A(3,2) = 32 = B(2,3) 所以 A(2,1) + B(1,3) = 52 52 15-58
第 15 章基本程式語言 ( ) 1. 請問下列 Visual Basic 程式片段執行運算後,X(7) 所得之結果為何? (A)5 (B)7 (C)8 (D)9 101 統測 C Dim Y, X(7) As Integer X(1) = 2 : Y = 1 For Y = 2 To 7 X(Y) = Y + X(Y-1) \ 5 Next Y X(Y)=Y+X(Y-1)\5 \: 取商數 X(2)=2+X(1)\5=2+1\5=2+0=2 X(3)=3+X(2)\5=3+2\5=3+0=3 X(4)=4+X(3)\5=4+3\5=4+0=4 X(5)=5+X(4)\5=5+4\5=5+0=5 X(6)=6+X(5)\5=6+5\5=6+1=7 X(7)=7+X(6)\5=7+7\5=7+1=8 ( ) 2. 執行下列 Visual Basic 程式片段後,A(0) 的值為何? (A)2 (B)4 (C)6 (D)10 Dim A(5), K As Integer K A(K-2) A (5) = 0 5 A(3) = A(5) + A(4) = 2 A (4) = 2 4 A(2) = A(4) + A(3) = 4 3 A(1) = A(3) + A(2) = 6 For K = 5 To 2 Step -1 A(0) = A(2) + A(1) = A(K - 2) = A(K) + A(K - 1) 2 10 Next K 100 統測 D ( ) 3. 下列 Visual Basic 程式片段, 執行後的結果為何? (A)16 (B)24 (C)30 (D)36 Dim A( 3, 3 )As Integer A(1,1)=A(0,0)+(1+1)*2=4 For I = 1 To 3 A(2,2)=A(1,1)+(2+2)*2=4+8=12 For J = 1 To 3 A(3,3)=A(2,2)+(3+3)*2=12+12=24 A( I, J )= A( I 1, J 1 )+ ( I + J )*2 Next J Next I Print A( 3, 3) 97 統測 VB6 B ( ) 4. 使用 Visual Basic 程式語言執行下列程式碼後, 所得結果為何? (A)5 (B)7 (C)8 (D)13 96 統測 VB6 C Dim F(100) K = 6 F(0) = 0 F(1) = 1 For J = 2 To K F(J) = F(J - 1) + F(J - 2) Next J Print F(K) J F(J) 2 F(2)=F(1)+F(0)=1 3 F(3)=F(2)+F(1)=2 4 F(4)=F(3)+F(2)=3 5 F(5)=F(4)+F(3)=5 6 F(6)=F(5)+F(4)=8 K 一直為 6,F(K)=F(6)=8 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-59
計算機概論總複習 ( ) 5. 下列 Visual Basic 程式片段執行後, 若將陣列 B 之值由 B(0) 至 B(2) 列出, 並以逗點分隔各元素, 其結果為何? (A)3,7,11 (B)4,9,14 (C)7,18,28 (D)8,20,31 102 統測 D Dim A(3,2) As Integer A(0,0)=2:A(0,1)=1:A(1,0)=3:A(1,1)=4: A(2,0)=5:A(2,1)=6 Dim B() As Integer={1,2,3} For i = 0 To 2 For j = 0 To 1 A(i,j) = A(i,j) + A(i,(j+1) Mod 2) Next j Next i For i = 0 To 2 B(i) = B(i) + (A( i,0) + A(i,1)) Next i i j A(i,j) 0 0 A(0,0)=A(0,0)+A(0,1)=2+1=3 1 A(0,1)=A(0,1)+A(0,0)=1+3=4 1 0 A(1,0)=A(1,0)+A(1,1)=3+4=7 1 A(1,1)=A(1,1)+A(1,0)=4+7=11 2 0 A(2,0)=A(2,0)+A(2,1)=5+6=11 1 A(2,1)=A(2,1)+A(2,0)=6+11=17 i B(i) 0 B(0)=B(0)+A(0,0)+A(0,1)=1+3+4=8 1 B(1)=B(1)+A(1,0)+A(1,1)=2+7+11=20 2 B(2)=B(2)+A(2,0)+A(2,1)=3+11+17=31 副程式的特點 1. 副程式的種類 : (1) 內建函數是 VB 系統所提供的副程式, 常用來處理數值和字串資料, 使用時直接呼叫即可 (2) 事件程序是配合物件使用, 當觸動一個物件時, 就會執行該物件指定的事件程序 例如 : 按一下命令鈕, 會啟動命令鈕的 Click 事件程序, 即 Private Sub Button1_Click( ) Handles Button1.Click End Sub (3) 自定程序和自定函數須由設計者視需要自己編寫, 要由該專案中其他的敘述呼叫才會執行 2. 副程式的特點 : (1) 將經常重複使用的程式片斷寫成一個副程式, 節省重複撰寫程式的時間, 使程式簡化, 增加程式的可讀性, 且易於維護 (2) 達成結構化 模組化 (Modulize) 的程式設計 15-60
第 15 章基本程式語言 (3) 節省記憶體空間 (4) 副程式在處理時所使用的資料結構為堆疊, 是一種 FILO( 先進後出 ) 的結構 ; 程式執行時需花比較多的時間 ( 因為堆疊結構的處理需要時間 ) 3. 堆疊和佇列的比較 : (1) 堆疊 (Stack): 先進後出 (FILO, First In Last Out) 結構 例如 : 學生繳交考卷, 先交的考卷會疊在下面, 所以先交的考卷比較後面批改 (2) 佇列 (Queue): 先進先出 (FIFO, First In First Out) 結構 例如 : 在超級市場裡排隊購物, 先排隊的人先結帳 ( ) 1. 下列何種資料結構具有 LIFO( 後進先出 ) 的特性? (A) 圖形 (B) 堆疊 (C) 佇列 (D) 樹 B ( ) 2. 下列何者不是副程式的特性? (A) 增進程式的結構化 模組化 (B) 提高程式的可讀性 (C) 程式的除錯不易 (D) 降低程式的執行效率 C ( ) 3. 下列何種資料結構的資料元素存取方式是先進先出 (First In First Out)? (A) 陣列 (B) 雙向串列 (C) 堆疊 (D) 佇列 99 統測 D 自定程序 Sub End Sub 格式 :Sub 程序名稱 ([ByVal ByRef] 引數 [As 資料型態 ], [ByVal ByRef] 引數 [As 資料型態 ] ) 敘述區段 End Sub 說明 : (1) 程序名稱之命名規則與變數名稱相同 (2) 引數可為變數 陣列或物件, 若有多個引數須用逗號分開 在程序的引數的資料型態宣告可以省略 (3) 在主程式中須使用 Call 敘述來呼叫 Sub 程序 若不傳遞引數, 則整個括號可省略 Call 程序名稱 ( 引數, 引數 ) (4) 引數傳遞的方式有傳址呼叫 (Call by Address 或 Call by Reference) 和傳值呼叫 (Call by Value) 兩種 傳址呼叫 : 在副程式的引數前加上 ByRef, 則主程式的引數和副程式的引數共用一個記憶體位址 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-61
計算機概論總複習 例 : Sub Main() A=10:B=20 Call Add_addr(A,B) Console.Write("{0} {1}", A,B) End Sub 執行結果 : 100 18 說明 :A 和 X 共用記憶體位址 ; B 和 Y 共用記憶體位址 記憶體位址 記憶體內容 Sub Add_addr(ByRef X, ByRef Y) X=X^2 Y=Y-2 End Sub A,X B,Y 100 18 2 傳值呼叫 : 副程式的引數前加上 ByVal, 則主程式的引數和副程式的引數不共用 記憶體位址 若主程式的引數是一個常數或是運算式, 則一定得為傳值呼叫 例 : Sub Main() 執行結果 : A=2:B=3:C=5 2 3 13 Call Add_val(A,B,C) 說明 :A 和 X 不共用記憶體位址 ; Console.Write("{0} {1} {2}", A,B,C) B 和 Y 不共用記憶體位址 ; End Sub C 和 Z 共用記憶體位址 Sub Add_val(ByVal X, ByVal Y,ByRef Z) X=X^2 Y=Y^2 Z=X+Y End Sub 記憶體位址記憶體內容 A 2 B 3 C,Z 13 X 4 Y 9 VB 6.0 大不同 在 VB 6.0 中, 若副程式的引數前未加上 ByRef 或 ByVal, 則視同為傳址呼叫 15-62
第 15 章基本程式語言 ( ) 1. 下列 Visual Basic 程式執行後, 所輸出的資料為何? (A)3 4 3 4 (B)3 4 4 5 (C)3 4 4 4 (D)3 4 4 3 C Sub Main ( ) Dim X, Y As Integer X=3:Y=4 Call F(X, Y) Console.Write("{0} {1} ",X,Y) End Sub Sub F(ByRef a, ByVal b) Console.Write("{0} {1} ", a, b) a = a + 1 b = b + 1 End Sub Call F(X,Y) 之後 a=3;b=4; 所以印出 "3 4" 接著 a,b 均加 1 成為 4,5 ByRef 為傳址呼叫,X 隨著 a 改為 4 ByVal 為傳值呼叫,Y 值不變仍為 4 ( ) 2. 若給定如下之 Visual Basic 副程式, 則呼叫 Invest(3,15) 會得到何種結果? (A)3 (B)4 (C)12 (D)15 99 統測 VB6 B Sub Invest(X as Integer, Y as Integer) Ans = ( X ^ 2 + Y Mod 4 ) / 3 Print Ans End Sub Ans = ( 3 ^ 2 + 15 Mod 4 ) / 3 = ( 9 + 3 ) / 3 = 4 自定函數 Function End Function 格式 :Function 函數名稱 ([ByVal ByRef] 引數 [As 資料型態 ], [ByVal ByRef] 引數 [As 資料型態 ] ) [As 資料型態 ] 敘述區段函數名稱 = 運算式 End Function 說明 : (1) 函數名稱的命名規則與變數命名規則相同 後面須用 As 宣告函數傳回值的資料型態, 否則視為 Object 型別 (2) Function 函數需包含一個函數傳回值的設定敘述, 也就是將函數名稱設成一個運算式 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-63
計算機概論總複習 (3) 傳址及傳值呼叫的用法與 Sub 相同 例 :F(X)=X 2 +2X+3, 求 F(3) 1 Function F(ByVal X) As Integer 2 F=X^2 +2*X+3 3 End Function 4 Sub Main() 5 Console.Write(F(3)) 6 End Sub 執行結果 : 18 ( ) 1. 執行完下列 Visual Basic 的 Form_Activate 程式後, 印出結果為何? (A)P(5,6,2) (B)11 (C)121 (D)562 101 統測 C Private Sub Form_Activate() Dim X,Y,Z As Integer X=5 : Y =6 : Z =2 Print P(X,Y,Z) End Sub Function P(A,B,C) P=(A+B)^C End Function ( ) 2. 有關下列 Visual Basic 程式碼的執行結果, 何者正確? (A)10 (B)13 (C)20 (D)29 Private Sub Form_ Activate() 96 統測 VB 6 D A = 2 : B = 1 Print F ( A, F (A, B) ) End Sub Function F ( X, Y ) F = X ^ 2 + Y ^ 2 End Function 先求 F(A,B)=F(2,1)=2^2+1^2=5, 再求 F(A,F(A,B))=F(2,5)=2^2+5^2=29 ( ) 3. 關於 Visual Basic 副程式的使用, 下列哪一個選項是不正確的? (A) 參數前有 ByVal 保留字代表當副程式的參數若有修改, 主程式的傳遞參數也不會受到影響 (B) 若主程式的傳遞參數是一個算式, 則會視同傳值呼叫 (C)Function 是一個會傳回值的副程式, 其參數傳遞方式皆是傳值呼叫 (D)ByRef 和 ByVal 的區別在於主 副程式的對應參數是記憶體 共用或不共用 C 15-64
第 15 章基本程式語言 數值函數 1. VB 2010 的數值函數是隸屬於 Math Conversion VBMath 等類別的方法 函數名稱意義實例 Int(X) Math.Floor(X) Math.Round(X) Fix(X) Math.Truncate(x) Math.Abs(X) Math.Sign(X) Math.Sqrt(X) 取小於或等於 X 的最大整數值 ( 高斯函數 ) 即正數無條件捨去, 負數無條件進位 四捨六入法取整數值, 若小數為 5, 則整數為偶數時捨去, 奇數時加 1 以無條件捨去法取整數值 即小數部分無條件捨去, 只取整數部分 取 X 的絕對值 取 X 的符號值 取 X 的平方根 Int(3.6)=Math.Floor(3.6)=3 Int(-3.6)=Math.Floor(-3.6)=-4 Math.Round(3.6)=4 Math.Round(-3.6)=-4 Math.Round(4.5)=4 Math.Round(5.5)=6 Fix(3.6)=Math.Truncate(3.6)=3 Fix(-3.6)=Math.Truncate(-3.6)=-3 Math.Abs(5)=5 Math.Abs(-5)=5 Math.Sign(7)=1 Math.Sign(-7)=-1 Math.Sign(0)=0 Math.Sqrt(16)=4 Math.Sqrt(100)=10 VB 6.0 大不同 VB 6.0 和 VB 2010 對等的數值函數如下 : VB 2010 函數 VB 6.0 函數 VB 2010 函數 VB 6.0 函數 Int(X) Math.Floor(X) Int(X) Math.Abs(X) Abs(X) Math.Round(X) Cint(X) Math.Sign(X) Sgn(X) Fix(X) Math.Truncate(X) Fix(X) Math.Sqrt(X) Sqr(X) 亂數 1. Rnd() 方法 : 是 VBMath 類別的方法, 可寫成 VBMath.Rnd() 或簡寫成 Rnd(), 用來產生一個介於 0~1 之間的亂數值, 即 0<=Rnd()<1, 注意包含 0, 不包含 1 (1) 可利用 Rnd() 產生沒有規律 介於 0~1 之間的亂數值 例 : 利用 For 迴圈產生多個亂數值 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-65
計算機概論總複習 For I=1 To 3 Console.Write("{0}", Rnd()) Next I 執行結果 : 0.143502 0.348721 0.298700 (2) 產生 A~B(B>A) 之間的隨機整數值, 公式 : Int(Rnd * (B-A+1) + A) 或 Int(Rnd * (B-A+1)) + A 例 1: 要產生 1~6 之間的隨機整數, 其公式為何? A=1,B=6 Int(Rnd()*(B-A+1)+A) Int(Rnd()*6+1) 或 Int(Rnd()*(B-A+1))+A Int(Rnd()*6)+1 例 2:Int(Rnd()*15)+2 所產生的亂數範圍為何? B-A+1=15 A=2 A=2 B=16 亂數範圍為 2~16 2. Randomize(n) 方法 (1) Randomize(n) 是 VBMath 類別的方法,n 為倍精度型別的種子數, 這個方法利用種子數來讓 Rnd() 產生的亂數不會在每次程式執行後都得到同一組的亂數 (2) 種子數可省略不寫, 會以電腦系統的時間為種子數, 因此可得到不同組的亂數 例 : 利用 Randomize() 使產生的亂數更有變化, 此例為產生 5 個 1~12 之間的數 Randomize() For I = 1 To 5 Console.Write("{0}, ", Int(Rnd()*12) + 1)) Next I VB 6.0 大不同 在 VB 6.0 中, 亂數是使用 Rnd() 函數, 可簡寫成 Rnd,Rnd 函數產生的亂數一律介於 0~1 之間 ( 可以為 0, 但不會是 1) VB 6.0 要產生 A~B(B>A) 之間的隨機整數值, 公式 : Int(Rnd * (B-A+1) + A) 或 Int(Rnd * (B-A+1)) + A 例如 : 要產生 1~6 之間的隨機整數, 其公式為 Int(Rnd*6+1) 或 Int(Rnd*6)+1 要使每次執行亂數敘述會產生不同組的亂數, 應在之前加上 Randomize [n] 其中 n 為種子數 ( 範圍 -32768~32767) 可利用 Timer 作為種子數 ( 即寫成 Randomize Timer),Timer 為電腦系統的時間, 故數值會一直變化, 使亂數變化更大 15-66
第 15 章基本程式語言 ( ) 1. 下列 Visual Basic 的 7 行程式執行運算後, 如果要得到下面所列的執行結果, 請問程式第三行空白處應填入哪一個運算式? (A)i+1 (B)Int(i)+1 (C)Abs(i)+1 (D)i Dim i,j As Integer [ 執行結果 ] For i= -4 To 4 ***** For j= 1To **** Print "*"; *** Next j ** Print * Next i ** *** **** ***** 101 統測 VB 6 C ( ) 2. 執行下列 Visual Basic 語言片段程式的結果為何? (A)-18 (B)-19 (C)-21.2 (D)-22 T = 0 FOR P = -9.8 TO 7.7 STEP 3 IF P < 0 THEN T = T + INT(P) END IF NEXT P PRINT T T P INT(P) 0-9.8-10 -10-6.8-7 -17-3.8-4 -21-0.8-1 -22 2.2 98 統測 VB 6 D ( ) 3. 下列何者為給定之 VISUAL BASIC 程式片段執行後的結果? (A)7 (B)8 (C)9 (D)10 99 統測 VB 6 C A = 2 B = 3 S = A ^ B + Abs ( A B ) Print S ( ) 4. 在 Visual Basic 中, 運算式 10.5 \ 3.5 + 2 ^ Fix (2.8) 之結果為何? (A)6 (B)7 (C)10 (D)11 100 統測 A 10.5 \ 3.5 + 2 ^ Fix (2.8) = 10 \ 4 + 2 ^ 2 = 2 + 4= 6 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-67
計算機概論總複習 ( ) 5. 請問下列程式於 Visual Basic 執行運算後, 所得 100 個數值之陳述, 何者正確? (A) 都 是奇數, 且是介於 0 至 12 之間 (B) 都是偶數, 且是介於 0 至 12 之間 (C) 都是奇數, 且是介於 12 至 70 之間 (D) 都是偶數, 且是介於 12 至 70 之間 101 統測 VB6 B Dim i As Integer Int(Rnd*59) 會產生 0~58 之間的整數 For i=1to 100 12 10 =0000000000001100 2 AND 的邏輯運算方式為二者為真才能為真 將 0~58 之間的整數先化成 2 進位之後再與 12 Print(Int(Rnd*59) And 12); Next i 的 2 進位作 AND 運算, 只會產生以下三個整數 : 0000000000000100 2 =4 10 0000000000001000 2 =8 10 0000000000001100 2 =12 10 字串函數 1. 在字串函數中, 無論中英文皆視為一個字元 名稱意義範例 Strings.Left(s, n) Strings.Right(s,n) Mid(s,m,n) Strings.Mid(s,m,n) Len(s) Strings.Len(s) 取字串 s 左邊 n 個字元 若 n 大於 s 的總長度, 則取 s 的全部字元 取字串 s 右邊 n 個字元 若 n 大於 s 的總長度, 則取 s 的全部字元 字串 s 中, 從第 m 個字元開始取 n 個字元 若 n 省略, 則表示從第 m 個字元以後全取 若 n>(s 的總長度 -m+ 1), 則從第 m 個字元以後全取 4 若 n = 0 或 m > s 的總長度, 則得到空字串 取得 s 的字串長度 A = " 球王 Federer" Strings.Left(A,5) = " 球王 Fed" B = " 蠻牛 Nadal" Strings.Left(B,15) = " 蠻牛 Nadal" A = " 球王 Federer " Strings.Right(A,5) = "derer" B = " 蠻牛 Nadal" Strings.Right (B,15) = " 蠻牛 Nadal" A=" 卡卡女神 Lady Gaga " Strings.Mid(A,3,4) = " 女神 La" Strings.Mid(A,3) = " 女神 Lady Gaga" A=" 費德勒 No.1 " Strings.Len(A) =10 ( 代表一個空格 ) 15-68
第 15 章基本程式語言 VB 6.0 大不同 VB 6.0 和 VB 2010 對等的字串函數如下 : VB 2010 函數 VB 6.0 函數 VB 2010 函數 VB 6.0 函數 Strings.Left(s,n) Left(s,n) Mid(s,m,n) Strings.Mid(s,m,n) Mid(s,m,n) Strings.Right(s,n) Right(s,n) Len(s) Strings.Len(s) Len(s) 轉換函數 1. Val(s) 與 Str(X): 此二函數是字串資料與數值資料的轉換 (1) Val(s) 函數 : 將字串 s 轉變成數值資料, 由 s 的第一個字元開始, 向右取數值字元, 若碰到非數值字元則忽略其後字元 例 :Val("B37") = 0 Val("23A5") = 23 Val("35")+Val("12A3") = 47 Val("35"+"12A3") = 3512 (2) Str(X) 函數 : 將數值資料 X 轉變為字串資料, 若 X 為正數, 則第一個字元為空白, 若 X 為負數, 則第一個字元為負號 例 : Str(20) = 20 ( 代表空白 ) Str(-7) = -7 (3) Val(s) 與 Str(X) 二者互為反函數, 例如 :Val(Str(100))=100 2. Asc(s) 與 Chr(X): 此二函數是 ASCII 碼與其相對應字元的轉換 (1) Asc(s) 函數 : 將字串 s 的第一個字母轉換為 ASCII 碼值 例 : Asc("123") = 49 Asc("FOOD") = 70 (2) Chr(X) 函數 : 將數值 X 轉換為相對應的 ASCII 碼字元 例 : Chr(50) = 2 A=90: Chr(A+10) = "d" (3) Asc(s) 與 Chr(X) 二者互為反函數, 例如 :Asc(Chr(65))=65;Chr(Asc("A"))="A" Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-69
計算機概論總複習 ( ) 1. 下列哪一個 Visual Basic 的運算式執行後, 可以獲得 "5 月 1 日 " 的結果? (A)Left("20110501",6)+" 月 "+Left("20110501",8)+" 日 " (B)Mid("20110501",1,6)+" 月 "+Mid("20110501",1,8)+" 日 " (C)Mid("20110501",6,1)+" 月 "+Mid("20110501",8,1)+" 日 " (D)Right("20110501",3)+" 月 "+Right("20110501",1)+" 日 " 100 統測 VB 6 C Left("20110501",6)+" 月 "+Left("20110501",8)+" 日 ", 執行結果為 "201105 月 20110501 日 "; Mid("20110501",1,6)+" 月 "+Mid("20110501",1,8)+" 日 ", 執行結果為 "201105 月 20110501 日 "; Right("20110501",3)+" 月 "+Right("20110501",1)+" 日 ", 執行結果為 "501 月 1 日 " ( ) 2. 在 Visual Basic 中, 下列字串運算的結果為何? Left("access",1)+Choose(3,"i","si","pp","imp")+Right("grill",1)+Mid("next",2,1) (A)"apple" (B)"asign" (C)"sign" (D)"simple" 100 統測 VB 6 A Choose(N, 字串 1, 字串 2, 字串 3 ), 自字串列中取出第 N 個字串 Left("access",1)+Choose(3,"i","si","pp","imp")+Right("grill",1)+Mid("next",2,1) = "a" + "pp" + "l" + "e" = "apple" ( ) 3. 小寫英文字母 "a" 的 ASCII 值為 97, 請問 Asc(Right(Left(Mid("LinsanityIsJeremyNotJerome",4,8),6),2)) 於 Visual Basic 執行運算後, 所得之結果為何? (A)110 (B)115 (C)116 (D)121 101 統測 VB 6 C Asc(Right(Left(Mid("LinsanityIsJeremyNotJerome",4,8),6),2)) =Asc(Right(Left("sanityIs"),6),2))=Asc(Right("sanity",2))=Asc("ty"), 結果為計算 "t" 的 ASCII 值, 即 97+19=116 ( ) 4. 下列 Visual Basic 程式片段執行後, 變數 c 之值為何? (A)1 (B)2 (C)3 (D) 4 Dim s As String="Apocalypse" 102 統測 C Dim t As String="aeiou" Dim d As String Dim c,i,j As Integer For i = 1 To Len(s) d = Mid(s,i,1) j = 1 While j <= Len(t) If Mid(t,j,1) = d Then c = c + 1 Exit While j = j + 1 End While Next i 此程式是在比較變數 s 和變數 t 兩個字串中有幾個相同的英文字母 外圈一次取 s 字串中的一個字母和內圈 t 字串比較, 若有字母相同者, 則變數 c 加 1, 結果有 o a e 三個字母相同, 因此 c=3 15-70
第 15 章基本程式語言 排序 1. 排序的意義 : 將資料由大至小遞減排列, 或由小至大遞增排列 2. 排序的方法 : (1) 內部排序法 : 排序時完全在記憶體內完成, 不須借助外部的輔助記憶體 例如 : 氣泡排序法 (2) 外部排序法 : 排序時需利用輔助記憶體, 故處理速度較慢, 適用於資料量大時 3. 氣泡排序法 (1) 採相鄰兩資料比較方式 (2) 若有 N 個數, 須比較 N-1 回合, 比較次數為 N (N-1)/2 次 比較次數 :(N-1)+(N-2)+ +1 = N (N-1)/2 例 : 將 7,4,8,3 四數由小到大排序 : 1 2 Dim A(4) As Integer A(1)=7: A(2)=4: A(3)=8: A(4)=3 執行結果 3 4 7 8 3 4 5 6 7 8 9 10 For I=1 To 3 For J=1 To 4-I If A(J)>A(J+1) Then T=A(J):A(J)=A(J+1): A(J+1)=T Next J Next I For I=1 To 4 Console.Write("{0} ", A(I)) Next I 說明 : 第 1~2 列程式 : 將資料讀入陣列中 第 3~7 列程式 : 氣泡排序法 第 8~10 列程式 : 將排序好的資料印出來 此例為由小至大排序, 若要改成由大至小排序, 則更改第 5 列如下 : If A(J) < A(J+1) Then T=A(J): A(J)=A(J+1): A(J+1)=T, 即 A(J) 和 A(J+1) 的資料交 換 此例比較次數為 4 3/2=6 次 此例交換次數為 4 次, 即第 5 列中的 T=A(J): A(J)=A(J+1): A(J+1)=T 敘述共執行 4 次 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-71
計算機概論總複習 * 程式 3~7 列執行過程 : 外層迴圈 內層迴圈 J=1 資料排列情形 A(1) A(2) A(3) A(4) 7 4 8 3 是否交換 是 程式說明 I=1 J=2 J=3 4 7 8 3 4 7 8 3 否 是 外層迴圈 I=1 的最後可得到 A(4)=8, 即最大值 8 已排入正確位置 第一循環結果 4 7 3 8 J=1 4 7 3 8 否 I=2 J=2 4 7 3 8 是 第二循環結果 4 3 7 8 I=3 J=1 4 3 7 8 是 第三循環結果 3 4 7 8 外層迴圈 I=2 的最後可得到 A(3)=7, 即第二大值 7 已排入正確位置 外層迴圈 I=3 的最後可得到 A(2)=4, 即第三大值 4 已排入正確位置 ( ) 1. 將欲排序的資料全部載到主記憶體中進行排序的方法稱為 : (A) 外置排序 (B) 中置排序 (C) 外部排序 (D) 內部排序 統測 D ( ) 2. 利用氣泡排序法, 將以下數列資料 30,50,20,60,40 依遞減順序排列, 請問在第一次循環結束後, 此數列應是下列那一個? (A)30,50,60,40,20 (B)50,30,60,40,20 (C)20,30,40,50,60 (D)30,40,50,60,20 統測 B ( ) 3. 利用氣泡排序法將以下資料 :W X Y Z 由大至小排列, 需要幾次比較? (A)0 (B)3 (C)5 (D)6 統測 D ( ) 4. 下列這段 BASIC 程式碼將變數 A 與 B 的數值依據大小重新調整, 把較大的數存放到變數 A, 較小的數存放到變數 B, 則空格中應填入的程式碼為何? (A)B=H (B)A=B (C)H=A (D)H=B 96 統測 D If B > A Then B = A A = H 15-72
第 15 章基本程式語言 ( ) 5. 下列 Visual Basic 程式片段執行後, 若將陣列 A 之值由 A(0) 至 A(3) 列出, 並以逗點分隔各元素, 其結果為何? (A)1,3,5,8 (B)3,1,5,8 (C)8,5,3,1 (D)8,1,5,3 102 統測 A Dim A() As Integer ={8,1,5,3} Dim tmp As Integer For i = 1 To 3 For j = 0 To (3-i) If A(j)>A(j+1) Then tmp = A(j) A(j) = A(j+1) A(j+1) = tmp Next j Next i 此為氣泡排序法程式, 當 A(j)>A(j+1) 時,A(j) 和 A(j+1) 的資料要交換, 亦即 A(j) 會比 A(j+1) 小, 結果為由小到大的遞增排序 搜尋 1. 搜尋的意義 : 在一組資料中, 根據條件找出所需的特定資料 2. 搜尋的方法 : 循序搜尋法 二分搜尋法 3. 循序搜尋法 (1) 資料不需要事先排序 從第一筆資料開始, 一筆一筆往下尋找, 若找到則印出資料所在陣列中的位置 ; 若未找到則印出 " 沒找到 " (2) 若有 N 筆資料, 尋找次數最多為 N 次, 最少 1 次, 平均為 (N+1)/2 次 例 : 從一組資料 ( 此例為 5,10,3,9,7,12,8) 中, 利用循序搜尋法找出所查詢數字的位置 Dim A(7) As Integer A(1)=5: A(2)=10: A(3)=3: A(4)=9 A(5)=7: A(6)=12: A(7)=8 X=InputBox (" 請輸入欲查詢的數?") For I=1 To 7 If A(I)=X Then MsgBox(" 所查詢的數註標值為 :" & I ) End Next I MsgBox (" 沒找到 ") 執行結果 1: 請輸入欲查詢的數?12 所查詢的數註標值為 :6 執行結果 2: 請輸入欲查詢的數?6 沒找到 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-73
計算機概論總複習 4. 二分搜尋法 (1) 資料需事先排序 ( 由小到大或由大到小均可 ) (2) 搜尋的方式 ( 此例假設資料是由小到大排序 ): 將欲查詢的資料與一組資料中的中間值做比較 若查詢的資料 = 中間值, 則印出其在陣列中的位置, 程式即可結束 若查詢的資料 > 中間值, 則表示資料的左半部必須放棄 若查詢的資料 < 中間值, 則表示資料的右半部必須放棄 重複以上步驟, 若資料已無法分成左右兩半, 則表示資料不在陣列中, 印出 " 沒找到 ", 程式結束 (3) 若有 N 筆資料, 比較次數最少 1 次, 最多 (log 2 N)+1 次 (X=log 2 N, 即 2 X =N) 例 : 從一組資料 ( 此例為 3,5,7,8,9,10,12) 中, 利用二分搜尋法找出所查詢數字的位置 Dim A(7) As Integer 執行結果 1: A(1)=3: A(2)=5: A(3)=7: A(4)=8 請輸入欲查詢的數?7 A(5)=9: A(6)=10: A(7)=12 所查詢的數註標值為 :3 X=InputBox (" 請輸入欲查詢的數?") L=1:U=7 Do 執行結果 2: M=Int((L+U)/2) 請輸入欲查詢的數?11 If X = A(M) Then 沒找到 MsgBox (" 所查詢的數註標值為 :" & M ) End If X>A(M) Then L=M+1 If X<A(M) Then U=M-1 If L>U Then MsgBox (" 沒找到 ") End Loop 說明 : 各變數所代表的意義 : L: 搜尋範圍內, 最左邊陣列元素之註標值 U: 搜尋範圍內, 最右邊陣列元素之註標值 M: 搜尋範圍內, 中間陣列元素之註標值 M=Int((L+U)/2) 最多比較次數為 log 2 N 次, 所以為 log 2 7=2.807 次, 取整數為 3 次 15-74
第 15 章基本程式語言 * 執行過程 : 尋找 7 比較次數 1 2 3 資料搜尋情形 A(1) A(2) A(3) A(4) A(5) A(6) A(7) 3 5 7 8 9 10 12 L M U 3 5 7 8 9 10 12 L M U 3 5 7 8 9 10 12 L M U 說明 第 1 次比較的值為 8, 因為 7<8, 所以右半部放棄搜尋 ;U=M-1 第 2 次比較的值為 5, 因為 7>5, 所以左半部放棄搜尋 ;L=M+1 第 3 次比較的值為 7, 因為 7=7, 故得知所查尋的數其陣列註標為 3 尋找 11 比較次數 1 2 3 資料搜尋情形 A(1) A(2) A(3) A(4) A(5) A(6) A(7) 3 5 7 8 9 10 12 L M U 3 5 7 8 9 10 12 L M U 3 5 7 8 9 10 12 L M U 說明 第 1 次比較的值為 8, 因為 11>8, 所以左半部放棄搜尋 ;L=M+1 第 2 次比較的值為 10, 因為 11>10, 所以左半部放棄搜尋 ; L=M+1 第 3 次比較的值為 12, 因為 11<12, 所以 U=M-1; 此時 L>U, 表示已找不到 11 ( ) 1. 一組 10 個已排序的數值資料, 若用二元搜尋法找其中某一個特定值, 至多需要比對幾次 即可找到? (A)3 (B)4 (C)5 (D)9 101 統測 B ( ) 2. 二元搜尋法在搜尋升冪排序過後的資料時, 是將所欲搜尋的數值與資料中的哪一個元素進行 比較? (A) 任意一個 (B) 第一個 (C) 最後一個 (D) 最中間的 96 統測 D Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-75
計算機概論總複習 ( ) 3. 對下列 7 筆已排序的資料 ( 2, 13, 27, 32, 44, 58, 67 ), 以二元搜尋法找尋關鍵值為 58 的資料, 總共要作幾次比較? (A)2 (B)3 (C)4 (D)6 95 統測 A ( ) 4. 有一整數陣列, 內含 9 個已排序的整數, 假設給予一搜尋值 a, 並利用二元搜尋法找出搜尋值 a, 請問在最壞的情況下, 必須要對此陣列進行幾次搜尋, 才能知道搜尋值 a 是否存在陣列中? (A)1 次 (B)3 次 (C)4 次 (D)9 次 統測 C ( ) 5. 有關二分搜尋法 (Binary Search) 之陳述, 下列何者錯誤? (A) 使用二分搜尋法前需要將資料排序 (B) 搜尋 1000 筆資料, 最多只需 10 次搜尋即可尋得資料 (C) 搜尋效率比循序搜尋法 (Sequential Search) 佳 (D) 搜尋方式是由第一筆資料開始, 依序逐項比較 D ( ) 1. 建民的公司要幫鄉公所建立一個查詢鄉內各戶籍地址的戶長姓名, 據了解, 該鄉的戶籍地址共 23,560 筆, 程式內要儲存所有戶籍地址及各相關戶長姓名, 以便查詢功能的程式片段能寫成指令敘述, 請問應該使用下列哪一種方式較合適? (A) 宣告 47,120 個字串變數, 例如 :A00001 A00002 A23560 等變數存放各戶籍地址,B00001 B00002 B23560 等變數存放各戶長姓名 (B) 用二維陣列儲存戶籍地址及戶長姓名, 並使用字串型別 (C) 宣告 23,560 個字串變數及一個一維陣列, 字串變數用來存放各戶籍地址, 陣列用來存放戶長姓名 (D) 宣告一個一維陣列, 陣列用來存放各戶籍地址, 再設計一個字串轉換的公式, 以便輸入戶籍地址就可直接計算求得各相應的戶長姓名 ( ) 2. 執行下列 VB 程式片段後, 請問陣列 A(4,3) 的結果為何? (A)4 (B)2 (C)3 (D)0 Dim A( 5, 5 ) As Integer Dim I, J As Integer For I = 0 to 5 For J = 0 to 5 If ( I > J ) Then A( I, J ) = A( I 1, J ) ElseIf ( I < J ) Then A( I, J ) = I Else A( I, J ) = J Next J Next I 15-76
第 15 章基本程式語言 ( ) 3. VB 程式語言中,Dim ARRAY1(3,4) 宣告 ARRAY1 陣列是一個二維陣列, 它包含幾個元素? (A)2 (B)7 (C)12 (D)20 ( ) 4. 下列何者可處理二維的一系列相同資料型態 (data type) 之資料? (A) 字元 (character) (B) 位元 (bit) (C) 陣列 (array) (D) 資料欄 (data field) ( ) 5. 執行下面 VB 程式後,A(5) 的輸出結果為何? (A)11 (B)15 (C)10 (D)21 Dim A(5) A(1)=1 For N=2 To 5 A(N)= A (N-1)+ (N-1) Next N ( ) 6. 執行下面 VB 程式後,B( 2, 3 )* B( 3, 2 ) 的輸出結果為何? (A)12 (B)36 (C)48 (D)99 K=3 Dim B(K, K) For I = 1 To K For J = 1 To K B(I, J) = K * ( I 1)+J Next J Next I ( ) 7. 執行下面 VB 程式後,A(3)+A(6)+A(9) 的輸出結果為何? (A)0 (B)1 (C)3 (D)6 Dim A(10) Sum = 0 For I = 1 To 10 Sum = Sum * I A(I) = Sum Next I 第 8 至第 12 題請參考下列情境後回答問題 : 怡利想設計一個計算 40 個分公司一個年度 4 季的營業資料的 Visual Basic 程式, 動作要求及部分程式碼如下 : 需要寫一個檢驗輸入營業額是否正確的程式, 輸入的範圍需介於 0~9,999,999 之間 需要寫一個程式計算各分公司的營業額總和, 及各分公司的平均季營業額 ' 以下程式片段是讀入輸入的數據並檢查輸入是否正確 Sub Main() : Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-77
計算機概論總複習 Dim n As Integer Do n = Console.ReadLine Loop (1) test(n) : End Sub Function test(byval x As Integer) As (2) If x >= 0 (3) x <10^7 Then test = True Else test = False End Function ' 以下程式片段是計算分公司的營業額總和, 及平均季營業額 Sub Main() : Dim a(40), b(40), d(40, 4) As Integer Dim i As Integer For i = 1 To 40 Call Compute(a(i), b(i), d(i, 1), d(i, 2), d(i, 3), d(i, 4)) Console.WriteLine(" 營業額總和 ={0}, 季平均 ={1}", a(i), b(i)) Next : End Sub Sub Compute( (4) total, (5) avg, (6) d1, (7) d2, (8) d3, (9) d4) total = d1 + d2 + d3 + d4 avg = total / 4 End Sub ( ) 8. 程式片段中的空格 (1) 應填入哪一個保留字? (A)Until (B)While (C)Not (D)Case ( ) 9. 程式片段中的空格 (2) 應填入哪一個保留字? (A)Boolean (B)Integer (C)Single (D)String ( ) 10. 程式片段中的空格 (4) (5) 應填入哪一個保留字? (A)ByVal (B)Integer (C)Object (D)ByRef ( ) 11. 程式片段中的空格 (6) (7) (8) (9) 應填入哪一個保留字? (A)ByVal (B)Each (C)ByObject (D)By ( ) 12. 程式片段中的空格 (3) 應填入哪一個運算子? (A)And (B)Or (C)Xor (D)+ ( ) 13. Visual Basic 的程式是以副程式來模組化, 下列何者為可傳回值之副程式? (A)Sub 程序 (B)Function 程序 (C)Property 程序 (D)Private 程序 15-78
第 15 章基本程式語言 ( ) 14. Visual Basic 下列有關 Function 程序的敘述何者正確? (A) 呼叫 Function 程序的方式如 : 變數名稱 = 函數名稱 ([ 引數串列 ]) (B)Function 程序的參數傳遞方法與 Sub 程序是不同的 (C) 函數名稱的命名規則同變數名稱, 後面用 As 宣告該函數名稱的資料形態皆為物件型態 (Object) (D) 執行完 Function 程序後不是將結果傳回給函數程序等號左邊的變數 ( ) 15. 在 Visual Basic 作業環境中, 使用 Strings.Left(x,n) 功能相當於使用下列何者? (A)Strings.Mid(x,Strings.Len(x)-n+1) (B)Strings.Mid(x,1,n) (C)Strings.Mid(x,n,1) (D)Strings.Right(x,Strings.Len(x)-n+1) ( ) 16. 在 Visual Basic 中,Console.Write(Strings.Len(Strings.Mid("Civilization",7))) 之結果為 : (A)2 (B)6 (C)7 (D)3 ( ) 17. 下面 Visual Basic 程式, 變數 B 的執行結果為何? (A)TAIWAN (B)NAWIAT (C)ANWATI (D)TIAWNA Dim A, B, C As String Dim L, K As Integer A="TAIWAN" : B="" L= Strings.Len(A) : K=1 While K<=L C= Strings.Mid(A,L-K+1,1) B=B+C : K=K+1 End While ( ) 18. 關於 VB 下列哪一個敘述是不正確的? (A) 計算 Math.Truncate(Math.Sqrt(50)) 可得 7 (B) 條件式 Math.Truncate(50) = Math.Floor(50) 可得 True (C)Math.Sign(Math.Abs(n)) 算式的 n, 不論輸入何數值, 都會得 1 (D) 計算 Math.Round(Fix(n)) 和 Fix(n) 兩者的運算結果不一定會相同 ( ) 19. 執行下列 Visual Basic 敘述 Console.Write("{0}, {1}", Fix(2.9), Int(2.9)) 其結果為 : (A)3, 3 (B)3, 2 (C)2, 3 (D)2, 2 ( ) 20. 執行下列 Visual Basic 程式, 螢幕上顯示的值是多少? (A)3.14 (B)3.14159 (C)3.1416 (D)3.142 N=3.14159 MsgBox(Int(N*1000+0.5)/1000) ( ) 21. 執行下列 Visual Basic 程式之結果, 不可能出現的數值是? (A)101 (B)86 (C)75 (D)32 Randomize() For I=1 To 10 Console.Write(Int(100*Rnd()+1)) Next Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-79
計算機概論總複習 ( ) 22. 在 VB 中的 Math.Sqrt(Math.Abs(n)),n 不論輸入何數值, 必會與下列哪一個算式相同? (A)Math.Sqrt(Math.Sign(n)*n) (B)n^0.5 (C)Int(n^(1/2)) (D)Math.Sqrt(Math.Floor(n)) ( ) 23. 在 VB 程式語言中, 運算式 10+(Int(27/6)*8) Mod 5 之執行結果為何? (A)6 (B)8 (C)10 (D)12 ( ) 24. 阿文和同學玩終極密碼遊戲, 數字範圍為 1~100, 如果答案是 21, 請問如果阿文用二分搜尋法, 最多猜幾次會猜中? (A)4 (B)6 (C)8 (D)10 ( ) 25. 先將 129 筆資料排序, 再使用二分搜尋法 (binary search) 去搜尋某一資料時, 至多需搜尋多少次即可找到該筆資料? (A)7 次 (B)6 次 (C)8 次 (D)5 次 ( ) 26. 二元搜尋 (binary search) 最適合於下列何種資料? (A) 已排序 (ordered) 且為循序存取 (sequential access) (B) 已排序且為隨機存取 (random access) (C) 未排序且為循序存取 (D) 未排序且為隨機存取 ( ) 27. 下列 VB 程式為泡沫 (Bubble) 排序法, 若排序方式是由小到大時, 則程式中 (1) 處應填入? (A)T=A(I) : A(I)=A(I-1) : A(I-1)=T (B)T=A(I) : A(I)=A(I+1) : A(I+1)=T (C)T=A(J):A(J)=A(J-1):A(J-1)=T (D) T=A(J):A(J)=A(J+1):A(J+1)=T For I = 1 To 5 A(I)=InputBox("A 陣列元素值 :") Next I For I = 1 To 4 For J = 1 To 5-I If A(J) > A(J+1) Then (1) Next J Next I ( ) 28. 執行下列 VB 程式,A(1)~A(5) 的執行結果為何? (A)5 8 15 20 35 (B)35 20 15 8 5 (C)20 15 35 8 5 (D)15 20 5 8 35 Dim A(5) A(1) = 15: A(2) = 8: A(3) = 5: A(4) = 20: A(5) = 35 For X = 4 To 1 Step -1 For Y = 1 To X If A(Y) < A(Y+1) Then B = A(Y): A(Y) = A(Y+1): A(Y+1) = B Next Next ( ) 1. 執行下列程式片段後,K 值為何? (A)1 (B)5 (C)15 (D)120 統測 VB6 Private Sub Form_Activate( ) Rem Main Program K=Game(5) 15-80
第 15 章基本程式語言 Print K End Sub Function Game(X) If (X>1) Then Game=X *Game(X-1) Else Game=1 End Function ( ) 2. 下列關於程式設計或程式語言的敘述, 何者正確? (A) 浮點數 (floating point) 型態的變數不一定能夠精確地儲存所有數字 (B) 電腦運算能力愈來愈強, 演算法的效率已不再重要 (C) 程式設計師不應該使用程式語言的內建函數 (built-in function), 因為其他人所撰寫的程式不值得信賴 (D)Goto 敘述能夠精確地控制程式流程, 應該多多使用 統測 ( ) 3. 當程式設計師在撰寫一個 計算班級平均成績 的程式時, 下列哪一項通常不會被用到? (A) 迴圈 (B) 隨機函數 (C) 陣列 (D) 輸入 / 輸出 統測 ( ) 4. 在 VB 程式中,Rnd (1) 可產生一亂數 (0 Rnd(1) < 1), 下列何者可產生一個介於 10 和 20 範圍之間 ( 含 10 和 20) 的整數? (A)10+Int(11*Rnd(1)) (B)10+Int(10*Rnd(1)) (C)10+Int(21*Rnd(1)) (D)10+Int(20*Rnd(1)) 統測 VB6 ( ) 5. 利用氣泡排序法排列 N 筆資料的順序, 最多做幾次的排序循環? (A)N / 2 次 (B)N 次 (C)N 1 次 (D) N + 1 次 統測 ( ) 6. 給定 10 個大小隨機排列的正整數, 如果要以泡沬排序的方式, 由小而大排, 在程式設計上使用巢狀 For Next 處理, 請問至少要使用幾層巢狀 For Next? (A)10 (B)9 (C)2 (D)1 統測 ( ) 7. 對五筆已排序的資料 (1, 2, 3, 4, 5), 以循序搜尋法找尋關鍵值為 5 的資料, 需要找尋幾次? (A)2 (B)5 (C)4 (D)3 統測 ( ) 8. 利用循序搜尋法, 找尋某一筆已知存在陣列 ( 有 15 筆資料 ) 中的資料, 最好的情況要作比較次數與最壞的情況要作比較次數的平均為 : (A)8 (B)7 (C)15 (D)2 統測 ( ) 9. 在 3000 筆已由大至小排序好的資料中, 用二元搜尋法 (Binary Search) 搜尋某一筆特定資料 ( 假定資料存在 ), 最多需要比較幾次可以搜尋到該筆資料? (A)12 (B)16 (C)20 (D)30 統測 ( ) 10. 執行下列 Visual Basic 程式片段後, 輸出的結果為何? (A)15 (B)20 (C)25 (D)30 Private Sub Form_Activate ( ) Dim A(4) For i = 1 To 4 If ( i Mod 2 < > 0 )Then A(i) = i ^ 2 1 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-81
計算機概論總複習 Else A(i) = i ^ 2 + 1 Next i Print A(4)+A(3) A(2) End Sub 95 統測 VB6 ( ) 11. 執行下列 Visual Basic 語言片段程式的結果為何? (A)3 (B)4 (C)5 (D)6 Dim A(4) as integer A(1) = 0 For K = 2 to 4 If K Mod 2 = 1 Then A(K) = A(K-1)+1 Else A(K) = A(K-1)+2 Next K Print A(4) 95 統測 VB6 ( ) 12. 執行下列 Visual Basic 語言片段程式的結果為何? (A)3 (B)4 (C)5 (D)6 Dim A(4) as integer A(1) = 0 For K = 2 to 4 If K Mod 2 = 1 Then A(K) = A(K-1)+1 Else A(K) = A(K-1)+2 Next K Print A(4) 95 統測 VB6 ( ) 13. 若宣告 A B 與 C 皆為變數, 且 A B 下列演算法中, 何者可將 A 與 B 的值互換? (A)A=B: B=A (B)C=A:B=A:A=C (C)C=A:A=B:B=C (D)B=A:A=C:C=B 95 統測 ( ) 14. 執行下列 Visual Basic 語言片段程式的結果為何? (A)4 (B)5 (C)7 (D)8 Dim A(5)as integer A(1)= 0 A(2)= 1 For K = 3 to 5 A(K)= K + A(K 1) A(K 2) Next K Print A(5) 96 統測 VB6 15-82
第 15 章基本程式語言 ( ) 15. 若陣列 A 之內容如圖, 執行 Print A(A(2)+1) + 1 指令後答案為何? (A)1 (B)2 (C)3 (D)4 96 統測 VB 6 ( ) 16. 在 Visual Basic 中執行 Print Right(Left("ABCDE",3),2) 其結果為何? (A)BC (B)CD (C)DE (D)CDE 98 統測 VB 6 A ( ) 17. 下列何者為給定之 Visual Basic 程式語言函數執行後的結果? (A)2 (B)4 (C)6 (D)8 99 統測 VB6 B Print Len(" 中華民國 ") ( ) 18. 下列何者為給定之 Visual Basic 程式語言函數執行後的結果? (A)3 (B)4 (C)-3 (D)-4 Print Int(-3.6) 99 統測 VB6 1. B 2. C 3. D 4. C 5. A 6. C 7. A 8. B 9. A 10. D 11. A 12. A 13. B 14. A 15. B 16. B 17. B 18. C 19. D 20. D 21. A 22. A 23. D 24. B 25. C 26. B 27. D 28. B 1. D 2. A 3. B 4. A 5. C 6. C 7. B 8. A 9. A 10. B 11. C 12.C 13.C 14. D 15. D 16.A 17. B 18. D 3. DIM ARRAY1(3,4), 陣列元素個數為 (3+1) * (4+1) = 4 * 5 = 20 個 5. A(5)=A(4)+4=A(3)+3+4=A(2)+2+3+4=A(1)+1+2+3+4=1+1+2+3+4=11 6. B(2,3) * B(3,2) = (3*(2-1)+3) * (3*(3-1)+2) = 6 * 8 = 48 7. 第一次迴圈 Sum 是以 0 乘以 I 值, 必為 0, 所以陣列的每一個元素都是 0 A(3)+A(6)+A(9)=0+0+0=0 15. 以實例代入比對 : 如設 x = "ABCDE",n=3, 則 Strings.Left(x,3) = "ABC" (A)Strings.Mid(x,Strings.Len(x)-n+1) = Strings.Mid(x,5-3+1) = Strings.Mid(x,3) = "CDE" (B)Strings.Mid(x,1,3) = "ABC" (C)Strings.Mid(x,3,1) = "C" (D)Strings.Right(x,Strings.Len(x)-n+1) = "CDE" 16. Strings.Len(Strings.Mid("Civilization",7) = Strings.Len("zation") = 6 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-83
計算機概論總複習 17. A = "TAIWAN";L = Strings.Len(A) = 6 K C = Strings.Mid(A,L-K+1) B = B + C 1 Strings.Mid(A,6-1+1,1) = "N" N 2 Strings.Mid(A,6-2+1,1) = "A" NA 3 Strings.Mid(A,6-3+1,1) = "W" NAW 4 Strings.Mid(A,6-4+1,1) = "I" NAWI 5 Strings.Mid(A,6-5+1,1) = "A" NAWIA 6 Strings.Mid(A,6-6+1,1) = "T" NAWIAT 20. N = 3.14159 Int(N*1000+0.5)/1000 表示四捨五入取至小數第三位, 故為 3.142 21. Int(100*Rnd()+1) 範圍 :1~100 1. Game(5), 先求 5*Game(4) Game(4), 先求 4*Game(3) Game(3), 先求 3*Game(2) Game(2), 先求 2*Game(1) 但 Game(1)=1, 所以 Game(2)=2*1 Game(3)=3*2*1 Game(4)=4*3*2*1 Game(5)=5*4*3*2*1=120 11. 12. K A(K)=A(K)-1 K A(K)=A(K-1) 2 A(2)=A(2-1)+2=2 3 A(3)=A(2)+1=3 4 A(4)=A(3)+2=5 2 A(2)=A(2-1)+2=2 3 A(3)=A(2)+1=3 4 A(4)=A(3)+2=5 14. K A(K) 3 A(3)=3+A(2)-A(1)=4 4 A(4)=4+A(3)-A(2)=7 5 A(5)=5+A(4)-A(3)=8 15. 先求 A(2)=0; 再求 A(A(2)+1)+1=A(0+1)+1=A(1)+1=3+1=4 16. Left(X$,N) 為取字串 X$ 左邊 N 個字元 ;Right(X$,N) 為取字串 X$ 右邊 N 個字元 Right(Left("ABCDE",3),2) = Right("ABC",2) = "BC" 15-84
第 15 章基本程式語言 第 1 至 5 題請參考下列情境後回答問題 : 英櫻經常熱心地幫辦公室的 16 位同事訂午茶點心, 餐點的品項有波霸珍奶 綜合果汁 香雞排 焦糖蛋塔等 4 項, 她想用 VB 寫一個小程式處理這項經常性的事務 她使用的表格有 3 個, 表格 A 是記錄每個人的午茶費用, 表格 B 是記錄各午茶點心的品名及單價, 表格 C 是記錄每個人點的午茶點心的項目, 如下列 : 表格 A 每個人的費用 表格 B 品名及單價 表格 C 每個人訂的項目 1 65 波霸珍奶 35 波霸珍奶綜合果汁香雞排焦糖蛋塔 2 85 綜合果汁 45 1 3 75 香雞排 40 2 焦糖蛋塔 30 3 16 65 波霸珍奶 35 16 她設計的 Visual Basic 部分程式使用 3 個陣列 A, B, C 來代表這 3 個表格, 宣告敘述如下 : Dim A(16) As Integer Dim B(4,2) As Dim C(16,4) As Boolean ( ) 1. 在宣告 B 陣列的敘述中, 資料型別應使用哪一個, 才能順利執行下列敘述? (A)Integer (B)Char (C)String (D)Object B(1,1)= " 波霸珍奶 ":B(1,2)=35 B(2,1)= " 綜合果汁 ":B(2,2)=45 B(3,1)= " 香雞排 ":B(3,2)=40 B(4,1)= " 焦糖蛋塔 ":B(4,2)=30 ( ) 2. 下列的程式片段是用來建立 C 陣列的內容,Console.Write 敘述是詢問編號 i 的同仁是否要訂購某項午茶點心, 若輸入 "Y" 代表要訂 (True),"N" 代表不要訂 (False) 請問兩處的空格應填入? (A)C(i,j)=True 及 C(i,j)=False (B)C(j)=True 及 C(j)=False (C)C(i+1,j+1)= "Y" 及 C(i+1,j+1)= "N" (D)C(i,1)=B(j,1) 及 C(i,2)=B(j,2) Dim i,j As Integer Dim YN As String For i = 1 to 16 For j= 1 to 4 Console.Write("{0} 號同仁要訂 {1}?(Y/N) ", i, B(j,1)) YN= Console.ReadLine() Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-85
計算機概論總複習 If YN="Y" Then (1) Else (2) Next Next ( ) 3. 若已依大家訂購的狀況建好了 C 陣列, 接下來是計算每一個人應繳的費用, 如下列程式片段, 空格應填入? (A)A(i) = A(i) + C(i, j) (B)A(i) = B(j, 2) (C)A(i) = A(i) + B(j, 2) (D)A(i) = B(j, 1) & B(j, 2) For i = 1 To 16 For j = 1 To 4 If C(i, j) = True Then (1) Next Next ( ) 4. 下列的程式要依建好的 C 陣列印出每個人訂購物品的清單, 空格應填入? (A)Console.Write(C(i,j)) (B)Console.Write(B(j,2)) (C)Console.Write(C(j,2)+A(i)) (D)Console.Write(B(j,1)) For i = 1 To 16 Console.Write("{0} 號同仁訂了 :", i) For j = 1 To 4 If C(i, j) = True Then (1) Next Console.WriteLine() Next ( ) 5. 下列的程式要計算出辦公室同仁這回訂購的總費用, 存於 total 變數內, 空格應填入? (A)total = total + C(i,1) (B)total = total + B(i,2) (C)total = total + A(i) (D)total = total + A(i) + B(i,2) + C(i,1) Dim total As Integer For i = 1 To 16 (1) Next 15-86
第 15 章基本程式語言 第 6 至 10 題請參考下列情境後回答問題 : 小蝶想設計一個自動斷句的 Visual Basic 程式, 把輸入是一長串帶有逗點及句點的詩詞歌 賦, 分成一句一行的顯示, 如下所示 輸入 簾外雨潺潺, 春意闌珊, 羅衾不耐五更寒 夢裡不知身是客, 一晌貪歡 獨自莫憑欄, 無限江山, 別時容易見時難 流水落花春去也, 天上人間 輸出簾外雨潺潺, 春意闌珊, 羅衾不耐五更寒 夢裡不知身是客, 一晌貪歡 獨自莫憑欄, 無限江山, 別時容易見時難 流水落花春去也, 天上人間 她設計的方法是 : 將輸入字串逐字與斷句的符號比較, 即,, 當條件成立就擷取出一句, 以輸出到螢幕 比較從輸入字串的第一個字到最後一個字 她設計的程式碼如下列 : Sub Main() Dim c, s, ss As (1) Dim i, p As (2) ss = Console.ReadLine() p = 1 For i = 1 To (3) c = Mid(ss, i, 1) If (4) Then s = (5) p = i + 1 Console.WriteLine(s) Next End Sub ( ) 6. 程式中的第 (1) 個空格應填入下列哪一個敘述才會正確? (A)Single (B)Byte (C)String (D)Double ( ) 7. 程式中的第 (2) 個空格應填入下列哪一個敘述才會正確? (A)Integer (B)Random (C)String (D)Label Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-87
計算機概論總複習 ( ) 8. 程式中的第 (3) 個空格應填入下列哪一個敘述才會正確? (A)Len(ss) (B)p (C)Mid(ss,1) (D)Strings.Left(ss) ( ) 9. 程式中的第 (4) 個空格應填入下列哪一個敘述才會正確? (A)Not (c = "," Or c = " ") (B)c = "," Or c = " " (C)c = "," And c = " " (D)Not c = "," And c = " " ( ) 10. 程式中的第 (5) 個空格應填入下列哪一個敘述才會正確? (A)Strings.Left(ss, i) (B)Strings.Right(ss, Len(ss) - i) (C)Strings.Right(Strings.Left(ss, i), p) (D)Mid(ss, p, i - p + 1) ( ) 11. 關於程式語言的發展與種類, 下列敘述何者正確? (A)Visual Basic 是屬於高階語言, 容易編寫且執行效率比低階語言高 (B) 組合語言是低階語言, 不需經過翻譯即能執行 (C)C 語言具有物件導向的特性, 常被用來開發作業系統 (D) 物件導向程式的繼承特性, 可以讓設計者藉由既有的類別衍生出具有相同屬性與方法的子類別 ( ) 12. 下列有關 VB 2010 的變數與資料型態的敘述, 何者有誤? (A)NewYear_1 是合於規則的變數名稱 (B) 若在宣告中沒有提供資料型態, 則會設定變數資料型態為 Object (C)Dim A As Integer=2, 可以將 A 宣告為儲存值為 2 的常數 (D) 若變數值有可能為負數時, 不可將此變數宣告為 Byte 資料型態 ( ) 13. 代數式 X 2 B 4A C = 以 VB 語言來表示, 下列何者正確? 2A (A)X=SQL(B^2-4*A*C)/2*A (B)X=(B^2-4*A*C)^.5/2/A (C)X=(B^2-4.A.C) ^.5/2.A (D)X=(B 2-4*A*C)^0.5/2/A ( ) 14. 下列 VB 2010 運算式中, 何者的結果為 False? (A)40 Mod 8.5 = 20.5 \ 3 (B)"VB2010" < "vb6" (C)2^3 < 3^2 Or "LO" & "VE" = "Love" And 7 Mod 3 <>0 (D)3>1 AndAlso 5>7 AndAlso 8<10 ( ) 15. 下列何者為 VB 2010 所產生的專案檔? (A)p11.vbproj (B)p11.vbp (C)p11.frm (D)p11.sln ( ) 16. 下列對於結構化程式設計的敘述, 何者正確? (A) 可分解成多個模組, 各自負責一件獨立的工作 (B) 關聯結構是其中一種控制結構 (C)Do Loop 是屬於循序結構的一種 (D) 可以有多個入口, 但只能有一個出口 ( ) 17. 要以流程圖表示下述 Visual Basic 程式, 則第 3 列的敘述用哪個流程圖符號表示較合適? (A) (B) (C) (D) 1 A=5:B=8 2 C=A+B 3 MsgBox ("C=" & C) 15-88
第 15 章基本程式語言 ( ) 18. 執行下列 Visual Basic 程式後, 螢幕上顯示之結果是何值? (A)435 (B)354 (C)534 (D)345 A=3 : B=4 : C=5 If A < B Then T=A : A=B : B=T MsgBox (A & B & C) ( ) 19. 下列 Visual Basic 程式執行後 B 值為何? (A)20 (B)30 (C)40 (D)25 A = 10 : B = 20 If A < 5 Then B = B + 5 ElseIf A < 10 Then B = B + 10 Else B =B + 20 ( ) 20. 下列 VB 程式的執行結果, 變數 S 的值為何? (A)2500 (B)1275 (C)1325 (D)1225 S=0 : X=1 Do While X<50 S=S+X X=X+1 Loop ( ) 21. 下列 VB 程式執行後 S 值為何? (A)10 (B)20 (C)30 (D)40 S=10 For I=10 To -10 Step -5 If I>=0 Then S=S+I Else S=S-I Next I ( ) 22. 在 VB 程式中, 若使用 Select Case 敘述, 則下列哪一個 Case 子句用法是錯誤的? (A)Case Is>20 And <30 (B)Case Is >20 (C)Case 5,10, Is>20 (D)Case 20 To 30 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-89
計算機概論總複習 ( ) 23. 下述 Visual Basic 程式執行後 S 值為何? (A)4 (B)8 (C)15 (D)25 A=1 : B=1 :S = 0 Do Do Until B>3 S = S + B B = B + 2 Loop A = A + 3 S = S + A Loop Until A>8 ( ) 24. 下列 Visual Basic 程式執行後會在螢幕上顯示幾個 "$" 符號? (A)15 (B)20 (C)24 (D)100 For I = 1 To 10 Step 3 For J = 20 To 10 Step -2 Console.Write("$") Next Next ( ) 25. 下列 VB 程式執行時, 若輸入 A B 值分別為 1 2, 則執行結果輸出為何? (A)A=-1, B=2 (B)A=1, B=2 (C)A=-2, B=1 (D)A=-2, B=2 Private Sub Form1_Load( ) Dim A, B As Short A = InputBox("A=") B = InputBox("B=") Call Change (A,B) MsgBox("A=" & A & ", B=" & B) End Sub Change (ByRef X,ByVal Y) X = -X: Y = -Y End Sub 1. D 2. A 3. C 4. D 5. C 6. C 7. A 8. A 9. B 10. D 11. D 12. C 13. B 14. D 15. A 16. A 17. B 18. A 19. C 20. D 21. D 22. A 23. D 24. C 25. A 15-90
第 15 章基本程式語言 附錄 ASCII 碼表 Pi: All of life is an act of letting go, but what hurts the most is not taking a moment to say goodbye. 少年 PI 的奇幻漂流 15-91