05322AR15.indd

Similar documents
<4D F736F F D B0D3B77EC3FEA7DEC3C0C476C1C9A5BFA6A1B8D5C3442DB57BA6A1B35DAD702DBEC7ACEC2E646F6378>

Excel VBA Excel Visual Basic for Application

untitled

Visual Basic D 3D

四川省普通高等学校

05224AA15.indd

資料結構之C語言重點複習

Microsoft PowerPoint - VB14.ppt

投影片 1

Microsoft Word - 小心翼翼的二十一點N.doc

Microsoft PowerPoint - VB3

投影片 1

<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

運算子多載 Operator Overloading

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

Microsoft PowerPoint - OPVB1基本VB.ppt

. (A) (B) (C) A (D) (E). (A)(B)(C)(D)(E) A

【電腦閱卷專用】

投稿類別:資訊類

untitled

05856BT09.indd

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h

<4D F736F F D203938BEC7ACECBCD2C0C0B8D5A8F7AEE6A6A1C0C92DB57BA6A1B35DAD705FA6B3B8D1B5AA5F2E646F63>

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

2010年3月计算机等级考试四级网络工程师笔试

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc

E. (A) (B) (C) (D). () () () (A) (B) (C) (D) (E). () () () (A) (B) (C) (D) (E). (A)(B)(C) (D) (E) (A) (B) (C) (D) (E) (A) (B)(C) (D) (E). (A) (B) (C)

105A 資管一程式設計實驗 06 函式定義謝明哲老師 2 程式設計實驗 6.3: 自行定義一個可以接受兩個整數並傳回其最大公因數的函式, 接著利用該函式自 行定義一個可以接受兩個整數並傳回其最小公倍數函式 // gcd_fcn.cpp int gcd(int m,

2

CC213

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Chapter 16 集合

3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不

Microsoft PowerPoint - Class2.pptx

(Microsoft Word - \246D\252k\267\247\255n_\275\306\277\357_.docx)

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

第1章

科学计算的语言-FORTRAN95

. v dx v d () () l s dl s d (_) d () v s v s () a dv a d (_) ( ) ( ) x- = v- = = v 0 = m/s a = = m/s 2 a- = ( ) x- v- a- Page 2 of 20

Microsoft Word - ACL chapter02-5ed.docx

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

目次 CONTENTS 2 1 乘法公式與多項式 二次方根與畢氏定理 因式分解 一元二次方程式

FY.DOC

! "#$! " # $%%&#! ()*+, - %& - %.,/ - /!! ! " ! #0 $ % &0 123.! 4(5 $%%& %3 &$!!!!!!!!!!!!!!! % % - /&%.&.33!!! &! 3%% - 3 % -

27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f

!"#$!"%&!"$!""( )( )( #( "#*!&#) %&*!(+,- %.!/( )( #( ,-2 89 /

IsPostBack 2

bingdian001.com

Microsoft PowerPoint - VB5

2 2.? ?

*33*!!! "!! #$! %#! "& "! #! %! # ( ) * # +, # -, # +., $ /# ( ) 0 $ +# ( ) 0 $.# ( ) 0 $ # $! % "" " % 1 % & ( * ) * % " " %.! % 2!!"+# ( "&! " ( "#

Microsoft Word - 序.DOC

Microsoft Word - 專題製作研究報告書.doc

ebook14-4

第三节 软件测试的过程与策略

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc


2009年3月二级VB语言笔试真题

Ps22Pdf


ActiveX Control

Ps22Pdf

1 1 Excel VBA 說明 ( ) (_) STEP4 Excel 2 STEP5 A1 1 B2 2 C3 3 STEP6 A1 STEP7 > > 1-11

<4D F736F F D20B8DFB9A4CAD4CCE2BCAFA3A A3A9A3A8CDF5DEA5D5FBC0EDB3C2CFFEB6ABC9F3D4C434D4C231C8D5B8FCD5FDA3A92E646F63>


表二 105 年國中教育會考英語科閱讀與聽力答對題數對應整體能力等級加標示對照表 閱讀答 對題數 聽力答對題數 待加強待加強待加強待加強待加強待加強待加強待加強待加強待加強待加強待加強

竞赛报名与报名审核

:,,,, ( CIP ) /,. :, ISBN CIP ( 2001) : : 127, : : : ht t p: / / www. nwpup. com : :


C/C++ 语言 - 循环

Java 程式設計初階 第 5 章:基本輸出入 & 流程控制

VB程序设计教程

B3C1

Ps22Pdf

untitled


一、

Microsoft Word - 計算機概論.doc

Microsoft Word - Z1I07A0-17.doc

Microsoft Word - 09.數學 docx

C 1

Transcription:

主題 15 結構化 程式設計 15-1 結構化程式設計概念 結構化程式設計的特性與優點 P. 15-3 15-2 內建函數 數值函數 (Int Fix Rnd) P. 15-4 字串函數 (Len Left Mid Right) P. 15-7 15-3 自定函數與副程式 自定函數與副程式的 P. 15-12 P. 15-16 定義與呼叫

主題 15: 結構化程式設計 15-1 結構化程式設計概念 一 認識結構化程式設計 1. 使用循序 條件 重複等 3 種基本結構 2. 將一個大型程式由上而下劃分成多個功能獨立的程式模組 3. 每一個模組只有㆒個入口與㆒個出口 4. 儘量不使用 GoTo 指令 大型程式模組 1 模組 2 模組 3 二 模組化的優點 模組 n 1. 模組 (module) 可重複使用, 節省程式開發時間 2. 程式開發易於分工, 可將這些模組交由多位設計師分工合作 3. 可簡化程式複雜度, 提升可讀性, 易於除錯與維護 + ( )1. 下列何者不是結構化程式設計的控制結構之一? (A) 循序結構 (B) 選擇結構 (C) 宣告結構 (D) 重複結構 [100 工管管理 ] ( )2. 結構化程式設計通常由循序 選擇及重複結構組成, 下列何者不是其主要的特 點? (A) 從上而下將程式分解成多個程式模組 (B) 每一個程式模組都具有多 個入口及出口 (C) 每一個程式模組分別負責一件獨立的工作 (D) 簡化程式的 複雜度 [96 商業類 ] ( )3. 結構化程式設計, 是一種由上而下且模組化的設計方法 下列關於每一個模組所擁有之出入口的敘述, 何者正確? (A) 單一入口 單一出口 (B) 單一入口 多個出口 (C) 多個入口 單一出口 (D) 多個入口 多個出口 [94 商業類 ] ( )4. 有關結構化程式設計的敘述, 以下何者錯誤? (A) 可以增進程式的易讀性 (B) 可以增進程式的易維護性 (C) 最好使用結構化分析 (Structured Analysis) 技術 (D) 可以節省程式撰寫的時間一半以上 [ 丙級軟體設計 ] ( )5. 在結構化程式設計中, 應該避免使用下列何種敘述? (A)If Then (B)GoTo (C)While End While (D)For Next 秒 測結構化程式設計的概念有哪些? 15-3

