Presentation is loading. Please wait.

Presentation is loading. Please wait.

4-4 程式設計之邏輯結構.

Similar presentations


Presentation on theme: "4-4 程式設計之邏輯結構."— Presentation transcript:

1 4-4 程式設計之邏輯結構

2 4-4 程式設計之邏輯結構 2 A

3 4-4 If判斷敘述: If-Then敘述的語法: 語法1:If 條件式 Then 程式敘述 語法2: If 條件式 Then 程式敘述區塊
End If

4 4-4 流程控制–條件結構(5/18) If判斷敘述: If-Then-Else敘述的語法: 語法: If 條件式 Then
條件式為真(True)程式敘述區塊 Else 條件式為假(False)程式敘述區塊 End If

5 4-4 流程控制–條件結構(9/18) 巢狀If判斷敘述:If判斷敘述中還有If判斷敘述,常用來處理當抉擇不只2種的情況。 例1:
y = InputBox("請輸入出生年次:") If y >= 60 Then If y <=69 Then '60~69年間出生者 Print "草莓族" Else '70年(含)後出生者 Print "水蜜桃族" End If Else '59年(含)前出生者 Print "芭樂族"

6 逐一過濾條件的 ElseIf 例子 4-4 以前面判斷一正整數 N 為幾位數的程式為例,利用 ElseIf 逐一過濾條件,程式會變得比較容易閱讀,如下: If N < 10 Then Print N; "一位數" ElseIf N < 100 Then Print N; "二位數" ElseIf N < 1000 Then Print N; "三位數" Else Print N; "四位數(含)以上" End If

7 4-4 程式設計之邏輯結構

8 4-4 程式設計之邏輯結構

9 4-4 流程控制–條件結構(13/18) Select Case判斷敘述:用來處理多重選擇的條件判斷敘述。 下一行程式敘述
條件運算式? Case Else 程式敘述 區塊N+1 Case 1 區塊1 Case 2 區塊2 Case N 區塊N

10 4-4 流程控制–條件結構(14/18) Select Case判斷敘述: Select Case的語法:
程式敘述區塊1 Case 條件式2 程式敘述區塊2 . Case 條件式N 程式敘述區塊N Case Else 程式敘述區塊N+1 End Select

11 4-4 流程控制–條件結構(15/18) Select Case判斷敘述: Select Case的範例: 例1:
age = InputBox("請輸入出生年次:") Select Case age Case Is <= 59:Print "芭樂族" '59年(含)前出生者 Case 60 To 69:Print "草莓族" '60~69年間出生者 Case else:Print "水蜜桃族" '70年(含)後出生者 End Select

12 一流程圖如圖所示,依流程順利執行後, 列印B的值為何?
4-4 (A)34 (B)40 (C)45 (D)49 10 9 8 7 6 N 5 Y C

13 執行下面的Visual Basic程式碼後,輸出的資料為何?
4-4 執行下面的Visual Basic程式碼後,輸出的資料為何? (A)error (B)large (C)medium (D)small。 C

14 4-4 程式設計之邏輯結構

15 4-4 程式設計之邏輯結構

16 4-4 流程控制–重覆結構(2/21) For-Next迴圈敘述: For-Next的語法: 語法:
For 控制變數 = 起始值 To 終止值 Step 增值(減值) 程式敘述區塊 Next 控制變數

17 4-4 流程控制–重覆結構(3/21) For-Next迴圈敘述: For-Next的範例: 例1:
sum = '設定變數sum的初始值 For i = 1 To 10 Step 1 'Step 1可省略不寫 sum = sum + i Next i Print " … + 10 = ", sum

18 4-4 程式設計之邏輯結構

19 4-4 程式設計之邏輯結構

20 Basic語言的片段程式如下: 上述片段程式執行後,下列何者正確?
4-4 Basic語言的片段程式如下: 上述片段程式執行後,下列何者正確? (A)SUM=10 (B)SUM=17 (C)SUM=21 (D)SUM=23。 C

21 求執行下列BASIC程式後,輸出 b值的結果為何?
4-4 求執行下列BASIC程式後,輸出 b值的結果為何? (A)0 (B)20 (C)120 (D)140。 B

22 在BASIC語言中利用下述程式計算出 (1*2)-(2*3)+(3*4)-(4*5)+(5*6)的值,則空格中要填入什麼內容?
4-4 (A)-1+S (B)S-2 (C)N-S (D)-1*S。 D

