# 變數與運算 ## 2021/09/17 電算社第一堂社課 --- ## 變數 ---- 朋友買了一件衣料,當他拿給我們看的時候, 一位對圍棋很感興趣的人說 :「啊,好像棋盤似的。」 我說:「我倒覺得有點像稿紙。」 一位很愛吃的同學說:「這明明就是綠豆糕。」 對圍棋很感興趣的同學又說 :「我覺得它像稿紙了。」 我又說:「嗯我也覺得它像棋盤了。」 ---- 是不是覺得很亂呢 如果我們用**變數**表示的話 ---- A:「啊,好像棋盤似的。」 B:「我倒覺得有點像稿紙。」 C:「這明明就是綠豆糕。」 A:「我又覺得它像稿紙了。」 B:「嗯我也覺得它像棋盤了。」 ---- ### 變數的意義 * 防止很長的程式碼一再地出現 ```cpp= int a = 5 , b = 7 , c = 11; int d = a + b + c; cout << d; ``` <br> * 把想要存的東西存下來 ```cpp= int a; cin >> a; // 輸入值到 a; ``` ---- #### 變數的宣告 ```cpp= int a; //宣告一個變數a,其資料型態為整數int std::string club; //宣告一個變數club,其資料型態為字串string ``` ---- #### 賦值 ```cpp= int a = 10; //賦予a一個整數值10 std::string club = "CRC"; //賦予club一個字串的值"CRC" a = 20; //也可以重新賦值 ``` ---- #### 變數命名規定 * 開頭不能用數字,例如 3A * 不能使用特殊符號,例如-、@、# * 不能使用保留字,會出事 例如if、class、enum、new等等 tags: 保留字就是在C++裡面已經有自己意義的字 ---- #### 變數具有區域性 ```cpp= #include<iostream> using namespace std; int a = 10;//全域變數 int main() { int b = 10;//區域變數 if(b > 5){ int c = 50;//區域變數 } //這裡不是c的有效範圍 //這裡是a和b的有效範圍 } //這裡不是b、c的有效範圍 //但是是a的有效範圍 ``` --- ## 資料 ---- ### 資料型態 - 整數(int , long) - 浮點數(float , double) - 布林值(bool) - 字元(char) - 字串(std::string) - 因為我們都會用 using namespace std; 所以下面就用 string 帶過 ---- ### 整數 ![](https://i.imgur.com/bsmbOaF.png) ---- ### 浮點數 ![](https://i.imgur.com/Q9Koj1L.png) **double比float精準** ---- ### 布林值 bool 只有兩個值, True or False 對應到數字則是 1 和 0 之後在學條件判斷時會用到 ---- ### 字元 char 表示方式 : 用單引號 ' ' 把字元包起來 Examples : 'A'、'B'、'c'、'5' 字元用**整數**的形式儲存 ASCII Code : 把數字對應到字元 [維基百科](https://zh.wikipedia.org/wiki/ASCII) ---- ### 跳脫字元 特殊的或是有功能的字元 ![](https://i.imgur.com/rFranZg.png =30%x) ---- ### 字串 string 由一個或多個字元組成的句子 表示方式 : 用雙引號包起來 Examples : "HSNU"、"CRC" ![](https://i.imgur.com/gclcNuu.png =75%x) 字串在 std 裡面,要使用時記得加 "std::" ---- ### 雙引號 or 單引號 一個字串是用 " " "CRC is the best" 一個字元是用 ' ' ```cpp= {'C' , '8' , ' ' , '7' , '6' , '3' , '\0'} //"C8 763" ``` 可以看到 一個空格 ' ' 和跳脫字元 '\0' or '\n'...... 都可以當作是一個字元 所以可以用' '包起來 --- ## 運算 ---- ### 名詞解釋 a + b \+ : 運算子 a、b : 運算元 ---- ### 優先度 * 優先度高的先算 * e.g. 先乘除後加減 * [C++ Operator Precedence](https://en.cppreference.com/w/cpp/language/operator_precedence) * [Microsoft Doc](https://docs.microsoft.com/zh-tw/cpp/cpp/cpp-built-in-operators-precedence-and-associativity?view=msvc-160) ---- ### 算術運算 ![](https://i.imgur.com/IB8eP1d.png =70%x) ---- ### 小撇步 ```cpp= a = a + 1 ; a += 1 ; a++ ; //三行都代表 a = a + 1 //(直接把 a 的值 + 1) ``` 有 a -= 1, a \*= 1, a /= 1, a %= 1 相同的也有 a-\-,**不過沒有 a 和 a// 或 a%%** ---- 整數和整數做運算,輸出的也是整數 浮點數做運算,輸出的就是浮點數 ```cpp= cout << 4/3; //1 cout << 4.0/3; //1.33333 ``` ---- ### 條件運算 算完的結果會是一個布林值 不是True就是False ![](https://i.imgur.com/ezyop8a.png =50%x) ---- ### 邏輯運算 多條件的條件運算 得到的結果也是一個布林值 ![](https://i.imgur.com/qekUQvu.png) ---- Examples ```cpp= int a = 5 , b = 3 , c = 1; cout << (a > b); // 1 cout << (b > a); // 0 cout << (a > b && c > b); // 0 cout << (a > b || c > b); // 1 cout << ((a > b) && !(c > b)); // 1 ``` --- ### 輸入與輸出 ---- 上一節課講了輸出但沒講輸入 因為輸入需要變數的概念 用cin取得輸入 用cout輸出 ---- ### 輸入 ```cpp= int N; cin >> N; //輸入 100 的話, N 就是 100 ``` 當然也可以一次輸入很多 ```cpp= int a , b; cin >> a >> b; ``` ---- ### 輸出 ```cpp= int a = 100; cout << a << '\n'; //輸出 100 ``` ---- ### 一起用 ```cpp= int N; cin >> N; cout << N + 10 << '\n'; ``` 注意 : cout 跟 cin 的箭頭方向不一樣 --- ### 小練習 輸入兩個數字a b 幫忙算算a跟b的總和吧 ---- 我是防雷頁 ---- ### 解答 ```cpp= #include<iostream> using namespace std; int main(){ int a , b; cin >> a >> b; cout << a + b; return 0; } ``` --- ### OJ練習 * [GreenJudge a005:矩形面積](http://www.tcgs.tc.edu.tw:1218/ShowProblem?problemid=a005) * [GreenJudge a006:時間換算(一)](http://www.tcgs.tc.edu.tw:1218/ShowProblem?problemid=a006) * [GreenJudge a008:溫度轉換](http://www.tcgs.tc.edu.tw:1218/ShowProblem?problemid=a008) * [GreenJudge a009:團購力量大](http://www.tcgs.tc.edu.tw:1218/ShowProblem?problemid=a009) * [GreenJudge a010:年齡推算](http://www.tcgs.tc.edu.tw:1218/ShowProblem?problemid=a010)
{"metaMigratedAt":"2023-06-16T10:06:44.041Z","metaMigratedFrom":"YAML","title":"變數與運算","breaks":true,"slideOptions":"{\"transition\":\"slide\",\"theme\":null}","contributors":"[{\"id\":\"4f731eff-9d88-41f4-af56-2e3e02f20cfc\",\"add\":2846,\"del\":1296},{\"id\":\"9e7d687a-83f2-4e8a-8ee6-8846394e69a5\",\"add\":653,\"del\":180},{\"id\":\"68c94489-3c2e-4879-b847-e982f360b03c\",\"add\":1372,\"del\":42},{\"id\":\"efc43b79-1b19-4cb1-9b18-ce50fad56214\",\"add\":727,\"del\":46}]"}
    609 views