計算機概論總複習 ( 下 ) 答 1. C 2. B 3. A 4. D 5. B 解 2. 每一個模組只有一個入口與一個出口 4. 可以節省程式開發時間, 但不一定能節省一半以上 15-2 內建函數 一 函數的種類 1. 內建函數 : 是 VB 提供的函數, 可分為數值 字串 時間日期 型別轉換等 4 類 2. 自定函數 : 是使用者自行撰寫的函數 二 數值函數 函數功能範例結果 Abs(X) Abs(10) 10 或求 X 的絕對值 Math.Abs(X) Abs( 2) 2 Sqr(X) Math.Sqrt(X) Sgn(X) 或 或 Math.Sign(X) Int(X) 求 X 的平方根 Sqr(25) 5 求 X 的正負符號 : Sgn(8) 1 X > 0 1 Sgn(0) 0 X = 0 0 Sgn( 2) 1 X < 0 1 Int(5.9) 5 取小於等於 X 的最大整數 Int( 5.4) 6 VB 版本差異 6 2010 6 2010 6 2010 依 X 的小數部分做判斷 : CInt(7.8) 8 > 0.5 進位至整數 CInt(X) CInt(6.5) 6 = 0.5 取最接近該數的偶數整數 CInt( 5.5) 6 < 0.5 捨去小數 Fix(5.6) 5 Fix(X) 取 X 的整數部分 Fix( 5.4) 5 Rnd( ) 產生大於等於 0 且小於 1 的亂數 Rnd( ) 如 0.7055475 解題密技 : Int( ) CInt( ) Fix( ) 函數易搞混, 同學應注意辨別差異 ; 如使用這 3 種函數來計算 4.5, 其結果分別為 5 4 4 15-4 秒 測 Math.Sqrt( ) Int( ) Rnd( ) 各代表哪些功能?

主題 15: 結構化程式設計 1. Rnd( ) 函數是統測命題焦點之一, 同學應該要熟練以下題型 : 題型 亂數範圍 Rnd( ) * 10 0 X <10 Rnd( ) * 10 + 1 1 X <11 Rnd( ) * (M N) + N N X <M Int(Rnd( ) * 10) 介於 0 ~ 9 間的整數亂數 Int(Rnd( ) * 10) + 1 介於 1 ~ 10 間的整數亂數 Int(Rnd( ) * (M N + 1)) + N 介於 N ~ M 間的整數亂數 速記法題型整數亂數範圍 Int(Rnd( ) * 10 ) 0 ~ 10 1, 即 0 ~ 9 範圍的最大值為此數減 1 Int(Rnd( ) * 10) + 5 ) 0 + 5 ~ 9 + 5, 即 5 ~ 14 範圍的最小值與最大值各加此數 解題密技 : 歷屆考題曾出現 Rnd( ) 函數中包含有參數值的題型, 如 Int(Rnd(2) * 10), 其亂數範圍仍為 0 ~ 9, 也就是參數並不會影響亂數產生的範圍 2. Randomize( ): 初始化亂數產生器, 用來降低亂數重複出現的機率 + ( )1. 下列何者為給定之 Visual Basic 程式片段執行後的結果? (A)7 (B)8 (C)9 (D)10 [99 工管管理 ] A = 2 B = 3 S = A ^ B + Abs(A B) Print(S) ( )2. 在 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)) [94 電子計概 ] ( )3. 假設樂透彩券的中獎號碼是 10 ~ 42, 在 Visual Basic 語言中, 下列何者可以產生一個從 10 到 42 的整數亂數? (A)Int(Rnd * 10) + 33 (B)Int(Rnd * 32) + 10 (C)Int(Rnd * 33) + 10 (D)Int(Rnd * 41) + 2 [92 工管管理 ] 15-5

計算機概論總複習 ( 下 ) ( )4. 下列 Visual Basic 程式語言函數運算, 何者正確? (A)Fix(5.8) = 6 (B)Int(5.8) = 5 (C)Rnd(5.8) = 5 (D)Math.Sign(5.8) = 5 ( )5. 在 Visual Basic 中,CInt( 5.6) + Fix( 3.7) 的結果為 (A) 9 (B)2 (C) 3 (D) 9.3 ( )6. Visual Basic 指令 X = Int(Rnd(1) * 10) + 2 執行的結果,X 值最大為 a, 最小為 b, 則 a + 10b = (A)31 (B)32 (C)112 (D)122 ( )7. 欲模擬丟一顆公正的骰子所出現的點數, 應該表示為下列哪一個 Visual Basic 敘述? (A)Int(Rnd( ) * 6) (B)Int(Rnd( ) * 5 + 1) (C)Int(Rnd( ) * 6 + 1) (D)Fix(Rnd( ) * 6) ( )8. 執行 Visual Basic 敘述 Debug.Print(Int( 3.01)) 之結果為 (A) 3 (B) 4 (C) 3.00 (D)3 ( )9. 執行下列 Visual Basic 程式片段後, 不可能出現的數值是? (A)101 (B)86 (C)75 (D)32 For i = 1 To 10 Debug.Print(Int(100 * Rnd( ) + 1)) Next ( )10. 下列函數的值, 何者與其他三個不同? (A)Fix(6.3) (B)Int(6.3) (C)CInt(6.3) (D)Math.Abs(6.3) ( )11. 若 A = Int(Rnd( ) * 10) + 1, 則 A 的數值範圍是 (A)0 到 9 (B)1 到 9 (C)0 到 10 (D)1 到 10 ( )12. 下列 Visual Basic 運算式何者的執行結果為 1? (A)3 * 1 Int(2.52) (B)Math.Sqrt(Int(8.5) 8) (C)Fix(1 * Rnd( )) (D)2 Rnd( ) 答 1. C 2. A 3. C 4. B 5. A 6. A 7. C 8. B 9. A 10. D 11. D 12. A 解 4. Fix(5.8) = 5,Int(5.8) = 5,Rnd(5.8) 會得到大於等於 0 小於 1 的亂數, Math.Sign(5.8) = 1 5. CInt( 5.6) + Fix( 3.7) = 6 + ( 3) = 9 6. X = Int(Rnd(1) * 10) + 2,X 的亂數範圍為 2 ~ 11, 所以 a = 11 b = 2, a + 10b = 11 + 10 2 = 31 10. Fix(6.3) = Int(6.3) = CInt(6.3) = 6,Math.Abs(6.3) = 6.3 12. 3 * 1 Int(2.52) = 1,Math.Sqrt(Int(8.5) 8) = 0,Fix(1 * Rnd( )) = 0, 2 Rnd( ) 會得到大於 1 且小於等於 2 的亂數 15-6

主題 15: 結構化程式設計 三 字串函數 函數功能範例結果 VB 版本差異 Asc(X$) 傳回第一個字元的 ASCII 碼 Asc("A") Asc("apple") 65 97 Chr(n) 傳回 ASCII 碼所對應的字元 Chr(65) A Len(X$) 傳回字串的字元個數 Len("Linsanity") Len("Lucky 17") 9 8 Right(X$, n) 或 Microsoft.VisualBasic. Right(X$, n) 傳回字串由右算起的 n 個字元 Right("Jolin", 3) 代表空白 lin 6 2010 Left(X$, n) 或 Microsoft.VisualBasic. Left(X$, n) 傳回字串由左算起的 n 個字元 Left("Jolin", 2) Jo 6 2010 Mid(X$, n [, m]) 傳回字串由第 n 個字元算起的 m 個字元 Mid("Jolin", 3, 2) li LCase(X$) 將大寫英文字母轉換為小寫英文字母 LCase("iPad") ipad UCase(X$) 將小寫英文字母轉換為大寫英文字母 UCase("htc") HTC Space(n) 空 n 個空白字元 Space(3) 1. 文 英文字母 符號 空格都算㆒個字元, 如 Len(" 有 7-11 真好 ") 結果為 8 代表空白 2. 如果 Mid 函數省略參數 m, 會傳回第 n 個字元算起之後的所有字元, 如 Mid("123456", 3) 結果為 3456 + ( )1. 在 Visual Basic 中, 下列字串運算的結果為何? (A)"apple" (B)"asign" (C)"sign" (D)"simple" [100 工管管理 ] Left("access", 1) + Choose(3, "i", "si", "pp", "imp") + Right("grill", 1) + Mid("next", 2, 1) 秒 測 Len( ) Left( ) Right( ) Mid( ) 各代表哪些功能? 15-7

