---
# System prepended metadata

title: '[2020H401] 2020.6.22上課筆記'
tags: ['C/C++ ', H400大學家教]

---

# [2020H401] 2020.6.22上課筆記

## 今天課程重點
- C++教學：基本輸入與輸出複習
- C++教學：流程控制 if-else條件判斷式
- 撰寫期末專題[終極密碼]
- C++教學：變數和基本型別
- 課程進度確認




## C++教學：基本輸入與輸出複習
- 請確實複習課本內容
- 每個題目都要練習

### iostream是最常用的輸入輸出函式庫
`cout` 輸出資料
`cin` 輸入資料

範例：
``` C++
#include <iostream>

int main() {
  std::cout << "Hello World!\n";
}
```



### 命名空間 using namespace
原本使用cin, cout，前面都要帶前綴字元std::，為了用更精簡的語法來寫程式，我們使用`using`

#### 使用`using`前
``` C++
#include <iostream>

int main() {
  std::cout << "Hello World!\n";
}
```

#### 使用`using`後
``` C++
#include <iostream>
#using std::cout;  //使用using宣告

int main() {
  cout << "Hello World!\n";
}
```
## C++教學：流程控制 if-else條件判斷式

### if-else


### 邏輯運算子
- AND: 兩個條件皆為True，則為True
- OR: 兩者條件之一為True，則為True





## 撰寫期末專題[終極密碼]
終極密碼專題分析
1. 每次都會隨機出一個最終答案（1~100）
2. 使用者每次可輸入一個數字
- 如果輸入數字等於最終答案：告知使用者答對，遊戲結束
- 如果數字大於最終答案：告知使用者答案介於目前範圍最小值～輸入數字之間，使用者繼續猜
- 如果數字小於最終答案：告知使用者答案介於輸入數字～目前範圍最大值之間，使用者繼續猜
- 使用者猜超出範圍的數字：提示使用者重新輸入  


產生亂數的方法
```C++
#include <iostream>
#include <cstdlib> /* 亂數相關函數 */
#include <time.h>

int main(){
  /* 產生亂數 */
  srand((unsigned)time(NULL));
  int x = rand()%100;

  std::cout << "x = " << x << std::endl;
  return 0;
}
```



## C++教學：變數和基本型別

電腦處理人類的各種資料，像是年紀、性別、收入金額、身高，為了讓電腦可以透過程式處理，在程式語言中會定義各種資料型態，來正確表示資料。


### 資料型態

- 單個文字 char
- 多個文字 char[ ]
- 數字 int, short, long, double

| 型別     | 意義   | 
| -------- | -------- | -------- |
| `bool`    | 布林值，表示真(1)或假(0)    | 
| `char`    | 單個字元                  |
| `int`     | 整數                      |
| `float`    | 單精度浮點數      |
| `double`    | 雙精度浮點數        |


### 變數

- 宣告語法
``` C++
int a = 0   //宣告一個變數，名稱為a，並給予初始值0
```

- 命名不可使用保留字
例如 `continue` `char` `operator`

- 變數的範疇 (未來在函式單元補充)
    - 全域(Global Scope)
    - 區塊(Local Scope)


### 常數
- 宣告語法
``` C++
const float pi = 3.14   //宣告一個常數，名稱為pi，並給予初始值3.14
```

### 處理文字更好用的變數：字串String
- 程式一開頭必須先宣告以下函式庫引用、命名空間
``` C++
#include <string>
using std::string
```
- string的宣告
``` C++
#include <string>
using std::string

void main(){
    string s;            //string的宣告
    cin >> s;            //輸入一個字串
    cout << s << endl;   //將剛剛輸入的字串輸出
    return 0;
}

```

- string的運算 
    - 比較
    - 結合
    - 計算字串長度




### 課程進度確認

1. 以下規劃為**最充足學習時間**來考量，若學習狀況良好，會提前進度教學，增加專題實作
2. 7/31會做一次學習狀況檢核討論

| 日期     | 課程進度   | 備註     |
| -------- | -------- | -------- |
| 6/18(Thr.)    | [C++教學] 基本觀念、輸入與輸出     |  OK    |
| 6/22(Mon.)    | [C++教學] 變數與資料型態(一)      |      |
| 7/2(Thr.)     | [C++教學] 變數與資料型態(二)      |      |
| 7/6(Mon.)     | [C++教學] 流程指令及迴圈(一)      |      |
| 7/13(Mon.)    | [C++教學] 流程指令及迴圈(二)      |      |
| 7/20(Mon.)    | [C++教學] 陣列與指標(一)         |      |
| 7/27(Mon.)    | [C++教學] 陣列與指標(二)         |      |
| 8/3(Mon.)     | [C++教學] 函式              |      |
| 8/10(Mon.)    | [C++教學] 結構與類別(一)     |      |
| 8/17(Mon.)    | [C++教學] 結構與類別(二)     |      |
| 8/24(Mon.)    | [C++教學] 綜合練習(一)       |      |
| 8/31(Mon.)    | [C++教學] 綜合練習(二)       |      |


###### tags: `H400大學家教` `C/C++ `