23 下列Visual Basic語言片段程式的執行結果為何?
4-4 (A)N=2 (B)N=3 (C)N=4 (D)N=5。 B

24 巢狀迴圈 4-4 在迴圈裡面也可以又有迴圈,這種情形即稱為巢狀迴圈,例如: For I = 1 To 3 Print " 外迴圈變數 "
外迴圈變數 內迴圈變數 內迴圈變數 內迴圈變數 3 外迴圈變數 內迴圈變數 內迴圈變數 內迴圈變數 3 For I = 1 To 3 Print " 外迴圈變數 " ; I For J = 1 To 3 Print , " 內迴圈變數 外迴圈變數 內迴圈變數 內迴圈變數 內迴圈變數 3 " ; J Next J Print Next I

25 巢狀迴圈 4-4 例子: 結果印出: For I = 1 To Print "I ="; I, "J ="; For J = 1 To I ' 內迴圈的執行次數,由外迴圈 Print J; ' 變數 I 的值來控制。 Next J Print Next I I = J = 1 I = J = 1 2 I = J = 1 2 3 I = J = I = J =

26 巢狀迴圈 4-4 例子: I J ;I 結果印出: Sum=55 Sum=15 Sum=35 6 Sum=0
For I = 1 To For J = 1 To I ' 內迴圈的執行次數,由外迴圈 sum=sum +1 ' 變數 I 的值來控制。 Next J Next I Print “Sum=“;sum I J ;I I = J = 1 I = J = 1 2 I = J = 1 2 3 I = J = I = J = 結果印出: Sum=55 Sum=15 Sum=35 6

27 4-4 FOR I=1 TO 5 FOR J=1 TO 6 5*6*3=90 FOR K=1 TO 3 5*6=30 A=A+1
NEXT K B=B+1 NEXT J C=C+1 NEXT I PRINT A,B,C 5*6*3=90 5*6=30 5

28 4-4 程式設計之邏輯結構

29 4-4 程式設計之邏輯結構

30 流程控制–重覆結構(8/21) 4-4 While-Wend迴圈敘述: While-Wend迴圈敘述的語法: 語法: While 條件式
程式敘述區塊 Wend