計算機概論總複習 ( 下 ) ( )2. 在 Visual Basic 中執行 Print Right(Left("ABCDE", 3), 2) 其結果為何? (A)BC (B)CD (C)DE (D)CDE [98 商業類 ] ( )3. Chr(Asc("A") + 2) 的結果為何? (A)A (B)65 (C)67 (D)C ( )4. 在 Visual Basic 語言中執行以下的程式碼後, 訊息交談窗輸出的資料為何? (A)DIC (B)ONA (C)TIONA (D)ICT A$ = "DICTIONARY" B$ = Mid(A$, 2, 7) C$ = Microsoft.VisualBasic.Right(B$, 3) MsgBox(C$) ( )5. 在 Visual Basic 語言中, 使用函數指令 Microsoft.VisualBasic.Right(A$, N) 相當於使用 (A)Mid(A$, Len(A$) N + 1, N) (B)Mid(A$, 1, N) (C)Mid(A$, N, 1) (D)Mid(A$, N 1, N) ( )6. 下列 Visual Basic 程式執行後, 即時運算視窗顯示的結果為何? (A)ORNI (B)RNIN (C)NING (D)ING! A$ = "MORNING!" Debug.Print(Mid(A$, 3, 4)) ( )7. 在 Visual Basic 語言中, 若 X$ = "ABCDE" 則下列何者正確? (A)Microsoft.VisualBasic.Left(X$, 2) = Mid(X$, 2, 4) (B)Microsoft.VisualBasic.Right(X$, 2) = Mid(X$, 2, 4) (C)Microsoft.VisualBasic.Left(X$, 2) = Mid(X$, 4, 2) (D)Microsoft.VisualBasic.Right(X$, 2) = Mid(X$, 4, 2) ( )8. 在 Visual Basic 語言中執行 Debug.Print(Mid("HELLO", 3, 2)), 則即時運算視窗顯示的資料為何? (A)HEL (B)LL (C)ELL (D)LO ( )9. Visual Basic 敘述 Debug.Print(Mid("X1Y2K3", 3)) 的輸出結果為 : (A)Y2K3 (B)1Y2 (C)2K3 (D)Y2K ( )10. 執行 Visual Basic 敘述 Debug.Print(Mid("BASIC LANGUAGE", 2, 3)) 的結果為 (A)BASIC (B)ASI (C)BAS (D)SI 答 1. A 2. A 3. D 4. B 5. A 6. B 7. D 8 B 9. A 10. B 解 1. Choose(n, X1$, X2$,, Xm$): 傳回字串集 (X1$ X2$ Xm$) 中第 n 個字串 ; 如 Choose(3, "i", "si", "pp", "imp"), 即會傳回第 3 個字串 "pp" 7. Microsoft.VisualBasic.Left(X$, 2) = AB Mid(X$, 2, 4) = BCDE; Microsoft.VisualBasic.Right(X$, 2) = DE Mid(X$, 4, 2) = DE 9. 若省略第 2 個參數, 就會傳回從第 1 個參數算起的所有字元 15-8

