# 資訊之芽
###### 03.03 鄭余玄
###### 2018 資訊之芽 語法班
---
# 程式語言簡介
----
## 程式語言
- 「可以控制機器的人造語言」
- 方便我們撰寫程式的邏輯 <!-- .element: class="fragment" data-fragment-index="1" -->
- 可轉換成機器能夠看懂、可以執行的「指令」<!-- .element: class="fragment" data-fragment-index="2" -->
- 隨著時間發展而具備不同特性和面向<!-- .element: class="fragment" data-fragment-index="3" -->
----
## 程式語言類別
- 高階語言 (Ex: C, C++, Python, Java)
```c
SUM = A + B
```
- 組合語言
```asm
LOAD A
ADD B
STORE SUM
```
- 機器語言
```txt
01001101011111010001010000010111
01010011011110110101110000001011
01000111100010101011101001101011
```
----
## 電腦的組成
抽象來說,電腦內包含了:
- **中央處理單元 (CPU)**
- **記體憶單元 (Memory)**
- 儲存單元 (Storage),ex: 硬碟
- 輸入單元 (Input),ex: 鍵盤、滑鼠
- 輸出單元 (Output),ex: 螢幕、印表機
----
## 關於大家要學的 C/C++
- C 語言與 Unix 作業系統的發展密不可分
- C++ 是從 C 衍生的語言,兩者相近但**相異**
- 課程中會將容易困惑的 C 語法,以 C++ 較易解釋的部份取代 <!-- .element: class="fragment" data-fragment-index="1" -->
- 各位將學的是 C++ 中偏向 C 的部份,並不探討 C++ 中其他的語言特性 <!-- .element: class="fragment" data-fragment-index="2" -->
---
# C 新手入門
## Hello World
----

----
## 課程使用軟體
- 整合開發環境 (IDE)
- **Dev-C++** (上課使用此軟體)
- Microsoft Visual Studio
- 編譯器 (Compiler)
- GNU Compiler Collection (gcc, g++)
- Intel C++ Compiler (icc, icpc)
----
# Hello World!
- 請開啟一個新專案,輸入下列程式碼後編譯並執行
```c++
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!" << endl;
return 0;
}
```
----
## 也可以這樣寫
```c++
#include <iostream>
int main() {
std::cout << "Hello World!" << std::endl;
return 0;
}
```
----
## 簡略說明
```c++
#include <iostream>
// 加註解
int main() {
std::cout << "Hello World!" << std::endl; // 要記得加上分號
return 0;
}
```
- ```//```,加上單行程式碼註解(給人看的,隨意寫)
- ```#```,開頭的是前置處理指令(給編譯器看的)
```c++
#include <檔案名>
```
- ```std::cout``` 和 ```std::endl``` 都是在 ```iostream``` 中
----
## 主程式
```c++
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!" << endl; // 分號很重要!!
return 0; // 分號很重要!!
}
```
- ```int```,整數 integer,後面有詳細介紹
- ```main()```,程式進入點
- ```{}```,程式區塊範圍
- ```return 0;```,程式正常結束
----
## 標準輸入輸出
```c++
std::cout << "Hello World!" << std::endl;
```
- ```std::cout```,輸出到螢幕 (console output)
- ```<<```,串接要輸出的東西
- ```std::endl```,輸出換行(end-of-line)
- 「**```;```**」,結束這行指令
----
## 串接
```c++
std::cout << "Hello World!" << std::endl << "我愛資芽!";
```
或是
```c++
std::cout << "Hello World!" << std::endl;
std::cout << "我愛資芽!";
```
----
## Tips
- cout 唸作「see-out」,不是~~靠~~
- 指令(陳述式)結尾加「```;```」
- 不計換行、空白、定位(Tab),可以幫助程式碼編排
```c++
#include <iostream>
using namespace std;
int main( ) {
cout <<
"Hello World!"
<< endl;
return 0;
}
```
----
## 小練習
1\. 執行下列程式碼,看看有什麼不同
```c++
#include <iostream>
using namespace std;
int main() {
cout << "1 + 1" << endl;
cout << 1 + 1 << endl;
return 0;
}
```
---
# 線上平測系統 (OJ) 教學
http://neoj.sprout.tw/</pre>
{"metaMigratedAt":"2023-06-14T15:48:29.882Z","metaMigratedFrom":"YAML","title":"資訊之芽","breaks":true,"slideOptions":"{\"theme\":\"serif\"}","contributors":"[]"}