<style>
.reveal .slides {
font-size: 36px;
}
</style>
# 南大附中資訊研究社 NFIRC 1st
## 第 3 次社課講義
2023/11/08
主講:YuDong
---
## 😨今日流程
1. YuDong 教分隔視窗
請大家先開好上課要用到的東西
3. ShiYu 點名 宣布幹部名單
4. YuDong 講課前注意事項
5. ShiYu 複習上次社課內容
6. YuDong 主講這次社課新進度
7. 繳社費 領社服 領飲料
----
## 😡課前準備
- 先登入 Google 然後開好 Discord
- 使用分隔視窗看: meet 直播畫面 + 社課講義 + Replit + Zero Judge 題單
- 點名 請上次有繳社費的人來前面補簽收據
- 宣布第一屆正式幹部名單
----
## 正式現任幹部名單

----

https://docs.google.com/spreadsheets/d/1_CVuBW38GNuu_-hs7-Q_ZMQHQrnDq1mKs08dqumvVzA/edit?usp=sharing
----
## 實習幹部名單

----
## 💀課前注意事項
:::warning
講義內所寫的程式碼都是用來舉例說明用
如果你是要解題目,請**不要**直接複製程式碼送出答案。
因為你只會吃到一堆 <span style="color:red">WA</span>
然後沒有學到任何東西😭
:::
----
## 💀課前注意事項
:::success
今天這堂可能對初學者來說有點難度
可能沒辦法當下在課堂吸收
但沒有關係,大家都有這份講義、有題單、有題解
也有開放給大家問問題的 Discord 社群
+ 回家的練習才是進步的關鍵
課堂帶到的練習 + 回家的練習
才能讓你自己有更顯眼的進步、理解更廣
:::
----
## 💀課前注意事項
:::info
不會的地方、不懂的觀念
一定要發問
資研社可以讓你問到懂
如果某個人的說法你聽不太懂
也可以再問問其他人
多聽取不同的想法
也是進步的方式之一
:::
----
## 本次社課 Slido 匿名提問

https://app.sli.do/event/qmsxe97ZUwPmwQhgJu6K1i
---
## 複習第二次社課
- 基本架構
- 輸入輸出與變數使用
- 四則運算
- 程式規範與除錯
- 延伸知識
----
## 基本架構

----
## 輸出

## 執行結果

----
## 變數宣告

- 第 1 行中
- 型別:整數 int ( integer 的縮寫)
- 名稱:age
- 值:未定義
- 第 2 行中
- 型別:字串 string
- 名稱:name
- 值:未定義
----
## 輸入

----
## 結合

----
## 執行結果