主題 15: 結構化程式設計 四 時間日期與型別轉換函數 函數功能範例結果 VB 版本差異 Now( ) 傳回系統的日期與時間 Now( ) 2014/5/16 下午 02:42:26 Time( ) 或 TimeString( ) 以字串資料型別傳回系統的時間 TimeString( ) 14:42:19 6 2010 Minute(#hh:mm:ss#) 傳回時間資料中的分鐘資料 Minute(#10:39:55 AM#) 39 Second(#hh:mm:ss#) 傳回時間資料中的秒數資料 Second(#10:39:55 AM#) 55 Date( ) Today( ) 或 傳回系統的日期 Today( ) 2014/5/16 6 2010 Year(#mm/dd/yyyy#) Month(#mm/dd/yyyy#) 傳回日期資料中的年份資料傳回日期資料中的月份資料 Year(#5/11/2014#) 2014 Month(#5/11/2014#) 5 Val(X$) 將字串轉換成數值 Val("cat") Val("123") Val("12") + Val("34") 0 123 46 Str(123) 123 Str(X) 將數值轉換成字串 Str( 123) Str(0.234) 123.234 Str(12) + Str(34) 12 34 1. 數值轉字串 : a. 當數值為正整數 ( 如 123), 轉成字串後會在前方加上一個空格, 如 Str(123) = 123 b. 當數值為小於 1 的正數 ( 如 0.234), 轉成字串後不會顯示 0, 但會在小數點前加上一個空格, 如 Str(0.234) =.234 c. 當數值為負數 ( 如 123), 轉成字串後不會在負號 ( ) 前加上空格, 如 Str( 123) = 123 15-9

計算機概論總複習 ( 下 ) 2. 練習 : 執行結果說明 Debug.Print(Mid(Str(12345), 3)) Debug.Print(Len(Str( 0.234))) Debug.Print(Len(Str(50 + 100))) 2345 5 4 Str(12345) = 12345 Str( 0.234) =.234 Str(50 + 100) = 150 + ( )1. 下列 Visual Basic 語言程式片段執行後, 即時運算視窗顯示的結果為何? (A)97 (B)7 4 (C)748 (D)48 A = 48 : X$ = "97" Debug.Print(Mid(X$ + Str(A), 2, 3)) ( )2. 明哲利用 Visual Basic 撰寫了一個可列印每日營收金額的程式, 若他希望在每日營收報表中加註當天的日期, 請問他必須在程式中使用下列哪一個函數? (A)Year( ) (B)Today( ) (C)TimeString( ) (D)Minute( ) ( )3. 執行 Visual Basic 敘述 "Debug.Print(Microsoft.VisualBasic.Right(TimeString(), 2))", 不可能出現下列哪一個輸出結果? (A)12 (B)28 (C)56 (D)90 ( )4. 執行 Visual Basic 敘述 "Debug.Print(Val(Asc("A") + 3))" 的輸出結果為何? (A)65 (B)68 (C)A (D)C ( )5. 若電腦的系統日期無誤, 下列程式在 2014 年 12 月 25 日執行, 則即時運算視窗顯示的結果為何? (A)20141225 (B)238 (C)2051 (D)1225 Dim LL, D1, D2, D3 As Integer Dim A As String A = Today( ) LL = Len(A) D1 = Val(Microsoft.VisualBasic.Left(A, LL 6)) D2 = Val(Mid(A, 6, 2)) D3 = Val(Microsoft.VisualBasic.Right(A, 2)) Debug.Print(D1 + D2 + D3) ( )6. 下列 Visual Basic 程式片段執行後, 即時運算視窗顯示的結果為何? (A)13.22 (B)3.22 (C)13 (D)13.2 X$ = "13.2" : Y$ = "22.22" : L = 4 Z = Val(Microsoft.VisualBasic.Left(X$ + Y$, L)) Debug.Print(Z) 15-10

主題 15: 結構化程式設計 ( )7. 下列程式片段執行後 C 值為 (A)312 (B)601 (C)690 (D)712 A = "1234" : B$ = "5678" C = Val(Mid$(B$, 2, 3)) + Val(Microsoft.VisualBasic.Right$(A$, 2)) 答 1. B 2. B 3. D 4. B 5. C 6. D 7. D 解 1. Mid(X$ + Str(A), 2, 3) = Mid(97 48, 2, 3) = 7 4( 代表空格 ) 3. TimeString( ) 是輸出系統時間,Microsoft.VisualBasic.Right(TimeString( ), 2) 則會擷取系統時間的秒數部分, 所以輸出結果會在 0 ~ 59 之間 5. A 為 2014/12/25,D1 為 2014 D2 為 12 D3 為 25,D1 + D2 + D3 = 2051 6. X$ + Y$ = "13.2" + "22.22" = "13.222.22"; Val(Microsoft.VisualBasic.Left(X$ + Y$, L)) = 13.2 15-3 自定函數與副程式 一 簡介 1. 設計模組化的程式時, 常會用到 定函數 (user-defined function) 與副程式 (subprogram), 兩者的主要差異 : 定函數 傳回值, 副程式則無 2. 自定函數與副程式的命 規則與變數相同 3. 在 VB, 自定函數與副程式的程式敘述須撰寫於㆒般程序中 (Form1 事件 ) Load Public Class Form1 Function area(byval r) As Double Const pi As Single = 3.14159 area = pi * r ^ 2 ' 計算圓面積的自定函數 area 自定函數與副程式需撰寫在㆒般程序中 Private Sub Form1_Load(ByVal sender As System.Object, ByV Dim a As Double a = area(10) MsgBox(a) End Class 事件程序 (Form1_Load) 15-11

計算機概論總複習 ( 下 ) + ( )1. 副程式與自定函數的主要差別在於 (A) 自定函數有傳回值, 副程式則無 (B) 自定函數可以被主程式呼叫, 副程式不行 (C) 副程式必須是單一出 / 入口, 自定函數則否 (D) 副程式可簡化程式複雜度, 自定函數不行 ( )2. 有關副程式 (subprogram) 的敘述, 下列何者不正確? (A) 可使主程式易於維護 (B) 副程式之中可再去執行另一個副程式 (C) 每一個主程式都必須要有副程式 (D) 若程式中有某部分需經常用到者可將其寫成副程式 答 1. A 2. C 二 定義自定函數 -Function 敘述 1. 語法 : 語法 Function 自定函數名稱 ([ 參數 1 [As 資料型別 ], ]) [As 資料型別 ] 程式區塊 [Exit Function] 自定函數名稱 = 傳回值 說明 同一個表單 ( 如 Form1) 下的自定函數, 名稱不可相同 Function 敘述中的參數, 稱為形式參數 (formal parameter), 用來承接由主程式傳入的參數 傳回值的資料型別須與函數名稱的資料型別相符 Function 和 為函數的開始與結束 ;Exit Function 敘述可強制跳離函數 15-12 2. 練習 :1 累加到 x 的函數註 Function Total(ByVal x As Integer) As Integer Dim i, tmp As Integer For i = 1 To x tmp = tmp + i Next i Total = tmp ' 傳回值為 tmp 註 : 在定義自定函數時,VB 會自動在參數前顯示預設的 "ByVal"( 傳值 ) 參數傳遞方式, 設定形式與實際參數不共用記憶體位址, 亦即自定函數中的形式參數改變後, 不會影響主程式中的實際參數 有關參數傳遞的方式將在本章第 15-19 頁說明

主題 15: 結構化程式設計 三 呼叫自定函數 1. 流程 : V = 自定函數 A( ) 1. 叫 Function 自定函數 A( ) As Integer 4. 返回, 並將 定函數的值傳給變數 V 2. 執行 自定函數 A( ) = X 3. 設定 定函數的值 主程式 自定函數 2. 語法 : 語法舉例呼叫 Sum 自定函數 變數 = 自定函數名稱 ([ 參數 1, 參數 2, ]) Temp = Sum(10) 說明 變數是用來承接傳回值 在呼叫敘述中的參數, 稱為實際參數 (actual parameter), 用來傳遞參數給自定函數 3. 練習 : 呼叫 1 累加到 10 的函數執行結果 Function Total(ByVal x As Integer) Dim i, tmp As Integer For i = 1 To x tmp = tmp + i Next Total = tmp Dim Ans As Integer Ans = Total(10) MsgBox("1 + 2 + + 10 = " & Ans) 秒 測上述練習題若在自定函數中的 For i = 1 To x 之後加上 Step 3, 並將主程式中的 MsgBox("1 + 2 + + 10 = " & Ans) 改為 MsgBox(Ans), 則執行結果為何? 15-13

計算機概論總複習 ( 下 ) + 基礎題 ( )1. 有關下列 Visual Basic 程式碼的執行結果, 何者正確? (A)10 (B)13 (C)20 (D)29 [96 商業類 ] Private Sub Form_Activate( ) a = 2 : b = 1 Print F(a, F(a, b)) Function F(X, Y) F = X ^ 2 + Y ^ 2 ( )2. 執行下列 VB 程式後, 印出的結果為 : (A)65 (B)105 (C)125 (D)305 [93 電子計概 ] Private Sub Form_Activate( ) X = 5 A = FS(X) Print A + X Function FS(X) FS = X For J = X To 3 Step 1 FS = FS * J Next J ( )3. 若一 VB 程式如下 : Private Function FAB(A As Integer) As Integer If A <= 1 Then FAB = 1 Else FAB = FAB(A 1) + FAB(A 2) 則呼叫 FAB(4) 會得到結果為 (A)2 (B)3 (C)5 (D)8 [ 教育視導 ] ( )4. 若一 VB 程式如下 : Private Function Test(a, b, c) As Single Test = (( b) + (b ^ 2 4 * a * c) ^ 0.5) / (2 * a) 則呼叫 Test(1, 4, 3) 會得到結果為 (A)0 (B)1 (C)2 (D)3 [ 教育視導 ] ( )5. 若某一 Visual Basic 程式如下, 則呼叫 FNA(4, 18) 會得到的結果為何? (A)9 (B)10 (C)16 (D)32 Function FNA(ByVal X As Integer, ByVal Y As Integer) Dim ANS As Integer ANS = (X ^ 2 + Y Mod 7) / 2 Debug.Print(ANS) 15-14

主題 15: 結構化程式設計 進階題 ( )6. 執行下列程式片段後,K 值為何? (A)1 (B)5 (C)15 (D)120 [ 商業語文 ] Rem MAIN PROGRAM K = GAME(5) Print K End Function GAME(X) If (X > 1) Then GAME = X * GAME(X 1) Else GAME = 1 End If ( )7. 在 Visual Basic 的程式中, 定義了一個遞迴函數 X 如下所示, 則 Print X(5) 的結果為何? (A)12 (B)15 (C)16 (D) 產生錯誤訊息 [ 公務考試 ] Function X(N) If N = 0 Then X = 0 Else X = X(N 1) + N End If 答 1. D 2. D 3. C 4. D 5. B 6. D 7. B 解 1. F(a, F(a, b)) = F(2, F(2, 1)) = F(2, 5) = 2 ^ 2 + 5 ^ 2 = 4 + 25 = 29 F = 2 ^ 2 + 1 ^ 2 = 5 6. 自己呼叫自己的函數稱為遞迴函數, 其解法如下 : GAME(5) = 5 GAME(5 1) = 5 4 GAME(4 1) = 5 4 3 GAME(3 1) = 5 4 3 2 GAME(2 1) = 5 4 3 2 1 = 120 7. 自己呼叫自己的函數稱為遞迴函數, 其解法如下 : X(5) = X(5 1) + 5 = X(4 1) + 4 + 5 = X(3 1) + 3 + 4 + 5 = X(2 1) + 2 + 3 + 4 + 5 = X(1 1) + 1 + 2 + 3 + 4 + 5 = 0 + 1 + 2 + 3 + 4 + 5 = 15 15-15

計算機概論總複習 ( 下 ) 四 定義副程式 -Sub 敘述 1. 語法 : 語法 Sub 副程式名稱 ([ 參數 1 [As 資料型別 ], 參數 2 [As 資料型別 ], ]) 程式區塊 [Exit Sub] 說明 同一個表單 ( 如 Form1) 下的副程式, 名稱不可相同 在 Sub 敘述中的參數, 稱為形式參數, 用來承接主程式傳入的參數 參數間要以逗號隔開 ; 未宣告資料型別的參數預設為 Object Sub 和 為副程式的開始和結束 ;Exit Sub 敘述可強制跳離副程式 2. 練習 : 計算 2 的 N 次方的副程式 Sub power2(byval N As Integer) Dim tmp As Integer = 1 For i = 1 To N tmp = tmp * 2 Next i MsgBox(tmp) 五 呼叫副程式 1. 流程 : Call 副程式 A 1. 叫 Sub 副程式 A 3. 返回 2. 執行 主程式 副程式 15-16

主題 15: 結構化程式設計 2. 語法 : 語法舉例呼叫 Sum 副程式 Call 副程式名稱 ([ 參數 1, 參數 2, ]) Call Sum(10) 3. 練習 : 呼叫 2 的 5 次方的副程式 執行結果 說明 Sub power2(byval N As Integer) Dim tmp As Integer = 1 For i = 1 To N tmp = tmp * 2 Next i MsgBox(tmp) Call power2(5) Call power2(5) 代表將 5 傳給 power2 副程式作為參數 N 的值 1. 堆疊 (stack): 是一種常用的資料結構, 採後進先出 (Last In First Out, LIFO) 方式, 意即後加入的資料先取出 副程式 定函數的 叫及返回處理, 就是使用堆疊來控制 例如 push 10 push 8 pop push 36 pop pop pop 後, 依序輸出的數值為 8 36 10 1 push 10 2 push 8 4 push 36 10 8 10 36 10 10 3 pop( 輸出 8) 5 pop( 輸出 36) 6 pop( 輸出 10) 2. 佇列 (queue): 也是一種常用的資料結構, 採先進先出 (First In First Out, FIFO) 方式, 意即先加入的資料先取出 印表機列印文件的順序即為佇列的應用 例如依序加入 10 加入 8 刪除元素 加入 36 刪除元素 加入 2 後, 佇列的內容為 36 2 1 加入 10 2 加入 8 4 加入 36 6 加入 2 10 10 8 8 36 36 2 3 刪除元素 5 刪除元素 15-17

計算機概論總複習 ( 下 ) + 基礎題 ( )1. 下列何種資料結構的資料元素存取方式是先進先出 (First In First Out)? (A) 陣列 (B) 雙向串列 (C) 堆疊 (D) 佇列 [99 工管管理 ] ( )2. 若給定如下之 Visual Basic 副程式, 則呼叫 Invest(3, 15) 會得到何種結果? (A)3 (B)4 (C)12 (D)15 [99 工管管理 ] Sub Invest (X as Integer, Y as Integer) Ans = (X ^ 2 + Y Mod 4) / 3 Print Ans ( )3. 在實作副程式 (Subroutine) 呼叫時, 需使用何種資料結構來處理返回呼叫程式的位址? (A)Queue (B)Stack (C)Tree (D)Linked list [ 乙級軟體應用 ] ( )4. 若有一副程式如下, 則計算 mystery(3, 14) 的結果如何? (A)9 (B)3 (C)11 (D)14 Sub mystery(a, b) If b < a Then MsgBox(b) Else MsgBox(a) ( )5. 程式 ( 一 ) 執行後, 訊息交談窗顯示的結果為何? (A)120 (B)15 (C)60 (D)20 Sub f1(byval n) Dim a, I As Integer a = 1 For I = 1 To n a = a * I Next MsgBox(a) Dim n As Integer = 5 Call f1(n) Sub q(byval C As String) Debug.Print(C) Sub p(byval C As String) C = "t" Call q(c) Debug.Print(C) Dim C As String C = "f" Call p(c) 程式 ( 一 ) 程式 ( 二 ) ( )6. 執行程式 ( 二 ) 後, 即時運算視窗顯示的結果為何? (A)tt (B)tf (C)ff (D)ft 秒 測上述第 4 題若將 mystery(3, 14) 改成 mystery(14, 3), 則執行結果為何? 15-18

主題 15: 結構化程式設計 進階題 ( )7. 程式 ( 三 ) 執行後, 訊息交談窗顯示的結果為何? (A) 2 (B) 1 (C)0 (D)1 Sub Heart(ByVal m As Integer) m = m ^ (m 2) Dim C As Integer = 1 Call Heart(C) MsgBox(C) Sub Sum(ByVal X, ByVal Y) Dim TOTAL As Integer TOTAL = X ^ Y MsgBox(TOTAL) Call Sum(2, 10) 程式 ( 三 ) 程式 ( 四 ) ( )8. 在 Visual Basic 中, 執行程式 ( 四 ) 後, 訊息交談窗顯示的結果為何? (A)0 (B)512 (C) 1024 (D)1024 ( )9. 承上題, 若將副程式中的第 3 行 TOTAL = X ^ Y 敘述更改為 TOTAL = X ^ 2 * ( Y), 其執行結果為何? (A) 40 (B)40 (C) 200 (D)200 答 1. D 2. B 3. B 4. B 5. A 6. A 7. B 8. C 9. A 解 6. 程式執行順序如下 :1 主程式呼叫副程式 p(f) 2 副程式 p 執行 C = "t", 呼叫 q(t) 3 副程式 q 印出 t 4 回到副程式 p, 印出 t 7. 呼叫副程式 Heart( 1), 執行結果 m = 1 ^ ( 1 2) = 1,m 值會傳回給 C, 所以 C = 1 六 參數的傳遞 1. 參數主要有 : a. 實際參數 : 呼叫時, 實際要傳給副程式或自定函數的參數 b. 形式參數 : 副程式或自定函數被呼叫時, 用來承接主程式傳入的參數 實際參數 Call SUM(10) Sub SUM(ByVal N As Integer) 形式參數 主程式 副程式 15-19

計算機概論總複習 ( 下 ) 2. 傳值與傳址呼叫的語法 : 語法 傳值 : Call Sum(10) 傳址 : Call Sum(10) Sub Sum (ByVal x As Integer) Sub Sum (ByRef x As Integer) 形式參數前加 "ByVal" 形式參數前加 "ByRef" 說明 ByVal 代表傳值 ;ByRef 代表傳址 傳值 叫 (call by value): 先將實際參數的值複製到形式參數中, 接著副程式 ( 自定函數 ) 使用形式參數的值來作運算 ; 形式與實際參數不共用記憶體位址 傳址 叫 (call by reference): 先將實際參數的位址傳遞給形式參數, 接著副程式 ( 自定函數 ) 使用該位址的值來作運算 ; 形式與實際參數共用記憶體位址 3. 練習 : 例 1 傳值呼叫執行結果說明 Sub calc(byval A, ByVal B) A = A * 2 : B = B * 2 Dim X, Y As Integer X = 1 : Y = 2 Call calc(x, Y) MsgBox("X = " & X & " Y = " & Y) 傳值呼叫時, 形式參數與實際參數不共用記憶體位址 : 變數內容 X 1 Y 2 A 1 2 B 2 4 例 2 傳址呼叫執行結果說明 Sub calc(byref A, ByRef B) A = A * 2 : B = B * 2 Dim X, Y As Integer X = 1 : Y = 2 Call calc(x, Y) MsgBox("X = " & X & " Y = " & Y) 傳址呼叫時, 形式參數與實際參數共用記憶體位址 : 變數內容 X, A 1 2 Y, B 2 4 15-20

主題 15: 結構化程式設計 4. 傳值與傳址呼叫的比較 : 比較項目 傳遞方式 傳值 傳址 傳遞方式設定 在形式參數前加上關鍵字 "ByVal" 在形式參數前加上關鍵字 "ByRef" 實際參數與形式參數是否使用同㆒記憶體位址形式參數的值改變, 實際參數的值是否跟著改變 否 否 是 是 + 基礎題 ( )1. 下列程式三個變數 A,B,C, 要找出其中最大值, 則必須在空格處填入 (A)A > B (B)C > A (C)B > C (D)C > B [100 商業競賽 ] If B > A Then Swap(A, B) If Then Swap(A, C) Print A Sub SWAP(ByRef A, ByRef B) Dim T As Integer T = B : B = A : A = T ( )2. 執行副程式呼叫時, 若傳入的參數不希望被更改, 可採用何種呼叫方式? (A) 傳址呼叫 (B) 傳值呼叫 (C) 傳名呼叫 (D) 遞迴呼叫 ( )3. 下列程式之執行結果為何? (A)1 (B)2 (C)3 (D)4 Sub mess(byref A, ByRef B) A = A + 1 B = B + 1 Dim X, Y As Integer X = 2 : Y = 3 mess(x, Y) Debug.Print(X) 15-21

計算機概論總複習 ( 下 ) ( )4. 下列 Visual Basic 程式輸出的結果為何? (A)11 10 (B)11 11 (C)11 12 (D)12 12 Sub X(ByRef K) K = K 1 Debug.Print(K) Dim L As Integer L = 12 Call X(L) Debug.Print(L) ( )5. 執行以下之程式碼輸出之資料為 (A)3 4 3 4 (B)3 4 4 5 (C)3 4 0 0 (D)3 4 4 3 Sub f(byref a, ByRef b) Debug.Print(a & " " & b) a = a + 1 b = b + 1 Dim X, Y As Integer X = 3 : Y = 4 Call f(x, Y) Debug.Print(X & " " & Y) 進階題 ( )6. 以下 Visual Basic 程式執行後, 各變數之值為 : (A)a = 1, b = 3, x = 2, y = 3 (B)a = 2, b = 3, x = 2, y = 3 (C)a = 1, b = 2, x = 1, y = 3 (D)a = 2, b = 2, x = 3, y = 3 Dim a, b As Integer a = 1 : b = 2 Call S1(a, b) Sub S1(ByVal x, ByRef y) x = x * 2 : y = y + 1 答 1. B 2. B 3. C 4. B 5. B 6. A 解 4. 副程式 X 為傳址呼叫方式, 所以 L 與 K 共用記憶體, 其值皆為 11 6. 參數 x 是採用傳值呼叫方式, 所以 x 與 a 不共用記憶體,x 值改變 a 值不會改變 ; 參數 y 是採用傳址呼叫方式, 所以 y 與 b 共用記憶體,y 值改變 b 值會跟著改變 15-22

MENU 主題 15: 結構化程式設計 時事生活題 ( )1. 當程式設計師在撰寫一個 計算班級平均成績 的程式時, 下列哪一項通常不會被用到? (A) 迴圈 (B) 隨機函數 (C) 陣列 (D) 輸入 / 輸出 [93 商業類 ] ( )2. 今年的校慶園遊會, 偉威和班上同學打算設置一個砸水球的攤位 ; 為了增加砸水球的趣味性, 偉威想要利用 VB 撰寫一個可隨機產生代表同學座號的程式, 以指定同學來作為供人砸水球的活靶 請問他可以使用下列哪一個內建函數來隨機產生亂數值? (A)Int( ) (B)Rnd( ) (C)Str( ) (D)Val( ) ( )3. 快樂星期天, 校園歌喉戰, 曾發生同分的兩名參賽者需再進行第二輪比賽的情形, 製作單位為求公平, 以隨機抽出標有編號 1 2 的任一彩球, 來決定哪位參賽者先出賽 試問若在沒有彩球的情形下, 利用下列哪一個 VB 敘述, 也可隨機產生 1 或 2 兩個數字? (A)Int(Rnd( ) * 1) + 1 (B)Int(Rnd( ) * 2) + 1 (C)Int(Rnd( ) + 1) * 1 (D)Int(Rnd( ) + 2) * 1 ( )4. 新 ipad 在美國首賣當日, 引爆大批人潮排隊搶購, 有人甚至利用替人排隊來賺取 排隊工 請問這種依先後順序購買產品的方式類似下列哪一種資料結構? (A) 堆疊 (B) 佇列 (C) 陣列 (D) 環狀 15-1 15-2 精選試題 ( )5. 下列何者不是結構化程式設計的主要特徵? (A) 使用循序 選擇與重複等三種基本控制結構 (B) 每種結構都是單一入口 / 單一出口 (C) 使用模組化的設計技巧 (D) 採用由下而上的設計方式 [95 衛生計概 ] ( )6. 在 Visual Basic 語言中, 為避免破壞結構化程式設計的單一入口及單一出口的特 性, 下列哪一種類的指令應該減少使用? (A)GoTo (B)MsgBox (C)Do Loop (D)Select Case [ 工管管理 ] ( )7. 下列何者是結構化程式設計的主要控制結構? (A) 重複 選擇 循序 (B) 重複 選擇 跳躍 (C) 重複 跳躍 循序 (D) 選擇 跳躍 循序 [ 工業設計 ] ( )8. 下列有關副程式 (subprogram) 的敘述, 何者錯誤? (A) 可使程式執行較有效率 (B) 可使程式結構較清晰 (C) 常可精簡程式並提昇程式的可讀性 (D) 有利於分工, 以便多人共同完成較大的程式 [100 公務考試 ] ( )9. 結構化程式設計中, 構成程式之基本邏輯有三 :Sequence( 循序 ) Selection( 選擇 ) 與 Repetition( 重複 ), 以所屬的邏輯而言, 下列何者與其他者不同? (A)Do-Until (B)Do-While (C)Do-Case (D)For-Loop [100 公務考試 ] ( )10. 下列何者不是程式模組化的優點? (A) 程式可讀性高 (B) 結構化 (C) 程式易於修改 (D) 程式執行效率高 [100 公務考試 ] ( )11. 下列哪一個 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 商業類 ] 15-23

