• 沒有找到結果。

有條件的敘述

N/A
N/A
Protected

Academic year: 2022

Share "有條件的敘述"

Copied!
103
0
0

加載中.... (立即查看全文)

全文

(1)

盧政良 台大資訊系

流程控制

1

flow controls

(2)

盧政良 台大資訊系

https://www.imdb.com/title/tt0898266/ 2

(3)

盧政良 台大資訊系

有條件的敘述

3

PART I

(4)

盧政良 台大資訊系

輸入一個有效的半徑(i.e, r > 0),

請問圓面積等於多少?

4

承前例,

(5)

盧政良 台大資訊系

根據該員的BMI值作出適當的判斷。

5

承前例,

衛福部國⺠健康署

(6)

盧政良 台大資訊系

6

想看到更多?在這裏。

休息一下

(7)

盧政良 台大資訊系

三一律

7

大於 >,小於 <, 等於 == ,大於等於 >=,小於等於 <=

(8)

盧政良 台大資訊系

且 !&& ,或 !|| , 不 !

8

邏輯運算子

常見的

(9)

盧政良 台大資訊系

9

百分制 (0 ~ 100) 轉

等第制 (A ~ F)

課堂範例

(10)

盧政良 台大資訊系

10

(11)

盧政良 台大資訊系

11

且 或 互斥或

x y x !&& y x !|| y x ^ y

0 0 0 0 0

0 1 0 1 1

1 0 0 1 1

1 1 1 1 0

真值表

truth table

exclusive or, XOR or

and

位元運算子

(12)

盧政良 台大資訊系

12

電腦怎麼實現加法?

https://upload.wikimedia.org/wikipedia/commons/thumb/1/14/Half- adder.svg/300px-Half-adder.svg.png

冷知識

A 0 0 1 1 B 0 1 0 1 S 0 1 1 0

+

S = A + B = A B □

框框內要填哪一種運算?

進位C = A □ B?

(13)

盧政良 台大資訊系

13

https://scontent-tpe1-1.xx.fbcdn.net/v/t1.0-9/375478_10150507661549522_483829322_n.jpg?_nc_cat=101&_nc_oc=AQnh38CU3m3a2O_M- R19BpiGg8By9rS2D4wHQVoyTbZKDXbI8S3H2CZKwCQPXkGSHMk&_nc_ht=scontent-tpe1-1.xx&oh=06a4f88ccfd913c3ce553f60ead90c7d&oe=5EB4BB71

安卓系統

(14)

盧政良 台大資訊系

無緣 = 沒有交集

狄摩根定律

&

文氏圖

14

(15)

盧政良 台大資訊系

15

課堂範例

另一種選擇:

switch-

case-

break-

default

(16)

盧政良 台大資訊系

16

A ? B : C

(17)

盧政良 台大資訊系

17

(18)

盧政良 台大資訊系

18

APCS考題

(19)

盧政良 台大資訊系

19

(20)

盧政良 台大資訊系

題目分析

‣ 輸入任意三個正整數。

‣ 排序此組數字並顯示其結果。

• 如何把三個數字按照從小到大的方式排好?

如何交換?!

‣ 判斷為哪一種三角形或者非三角

形。 20

(21)

盧政良 台大資訊系

如何交換?

21

假設兩個人同時間只能持有一個物品,請問兩人該如何交換禮物?

Alice Bob

swap

(22)

盧政良 台大資訊系

22

1

2

3

另外一種選擇是逆時鐘的方向!

找第三個人幫忙!

(23)

盧政良 台大資訊系

23

‒ Prof. Albus Dumbledore

?We must all face the choice between what is right and

what is easy.A

https://images.pottermore.com/

bxd3o8b291gf/

5ocauY6zAsqGiIgeECw06e/

8accc1c586d2be7d9de6a3d9aec37b90/

AlbusDumbledore_WB_F1_DumbledoreS miling_Still_080615_Port.jpg?w=1200

(24)

盧政良 台大資訊系

要重複執行的 敘述

24

PART II

(25)

盧政良 台大資訊系

25

https://www.google.com/doodles/

celebrating-50-years-of-kids-coding

(26)

盧政良 台大資訊系

26

“Hello,C!++.”

x 10 ?

複製貼上!?

(27)

盧政良 台大資訊系

27

(28)

盧政良 台大資訊系

