---
# System prepended metadata

title: 'Ruby 小知識00: 基本元素'
tags: [Ruby]

---

# Ruby 小知識00: 基本元素
###### tags: `Ruby`

![](https://i.imgur.com/Pnz4wvq.jpg)

學習程式語言，某種程度上跟外語有些雷同，要用電腦聽的懂的語言和電腦溝通，只不過電腦不像人類那麼會變通，如果給電腦的單字寫錯或是文法搞錯，程式就沒辦法順利執行。

也因此掌握基本的元素，可以有效讓我們降低犯下初階錯誤的機會，並且讀懂比較複雜的程式結構。

懂的人可以略過此單元

## 1. 變數 Variable

變數就像是個容器一樣，我們可把想要的資料(value)裝進這個容器裡面，當然裝入容器的資料可以再被倒出來，或是把原本的容器拿來裝新東西。

舉個例子：
    ```
    apple = 1000 #把數字1000指定給一個叫做apple的容器
    banana = 2500
    
    apple = banana #想想看這時候apple會是多少？
    ```
    
    但每個變數都有自己的生命週期，這個後面章節再討論

## 2. Data type
前面提到可以把value指定給variable，那value有哪些呢？
    * 數字：整數、浮點數的表示方式有所不同
    * 字串 String：帶有 " " 的元素
    * 布林值 Boolean： true, false
    * 符號 Symbol： 算是Ruby特有， 以 :symbol 表示
    
    另外
    * 陣列 Array
    * Hash

    則是資料的兩種呈現方式(資料結構），後面會分單元討論

## 3. 運算符號與邏輯符號
```
    +
    -
    *
    ** 乘以幾次方
    /
    % 取餘數
    
    ---以下為邏輯判斷---
    
    == 判斷是否等同
    >
    <
    >=
    <=
    != 不等於
    
    --- 交集聯集---
    && AND
    || OR
    ^  XOR
    
    #還有許多意想不到的符號，陸續補充
```

## 4. 邏輯判斷與流程控制
有沒有聽過if else或是for迴圈，ruby有很多很酷的寫法，像是：
```
case when
do for
while
unless
loop do
```
但先大概知道就好，之後遇到我們再一起好好練習

## 5. 方法 
把上述的元素經過適當排列後，我們就可以把它們賦予成為「方法」，這樣就不用每次要用到都要重新寫，例如如果我要計算年收入
```
    def year_income(monthly_income, bonus)
        year_income = monthly_income * 12 + bonus
    end

    puts year_income(22000, 3000) ＃月薪2萬2, 獎金3000

    # 印出 267000
```

## 6. 輸入資料與印出資料
如果要在終端機印出資料，可以用
```
    p 保留原型態、不換行、無回傳值
    puts 不保留原型態、換行、無回傳值  
    print 保留原型態、換行、回傳值
```
    
這三種方式，但呈現的方式以及return的內容會略有不同，可以自己生成一個陣列a = [1, 2, 3] 試試
    
如果要餵資料給系統，則可以在終端機用gets

```
    > gets
    pikachu #這邊是我輸入的
    => "pikachu\n"
    
    > gets.chomp  ＃加上.chomp方法把換行符號拿掉
    pikachu
    => "pikachu"
```