計算機概論總複習 ( 下 ) 15-24 ( )12. 在 Visual Basic 中, 運算式 10.5 \ 3.5 + 2 ^ Fix(2.8) 之結果為何? (A)6 (B)7 (C)10 (D)11 [100 工管管理 ] ( )13. 下列何者為給定之 Visual Basic 程式語言函數執行後的結果? (A)3 (B)4 (C) 3 (D) 4 [99 工管管理 ] Print Int( 3.6) ( )14. 下列何者為給定之 Visual Basic 程式語言函數執行後的結果? (A)2 (B)4 (C)6 (D)8 [99 工管管理 ] Print Len(" 中華民國 ") ( )15. 執行下列 Visual Basic 程式片段, 程式順利執行後, 列印 N 的值為何? (A) 11.7 (B) 21 (C) 9 (D) 12 [92 工管管理 ] Private Sub Command1_Click( ) For K = 5.9 To 5 Step 2 If K < 0 Then N = N + Int(K) End If Next K Print N ( )16. 亂數 Int(Rnd * 4) + 5 最大可能值為 (A)4 (B)5 (C)8 (D)9 [ 教育視導 ] ( )17. 執行以下的程式碼後, 即時運算視窗顯示的資料為何? (A)8 (B)5 (C)3 (D)13 A = 0 : B = 2 : C = 1 : D = 7 While D > 0 A = B + C C = B B = A D = Int(D / 2) End While Debug.Print(A) End ( )18. 若 A = 16, 則執行 Visual Basic 敘述 "Debug.Print(Math.Sqrt(A) + Len(Str(A)))" 的結果為何? (A)6 (B)7 (C)8 (D)9 ( )19. 下列 Visual Basic 程式執行後, 即時運算視窗顯示的結果為何? (A)ABC (B)AAA (C)ABB (D)AAE A = "ABCDE" B = Mid(A, 1, 1) + Microsoft.VisualBasic.Left(A, 1) + Chr(65) Debug.Print(B) ( )20. 下列 Visual Basic 程式片段執行後, 即時運算視窗顯示的結果為何? (A)P4.5 (B)111 (C)NES111 (D)JON r = "JONES111P4.5" W = Mid(r, 6, 3) Debug.Print(W)