成也迴圈,敗也迴圈

迴圈 非常 非常 非常 非常 重要 !

‣ 然而,程式會跑很慢,很多時候也是因為迴圈 造成的!!!!

一把劍兩面刃:一面砍對方,一面砍自己。

‣ 所以需要先知道哪一種演算法比較有效率!!!!!

28

loops

(29)

盧政良 台大資訊系

1 + 2 + 3 + ⋯ + 100 = ?

29

第⼆個例⼦

為啥不用梯形公式?!

(30)

盧政良 台大資訊系

30

(31)

盧政良 台大資訊系

gcd(a, b) = ?

31

課堂練習 + APCS考古題 + 每本教科書的範例

輾轉相除法

最⼤公因數

(32)

盧政良 台大資訊系

32

(33)

盧政良 台大資訊系

寫迴圈的策略

找出重複做的事情。

‣ 塞入一個適當的迴圈。

‣ 給正確的繼續執行條件。

33

(34)

盧政良 台大資訊系

https://www.liveabout.com/thmb/ACbPZHPhuSPYR7Q_9jI9XzKS6ho=/

768x0/filters:no_upscale():max_bytes(150000):strip_icc()/

GettyImages-93453966-59684e1d3df78c57f49b0c91.jpg 34

(35)

盧政良 台大資訊系

如何產生亂數

35

C++11的Random library:你還在用rand()嗎?

#include <cstdlib>

(36)

盧政良 台大資訊系

36

產生一個包含1到6之間的整數

(37)

盧政良 台大資訊系

37 產生一個包含1到6之間的整數

狀態的數量

起始點

(38)

盧政良 台大資訊系

38 如何讓亂數每次都不一樣?

跟人生一樣,時間是你唯一留不住的東⻄...

什麼東⻄在電腦裡面會一直改變的?

#include <ctime>

(39)

盧政良 台大資訊系

‒ Harvey MacKay

?Time is free, but it–s priceless.

You can˜t own it, but you can use it.

You can˜t keep it, but you can spend it.

Once you˜ve lost it, you can never get it back.A

39

(40)

盧政良 台大資訊系

40

擲五次

跟時間有關的工具箱 rand 在 cstdlib 裡

srand = seed of randomness

(41)

盧政良 台大資訊系

偽亂數

41

Pseudo Random Number Generator, PRNG

(42)

盧政良 台大資訊系

X n = (aX n−1 + b) % M

42

線性同餘方法

詳見高中數學的遞迴!

(43)

盧政良 台大資訊系

回家作業:猜數字遊戲

產生一個 0~99 的 隨機整數。

‣ 在螢幕上要能顯示範圍且隨著玩家輸入 的數字而改變。

‣ 如果玩家輸入超過目前顯示的範圍,請 玩家重新輸入一個數字。

‣ 如果玩家猜對數字則獲勝。

‣ 如果玩家猜到剩一個數字則GG。

43

(44)

盧政良 台大資訊系

44

(45)

盧政良 台大資訊系

do-while

45

(46)

盧政良 台大資訊系

46

while:先測試條件是否滿足,是則做一次;再回頭問要不要做第二次。

do-while:先做一次,再決定要不要做第二次。

個人認為,用while還是用do-while是一種哲學上的選擇。

先測

後測

(47)

盧政良 台大資訊系

迴圈有兩種

事件型迴圈

‣ 計數型迴圈:知道次數、範圍

47

(48)

盧政良 台大資訊系

48

從 while loop 過渡到 for loop

可以直接從這一行了解迴圈做的次數/範圍

(49)

盧政良 台大資訊系

49

1 2

3

4

執行順序:1 → 2 → 3 → 4 → 2 → 3 → 4 → …

只會做一次!

翻譯蒟蒻: i 從 1 開始,每次加 1,最後加到 100

(50)

盧政良 台大資訊系

課堂練習

計算

計算

3 到 100 之間(包含),找出符合 被 3 或 5 整除、且可被 7 整除的 奇 數。

1 × 2 × 3 × ⋯10 = ? 1 × 2 × 3 × ⋯100 = ?

50

(51)

盧政良 台大資訊系

題外話

51

100

i=1

i = 1 + 2 + ⋯ + 100

高一學過的級數和公式484很抽象?

當你會寫程式的時候,公式已經

