# C++基礎語法
## 9/8 社課
----
由於上禮拜有點混亂
感到非常抱歉
今天會先簡單複習上禮拜教的內容
---
## 在哪裡寫程式?
~~哪裡都可以~~<!-- .element: class="fragment" data-fragment-index="1" -->
----
整合開發環境
(Integrated Development Environment)
- 編輯
- 除錯
- 編譯
- 執行
簡單來說就是幫你做好除了寫程式以外的事情
----
### 常見 IDE
- [**CodeBlocks**](https://sourceforge.net/projects/codeblocks/ "Code::Blocks")
- [**Dev-C++**](https://sourceforge.net/projects/orwelldevcpp/ "Dev-C++")
- [**VSCode**](https://code.visualstudio.com/Download "VSCode")
----
### CodeBlocks

----
建立新檔案

也可以直接按 Ctrl + Shift + N
----
選 C++
或按 Ctrl + S 存檔時
將副檔名 .c 改成 .cpp
----
寫完程式碼後
按 F9 可以進行編譯並執行
---
## 基本框架
```cpp=
int main(){
// 你要執行的程式
}
```
---
## 資料型態與變數
----
**常見資料型態**
- int 整數
- long long 長整數
- char 字元
- float 浮點數
- double 倍精度浮點數
- string 字串
- bool 布林值
----
### 變數宣告
```cpp=
int a=1;
long long b=10000000000;
char c='c';
double d=3.14;
string e="hello";
bool f=true;
```
----
在程式碼中
單個等號的作用是賦值
意即將等號右方的資料複製一份丟給左方
----
```cpp=
int a=0;
a=1;
a=2;
```
---
### 變數運算
----
- \+ 加
- \- 減
- \* 乘
- / 除
- % 模除(取餘數)
- a%b = a-a/b*b
----
整數運算時無條件捨去小數
```cpp=
int a=1.2; // a=1
int b=5/2; // b=2
```
----
整數和浮點數運算會得到浮點數
```cpp=
double a=1+1.2; // a=2.2
double b=5/2.0; // b=2.5
```
----
賦值運算
```cpp=
int a=0;
a=a+1; // a+=1;
a=a-1; // a-=1;
a=a*2; // a*=2;
a=a/2; // a/=2;
a=a%2; // a%=2;
```
----
```cpp=
a++; // a+=1;
a--; // a-=1;
```
----
字元運算即轉換為 ASCII 碼後的運算
```cpp=
char c='a';
c+=3; // c='d'
```
---
## 輸入輸出
----
輸入
```cpp=
cin >> input_1 >> input_2 ...;
```
----
輸出
```cpp=
cout << output_1 << output_2 ...;
```
注意兩個輸出之間不會有換行或空格
```cpp=
cout << 1 << 2;
```
```cpp
12
```
換行可用 '\n' 、 "\n" 或 endl
----
輸出小數點後 k 位數
```cpp=
cout << fixed << setprecision(k) << output_1 ...;
```
不足的位數會補 0,超過的位數四捨五入
```cpp=
double a=1, b=3.1415926;
cout << fixed << setprecision(3) << a << '\n' << b;
```
```cpp
1.000
3.142
```
需引入<iomanip\>
---
## 選擇敘述(if/else)
----
### 關係運算
- a<b 小於
- a<=b 小於等於
- a\>b 大於
- a\>=b 大於等於
- a==b 等於
- a!=b 不等於
----
### 邏輯運算
- a&&b 且
- a||b 或
- !a 非,取相反值
若 x 不為布林值
則 x!=0 時為 true
x==0 時為 false
----
關係運算優先於邏輯運算
----
```cpp=
if(條件){
//...
}
```
當條件(即小括號內)為 true
則會執行大括號中的內容
----
```cpp=
if(條件1){
//...
}
else if(條件2){
//...
}
//...
else{
//...
}
```
----
- else 的觸發條件為前面的都不為真
- 只會執行由上往下第一個為真的條件
----
```cpp=
if(score==100){
cout << "滿分!" << '\n';
}
else if(score>=60){
cout << "及格:)" << '\n';
}
else{
cout << "不及格:(" << '\n';
}
```
----
### switch/case
if/else 的替代
----
```cpp=
switch(變數或運算式){
case 符合的答案:
//...
break;
case 符合的答案:
//...
break;
default:
//...
break;
}
```
如果沒有 break 會將符合答案的 case
以下所有都跑一遍
----
```cpp=
switch(boolin){
case 0:
cout << "false" << '\n';
break;
default:
cout << "true" << '\n';
}
```
---
寫寫練習題吧
{"contributors":"[{\"id\":\"1a0296c8-ce58-4742-acda-22c02ae81a74\",\"add\":3337,\"del\":349}]","title":"09/08 C++社課"}