主題 15: 結構化程式設計 ( )21. 下列 Visual Basic 程式片段執行後, 即時運算視窗顯示的結果為何? (A)234 (B)4567 (C)567 (D)456 I = 4 A = "1234567890" B = Mid(A, I, 3) Debug.Print(B) ( )22. 下列 Visual Basic 程式片段執行後, 即時運算視窗顯示的結果為何? (A)COMP (B)UTER (C)COMPUTER (D)COMPUT A = "COMPUTER" Debug.Print(Microsoft.VisualBasic.Left(A, Len(A) / 2)) ( )23. 執行 Visual Basic 敘述 Debug.Print(Mid(" 資料處理科 Happy", 7, 6)) 的結果為何? (A)appy (B) 理科 Ha (C) 科 Happy (D)Error ( )24. 在 Visual Basic 語言中, 若字串變數 A 中之值為 "ABCDEF", 而字串變數 B 中之值為 "WXYZ", 則 Mid(A, 3, 2) + Mid(B, 2, 2) 之結果為? (A)ABCWX (B)DEFYZ (C)CDXY (D)DEYZ ( )25. 下列 Visual Basic 語言程式片段執行後, 即時運算視窗顯示的的結果為何? (A)COMAL (B)PETER (C)RSONALPUTER (D)TERPE A = "PERSONAL" B = "COMPUTER" Debug.Print(Microsoft.VisualBasic.Left(A, 2) + Microsoft.VisualBasic.Right(B, 3)) ( )26. 若 Addr = " 中正東路 83 號 ", 則執行 Visual Basic 敘述 Debug.Print(Microsoft. VisualBasic.Left(Addr, 5)) 的結果為何? (A) 中正東路 8 (B)83 號 (C) 中正東路 (D) 中正東路 3 ( )27. 已知字元 A 的 ASCII 碼為 65, 則 Visual Basic 敘述 Debug.Print(Chr(Asc("A") + 1)) 之結果為 (A)A (B)B (C)65 (D)66 ( )28. 在 Visual Basic 語言中, 若要求 X 值至小數點第一位 ( 即第二位四捨五入 ), 應用下列何敘述? (A)X = Int(X * 10) / 10 (B)X = Int(X * 10 + 0.5) / 10 (C)X = Int(X * 10) + 0.5 / 10 (D)X = Int(X * 100) + 0.5 / 100 ( )29. 在 Visual Basic 語言中, 若 K = Int(90 * Rnd( )) + 10, 則 K 之範圍為何? (A)1 K 90 (B)10 K 90 (C)10 K 99 (D)1 K 100 ( )30. 下列 Visual Basic 程式片段執行後, 即時運算視窗顯示的結果為何? (A)2.6 (B)52.6 (C)52 (D)53 A = Int(0.1 * 26 + 50) : Debug.Print(A) ( )31. 執行 Visual Basic 敘述 Debug.Print(Math.Sign(Fix( 0.7)) + 5), 其結果為 : (A)4 (B)4.3 (C)5 (D)5.7 15-25