告訴你迴圈要怎麼給範圍了!

(52)

盧政良 台大資訊系

寫程式不需要數學;

寫好程式,需要很多 數學!

52

不要再道聽途說了 (白眼)

(53)

盧政良 台大資訊系

複利問題

https://icfo.co.in/wp-content/uploads/2015/10/Return-on-Invested-Capital.jpg 53

(54)

盧政良 台大資訊系

複利問題 1

‣ 輸入:初始金額 (balance)、年利率 (r)、持有年數

輸出:每一年的本利和

54

(55)

盧政良 台大資訊系

balance = balance × (1 + r

100.0 )

55

(56)

盧政良 台大資訊系

56

(57)

盧政良 台大資訊系

https://cdn.vox-cdn.com/thumbor/

4VSUzQVoaGKxYhzKJmignUGe2ds=/0x303:4514x3312/1200x800/

filters:focal(0x303:4514x3312)/cdn.vox-cdn.com/uploads/

chorus_image/image/44281428/Albert_Einstein_1947.0.0.jpg

‒ Albert Einstein

?The most powerful force in the universe is compound

interest.A

57

(58)

盧政良 台大資訊系

複利問題 2

‣ 輸入:初始金額、年利率、目標金額

‣ 輸出:每一年的本利和、須持有年數

58

(59)

盧政良 台大資訊系

59

(60)

盧政良 台大資訊系

π 3.14 ∼

60

(61)

盧政良 台大資訊系

會動的圖 61

(62)

盧政良 台大資訊系

62

抽一個點

若該點落在四分之一圓內,則 M!++。

數學的部分請參考大數法則 (LLN)

(63)

盧政良 台大資訊系

玩猜數字的時候,怎麼猜 下一個數字?

63

試想

?每個遊戲都有必勝法!A by 詐欺遊戲

(64)

盧政良 台大資訊系https://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/

64

Bisection_method.svg/838px-Bisection_method.svg.png

考慮

‣ 猜根可能在[1, 2]之間

容忍誤差:

x 3 − x − 2 = 0 ε = 10 −9

二元搜尋法

(65)

盧政良 台大資訊系

65

(66)

盧政良 台大資訊系

課堂練習 1

輸入:任意正整數。

‣ 輸出:該數字有幾位數。

例如:輸入 123456 ,螢幕顯示為 6

66

(67)

盧政良 台大資訊系

課堂練習 2

輸入:任意正整數。

‣ 輸出:該數字每一位數的總和。

例如:輸入 123456 ,螢幕顯示為 21

67

(68)

盧政良 台大資訊系

兩個跳躍敘述

68 break

continue

(69)

盧政良 台大資訊系

69

顯示 1 2 3 4 顯示 1 2 3 4 6 7 8 9 10

(70)

盧政良 台大資訊系

質數檢查

70

範例

(71)

盧政良 台大資訊系

71

(72)

盧政良 台大資訊系

72

加速版

用空間換取時間

只需檢查比根號 x 來得⼩的數字

將判斷的功能從迴圈中抽離

(73)

盧政良 台大資訊系

多層迴圈

73

(74)

盧政良 台大資訊系

std!::setw() 74

#include <iomanip>

範例

(75)

盧政良 台大資訊系

75

setw:設定一個數字的欄位寬度

(76)

盧政良 台大資訊系

76

https://www.youtube.com/watch?v=6ssaV2zuKVI

j i

類比

(77)

盧政良 台大資訊系

77

範例 *

**

* * *

****

*****

A

(78)

盧政良 台大資訊系

78

(79)

盧政良 台大資訊系

‒ 盧政良

?掌握迴圈,

掌握你寫code的人生。A

79

(80)

盧政良 台大資訊系

80

練習

*****

**** * * *

** *

*****

**** * * *

** *

** *

* * *

***** ****

B C D

(81)

盧政良 台大資訊系

演算法分析

81

Analysis of Algorithms

(82)

盧政良 台大資訊系

計算時間會隨著N而成⻑

82

N是什麼?

(83)

盧政良 台大資訊系

案例

83

(84)

盧政良 台大資訊系

84

在迴圈之外,故不重複執行

N x