31 4-4 流程控制–重覆結構(10/21) While-Wend迴圈敘述: While-Wend的範例: 例2:
i = 1 : power = 1 N = InputBox(“輸入N值:”,“ 計算2的N次方") While i <= N power = power * 2 i = i + 1 Wend Print " 2 的 " & N & " 次方= " & power

32 4-4 A=100:B=22 A B C C=A MOD B WHILE C<>0 100 22 12 A=B:B=C
WEND B 的值為何 A B C 10 2

33 流程控制–重覆結構(13/21) 4-4 Do-Loop前測式迴圈敘述:先檢測迴圈之執行條件,再依結果決定是否執行的迴圈。
Do While 條件式? Do Until 條件式? 語法1:Do While 條件式 程式敘述區塊 Loop 語法2: Do Until 條件式 F T T F 程式敘述區塊 程式敘述區塊 下一行程式敘述 下一行程式敘述

34 4-4 流程控制–重覆結構(14/21) Do-Loop前測式迴圈敘述: Do-While-Loop的範例: I 6 5 4 F E D C
word = "ABCDEF" i = Len(word) Do While i > 0   Print Mid(word, i, 1);   i = i - 1 Loop I 6 5 4 F E D C B A 3 2 1

35 4-4 流程控制–重覆結構(15/21) Do-Loop前測式迴圈敘述: Do-Until-Loop的範例:
word = "ABCDEF" i = Len(word) Do Until i <= 0   Print Mid(word, i, 1);   i = i - 1 Loop Do While i > 0

36 4-4 流程控制–重覆結構(16/21) Do-Loop後測式迴圈敘述:先執行迴圈內的敘述一次,再檢測迴圈條件,以決定是否繼續執行迴圈。
Do While 條件式? Do迴圈程式 敘述區塊 下一行程式敘述 T F Until 條件式? Do迴圈程式 敘述區塊 下一行程式敘述 F T 語法1: Do 程式敘述區塊 Loop While 條件式 語法2: Do Loop Until 條件式

37 4-4 流程控制–重覆結構(17/21) Do-Loop後測式迴圈敘述: Do-Loop-While的範例: i = 1 Do
N = Int(Rnd( ) * 10) Print " 第 " & i & " 個亂數是 " & N i = i + 1 Loop While i <= 4

38 4-4 流程控制–重覆結構(18/21) Do-Loop後測式迴圈敘述: Do-Loop-Until的範例: i = 1 Do
N = Int(Rnd( ) * 10) Print " 第 " & i & " 個亂數是 " & N i = i + 1 Loop Until i > 4

39 4-4 A=15:B=27 A B X Y X=A:Y=B DO UNTIL A=B 15 27 15 27
IF A>B THEN A=A-B IF A<B THEN B=B-A LOOP PRINT (X/A);”/”;(Y/A) A B X Y 5/9

40 4-4 程式設計之邏輯結構

41 4-4 程式設計之邏輯結構

42 4-4 程式設計之邏輯結構 99 95 86 70 45 9 B

43 4-4 程式設計之邏輯結構

44 4-4 程式設計之邏輯結構

45 4-4 程式設計之邏輯結構

46 4-5 Visual Basic程式設計基礎

47 4-5 Visual Basic程式設計基礎 10 10 10 10

48 4-5 Visual Basic程式設計基礎

49 4-5 Visual Basic程式設計基礎 Int(rnd*33) +10

50 4-5 Print Abs(-49^0.5) Print Sqr(100) Print Exp(0) Print Log(1) Print Exp(Log(5)) Print Sgn (-49^0.5) 7 10 1 5 -1

51 4-5 23 Print Oct(19) Print Hex(31) Print &O Print &H Print Sgn(Exp(Log(5))) Print Hex(Abs (-100^0.5)) 1F 17 33 1 A

52 4-5 數值函數 19 Print Int(19.6) Print Cint(19.6) Print Fix(19.6) Print Int(-19.6) Print Cint(-19.6) Print Fix(-19.6) 20 19 -20 -20 -19

53 4-5 數值函數 Print Int(19.3) Print Cint(19.3) Print Fix(19.3) Print Int(-19.3) Print Cint(-19.3) Print Fix(-19.3) 19 19 19 -20 -19 -19

54 4-5 數值函數 Print SIN(3.14/2) Print SIN(0) Print COS(3.14/2) Print COS(0) Print INT(RND*33)+20 Print INT(RND*100)/10+1 1 1 20~52 1~10.9

55 4-5 內建函數 (3) 時間日期函數:專門用來處理時間及日期資料的函數 函數名稱及語法 說明 Date( ) 傳回系統的日期
 傳回系統的日期  Time( )  傳回系統的時間  Now( )  傳回系統的日期與時間  Minute(時間)  傳回時間資料中的分鐘資料  Second(時間)  傳回時間資料中的秒數資料  Year(日期)  傳回日期資料中的年份資料  Month(日期)  傳回日期資料中的月份資料  Day(日期)  傳回日期資料中的日期資料

56 時間日期函數 4-5 Print Date Print Time Print Now Print Year(Now) Print Month(Date) 11/16/2018 1:09 上午 11/16/2018 1:09 AM 11/16/2018 11/16/2018

57 下列BASIC程式語言函數運算,何者正確?
4-5 下列BASIC程式語言函數運算,何者正確? (A)FIX(5.8)=6 (B)INT(5.8)=5 (C)RND(5.8)=5 (D)SGN(5.8)=5。 B

58 4-5 Visual Basic程式設計基礎

59 4-5 Visual Basic程式設計基礎

60 下列Visual Basic敘述何者正確?
4-5 下列Visual Basic敘述何者正確? (A)Print Left$("ASDF", 2)的結果為DF (B)Print Sgn(–90) * Abs(–90)的結果為90 (C)Print Cint(3.75) + Sqr(9)的結果為7 (D)Print Sqr(9)的結果為–9 C

61 下列有關Visual Basic敘述何者正確:
4-5 下列有關Visual Basic敘述何者正確: (A)Print Len("I WILL BE BACK")的執行結果為16 (B)Print Oct(10)的執行結果為12 (C)Print Int(-5.6)的執行結果為-5 (D)Print Fix(-5.6)的執行結果為-6 B

62 字串函數 4-5 65 Print Asc(“A”) Print Chr(65) A
A=“Hccvs 最棒” Print Left(A,3) Print Right(A,3) Print Mid(A,3,2) Print Mid(A,3) A Hcc 最棒 cv cvs 最棒

63 4-5 字串函數 A=“Hccvs 最棒” Print Len(A) Print Left(Right(A,Len(A)-3+1),2) Print String(10,”$”) Print String(5,65) Print String(5,”abc”) Print Ucase(“abC78trS”) 8 cv RIGHT(A,6) CVS 最棒 $$$$$$$$$$ AAAAA aaaaa ABC78TRS

64 4-5 Visual Basic程式設計基礎

65 MsgBox “記得來投票”, 16, “模範生選拔" 敘述,當執行程式時,"記得來投票"將出現在訊息交談窗中的哪個位置?
4-5 MsgBox “記得來投票”, 16, “模範生選拔" 敘述,當執行程式時,"記得來投票"將出現在訊息交談窗中的哪個位置? (A)訊息文字 (B)標題文字 (C)輸入欄的預設值 (D)說明檔代碼 A

66 4-5 Visual Basic程式設計基礎 5 2,1

67 4-5 Visual Basic程式設計基礎 K=GAME(5) =5*GAME(4) =5*4*GAME(3)

68 4-5 FAB(4) =FAB(3)+FAB(2) =FAB(2)+FAB(1) +FAB(1)+FAB(0) =FAB(1)+FAB(0)
Function FAB( A as Integer) If A<=1 Then FAB=1 Else FAB=FAB(A-1)+FAB(A-2) Endif End Function Private Sub Form_activate() Dim N As Integer N=4 Print FAB(N) Endsub FAB(4) =FAB(3)+FAB(2) =FAB(2)+FAB(1) +FAB(1)+FAB(0) =FAB(1)+FAB(0) +1+1+1 =5

69 4-5 K FNP(K) T 1 2 2 2 6 8 20 3 12 40 4 20 Function FNP( X) FNP=X*X+X
End Function Private Sub Form_activate() FOR K=1 TO 4 T=T+FNP(K) NEXT K PRINT T Endsub K FNP(K) T 1 2 2 2 6 8 3 12 20 4 20 40

70 4-5 執行下列程式後,印出的結果為: (A)65 (B)105 (C)125 (D)305 300 5 5 5*5*4*3 5,4,3 D

71 常見的資料結構 4-5 佇列(QUEUE):排隊(FIFO) C F D Y T F D Y T A D Y T A B 入口 出口 ABX

72 4-5 常見的資料結構 堆疊(STACK):堆貨物(LIFO) C A A A F C C A A 出口 入口 POP PUSH A
PUSH C F C A POP C A PUSH F

73 副程式呼叫使用堆疊結構 4-5 C A A A F C C A A PUSH A POP PUSH C POP PUSH F
主程式 A 呼叫副程式a 副程式a : C 呼叫副程式 c End sub 副程式c : F 呼叫副程式 f End sub 副程式 f End sub PUSH A C POP A A A PUSH C F POP C PUSH F C A A 使用結構化程式設計的程式

74 4-5 Visual Basic程式設計基礎

75 4-5 Visual Basic程式設計基礎 Form_activate a=3 b=8 4 傳址呼叫(Call By Ref)
傳值呼叫(Call By Val) play x y=8 10

76 4-5 Visual Basic程式設計基礎 Form_activate a=3 b=8 傳值呼叫(Call By Val)
傳址呼叫(Call By Ref) 10 play X= y 4

77 4-5 傳址呼叫(Call By Ref) Form_activate A=0 1 傳值呼叫(Call By Val) good S
Sub Good(s As Integer) S=S+1 End Sub 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 Endsub Form_activate A=0 1 傳值呼叫(Call By Val) good S Bad T T=1 -1 1

78 4-5 傳值呼叫(Call By Val) 傳址呼叫(Call By Ref) 2 1 1 Sub Good(S As Integer)
S=S+1 End Sub Private Sub Form_activate() Dim A As Integer A=0 Call Good(A) Print A Endsub (Byval S As Integer) 2 Call Good((A)) Call Good(A+2) 1 1

79 Sub add(x As Integer, y As Integer, z As Integer) For I=1 to 4 x=x+1
Private Sub Form_activate() Dim a As Integer Dim b As Integer Dim c As Integer a=2:b=3:c=0 Call add(a,b,(c)) Print a,b,c Endsub Sub add(x As Integer, y As Integer, z As Integer) For I=1 to 4 x=x+1 For J=1 to 3 y=y+1:z=x+y Next J Next I End Sub Form_activate a=2 b=3 c=0 6 15 傳址呼叫(Call By Ref) 傳值呼叫(Call By Val) add x y z=0 21

80 4-6 使用陣列 在術語上,陣列中的每一項資料叫做一個元素(element),而用來指定某一個元素的 0、1、2、…順序叫做註標(subscript),如下: 名稱 資料順序 資料內容 陣列元素 X(0)~X(4) X 80 X(0) 1 21 X(1) 2 32 X(2) 陣列 X 3 43 X(3) 4 74 X(4) 陣列註標 0~4

81 4-6 陣列、排序及搜尋

82 4-6 陣列、排序及搜尋 DIM

83 4-6 陣列、排序及搜尋

84 4-6 陣列、排序及搜尋 11 88

85 4-6 陣列、排序及搜尋 9 18

86 4-6 陣列、排序及搜尋 A 1 2 3 4 K 2 3 2 4 3 5

87 4-6 27 12 8 9 21 72 DIM A(6), I , B AS INTEGER A(1)=27:A(2)=12:A(3)=8
FOR I=1 TO 3 B=A(I) A(I)=A(7-I) A(7-I)=B NEXT I FOR I=1 TO 6 PRINT A(I); A 1 2 3 4 5 6 I 27 12 8 9 21 72 72 1 2 21 3 9 8 12 27

88 4-6 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+J ELSE A(I,J)=I*J ENDIF NEXT J NEXT I 問A(3,1)=? A(3,1)=A(2,1) =A(1,1) =2

89 在BASIC語言中執行以下的程式碼後,螢幕輸出的資料為何?
4-6 在BASIC語言中執行以下的程式碼後,螢幕輸出的資料為何? (A)15 (B)5 (C)10 (D)21。 A(2)=A(1)+2=3 A(3)=A(2)+3=6 A A(4)=A(3)+4=10 A(5)=A(4)+5=15

90 4-6 執行下列程式片段後,K(3,3) 值為何? A (A)3 (B)4 (C)5 (D)12。 K(3,3)=K(2,2)+1
=1+1+1=3 A

91 下列Visual Basic程式片段執行後,A(1, 3) 的值與下列哪一個元素的值相同?
4-6 下列Visual Basic程式片段執行後,A(1, 3) 的值與下列哪一個元素的值相同? (A)A(2 , 0) (B)A(2 , 1) (C)A(2 , 2) (D)A(2 , 3) A(1,3)=2*1*(1+3)=8 A(2,0)=2*2*(2+0)=8 A

92 氣泡排序法:N個資料從大排到小 每回合做N-I個比較 共需N-1個回合 22 17 63 5 14 35 FOR I=1 TO N-1 NEXT I FOR J=1 TO N-I NEXT J 63 17 14 5 5 35 IF N(J)<N(J+1) THEN TEMP=N(J) N(J)=N(J+1) N(J+1)=TEMP ENDIF 17 14 14 35 5 63 22 63 22 17 35 14 5 63 22 22 35 17 14 5 17 14 5 22 35 63

93 選擇排序法:N個資料從大排到小 每回合做I+1 TO N個比較 共需N-1個回合 22 17 63 5 14 35 FOR I=1 TO N-1 NEXT I 63 22 FOR J=I+1 TO N NEXT J 17 22 5 14 35 IF N(I)<N(J) THEN TEMP=N(I) N(I)=N(J) N(J)=TEMP ENDIF 63 22 35 17 5 14 22 63 35 17 22 5 14 17 63 35 22 17 14 5 14 63 35 22 17 14 5

94 比較次數 N-1 次 比較次數=(N-1)+(N-2)+……..+2+1 N-2 次 =(((N-1)+1)*(N-1))/2
2 次 1 次

95 4-6 陣列、排序及搜尋

96 4-6 陣列、排序及搜尋

97 4-6 陣列、排序及搜尋 N N

98 4-6 陣列、排序及搜尋


Download ppt "4-4 程式設計之邏輯結構."

Similar presentations


Ads by Google