## C語言程式設計導論
### Hello World!
---
<!-- .slide: data-transition="fade" -->
<h3 class="text-left">
Table of Content
</h3>
- 認識程式
- 如何在電腦上寫C/C++?
- Hello World! 實機操作
- C語言是如何運行?
<!-- .element: class="fragment" data-fragment-index="1" -->
---
<!-- .slide: data-transition="fade" -->
### 認識程式
----
<!-- .slide: data-transition="fade" -->
<span>
<b>
「程式」其實就是一種描述執行步驟的語言
<br>
</b>
</span>
<span>
<!-- .element: class="fragment" data-fragment-index="1" -->
<b>
如同設計房屋的藍圖或是烹飪的食譜
<br>
</b>
</span>
<span>
<!-- .element: class="fragment" data-fragment-index="2" -->
<b>
通常所說的「程式」是指「電腦程式」
<br>
</b>
</span>
<span>
<!-- .element: class="fragment" data-fragment-index="3" -->
<b>
就是人類要和電腦溝通的語言
</b>
</span>
----
<!-- .slide: data-transition="fade" -->
### 小提醒
<span>
<!-- .element: class="fragment" data-fragment-index="1" -->
<h2>
電腦很笨
</h2>
</span>
----
<!-- .slide: data-transition="fade" -->
**程式必須每一行都讓電腦看得懂**
**其中我們在撰寫時就要遵守「語法」**
**在本課程主要是講 C 語言的語法**
----
<!-- .slide: data-transition="fade" -->
### 認識C語言
----
<!-- .slide: data-transition="fade" -->
<span>
<b>
C語言是在1972年誕生的程式語言
<br>
</b>
</span>
<span>
<!-- .element: class="fragment" data-fragment-index="1" -->
<b>
是現代許多程式語言的前輩
<br><br>
</b>
</span>
<span>
<!-- .element: class="fragment" data-fragment-index="2" -->
<b>
另外一方面
<br>
認識C語言也比較方便理解電腦的其他性質
</b>
</span>
---
<!-- .slide: data-transition="fade" -->
### 如何在電腦上寫C/C++?
----
<!-- .slide: data-transition="fade" -->
- [Code::Blocks IDE](https://www.codeblocks.org/downloads/)
- [Dev-C++ IDE](https://sourceforge.net/projects/orwelldevcpp/) <- 初學者可用
- [VScode](https://hackmd.io/@liaojason2/vscodecppwindows) <- 推薦 我都用這個
- [Programiz](https://www.programiz.com/cpp-programming/online-compiler/) <- 線上的
- [OnlineGDB](https://www.onlinegdb.com/online_c++_compiler) <- 線上的
---
<!-- .slide: data-transition="fade" -->
### Hello World! 實機操作
----
<!-- .slide: data-transition="fade" -->
**在C語言幾乎所有程式都會先寫上這幾行**
```cpp
#include <stdio.h>
int main() {
return 0;
}
```
**因為很重要 先背起來**
**之後的章節會解釋原因**
----
<!-- .slide: data-transition="fade" -->
**開啟編輯器並寫上**
```cpp
#include <stdio.h>
int main() {
printf("Hello World!");
return 0;
}
```
---
<!-- .slide: data-transition="fade" -->
### C語言是如何運行?
----
<!-- .slide: data-transition="fade" -->
**在我們現代電腦都是圖像化界面的時代**
**有點難想像以前的電腦都是要透過指令來操作電腦**
----
<!-- .slide: data-transition="fade" -->
<span>
<b>
事實上
<br>
</b>
</span>
<span>
<!-- .element: class="fragment" data-fragment-index="1" -->
<b>
要執行一個程式或是檔案
<br>
並不只是按個按鈕這麼簡單
<br>
</b>
</span>
<span>
<!-- .element: class="fragment" data-fragment-index="2" -->
<b>
<br>
接下來會介紹C語言的程式
<br>
在按下按鈕之後
<br>
到底在內部做了什麼
</b>
</span>
----
<!-- .slide: data-transition="fade" -->
<h3 class="text-left">
程式編譯流程
</h3>
1. **前處理 Preprocess:**
**把內建的stdio.h的檔案抓下來**
2. **編譯 Compile:**
**將程式碼化為電腦看得懂的組合語言**
3. **組譯 Assemble:**
**將組合語言組譯為目的程式(.obj)**
4. **連結 Link:**
**將.obj檔化為電腦的執行檔(.exe)**
5. **執行 Execute:**
**執行.exe檔**
<!-- .element: class="fragment" data-fragment-index="1" -->
----
<!-- .slide: data-transition="fade" -->
<h3 class="text-left">
流程圖
</h3>
```mermaid
graph LR;
id1[/前處理 /]
id2[/編譯 /]
id3[/組譯 /]
id4[/連結 /]
id5[/執行 /]
id1-->id2-->id3-->id4-->id5
```
----
**總而言之 這些步驟就是**
```mermaid
graph LR;
id1[/人類看得懂的程式碼/]
id2[/電腦看得懂的指令/]
id3[/執行結果/]
id1-->|翻譯|id2-->|執行|id3
```
----
<!-- .slide: data-transition="fade" -->
**如此一來程式就完成了編譯並且執行**
----
<!-- .slide: data-transition="fade" -->
<b>
事實上
</b>
**現在的電腦仍保留可以用指令操作的方法**
<!-- .element: class="fragment" data-fragment-index="1" -->
----
**在Windows系統裡**
**只要在檔案所在的資料夾點下右鍵**
**點選終端機(Terminal) 並打上以下指令**
```
gcc filename.c -o filename
```
**這樣也可以完成編譯**
----
**然後再寫上**
```
./filename
```
**即可執行檔案**
---
### 以上就是本章節的內容
### 本章節沒有建議的例題練習
<!-- .element: class="fragment" data-fragment-index="1" -->
{"slideOptions":"{\"tags\":\"presentation\",\"slideOptions\":{\"theme\":\"solarized\",\"transition\":\"fade\"}}","title":"C程式設計導論-Hello World!","contributors":"[{\"id\":\"4f67a8cd-06ae-45dc-a8e3-62c6a41e5a37\",\"add\":5118,\"del\":963}]","description":"Hello World! 實機操作"}