{ 每回合有 4個動作

4n + 3

總計有 次

(85)

盧政良 台大資訊系

O

85

讀作big-o

(86)

盧政良 台大資訊系

8N 2 −3N + 4 ∈ O(□)

86

簡單的例子

框框內要填什麼呢?

(87)

盧政良 台大資訊系

8N 2 −3N + 4 ∈ O(□)

87

只保留影響力最大的那一項

(88)

盧政良 台大資訊系

8N 2 −3N + 4 ∈ O(□)

88

係數扔掉

(89)

盧政良 台大資訊系

8N 2 −3N + 4 ∈ O(N 2 )

89

╰(*°▽°*)╯

(90)

盧政良 台大資訊系

8N 2 −3N + 4 ∈ O(N 2 )

90

結論

(91)

盧政良 台大資訊系

91

N O(N) O(N^2) O(N^3)

1 c 1 c 2 c 3

10 10c 1 100c 2 1000c 3

100 100c 1 10000c 2 1000000c 3

舉例⽽⾔

既然是同一個問題,你會選

花比較多時間的策略嗎?

(92)

盧政良 台大資訊系

92

(93)

盧政良 台大資訊系

詳細介紹請參考普林斯頓大學演算法分析 93

可說是演算法的光譜!

(94)

盧政良 台大資訊系

小結

‣ 我們用big-O分類不同的演算法。

‣ 透過迴圈的層數,大致上決定了該演 算法的order。

‣ big-O意義上是最差的情況。

例如: O(N) 基本上比 O(N 2 ) 來得快。

94

(95)

盧政良 台大資訊系

95

效率 普適性

https://nationalcareersweek.com/wp-content/uploads/2016/03/AdobeStock_76388413-e1457013827819.jpeg

(96)

盧政良 台大資訊系

來說說對數演算法

96

對數函數

(97)

盧政良 台大資訊系

97

1 0

目標:找出 5 的位置

舉例說明 32

1 0

線性時間的搜尋法

二元搜尋法

第一刀 第二刀

第三刀

第四刀

第五刀 5 = log 2 32

(98)

盧政良 台大資訊系

98

2 1

總共有多少個候選人? N = 2 − 1

ε = 10 9

線性時間的搜尋法

承前例 (二元搜尋法求根)

需約 5 × 10 8 次計算

對數時間的二分法 需約 log 2 10 9 = 9 次計算

log 10 2 ∼ 30

x

ε = 10 −9

(99)

盧政良 台大資訊系

99

2 1

總共有多少個候選人? N = 2 − 1

ε = 10 9+1

線性時間的搜尋法 需約 5 × 10 8 ×10 次計算

對數時間的二分法 需約 log 2 10 9+1 ∼ 30+4 次計算 x

ε = 10 −10

快,還要更快;只有更快,沒有最快。

還有什麼情況會覺得加法比乘法好?繳稅的時候。

(100)

盧政良 台大資訊系

100

Alan Turing

(1912‒1954)

AI propose to consider the question, Can

machines think?––

Turing Test (by TED)

Google˜s doodle: Turing Machine

Britain–s £50 Note Will Honor Computing Pioneer Alan Turing

(101)

盧政良 台大資訊系

101

https://www.imdb.com/title/tt2084970/videoplayer/vi3398414105

(102)

盧政良 台大資訊系

102

https://www.imdb.com/video/vi744337689?playlistId=tt0470752

(103)

盧政良 台大資訊系

https://www.youtube.com/watch?v=SzJ46YA_RaA 103

參考文獻

相關文件

(一)大陸物品有條件准許輸入,應符合「大陸物品有條件准許輸入項目、輸入

三階導數也就是加速度的變化率 s′′′ = (s′′)′ = a′ ,也常被稱為 jerk (“猛推”,中文並不常用這類的字,僅以英文敘述). 此時這個 jerk

〝電子簽署〞(electronic signature)

A7:依政府資訊公開法第 18 條第 1 項第 6 款規定:「政府資訊屬於

從去年 11 月開始,主辦單位便積極向各企業詢問意願,於今年 2 月 確定邀請 Yahoo!公司及 D-Link

朝陽科技大學 資訊與通訊系. 107

Stone and Anne Zissu, Using Life Extension-Duration and Life Extension-Convexity to Value Senior Life Settlement Contracts, The Journal of Alternative Investments , Vol.11,

從去年 11 月開始,主辦單位便積極向各企業詢問意願,於今年 2 月 確定邀請 Yahoo!公司及 D-Link