###### tags: `MDCPP講義`
# 程式初探
語法班 第一堂課
---
## 什麼是程式呢?
----
用來指揮電腦的一堆的指令
<!-- 我們給了電腦,像是圖上的指令,而這個指令是電腦可以讀懂的,讀懂這些指令之後,就會給予相對的反饋。-->
<!-- 喔對,順帶一提,圖上的程式碼,其實電腦不能直接看懂,還要經過一連串的轉換,變成0101,也就是機器碼 -->

----
|||||
<!-- 有點像是有一份食譜,把份食譜丟給廚師,廚師就會遵照上面的指令,做出一道道的菜 -->
----
套到電腦上
程式 -> 電腦 -> 電腦行為
---
## 程式有幾種?
----

----
我們要學哪一種?
----
# C++

----
為甚麼要選C++?
----
高中的程式競賽、大學資工系
都是以C++作為主要的程式語言
----
C++比起其他容易入門的語言
像是python之類的
更加的完整,可以學得更紮實
----
```cpp=
#include<iostream>
int main(){
cout<<"Hello World";
}
```
```python=
print("Hello world")
```
---
## 要在哪裡寫程式?
----
我們如果要打報告的話會用word
要做簡報的話會用powerpoint
那寫程式呢?
----
### IDE 整合開發環境

----
### Dev-c++

[下載連結](https://sourceforge.net/projects/orwelldevcpp/)
---
程式怎麼寫?
----
### 基本架構
----
```cpp=
#include<iostream> // 標頭檔 包了很多方便的功能
using namespace std; // 命名空間
int main(){ // 主函數
return 0; // 函數 ( 程式 ) 執行完畢
}
```
* 將程式碼放到`{}`中
* 程式會由上往下執行,執行到`return 0;`結束
* 可以用TAB鍵將程式碼往右推
----
```cpp=
#include<iostream> // 標頭檔 包了很多方便的功能
using namespace std; // 命名空間
int main(){ // 主函數
return 0; // 函數 ( 程式 ) 執行完畢
}
```
標頭檔: 別人已經寫好的程式,引入標頭檔,就可以直接使用
為什麼這樣做? 不需要重複造輪子!
----
```cpp=
#include<iostream> // 標頭檔 包了很多方便的功能
using namespace std; // 命名空間
int main(){ // 主函數
return 0; // 函數 ( 程式 ) 執行完畢
}
```
命名空間? 區分不同廠商的輪子!
----
```cpp=
#include<iostream> // 標頭檔 包了很多方便的功能
using namespace std; // 命名空間
int main(){ // 主函數
return 0; // 函數 ( 程式 ) 執行完畢
}
```
函數?
----
:max_bytes(150000):strip_icc()/blackbox2-10a65df4364d4bf19fce709227f6822b.png)
數學上: 對於輸入做運算,輸出結果
f(x) = x + 3
f(2) = 5
----
程式上?
程式運算的地方!
----
```cpp=
#include<iostream> // 標頭檔 包了很多方便的功能
using namespace std; // 命名空間
int main(){ // 主函數
return 0; // 函數 ( 程式 ) 執行完畢
}
```
主函數?
程式主要運行的地方!
在裡面寫東西,他就會跑動!
return? 輸出!
----
### 輸出
----
```cpp=
#include<iostream>
using namespace std;
int main(){
cout << "你要輸出的文字";
cout << "輸出這句後會換行" << endl;
cout << "這個也會換行喔~" << '\n';
return 0;
}
```
* `cout`念作"c out",代表輸出,out: 輸出設備
* 後面接`<<`方向不要錯了,代表流向
* 接著打上輸出的文字,記得用`""`包起來 (google 字串)
* 最後面要加`;`,代表該行程式碼的結束
* `endl`意思是"end line",加了這個會換行
* 也可以用`'\n'`換行
----
```cpp=
#include<iostream>
using namespace std;
int main(){
cout << "4+5= " << 4 + 5 << endl;
cout << 3 * 7 << endl;
cout << 7 - 2 << endl;
cout << 6 / 4 << endl;
return 0;
}
```
----
### 變數與輸入
----

