# 資訊之芽
###### 02.25 鄭余玄
###### 2017 資訊之芽 語法班
---
## 課程使用軟體
- 撰寫程式需要安裝具有編譯 C/C++ 程式能力的整合性開發環境或編譯軟體 :
- 編譯器 (Compiler):
- Microsoft Visual C++ (MSVC++)
- The GNU Compiler Collection (GCC, G++)
- 整合開發環境 (IDE: 包含某套編譯軟體):
- **Microsoft Visual Studio (MSVC++)**
- Dev C++ (GCC), Code blocks, Qt Creator, 等等.
- 上課示範將以 Microsoft Visual Studio 為主。
---
# 程式語言簡介
----
## 程式語言
- 「可以控制機器的人造語言」
- 方便我們撰寫程式的邏輯 <!-- .element: class="fragment" data-fragment-index="1" -->
- 可轉換成機器能夠看懂、可以執行的「指令」<!-- .element: class="fragment" data-fragment-index="2" -->
- 隨著時間發展而具備不同特性和面向<!-- .element: class="fragment" data-fragment-index="3" -->
----
## 電腦的組成
抽象來說,電腦內包含了:
- 輸入單元 (Input): 例如鍵盤和滑鼠 (感官)
- 輸出單元 (Output): 例如螢幕和印表機 (嘴巴、肢體)
- 輔助儲存單元 (Storage) : 例如硬碟和光碟
- **記憶單元 (Memory)**: 例如記憶體
- **中央處理單元 (CPU)**
----
## 程式語言分階
- 高階語言 (Ex: C, C++, Python, Java)
```c
SUM = A + B
```
- 組合語言
```asm
LOAD A
ADD B
STORE SUM
```
- 機器語言
```txt
01001101011111010001010000010111
01010011011110110101110000001011
01000111100010101011101001101011
```
----
## 關於大家要學的 C/C++
- C++ 是從 C 衍生出的是語言,兩者相近但相異
- C 語言在 1970 年代由 Dennis Ritchie 與 Ken Thompson 發展出來,與 Unix 作業系統的發展密不可分
- 課程中會將容易困惑的 C 語法,以 C++ 較易解釋的部份取代 <!-- .element: class="fragment" data-fragment-index="1" -->
- 結論,各位將學的是 C++ 中偏向 C 的部份,並不探討 C++ 中其他的語言特性 <!-- .element: class="fragment" data-fragment-index="2" -->
---
# C 新手入門
## Hello World
----

----
# 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>
int main() {
std::cout << "Hello World!" << std::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>
int main( ) {
std::cout <<
"Hello World!"
<< std::endl;
return 0;
}
```
----
## 小練習
1. 輸出「你的名子」
1. 執行下列程式碼,看看有什麼不同
```c++
#include <iostream>
using namespace std;
int main() {
cout << "1 + 1" << endl;
cout << 1 + 1 << endl;
return 0;
}
```
---
# 線上平測系統 (OJ) 教學
http://neoj.sprout.tw/
{"metaMigratedAt":"2023-06-14T12:28:15.363Z","metaMigratedFrom":"YAML","title":"資訊之芽","breaks":true,"slideOptions":"{\"theme\":\"serif\"}","contributors":"[]"}