iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 4
1
Modern Web

菜鳥後端工程師的第一門課系列 第 4

[Day4] 程式基本邏輯(2) - 控制

  • 分享至 

  • xImage
  •  

2022 Medium 新版傳送門

程式基本邏輯(2) - 控制

昨天我們談了程式世界裡,最基本的資料儲存模式,
那在描述的過程中,有提到『判斷』的概念,
因為在程式的世界裡,不是每件事情都是只有一種結果的,
因此需要使用特別的語句,來讓電腦判斷說,
根據什麼不同的條件,執行不同的結果。

If Else

我們來看看以下的程式碼:

is_adult = True

if is_adult
    puts “使用者成年”
end

這段程式碼翻成中文的意思是: 
『如果』 is_adult 是『對得』,就輸出『使用者成年』這串文字。

再來看看第二段程式碼:

number = 5

if number > 3
    puts “number 比較大”
end

翻成中文的意思是:
『如果』number 變數裡的值大於 3 是『對的』,就輸出『number比較大』這串字。
相信冰雪聰明的讀者已經發現了,if 就是指『如果』,
而如果後接的,就是『被判斷的條件』,
當電腦判斷 if 後面的條件是對的,就會繼續執行下一行的程式碼。
這邊需要注意的是,如果我們要判斷『等於』的概念,
不是使用『 = 』,而是使用 『 == 』,
因為一個等號,指的是『指派』的概念,像是變數值的賦予,
兩個等號,才是判斷是否『相等』,
這是新手常犯的錯誤,要特別注意喔!範例如下:

number = 5
if number == 5
	puts “我是5”
end

那我們現在來看看,如何讓電腦透過不同的條件,
來執行不同的結果:

age = 17
if age > 18
    puts “成年人你好”
else
    puts “小朋友掰掰” 
end

上述的程式碼,最後的執行結果會是印出『小朋友掰掰』,
如果我們想要逼迫電腦做出二選一的選擇,那麼就要使用『else』的語法,
告訴電腦,如果 if 後的條件是錯的,那麼就執行什麼樣的事情。

&& 和 ||

討論到條件的部分,我們當然可以要求電腦判斷很多很多的條件,
這些條件會用到的連接符號,分別是『&&』(And) 和 『 || 』(Or),
ps:『 | 』這個符號在巨大囂張的 enter 鍵旁邊
看到這兩個符號,數學邏輯概念普通的朋友先別急頭痛,其實概念是很好理解的。
我們來看看以下的例子:

age = 19
is_adult = False
if age > 18 && is_adult
    puts “成年人你好”
else
    puts “小朋友掰掰” 
end

這段程式碼如果要可以印出“成年人你好”,
就必須要『age > 18』和『is_adult』兩件事情都是『對的』,
因此因為 is_adult 這個變數是 false ,所以小朋友掰掰~~!!
但是呢,如果程式碼改成如下:

age = 19
is_adult = False
if age > 18 || is_adult
    puts “成年人你好”
else
    puts “小朋友掰掰” 
end

那程式碼就會改印出”成年人你好”這段字,
因為他只要『age > 18』或『is_adult』兩件事情其中一項是『對的』,
就會執行到 if 裡面的程式碼。
這樣的解釋,是不是就發現邏輯程式碼沒那麼奇怪了呢~~

else if

我們已經學到了 if else,讓電腦可以二選一,
但是不能一直對電腦那麼壞,要給電腦多點選擇XD
假設我們想要有三條路讓電腦選的話,可以寫成如下的程式碼:

age = -2
if age > 18
    puts “成年人你好”
elsif age > 0 && age <= 18
    puts “小朋友掰掰” 
else
    puts “你搞得我好亂啊”
end

這段程式碼最後就會輸出”你搞得我好亂啊”這串字,
新增的路,就加上 elsif (else if 的縮寫,ruby 語法),就算完成了。

現在你就知道程式語言最基本判斷的概念,
明天我們會討論『迴圈』的概念,也就是讓程式語言效率比人提升千萬倍以上,
最早的演算法機制!!!

如果有任何問題,或是指證文中的錯誤,歡迎寄信給我或留言在下面喔~


上一篇
[Day3] 程式基本邏輯(1) - 變數與資料型態
下一篇
[Day5] 程式基本邏輯(3) - 迴圈
系列文
菜鳥後端工程師的第一門課30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言