到此為止你已經學會了讀寫檔案,命令列處理,以及很多 Ruby 數學運算功能。
今天,你將要開始學習邏輯了。你要學習的不是研究院裡的高深邏輯理論,只是程式設計師每天都用到的讓程式跑起來的基礎邏輯知識。
學習邏輯之前你需要先記住一些東西。這個練習我要求你一個星期完成,不要擅自修改 schedule,就算你煩得不得了,也要堅持下去。這個練習會讓你背下來一系列的邏輯表格,這會讓你更容易地完成後面的習題。
需要事先警告你的是:這件事情一開始一點樂趣都沒有,你會一開始就覺得它很無聊乏味,但它的目的是教你程式設計師必須的一個重要技能 — 一些重要的概念是必須記住的,一旦你明白了這些概念,你會獲得相當的成就感,但是一開始你會覺得它們很難掌握,就跟和烏賊摔跤一樣,而等到某一天,你會刷的一下豁然開朗。你會從這些基礎的記憶學習中得到豐厚的回報。
這裡告訴你一個記住某樣東西,而不讓自己抓狂的方法:在一整天裡,每次記憶一小部分,把你最需要加強的部分標記起來。不要想著在兩小時內連續不停地背誦,這不會有什麼好的結果。不管你花多長時間,你的大腦也只會留住你在前15 或者30 分鐘內看過的東西。
取而代之,你需要做的是創建一些索引卡片,卡片有兩列內容,正面寫下邏輯關係,反面寫下答案。你需要做到的結果是:拿出一張卡片來,看到正面的表達式,例如「True or False」,你可以立即說出背面的結果是「True」!堅持練習,直到你能做到這一點為止。
一旦你能做到這一點了,接下來你需要每天晚上自己在筆記??本上寫一份真值表出來。不要只是抄寫它們,試著默寫真值表,如果發現哪裡沒記住的話,就飛快地撇一眼這裡的答案。這樣將訓練你的大腦讓它記住整個真值表。
不要在這上面花超過一周的時間,因為你在後面的應用過程中還會繼續學習它們。
## 邏輯術語
在 Ruby 中我們會用到下面的術語(符號或者詞彙)來定義事物的真(True)或者假(False)。電腦的邏輯就是在程式的某個位置檢查這些符號或者變數組合在一起表達的結果是真是假。
* `and`?和
* `or`?或
* `not`?非
* `!=`?(not equal) 不等於
* `==`?(equal) 等於
* `>=`?(greater-than-equal) 大於等於
* `<=`?(less-than-equal) 小於等於
* true 真
* false 假
其實你已經見過這些符號了,但這些詞彙你可能還沒見過。這些詞彙(and, or, not)和你期望的效果其實是一樣的,跟英語裡的意思一模一樣。
## 真值表
我們將使用這些符號來創建你需要記住的真值表。
| NOT | True? |
| --- | --- |
| not False | True |
| not True | False |
| OR | True? |
| --- | --- |
| True or False | True |
| True or True | True |
| False or True | True |
| False or False | False |
| AND | True? |
| --- | --- |
| True and False | False |
| True and True | True |
| False and True | False |
| False and False | False |
| NOT OR | True? |
| --- | --- |
| not (True or False) | False |
| not (True or True) | False |
| not (False or True) | False |
| not (False or False) | True |
| NOT AND | True? |
| --- | --- |
| not (True and False) | True |
| not (True and True) | False |
| not (False and True) | True |
| not (False and False) | True |
| != | True? |
| --- | --- |
| 1 != 0 | True |
| 1 != 1 | False |
| 0 != 1 | True |
| 0 != 0 | False |
| == | True? |
| --- | --- |
| 1 == 0 | False |
| 1 == 1 | True |
| 0 == 1 | False |
| 0 == 0 | True |
現在使用這些表格創建你自己的卡片,再花一個星期慢慢記住它們。記住一點,這本書不會要求你成功或者失敗,只要每天盡力去學,在盡力的基礎上多花一點功夫就可以了。
- 笨方法更簡單
- 習題 0: 準備工作
- 習題 1: 第一個程式
- 習題 2: 注釋和井號
- 習題 3: 數字和數學計算
- 習題 4: 變數(variable)和命名
- 習題 5: 更多的變數和印出
- 習題 6: 字串(string)和文字
- 習題 7: 更多印出
- 習題 8: 印出,印出
- 習題 9: 印出,印出,印出
- 習題 10: 那是什么?
- 習題 11: 提問
- 習題 12: 模組 (Module)
- 習題 13: 參數、解包、參數
- 習題 14: 提示和傳遞
- 習題 15: 讀取檔案
- 習題 16: 讀寫檔案
- 習題 17: 更多的檔案操作
- 習題 18: 命名、變數、程式碼、函式
- 習題 19: 函式和變數
- 習題 20: 函式和檔案
- 習題 21: 函式可以傳回東西
- 習題 22: 到現在你學到了哪些東西?
- 習題 23: 閱讀一些程式碼
- 習題 24: 更多練習
- 習題 25: 更多更多的練習
- 習題 26: 恭喜你,現在來考試了!
- 習題 27: 記住邏輯關系
- 習題 28: 布林(Boolean)表示式練習
- 習題 29: 如果(if)
- 習題 30: Else 和 If
- 習題 31: 做出決定
- 習題 32: 回圈和陣列
- 習題 33: While 回圈
- 習題 34: 存取陣列里的元素
- 習題 35: 分支 (Branches) 和函式 (Functions)
- 習題 36: 設計和測試
- 習題 37: 復習各種符號
- 習題 38: 閱讀程式碼
- 習題 39: 陣列的操作
- 習題 40: Hash, 可愛的 Hash
- 習題 41: 來自 Percal 25 號行星的哥頓人(Gothons)
- 習題 42: 物以類聚
- 習題 43: 你來制作一個游戲
- 習題 44: 評估你的游戲
- 習題 45: 物件、類和從屬關系
- 習題 46: 一個專案骨架
- 習題 47: 自動化測試
- 習題 48: 更進階的使用者輸入
- 習題 49: 創造句子
- 習題 50: 你的第一個網站
- 習題 51: 從瀏覽器中取得輸入
- 習題 52: 創造你的網頁游戲
- 下一步
- 一個老程式設計師的建議