###### tags: `MDCPP講義`
# 程式初探
語法班 第一堂課
---
## 什麼是程式呢?
----
![](https://i.imgur.com/Lb3Qn7P.png)
[連結](https://www.csie.ntu.edu.tw/~b98902112/cpp_and_algo/what_is_program/README.html)
簡單來說:
我們輸入資料
程式將資料讀入並做一些處理
最後再輸出資料
這裡程式就是我們處理資料的方法
---
## 為什麼要學C++?
----
+ 基本好上手
+ 執行速度快
+ 大學會教
---
## 要在哪裡寫程式?
----
我們如果要打報告的話會用word
要做簡報的話會用powerpoint
那寫程式呢?
----
### IDE 整合開發環境
![](https://res.cloudinary.com/practicaldev/image/fetch/s--oJL80gV0--/c_imagga_scale,f_auto,fl_progressive,h_900,q_auto,w_1600/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dvoiivqqp9tii26y5raq.png)
----
### Dev-c++
![](https://i.imgur.com/uyk6R2S.png)
[下載連結](https://sourceforge.net/projects/orwelldevcpp/)
----
### Code::Blocks
![](https://i.imgur.com/gHewG5q.png)
[下載連結](https://sourceforge.net/projects/codeblocks/files/Binaries/20.03/Windows/codeblocks-20.03-setup.exe/download)
----
講師推薦使用CodeBlocks
因為這個IDE是APCS御用
~~用Dev c++根本毒瘤~~
---
## 基本架構
----
```cpp=
#include<iostream> // 標頭檔
using namespace std; // https://zh.wikipedia.org/wiki/%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4#cite_note-1
int main(){ // 主函數
return 0; // 函數 ( 程式 ) 執行完畢
}
```
* 將程式碼放到`{}`中
* `{}`兩個缺一不可
* 程式會由上往下執行,執行到`return 0;`結束
* 可以用TAB鍵將程式碼往右推
----
看不懂沒關係 我們來一行行解析
----
```cpp=
#include<iostream>
```
`#include`就是包括、包含的意思
`<iostream>`就像是一個工具箱(標頭檔)
我們如果想要找到適當的工具(函數)
就得從適合的工具箱裡面拿
----
```cpp=
using namespace std;
```
同一個單字在不同語言有不同意思
所以使用這個方法告訴電腦我們會統一使用std這個**命名空間**
----
如果你不想打using namespace std;
那你就要明確寫出它來自哪種語言(命名空間)
正常版
```cpp=
#include<iostream>
using namespace std;
int main(){
cout<<"hello world";
}
```
懶得打版
```cpp=
#include<iostream>
int main(){
std::cout<<"hello world";
}
```
----
主函式main
```cpp=
int main(){
}
```
每個c++程式一定要塞main主函式
它代表主要程式的開始
範圍從左大括號"{"到右大括號"}"
----
上面這些不用特別背
多打幾次就記起來了
---
## 輸出
----
```cpp=
#include<iostream>
using namespace std;
int main(){
cout << "你要輸出的文字";
cout << "你也" << "可以" << "這樣";
return 0;
}
```
----
* `cout`念作"c out",代表輸出
* 後面接`<<`方向不要錯了
* 接著打上輸出的文字,記得用`""`包起來
* 最後面要加`;`,代表該行程式碼的結束
* `endl`意思是"end line",加了這個會換行
* 也可以用`'\n'`換行
----
練習題-HELLO ZA WARUDO!
![](https://pics.me.me/print-hello-world-print-hello-za-warudo-any-programmers-in-here-66648194.png)
http://mdcpp.mingdao.edu.tw/problem/A001
----
解答
```cpp=
#include<iostream>
using namespace std;
int main(){
cout<<"Hello ZA WARUDO";
}
```
----
### 換行
----
在引號裡加上\n
或是用endl
就可以換行了
```c=
cout<<"hello"<<"\n"<<"world";
```
```c=
cout<<"hello"<<endl<<"world";
```
輸出:hello
world
----
來寫一個可以換行的程式吧
例題:http://mdcpp.mingdao.edu.tw/problem/A002
----
解答
```c=
#include<iostream>
using namespace std;
int main(){
cout<<"I LOVE PROGRAMMING!\n";
cout<<"MDCPP good good good!\n";
cout<<"BENBEBOBO IS FAT";
}
```
----
這樣寫也可以
```c=
#include<iostream>
using namespace std;
int main(){
cout<<"I LOVE PROGRAMMING!"<<endl;
cout<<"MDCPP good good good!"<<"\n";
cout<<"BENBEBOBO IS FAT";
}
```
---
## 變數與輸入
----
![](https://i.imgur.com/w6r1hX2.png)
[圖片連結](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) 例:1, -3, 0, 48763
* `double` 浮點數 例:0.1, -0.22, 4.0
* `char` 字元(character) 存一個字 例:'a', 'R', '&', '0'
* `string` 字串 存一行字 例:"StarburstStream"
* `bool` 布林(boolean) 存是非 例:true(1), false(0)
----
### 命名規則
* 不能以數字開頭 <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
{"metaMigratedAt":"2023-06-17T09:34:07.216Z","metaMigratedFrom":"YAML","title":"111MDCPP 程式初探","breaks":true,"image":"https://besthqwallpapers.com/Uploads/27-1-2019/78554/thumb2-megumin-artwork-protagonist-konosuba-series-manga.jpg","slideOptions":"{\"theme\":\"dark\"}","contributors":"[{\"id\":\"0c697af1-f256-4426-a578-e9d350d81eda\",\"add\":9,\"del\":0}]"}