計算機概論總複習 ( 下 ) ( )32. 下列 Visual Basic 程式執行後, 即時運算視窗顯示的結果為何? (A) 5 (B)5 (C) 15 (D)15 A = 5 : B = 10 Debug.Print(Math.Abs(A) Math.Abs(B)) ( )33. 若要使用 Rnd( ) 函數模擬擲銅板出現正 反面 ( 以 1 ~ 2 表示 ) 的結果, 則程式敘述 應撰寫為 (A)Rnd( ) * 2 (B)Int(Rnd( ) * 2) (C)Int(Rnd( ) * 2) + 1 (D)Int(Rnd( ) * 3) ( )34. 執行下列哪一個 Visual Basic 敘述, 執行結果為 "11"? (A)Math.Sqrt(121) Fix(2.3) (B)Int(Math.Abs( 3.8)) * 3 + 2 (C)Asc("A") / 2 (D)Int( 12.4) ( )35. 下列取整數的 Int 函數運算何者有誤? (A)Int(2) 輸出值為 2 (B)Int( 1.9) 輸出值為 1 (C)Int(1.9) 輸出值為 1 (D)Int(2.1) 輸出值為 2 ( )36. 若 A$ = "10",B$ = "15", 請問 Debug.Print(Val(A$) * Val(B$)) 的結果為? (A)1015 (B)5 (C)10*15 (D)150 ( )37. 若 X = "2013/9/27", 則執行 Visual Basic 敘述 "Debug.Print(Mid(X, 2, 2))" 的結果為何? (A)20 (B)01 (C)13 (D)3/ ( )38. 執行 Visual Basic 敘述 A$ = " 迎接 " + Str(22) + " 世紀 " : Debug.Print(Len(A$)) 的結果為何? (A)5 (B)6 (C)7 (D)8 ( )39. 惠萍想利用 VB 2010 設計一個小時鐘程式, 請問她應該使用下列哪一種控制項與函數來搭配, 才能讓這個程式每隔 0.1 秒自動抓取系統時間並顯示出來? (A)Lable 與 Val( ) (B)Timer 與 Today( ) (C)CheckBox 與 Now( ) (D)Timer 與 TimeString( ) ( )40. 下列運算結果, 何者為 0? (A)Int(Rnd(3) * 5) + 1 (B)Str(100 / 10) (C)Math.Sign( 1) (D)Val("A100") 15-3 ( )41. 執行下列 VB 程式後, 會印出變數 a 的值為 (A) 1 (B)0 (C)1 (D)2 [ 教育視導 ] Private Sub Good(ByRef s As Integer) s = s + 1 Private Sub Bad(ByVal t As Integer) t = t 2 Private Sub Form_Activate( ) Dim a As Integer a = 0 Call Good(a) Call Bad(a) Print a 15-26

