Nimrod 程式設計/條件語句
我們已經瞭解瞭如何儲存值,但除了顯示不同的輸出之外,我們還能做些什麼?它們如何有用?答案是條件語句。條件語句是一種只在特定情況下執行操作的方法(由你指定),我們可以將其與一個服從所有命令的人進行比較……比如……一個奴隸!你擁有一個奴隸,但事實證明你的奴隸有點傻,不會做你沒有告訴它的事情,你想讓它給你拿一杯咖啡,所以他會拿一個杯子,從水壺裡倒滿咖啡,但等等,如果水壺裡沒有咖啡怎麼辦?他會給你拿一杯空氣,所以如果我們想確保他拿給我們一杯咖啡,我們必須告訴他去煮咖啡,但只有在沒有咖啡的情況下,因為如果水壺裡有咖啡,就會弄得一團糟。所以我們給他的命令會類似於以下內容
If there's not coffee in the kettle then make some coffee
Take a mug
Fill the mug with coffee from the kettle
Bring me the mug
嗯,這看起來很像程式碼,讓我們嘗試在 Nimrod 中重現它
if theresNotCoffeInTheKettle():
makeSomeCoffee()
takeAmug()
fillTheMug()
bringTheMug()
注意:你可能還記得之前示例中的括號,現在不用擔心它們。
正如你所看到的,有一個新的命令 "if" 部分,它將檢查水壺裡是否有咖啡,然後執行冒號後面的內容(在本例中是煮咖啡的指令)。到目前為止,我們學習了兩件事:如何執行滿足給定條件的命令,以及計算機是一個愚蠢(但速度驚人)的奴隸。
不錯,這樣我們的奴隸一定會給我們拿咖啡,但如果我們想讓我們的奴隸只在有咖啡的情況下煮咖啡呢?讓我們看一個例子
if theresNotCoffeeInKettle() and theresCoffee():
makeSomeCoffee()
takeAMug()
fillTheMug()
bringTheMug()
在繼續解釋之前,我想澄清一下,"if" 表示式所做的就是檢查傳遞給它的內容是否與被稱為 "true" 的內容相同。"true" 是一種布林型別(以數學家喬治·布林的名字命名,他提出了用兩個值 "true" 和 "false" 進行運算的想法),所以我們將看到的運算子所做的就是接收一個或兩個布林型別值並對其進行轉換。
所以很簡單,"and" 運算子接收兩個(布林)值,只有當這兩個值都為 "true" 時才返回 "true",否則返回 "false"。
現在讓我們回到第一個例子,並考慮我們的奴隸不知道 "theresNotCofeeInTheKettle()" 的指令,但他知道 "theresCofeeInThekettle()"(相同但相反),所以我們該怎麼辦?讓我們把 "not" "拿" 到外面
if not theresCofeeInTheKettle():
makeSomeCoffee()
...
正如你所看到的,"not" 會反轉它接收的內容,如果它接收 "true",它將返回 "false",但如果它接收 "false",它將返回 "true"。
我們還有 "or",它接收兩個值(就像 "and" 一樣),你可能猜到了,只要兩個運算元中的一個為 "true"(或兩個都為 "true"),它就會返回 "true"。
你可以使用任意數量的這些運算子,甚至可以重複使用它們。但是,它們可能不會按照正確的順序執行,所以我們如何告訴他應該按照什麼順序執行呢?就像在數學中一樣,使用括號。
if not expression1 and expression2:
它會先將 "not" 應用於表示式 1,然後將 "and" 應用於表示式 1 的反轉(因為有 "not",記住)和表示式 2。但我們想要的是不同的東西,我們想要對錶達式 1 和表示式 2 進行 "and" 運算,然後對結果進行反轉,如何做到呢?
if not (expression1 and expression2):
如果你能看到這裡,恭喜你,你現在已經瞭解了關於布林值的幾乎所有知識,現在我的建議是,如果你感到疲倦,休息一下,甚至睡一覺,因為你值得擁有。