# C++基礎介紹
## 2021/09/10 電算社體驗社課
---
## 什麼是程式語言?
----
大多數程式語言的程式碼
都由很多個指令構成
而電腦就會依照這些指令
按順序完成指定的工作
----
程式除了可以自動化執行
已經指定好的固定流程之外
當然也可以和使用者進行互動
----
程式跟使用者互動的方式分成兩種
一種是GUI ( 圖形使用者介面 )
例如上網Google資料、用電腦內建的計算機等等
另一種叫做CLI ( 命令列介面 ) ,
利用文字跟程式互動,
而程式的回應也是用文字為主
---
## 編輯器、檔案建立與編輯
----
有很多編輯器都可以拿來寫C++
**線上**:
[ideone.com](https://ideone.com/)
[onlineGDB](https://www.onlinegdb.com/)
[repl.it](https://repl.it/)
**應用程式**:
[Dev C++](https://sourceforge.net/projects/orwelldevcpp/)
[CodeBlocks](https://www.codeblocks.org/)
[Visual Studio Code ( VSCode )](https://code.visualstudio.com/)
----
學校有Dev C++ 以及 CodeBlocks
選擇其中一個( 沒有經驗的人建議選DevC++ ),
點開之後,按下
檔案 -> 開新檔案 -> 原始碼
也可以直接按ctrl + N
---
## Hello World!
----
### 執行程式碼
程式語言分成編譯式和直譯式
C++ 屬於編譯式
程式碼不能直接被執行
要經過編譯器將程式碼編譯成機器碼
----
讓DevC++ 執行請按F11
讓Codeblocks 執行請按F9
----
試著寫點東西吧!
----
```cpp=
#include<iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
return 0;
}
```
---
來看看剛剛你寫了什麼
----
標頭檔 : 工具箱
```cpp=
#include<iostream>
```
----
主函式
```cpp=
int main()
```
程式一開始執行就是執行這個main函式
----
scope 該函式的範圍
```cpp=
{
...
//中間塞一堆你要做的事
}
```
----
陳述句 statement
```cpp=
std::cout << "Hello World!" << endl;
```
endl是換行
注意:cout後面接的是 <<
----
很煩不想一直std::
```cpp=
using namespace std;
```
----
回傳
```cpp=
return 0;
```
----
### 總結
一份C++程式需要一個main函式,
程式開始時會執行它的內容,
主要由許多陳述句組成
---
### 註解
----
註解用來讓你(或別人)知道
你(或別人)寫的程式碼是甚麼意思
C++的註解分兩種
```cpp=
//我是單行註解
/*
我是
多行註解啦
哈哈
:D
*/
```
註解不會被編譯,編譯器到註解會直接跳過
----
另外,在Codeblock中,
ctrl + shift + c 會幫你快速多行註解
在DevC++中,
ctrl + / 會幫你快速多行註解
是非常實用的功能
---
### 小練習
試著輸出 "CRC is the best." 吧
----
### 我是防雷頁
----
### 解答
```cpp=
#include<iostream>
int main()
{
std::cout << "CRC is the best." << endl;
return 0;
}
```
---
### Online Judge(OJ)介紹
----
#### 社課常用 OJ
GreenJudge 難度 : 很簡 -> 難
(各種題庫,但運行速度和題目測資垃圾)
ZeroJudge 難度 : 簡 -> 難到靠北
(ZeroJudge的題序不是照著難度排的,
有些很前面的題目很毒瘤)
~~(線段樹 3n+1)~~
~~CRCOJ~~
---
### Green Judge練習
[a001 Hello!](http://www.tcgs.tc.edu.tw:1218/ShowProblem?problemid=a001)
[a002 This is a book](http://www.tcgs.tc.edu.tw:1218/ShowProblem?problemid=a002)(相對複雜一點)
---
### 今天的社課結束了,謝謝大家
##### 如果有空也可以到社辦走走喔!!!
{"metaMigratedAt":"2023-06-16T09:32:37.382Z","metaMigratedFrom":"YAML","title":"C++基礎介紹","breaks":true,"slideOptions":"{\"transition\":\"slide\",\"theme\":null}","contributors":"[{\"id\":\"4f731eff-9d88-41f4-af56-2e3e02f20cfc\",\"add\":1730,\"del\":303},{\"id\":\"9e7d687a-83f2-4e8a-8ee6-8846394e69a5\",\"add\":719,\"del\":114},{\"id\":\"68c94489-3c2e-4879-b847-e982f360b03c\",\"add\":304,\"del\":15}]"}