[圖片連結](https://www.xq.com.tw/xs%E8%AA%9E%E6%B3%95%E5%85%A5%E9%96%80-%E8%AE%8A%E6%95%B8/)
可以將變數想成裝資料的容器
裝進去的東西可以再變動
----
### 宣告變數
把容器弄出來然後幫他取名字
```cpp=
#include<iostream>
using namespace std;
int main(){
int a;
}
```
* `int`指的是整數,是一種變數型態
* `a`是這個變數的名字
----
### 變數型態
變數型態有很多種,這邊列舉一些常用的
* `int` 整數(integer) $-2^{32}+1$ ~ $2^{32}-1$ <br> 例:1, -3, 0, 48763
* `double` 浮點數 15位有效數字 <br> 例:0.1, -0.22, 4.0
* `char` 字元(character) 存一個字 <br> 例:'a', 'R', '&', '0'
* `string` 字串 存一行字 <br> 例:"StarburstStream"
* `bool` 布林(boolean 存是非 <br> 例:true, false
----
### 命名規則
* 不能以數字開頭 <br> 例:1a, 2p
* 不能跟保留字一樣 <br> 例:if, int... [保留字清單](https://iter01.com/542396.html)
* 建議:<br>變數拿來做什麼的就取什麼,<br>這樣自己比較好懂
----
### 輸入
```cpp=
#include<iostream>
using namespace std;
int main(){
int a;
cin >> a;
cout << a;
return 0;
}
```
* `cin`念作"c in",代表輸入
* 後面接`>>`方向不要錯了
* 接著放接收輸入資料的變數`a`
* 最後將`a`這個變數裡面存的資料輸出
----
### 變數賦值
```cpp=
#include<iostream>
using namespace std;
int main(){
int a = 5;
int b;
b = 48763;
return 0;
}
```
* 賦值的符號是`=`,左邊放接受資料的變數,右邊放賦予的值
* 可以在宣告變數的時候先給變數一個初始值
* 也可以宣告完後再賦值
----
### 更改變數值
```cpp=
#include<iostream>
using namespace std;
int main(){
int a = 5;
int b;
b = 48763;
a = 13;
b = a;
return 0;
}
```
* 變數被賦值後可以再做變更,就在賦值一次就好
* 賦予的值也可以是一個變數
----
### 變數的運算
運算的規則跟數學一樣,括號`()`優先,然後先乘`*`除`/`後加`+`減`-`
```cpp=
#include<iostream>
using namespace std;
int main(){
int a = (6+7) * 4 + 23;
cout << a;
return 0;
}
```
----
### 除法
c++裡面`/`代表除以,而且是無條件捨去,<br>要得到小數的答案,就必須用`double`資料型態儲存
```cpp=
#include<iostream>
using namespace std;
int main(){
int a = 7/4;
cout << a << endl;
double b = 7.0/4.0;
cout << b << endl;
return 0;
}
```
* 第一行會輸出1,因為7除以4的商是1
* 第二行會輸出1.75,因為7除以4等於1.75
----
### 餘數
`%`代表取餘數
```cpp=
#include<iostream>
using namespace std;
int main(){
int a = 7%4;
cout << a << endl;
return 0;
}
```
* 會輸出3,因為7除以4的餘數是3
{"title":"程式初探","breaks":true,"image":"https://besthqwallpapers.com/Uploads/27-1-2019/78554/thumb2-megumin-artwork-protagonist-konosuba-series-manga.jpg","slideOptions":"{\"theme\":\"moon\"}","description":"語法班 第一堂課","contributors":"[{\"id\":\"f547d745-63f3-4bad-986b-1751eeec19d1\",\"add\":2970,\"del\":929,\"latestUpdatedAt\":1751698747048},{\"id\":\"3e463e3b-7198-401a-b406-fedf48ce08ae\",\"add\":3,\"del\":3},{\"id\":\"6a375517-4167-4b7c-a983-1e595a29262c\",\"add\":160,\"del\":23},{\"id\":\"3de10d07-ffd5-4c6f-8eb3-56f675abf068\",\"add\":3575,\"del\":277}]"}