主題 15: 結構化程式設計 閱讀下文, 回答第 42 ~ 43 題 : 有一 Visual Basic 程式片段如下 : Private Sub Command1_Click( ) Sum = Total(200) Total(100) Print Sum Private Function Total(ByRef i As Integer) As Long For j = 1 To i Total = Total + j Next j ( )42. 有關此程式片段之敘述, 下列何者正確? (A)Function Total 程式片段是一個遞迴程式 (B)Function Total 程式片段是一個函數 (C)Total 是一個位元組變數 (D)Total 是一個整數變數 [99 二技 ] ( )43. 此程式片段執行後, 有關 Sum 值之敘述, 下列何者正確? (A) 等於 100 + 101 + + 199 的和 (B) 等於 100 + 101 + + 200 的和 (C) 等於 101 + 102 + + 199 的和 (D) 等於 101 + 102 + + 200 的和 [99 二技 ] ( )44. 下列何種資料結構最適合用來記錄主程式呼叫副程式時, 所需儲存的各種資訊? (A) 堆疊 (B) 佇列 (C) 雙佇列 (D) 二元樹 [99 二技 ] ( )45. 若要處理先到先服務, 則下列何種資料結構較合適? (A) 堆疊 (Stack) (B) 佇列 (Queue) (C) 二元樹 (Binary Tree) (D) 鏈結串列 (Linked List) [ 100 公務考試 ] ( )46. 下列堆疊 (Stack) 運算依序輸出的數值為何? PUSH 16,PUSH 1,POP----,PUSH 5,POP----,PUSH 7,PUSH 3,POP----, POP----,POP---- (A)16,1,5,7,3 (B)3,7,5,1,16 (C)1,5,3,7,16 (D)1,16,5,3,7 [99 公務考試 ] ( )47. 假設有一個空的佇列 (queue), 經過以下次序操作後 : 加入元素 A, 加入元素 B, 刪除元素, 加入元素 C, 刪除元素, 加入元素 D, 最後佇列的內容為何? (A)A, D (B)B, C (C)B, D (D)C, D [99 公務考試 ] ( )48. 以下何種資料結構具有先進後出的特性? (A)queue (B)dequeue (C)stack (D)heap [99 公務考試 ] ( )49. 一般的佇列具備何種操作特性? (A) 先進先出 (B) 先進後出 (C) 優先者先出 (D) 優先者後出 [99 公務考試 ] ( )50. 有關堆疊 (stack) 與佇列 (queue) 之敘述, 下列何者正確? (A) 堆疊之新增 刪除不在串列之同一端進行 (B) 佇列具有後進先出 (last in, first out) 的特性 (C) 堆疊具有先進後出 (first in, last out) 的特性 (D) 佇列之新增 刪除都在同一端進行 [99 公務考試 ] 15-27

計算機概論總複習 ( 下 ) ( )51. 下列程式有三個變數 A,B 及 C, 若要找出其中最小值, 則必須在空格處填入 (A)A < B (B)C < A (C)B < C (D)C < B [100 商業競賽 ] If B < A Then Swap(A, B) If Then Swap(A, C) Print A Sub Swap(ByRef A, ByRef B) Dim T As Integer T = B : B = A : A = T ( )52. 執行下列 VB 6 程式片段, 其輸出結果為何? (A)4 (B)8 (C)16 (D)25 [100 商業競賽 ] Private Sub Command1_Click() Print G(2, 3) Function G(X, Y) G = Abs(2 * Y X) ^ 2 ( )53. 執行下列程式, 最後 T 值是多少? (A)40 (B)30 (C)20 (D)10 Function FNP(ByRef X) FNP = X * X + X Dim K, T As Integer For K = 1 To 4 T = T + FNP(K) Next MsgBox(T) ( )54. 下列程式的執行結果為何? (A)0 (B)5 (C)24 (D)120 Function FACT(ByRef X) Dim Y, K As Integer Y = 1 For K = 1 To X Y = Y * K Next FACT = Y Dim N As Integer = 5 MsgBox(FACT(N)) 15-28

主題 15: 結構化程式設計 ( )55. 下列程式的執行結果為何? (A)10 (B)11 (C)20 (D)30 Function Test(ByRef I As Integer) I = I + 10 Test = I Dim X As Integer = 10 MsgBox(Test(X)) 答案 答案 & 詳解 1.B 2.B 3.B 4.B 5.D 6.A 7.A 8.A 9.C 10.D 11.C 12.A 13.D 14.B 15.D 16.C 17.A 18.B 19.B 20.B 21.D 22.A 23.A 24.C 25.B 26.A 27.B 28.B 29.C 30.C 31.C 32.A 33.C 34.B 35.B 36.D 37.B 38.C 39.D 40.D 41.C 42.B 43.D 44.A 45.B 46.C 47.D 48.C 49.A 50.C 51.B 52.C 53.A 54.D 55.C 15-29

計算機概論總複習 ( 下 ) 詳解 15. 答案 & 詳解 K K < 0 N = N + Int(K) 5.9 True N = 0 + ( 6) = 6 3.9 True N = ( 6) + ( 4) = 10 1.9 True N = ( 10) + ( 2) = 12 0.1 False 2.1 False 4.1 False 31. Math.Sign(Fix( 0.7)) + 5 = Math.Sign(0) + 5 = 0 + 5 = 5 38. Str(22) = 22, 長度為 3 個字元, 所以 A$ = " 迎接 22 世紀 ", 長度為 7 個字元 40. Val("A100") = 0, 因字串 "A100" 的第 1 個字為英文字母而非數字, 所以會轉換成 0 41. a = 0, 執行 Call Good(a) 後,s = 0 + 1 = 1, 因 Good 是以傳址呼叫, 共用記憶體位址, 所以 a 會受 s 的影響, 即 a = s = 1;a = 1 執行 Call Bad(a) 後,t = 1 2 = 1, 因 Bad 是以傳值呼叫, 不共用記憶體位址, 所以 a 不受 t 的影響,a = 1 46. 堆疊採後進先出的方式來存取資料 存取資料的步驟如下 : 1 PUSH 16 2 PUSH 1 4 PUSH 5 6 PUSH 7 7 PUSH 3 16 1 16 5 16 7 16 3 7 16 7 16 16 3 POP( 輸出 1) 5 POP( 輸出 5) 8 POP( 輸出 3) 9 POP( 輸出 7)10 POP( 輸出 16) 故堆疊運算依序輸出的數值為 1 5 3 7 16 47. 佇列採先進先出的方式來存取資料, 存取資料的步驟如下 : 1 加入元素 A 2 加入元素 B 4 加入元素 C 6 加入元素 D A A B B C C D 3 刪除元素 5 刪除元素 故最後佇列的內容為 C D 53. T = (1 * 1 + 1) + (2 * 2 + 2) + (3 * 3 + 3) + (4 * 4 + 4) = 40 54. FACT 函數目的在求階乘, 所以 FACT(5) = 1 * 2 * 3 * 4 * 5 = 120 15-30