----
## 如何除錯 ? 常見錯誤
- 忘記加分號 ;
- 字拼錯
- 忘記宣告變數就使用
- cin >> cout << 串接方向記相反
- 括號用錯或沒加或加錯地方
- 全形半形沒切換
詳細除錯方法請至[第二次社課講義的這頁](https://hackmd.io/@NFIRC/2nd#/14)
----
## 養成良好的程式撰寫習慣
程式沒寫錯 但沒縮排沒空格閱讀起來較困難
## ⚠️

----
適時的空格與縮排有助於閱讀與除錯
## ✅

----
## 四則運算


----
### 整數除法

----
## 捨棄小數點

這節課會教如何保留小數點
----
## % 求餘數


----
## 賦值運算

## 遞增遞減運算

----
## 四則運算的詳細內容
[第二次社課講義詳細介紹四則運算](https://hackmd.io/@NFIRC/2nd#/15)
----
## 延伸知識
- [更詳細的介紹基本架構](https://hackmd.io/@sa072686/cp/%2F%40sa072686%2FH1vnVRXOr)
- 如何把負數轉成正數(絕對值):abs( )
- [如何讓你的程式更有效率](https://hackmd.io/@sa072686/Hyox5HG_H)
- [另一種輸入輸出方式 scanf / printf](
https://www.chino.taipei/note-2016-0311C-%E7%9A%84%E8%BC%B8%E5%87%BA%E5%85%A5cin-cout%E5%92%8Cscanf-printf%E8%AA%B0%E6%AF%94%E8%BC%83%E5%BF%AB%EF%BC%9F/)
- IO 加速
- C++ 如何讀取一整行:getline(cin,s)
- 比較 C++ 與 Python 的輸入規則
- Python 如何以空白作為輸入
- 許功蓋問題 = 盡量避免輸出中文
請至[第二次社課講義](https://hackmd.io/@NFIRC/2nd#/16)
---
## 目錄
- 變數
- 基本變數型態 (Variable Type)
- 全域(Global) & 區域(Local) 變數
- 布林值 bool
- 條件判斷式
- 比較運算子
- 邏輯運算子
- 延伸知識
---
# 變數 Variables
在上一次社課中,我們簡單介紹了變數的基礎
以及介紹兩個變數型別:Integer (整數) 和 String (字串)
而現在我們要來介紹更多變數的型別!
----
## 認識新型別!
除了 int 與 string 以外,還有一些型別是我們常常用到的
這邊用一個表格整理給大家看 :face_with_cowboy_hat:
| 名稱 | 寫法 | 備註 |
| ------- | -------- | -------- |
| 整數 | int | 範圍 $-2^{31}$ ~ $2^{31}-1$ |
| 大一點的整數| long long| 範圍 $-2^{63} \sim 2^{63} - 1$|
| 浮點數 | double | 儲存非整數的時候使用 |
| 字元 | char | 以 ' 包住字元 |
| 字串 | string | 以 " 包住字串 |
| 布林值 | bool | 僅有兩個值:true / false|
----
## 變數大集合

----
## 保留小數點的除法
- 強制轉型
寫法是括號內包住要轉變的型別

括號內為我們要將其轉變的型別
double 就是浮點數(小數點)的意思
通常是取到小數點後第五位
這題輸出是 ```1.75```
----
## 全域變數&區域變數
**APCS** 常考觀念

問:會輸出什麼?
答:||<font>10</font>||
----
## 解析原理

<font color="00A2E8">藍色</font> 的區域是全域變數影響的範圍
<font color="B5E61D">綠色</font> 的區域是區域變數影響的範圍
而在 main 函式當中,會先存取該函式內的變數的值。
---
## 讓我們研究新變數型別:Bool 布林值
----

### ~~他不是哥布林~~
在我們要表達一個條件、情況的**真假**時,就會用到布林值
等等要教的 **條件判斷式** 亦是如此
----
## 布林值簡介
一般來說,會用在我們要確認某個性質是否成立的時候
例如:檢查熱水器有沒有關
就只會有兩種情況:<font color="C9FF50">有關</font>/<font color="FF50D7">沒關</font>
而布林值的值剛好只有兩種:**true** 真/**false** 假
布林值的重要性質:
+ true == 1
+ false == 0
----
## 來看一下宣告的布林值會怎麼用吧

輸出:

----
## 布林值宣告
宣告一個布林變數來儲存布林值。
+ bool 變數名稱 = <true/false>

----
## 用在條件判斷式?
```cpp=
if (1 < 2) {
cout << "Yes, this is real.";
}
```
這段程式碼是一個簡單的條件判斷式
而 <span style="color:gold">1 < 2 </span> 這邊這個判斷結果是 **【真】**
在這裡,判斷結果的布林值就是: **true**
---
## 條件判斷式
既然我們學會了 int 和 string *變數* 的運用
<small>剛剛也有複習ㄌ</small>
那麼如果我們需要讓程式在某些情況下
執行我們要所要的結果
就會需要進行 **判斷**
#### 而今天要介紹的 <span style="color:cyan">條件判斷式</span> 就是用來幫助流程判斷
----
## 在開始之前...
先來認識一下 <font color="FFC4EC">基礎運算子</font> 與 <font color="FFC4EC">邏輯運算子</font>吧!
在【條件判斷式】中
這些運算子是相當重要的
要判斷,就要先有比較。
要比較,就要先有邏輯。
----
## 比較運算子
| 定義 | 運算子 | 解釋 |
| -------- |:------:|:--------------------------- |
| 相等 | == | a 與 b 相等 50 == 50 |
| 不相等 | != | a != b 就像 50 != 100 |
| 大於 | > | a > b 就像 100 > 50 |
| 小於 | < | a < b 就像 50 < 100 |
| 大於等於 | >= | a >= b 就像 100 >= 50 |
| 小於等於 | <= | a <= b 就像 50 >= 100 |
要注意的是: 等於是 <span style="color:red">==</span> 而不是 <span style="color:red">=</span>
在程式語言中, = 是用於賦值給變數的
== 才是「判斷是否相等」的意思
----
## 邏輯運算子
```typescript
或(OR): ||
且(AND): &&
相反(NOT): !
```
[SA 講義有超級詳細的介紹](https://hackmd.io/@sa072686/cp/%2F%40sa072686%2FHkfY_rMur)
各位可以先記錄下來,或者等等回來翻閱這裡
下面來介紹一下 ***邏輯優先度***
----
## 運算優先度
+ 括號內的先,之後再依序由左至右。
[課外文章:運算子的優先權](https://hackmd.io/@ndhu-programming-2021/HJAkAf8AF)
接下來,要開始正式進入到 **【條件判斷式】** 了
---
## 條件判斷式:if
顧名思義,就是【如果】
舉例:
+ #### 如果 期末成績 $a$ $<$ $40$ 那麼 你被死當 ~~哈哈~~
<!-- + #### 如果 我有睡著 那麼 我便沒有醒著
+ #### 如果 我沒有忘記 那麼 我便是記得的
+ #### 如果 撇除掉不好吃的地方 那麼 還是挺好吃的
...等等 都是作為有條件的判斷 -->
----
## if 的語法細節
```cpp=
#include <bits/stdc++.h>
using namespace std;
int main() {
int a,b;
cin >> a >> b;
if(a > b) {
cout << a << "is bigger than " << b << "\n";
}
return 0;
}
```
+ 可以單獨存在、可以寫很多層
+ 條件由小括弧包住 → $a > b$
+ 滿足條件後要做的事情由大括號包住 → 第 $9$ 行
+ <font color="FF6BDC">若滿足條件後要做的事情**只有一個指令**,可不包大括號</font>
----
## 簡化寫法:不包大括號
```cpp=
#include <bits/stdc++.h>
using namespace std;
int main() {
int a,b;
cin >> a >> b;
if(a > b) cout << a << "is bigger than" << b << "\n";
return 0;
}
```
+ <font color="FF8E6B">若滿足條件後要做的事情**只有一個指令**,可不包大括號</font>
----
## 使用剛剛的例子
如果 期末成績 $a$ $<$ $40$ 那麼 你要去重補修
```cpp=
#include <bits/stdc++.h>
using namespace std;
int main() {
int a = 39; // 這是你的期末分數
if (a < 40) { // 如果 期末成績 a < 40 那麼 就要去重補修了。
cout << "You must retake the course. HAHA";
}
return 0;
}
```
執行結果
```
You must retake the course. HAHA
```
----
## 那如果有第二個條件呢?
例子:
<font color="FEB651">如果</font> 期末成績 $a < 40$ 哈哈重修
<font color="51FEB6">否則</font> $a >= 60$ 代表通過
可以看到 有兩種條件
那麼我們該怎麼去做判斷呢?
----
## 這時候就要來介紹 else 了
else 也就是【<font color="51FEB6">否則</font>】
```cpp=
#include <bits/stdc++.h>
using namespace std;
int main() {
int a,b;
cin >> a >> b;
if(a > b) {
cout << a << "is bigger than" << b << "\n";
} else {
cout << a << "is smaller than" << b << "\n";
}
return 0;
}
```
+ <font color="FF5055">無法單獨存在</font>,前面一定要有一個 if
+ 同 if,不符合第一個條件要做的事情包在大括號裡面
+ <font color="FF8E6B">若不符合條件後要做的事情**只有一個指令**,
也可不包大括號</font>
----
舉個例子:
如果 期末成績 $a < 40$ 重修
否則 $a >= 60$ 通過 來看
期末成績 $a < 40$ 是 **第一個條件**
而 $a >= 60$ 則是剩下的條件
<font color="FF6B78">如果所有的 if 都不成立,那麼 else 的部份將被執行。</font>
我們來看看 else 怎麼實作的吧
----
## else 實作示範
```cpp=
#include <bits/stdc++.h>
using namespace std;
int main() {
int a = 39; // 這是你的期末分數 重修的那種。
if (a >= 60) { // 如果 期末成績 a >= 60 那麼你通過了。
cout << "You passed.";
} else { // 期末成績 a 沒有 >= 60 那麼你要重修了 哈哈。
cout << "You must retake the course. HAHAHAHAHA.";
}
return 0;
}
```
而在上面的程式碼中 ,我們的分數為 $39$ 分
明顯 $a$ 是 $< 40$ 的
else 則是處理了 <font color='pink'>$a >= 60$ 以外的情況</font>
這意味著,我們終究逃不過重修的命運 x)
----
## 等等 那第三種情況怎麼辦?
很多情況是沒有辦法直接二分法解決的
這時候,就要用到我們的 <font color="FF6B78">else if</font> 了
用法與 *else* 大致相同
舉個例子吧:
如果 期末成績 $a >= 60$ 表示通過
而 $40 <= a$ 且 $a < 60$ 則是補考人
否則 $a < 40$ 重修
<!-- 這邊可能停個幾分鐘 看看有沒有人要回答 或者是查看一下 slido -->
<!-- YuDong: OK -->
----
## else if 實作範例
如果 期末成績 $a >= 60$ 通過
$40 <= a$ 且 $a < 60$ 是補考人
而當 $a < 40$ 重修
```cpp=
#include <bits/stdc++.h>
using namespace std;
int main() {
int a = 53; // 這是你的期末分數
if (a >= 60) { // 如果 期末成績 a >= 60 那麼你通過了。
cout << "You passed.";
} else if (a >= 40) { // 期末成績 40 <= a < 60 的情況
cout << "You must attend the make-up exam. RIP.";
} else { // 期末成績 a 沒有 > 40 那麼你要重修了 哈哈。
cout << "You must retake the course. HAHAHAHAHA.";
}
return 0;
}
```
----
## 有辦法同時判斷多個條件嗎
舉例:
期末成績 $a > 75$ 且 $a <= 100$ 是 電神
輸出 <font color="FF6B78">Orz</font>
這種情況 該怎麼寫呢?
----
## 第一種作法
```cpp=
#include <bits/stdc++.h>
using namespace std;
int main() {
int a = 88; // 這是期末分數 八成是別人的 x)
if (a > 75) { //如果 a > 75
if (a <= 100) { //如果 a <= 100
cout << "Orz";
}
}
return 0;
}
```
這樣寫是正確的
但是 能不能再簡化一點呢?
太多的 if 包在一起
***會影響日後 debug 的難度與可讀性。***
----
還記得我們剛剛提到的
## <font color="#FFF26B">邏輯運算子</font> <small>嗎</small>
```javascript
或(OR): ||
且(AND): &&
相反(NOT): !
```
幫各位搬運過來了
----
### 第二種作法:邏輯運算子
還記得我們剛剛提到的 <font color="FFF26B">邏輯運算子</font> 嗎
###### 忘記的可以回去複習一下
利用邏輯運算子,可以讓程式碼更簡潔、好讀、易於維護
```cpp=
#include <bits/stdc++.h>
using namespace std;
int main() {
int a = 88; // 這是期末分數 八成是別人的 x)
if (a > 75 && a <= 100) { //如果 a > 75 而且 a <= 100
cout << "Orz";
}
return 0;
}
```
這樣 我們就不需要再包一個 *if* 在第一個 *if* 裡面了
---
# Practice Time
先來複習一下怎麼寫題目 xD
----
## 怎麼寫題目?
1. 到 [ZeroJudge](https://zerojudge.tw/) 之後,先登入

----
2. 點擊自己的帳號,按下【南大附中】的課程

----
3. 選擇你要練習的課次、題目

----
4. 按下 參加隨堂練習 即可練習題目

---
## Practice Time
### 如果遇到問題,歡迎舉手發問
也可以在 slido 上面發問!
哪邊聽不懂的也可以再重講一次歐
助教們都會去幫忙喔 :+1:
----
## Practice Time
必做題:
[ZJ d064 -ㄑㄧˊ 數?](https://zerojudge.tw/ShowProblem?problemid=d064)
[ZJ d058 - BASIC 的 SGN 函數](https://zerojudge.tw/ShowProblem?problemid=d051)
--
[計時器](https://naozhong.tw/jishiqi/#countdown=00:00:05&enabled=0&seconds=0&title=%E8%AA%92%E8%AA%92%E8%AA%92%E8%AA%92%E6%99%82%E9%96%93%E5%88%B0%E4%BA%86%E5%95%A6&sound=custom&loop=1)
----
## 練習題
[ZJ d068 - 該減肥了!](https://zerojudge.tw/ShowProblem?problemid=d068)
[ZJ a003 兩光法師占卜術](https://zerojudge.tw/ShowProblem?problemid=a003)
[ZJ d073 - 分組報告](https://zerojudge.tw/ShowProblem?problemid=d073)
[ZJ d050 妳那裡現在幾點了?](https://zerojudge.tw/ShowProblem?problemid=d050)
[ZJ d060 - 還要等多久啊?](https://zerojudge.tw/ShowProblem?problemid=d060)
[ZJ d066 - 上學去吧!](https://zerojudge.tw/ShowProblem?problemid=d066)
[ZJ d460 - 山六九之旅](https://zerojudge.tw/ShowProblem?problemid=d460)
[ZJ b877 - 我是電視迷](https://zerojudge.tw/ShowProblem?problemid=b877)
----
## 挑戰題:
(等完成上面的題目再挑戰看看!)
[ZJ d067](https://zerojudge.tw/ShowProblem?problemid=d067)
||[挑戰題詳細解析](https://hackmd.io/@sa072686/cp/%2F%40sa072686%2FB1seP12KH)||
### TOJ 額外練習題
+ 想自己練習的記得要註冊(點右上角的Reg)
雖然**不會**算進社團積分
但可以幫你對於這個語法更穩固
有想要額外練習、期末賽開秀、或考 APCS 的人
都建議可以做做看,一樣會給題解
[TOJ529](https://toj.tfcis.org/oj/pro/529/)
[TOJ531](https://toj.tfcis.org/oj/pro/531/)
----
## 必做題解析
+ [ZJ d064 -ㄑㄧˊ 數?](https://zerojudge.tw/ShowProblem?problemid=d064)
+ [ZJ d051 - BASIC 的 SGN 函數](https://zerojudge.tw/ShowProblem?problemid=d058)
----
### ZJ d064 - ㄑㄧˊ 數?
題目整體的意思就是:判斷 $n$ 是不是奇數
如果是奇數輸出 Odd,否則輸出 Even
----
### <font color="lime">AC</font> Code
+ 我們可以用剛剛學到的 if else 條件判斷式去寫
並且利用 $\%$,取餘數就可以知道是否為偶數了
```cpp=
#include <bits/stdc++.h>
using namespace std;
int main() {
int n; cin >> n;
if(n % 2 == 0) {
cout << "Even\n";
} else {
cout << "Odd\n";
}
return 0;
}
```
----
### ZJ d051 - BASIC 的 SGN 函數
||<small>題目把它描述的看起來很難</small>||
#### 破題關鍵:
- <font color="FF6B78">如果</font> $n > 0$ 輸出 $1$
- <font color="FF6B78">否則 如果</font> $n = 0$ 輸出 $0$
- <font color="FF6B78">否則</font> 請輸出 $-1$
----
### <font color="lime">AC</font> Code
+ 一樣,我們利用 if else 條件判斷式去進行判斷
依照每一個條件,去輸出對應的答案
```cpp=
#include <bits/stdc++.h>
using namespace std;
int main() {
int n; cin >> n;
if(n > 0) cout << 1 << "\n"; //如果 n > 0
else if(n == 0) cout << 0 << "\n"; //如果 n = 0
else cout << -1 << "\n"; //如果 n < 0
return 0;
}
```
---
## 延伸知識
- int 的範圍 溢位 開 long long
- 有號無號 signed & unsigned
- INT_MIN, INT_MAX
- min( ), max( )
- 小數點後位數 setprecision( )
- 浮點數的誤差
- 三元運算
- 多條件判斷式 switch
- ~~XBOX, PS4~~
----
## int 的儲存範圍
剛剛提到,int 儲存的數字範圍是 $-2^{31} \sim 2^{31}-1$
精確來說是 $-2147483648 \sim 2147483647$
這串數字不必背起來 只需要知道大概是 $2 \times 10^{10}$ 就好
----
## 溢位 overflow
若數字比能儲存的範圍還大 就會發生溢位
產生 ***非預期的結果***
更多詳細知識可閱讀 [變數上限與溢位 by SA](https://hackmd.io/@sa072686/cp/%2F%40sa072686%2FB1tr_OtOS)
----
## 競程小技巧(毒瘤)
為了避免掉有些題目給的數字較大
使用 int 會有溢位問題,通常會用:

----
但要注意做了這件事之後
整份程式碼的 int 就都會是 long long 的狀態了
使用後要記得順便將 main 函式回傳的 int 改成 signed

:::danger
除了競程用途以外,強烈建議不要使用於開發
:::
----
## unsigned & signed
<font color="50D4FF">無號整數</font>與<font color="50FFD2">有號整數</font>
+ <font color="50FFD2">signed</font> 的儲存範圍介於 $-2147483648 \sim 2147483647$
+ <font color="50D4FF">unsigned</font> 的儲存範圍則是 $0 \sim 4294967295$
(沒有負數且正數是 signed 的兩倍)
----
## INT_MAX & INT_MIN
```cpp=
INT_MAX = 2147483647
INT_MIN = -2147483648
```
+ 這兩個通常用來做比大小的初始值給定
更多的巨集表達式在[這篇文章](https://www.delftstack.com/zh-tw/howto/cpp/int_max-in-cpp/)
有興趣的可以看一下
----
## min( ) & max( ) 函式
- min( ):回傳最小值
- max( ):回傳最大值
----
## 函式用法
- min(a,b):對 $a\ b$ 取最小值
- max(a,b):對 $a\ b$ 取最大值
- 兩個函式都具有交換律
所以可以這樣用:

延伸題:[ZJ d065. 三人行必有我師](https://zerojudge.tw/ShowProblem?problemid=d065)
----
## setprecision() 函式
+ 取到小數點後第 $n$ 位
+ 通常會加 <font color="FF4651">fixed</font> 在前面
確保固定小數位數

輸出結果
```txt!
3.14159
```
延伸題:[ZJ d051. 糟糕,我發燒了!](https://zerojudge.tw/ShowProblem?problemid=d051)
||轉換公式:$(f-32) \times 5/9$||
----
## 浮點數的誤差
剛剛提到的 比較運算子 <font color="yellow">== 為相等之意</font>
但是浮點數的比較因為誤差的關係
<font color="red">不能使用</font> == 進行比較
更多的資訊在這邊文章:[浮點數的誤差](https://hackmd.io/@sa072686/cp/%2FcZfev35MRp-nFy_YII9wfg)

---
## 三元運算
----
### 一元、二元、三元的差別
定義:用到幾個東西

----
## 三元運算語法
+ 條件 <font color="FFDD50">?</font> 符合條件要做的事情 <font color="72FF50">:</font> 不符合條件要做的事情
```cpp=
#include <bits/stdc++.h>
using namespace std;
int main() {
int age; cin >> age;
cout << (age > 18 ? "is Adult" : "is a Kiddo") << "\n";
return 0;
}
```
----
## 與 if 的比較
如果不用三元運算:
```cpp=
#include <iostream>
using namespace std;
int main() {
int age; cin >> age;
if(age > 18) {
cout << "is Adult\n";
} else {
cout << "is a Kiddo\n";
}
return 0;
}
```
程式碼又臭又長💀
----
用了三元運算後...
```cpp=
#include <bits/stdc++.h>
using namespace std;
int main() {
int age; cin >> age;
cout << (age > 18 ? "is Adult" : "is a Kiddo") << "\n";
return 0;
}
```
程式碼變得更簡潔了 讚啦
---
## 多條件判斷式 switch

對,就是這個 switch
今天來介紹一下 ~~<font>怎麼在馬力歐賽車裡面打網球</font>~~
switch 語法
----
## 使用時機
在競程中比較常用到 if
switch 則相對少見
但以下幾個時機,是適合使用 switch 的
1. 離散的情況
值是有限的且不連續的;不存在無限多的情況
2. 單個變數多個值
對於一個變數有多種可能
且這些值沒有過於複雜的關係 可以用 switch 簡化
3. 簡單的多分支邏輯
多種不同情況,但每次都只涉及單一個變數的比較
或者是只做些微的改變
4. 多個相等性比較
----
## 語法
```cpp=
switch (運算式或變數名稱) {
case 符合數字或字元:
符合此 case 執行的東西;
break;
case 符合數字或字元:
符合此 case 執行的東西;
break;
default:
符合此 case 執行的東西;
break;
}
```
請記得在每個 case 中 break
----
## switch 語法示範
:::info
給定一 $N$,表示這次段考的分數($0 \le N \le 100$)
學校為了統計方便
會將分數統一都會除以 $10$
如果分數等於 $9$ 或 $10$,其對應等第為 A
如果分數等於 $8$,其對應等第為 B
如果分數等於 $7$,其對應等第為 C
如果分數等於 $6$,其對應等第為 D
其餘的情況,都等第都為 E
:::
----
## switch 語法示範

----
## XBox & PS5
礙於時間因素,這邊給大家兩個連結
+ [XBox](https://letmegooglethat.com/?q=XBOX)
+ [PS5](https://letmegooglethat.com/?q=PS5)
---
## 回饋表單
感謝各位認真參與第三次社課
一如既往,需要各位提供意見給我們
令我們知道各位在課程當中的想法
請到 Discord 社團公告填寫或用手機掃描以下 QR Code

----
## 繳社費 領社服 領飲料
{"slideOptions":"{\"parallaxBackgroundImage\":\"https://i.imgur.com/Nyz21H5.png\",\"backgroundTransition\":\"none\",\"transition\":\"slide\",\"transitionSpeed\":\"slow\",\"controlsBackArrows\":\"faded\",\"spotlight\":{\"enabled\":false}}","title":"第 3 次社課講義","description":"2023/11/08主講:YuDong","contributors":"[{\"id\":\"a5e01884-520b-4df5-8e23-bfcc32fb4697\",\"add\":10771,\"del\":7047},{\"id\":\"133c1d63-1697-43cd-a9d9-860f755172d1\",\"add\":27759,\"del\":13880}]"}