or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
南大附中資訊研究社 NFIRC 1st
第 2 次社課講義
2023/10/25
主講:ShiYu
課前準備
交社費
課程結束 填完回饋表單之後
可以找總務交社費 300$
我們會給你收據
今天沒帶的可以下次上課 11/8 再交
幹部初選
目前社團幹部
現任幹部初選名單
等等會發意願單傳下去
有在名單上的人可以勾選要不要擔任
現任幹部初選名單
實習幹部初選名單
頒獎🍼🧃🍷🍺🍸🥤
資訊研究社社團介紹與入門基礎演算法競賽知識之超級眼力測試暨超極限競技搶答大賽
校內賽全校決賽決選 前三名 恭喜!
請正宗老師、現任幹部及前三名得獎者
等等點名時間來找總務訂飲料
社課結束後會給大家帶回教室喝
註冊帳號
本次社課需使用以下網站
請各位用自己常用的 Gmail 註冊帳號
已註冊的人可以幫幫你旁邊的人😭
Replit
社團課中寫程式使用的軟體
可用網頁瀏覽與編輯
也可以即時存檔在雲端
回去也可以開來看今天寫的程式
Step1:
使用你常用的 Gmail 創建一個 Replit 帳號

點擊這顆按鈕 ↓
Step2:創建一個檔案
Step3:選好 C++ 打好今天日期 創建
Zero Judge
高中生程式解題系統
有大量題庫 適合程式新手
社團使用網站中的課程功能
讓大家加入課程
查看我們每次社團課整理的題單
Step1
使用自己常用的 Gmail 帳號即可
學校太爛直接把學生的帳號註冊鎖起來了😡
Step1-2
註冊的時候記得選學校:
臺南州立臺南農業學校
國立臺南大學附屬高級中學
Step2
登入畫面:

✅我是機器人
Step3
鼠標停在個人名字上方
按下 參加課程
Step4
輸入課程代碼:
xyamzm
看不到的大叫一聲,我去幫你
點名時間!
在喊在趁現在註冊 Replit、Zero Judge
ZJ 課程代碼
xyamzm
快速複習上次社課內容
課表
上學期
C++ 基礎語法
下學期
基礎資料結構與入門演算法
會根據社員的學習狀況調整或刪減課程內容
教學方式
本節課的匿名提問 Slido
https://app.sli.do/event/9FcZVd2Srnvh9o2QzWWtae

程式競賽
Discord 社群推薦
各大 OJ
各大營隊
競程術語
競程術語:OJ 篇
課程資源彙整頁面
每節社課上完都會更新
有社課講義 學習資源 題單
以及其他各種上課提到的連結
請社員們多多運用
大家請記得看社團公告
每次社課的前一天晚上
我們都會在 Discord 的
發布社課通知提醒大家社課的注意事項
有些要帶的東西或要做的事情
其他頻道可以自己選擇要不要看
但社團公告的頻道一定要看
第一次社課的課後檢討會議
每節社課結束後的晚上我們幹部
都會開課後檢討會議
希望透過每次社課的回饋表單與課後檢討會議
能了解社員的想法、建議以及上課感受
讓我們能夠即時的調整並改進
提供良好的課程內容給大家
第二次社課目錄
本次社課流程
此篇講義內容分類
有相關的資料都會附上文章連結
給大家回家自己打開來看
有興趣的人可以花點時間研究
必學語法:課程大部分時間都會教必學語法 有基礎的人可能會覺得無聊
延伸知識:課堂的最後講解延伸知識 能聽懂算很厲害
課外知識:在延伸知識中又有更難一點的知識給已經有基礎的人了解
其他人聽不懂也沒關係 不會影響很大
撰寫你的第一個 C++ 程式
C++ 基本架構
一個程式的骨架
之後 每一份程式
都從它開始
讓我們來簡單了解每行的意義
在程式碼中 // 代表註解的意思
// 後的文字(同一行)不會被電腦執行
所以很適合用來跟別人解釋這一行在幹嘛
如果要解釋很多行 可以用 /* */ 把註解包起來
詳細介紹基本架構請至 延伸知識
五分鐘時間讓各位寫好基本架構
但我們不會像某選修老師一樣真的叫你手寫程式碼輸出 output
程式中可以用 iostream 中的 cout (吸奧)函式
在終端機輸出你想說的話
程式碼
執行結果
在第 5 行中
運用 cout 輸出 Welcome to NFIRC 1st. 字串
把字串包起來
觀念補充
有些人學過 C++ 會用 endl (end line) 來換行
但在競程中 通常都用 \n 來換行
原因請至 延伸知識
輸出串接多個東西
只要用 << 就可以串接多個東西
執行結果
注意
輸出盡量用英文 避免使用中文
原因是會產生預料之外的問題
例如亂碼或許功蓋問題
許功蓋問題請至 延伸知識
獲得人生中第一個 AC
學會了 C++ 基本架構和 cout 輸出後
請所有人到 ZeroJudge 課程中的
NFIRC 第一節社課必做題與練習題
完成 1 d483. hello, world
體驗 AC 的感覺
電腦基本常識
Ctrl + C 複製
Ctrl + V 貼上
寫完程式碼要上傳(submit) OJ 時
使用競程小技巧可以更快速複製程式碼
競程小技巧
Ctrl + A 全選
Ctrl + C 複製
「 Ctrl + AC,每題都 AC 」
AC Code 解答
輸入 cin >>
當你想在終端機輸入東西給電腦時
可以用 cin (吸硬) 函式
輸入就是輸出的
相反
cout <<
cin >>
在學輸入之前 我們要先來學如何使用變數 變數
變數 variable
一個可以裝特定東西的 容器
儲存任何程式需要 記住 的東西
變數的四大屬性
今天只簡單介紹 整數 與 字串 型別
第三次社課會詳細介紹型別種類、用途與範圍
(之後如果有機會才會教到 先不用理它)
宣告
使用變數之前一定要先宣告
宣告方法:型別 變數名稱
賦值 assign
給變數存入值的行為
我們稱為 賦值 ,= 為 賦值運算子
並不是 number 與 12 相等的意思
而是把 12 指派給 number 這個變數
宣告時同時賦值的行為
我們稱為 初始化
第 1 行中
第 2 行中
學完如何宣告變數後
讓我們回到 如何輸入
步驟:
1. 宣告變數
因為我們要輸入我們的名字進去這個變數中
所以宣告時可以先不用賦值給這個變數
但要記得 變數還沒賦值時 不能讀取這個變數的值
因為未初始化的變數 值是未定義的
這時候讀取會產生 未定義行為(Undefined behavior)
有興趣的人可以課後點 此篇連結 研究
2. 輸入
宣告變數後就可以使用 cin >> 把輸入的值存入變數
cin 也可以用 >> 串接來一次輸入多個變數
在第 1 行中也同時宣告多個 字串型別的變數
注意:
同型別才能同時宣告 不同型別請分開宣告
結合
學完了基本架構、變數、輸入、輸出
現在把它結合起來組成完整的程式
結合基本架構、變數、輸入輸出的程式碼
第 8 行 cout 部分為了避免太長 換行對齊較易讀
程式碼執行結果
輸入 input
輸出 output
競程重要技巧
使用 <bits/stdc++.h> 萬用標頭檔
此標頭檔裡導入了以下常用的標頭檔
裡面包含一開始基本架構中寫的 iostream 標頭檔
和其他常用資料結構函式庫
意味著我們不用每次要使用什麼函式
都去查那個函式的標頭檔
只要導入 萬用標頭檔 就夠了
下次實作時第一行可以用
#include <bits/stdc++.h>
請背起來 不然去考 APCS 會花很多時間打標頭檔
開啟你的 AC 之路
請所有人到 ZeroJudge
完成 2 a001. 哈囉
再獲得一個 AC 吧!
AC Code
等等 出錯了?
如何除錯、程式規範與撰寫習慣
常見錯誤
忘記加分號 ;
字拼錯
忘記宣告變數
cin cout 串接方向記相反
串接方向相反會導致
CE (Compile Error) 編譯錯誤
養成良好的程式撰寫習慣
程式沒寫錯 但沒縮排沒空格閱讀起來較困難
適時的空格與縮排有助於閱讀與除錯
四則運算
加減乘除
+ - * /
在 C++ 裡,四則運算大多就跟平常一樣
也遵從著先乘除後加減、括號先算的運算規則
程式碼
執行結果
練習題:ZJ a002,d049,d063
回家練習時點擊此連結若出現錯誤
請先登入你創好且已加入我們社團課程的帳號
就能看到題目囉
除法呢?
程式碼
執行結果
執行結果:
1.751記住:整數int的除法只取整數部分
小數點後面都省略
但如果想保留小數呢?
這留到下一次上課再介紹另一個變數型別
浮點數(float,double)
注意:使用除法不可除以 0
在數學中 除以零是一個沒有定義的值
在程式中也是 執行時會出現
RE (Runtime Error):程式碼停止運行
如何求餘數?
運算符 %可以求餘數
此為模運算 唸作 MOD
請不要唸 趴求 A 除以 B的餘數
= A % B
程式碼
執行結果
練習題:ZJ d827
求餘數也可以用在很多地方
例如:判斷奇偶數、判斷是否為某數的倍數
下一次上課講到判斷式的時候會教
賦值運算
運算之後把結果賦值給變數
賦值運算子
可以不用賦值+運算
直接用賦值運算子就能解決
可以使用賦值運算子簡化程式碼
未
使用賦值運算子遞增遞減運算子
可以簡化成
又可以簡化成
第三種用法只限於 \(\pm1\)
關於前置與後置 請至延伸知識
有時間才會講延伸知識與課外補充
更詳細的介紹基本架構
1. 標頭檔
2. 標準命名空間
不使用命名空間
使用命名空間
主函式 main
C++ 執行程式時會先跑主函式
也可以在主函式裡呼叫其他自訂函式
之後的社課會教到
如何把負數轉成正數(絕對值)
想把負數轉成正數輸出時
可以用
abs
函式 (absolute value 縮寫)output
練習題:ZJ a799
想深入了解更多關於基本架構的解說
可回家點開這篇來參考:
C++ 骨幹的解說 by 南一中資研社師 SA
如何讓你的程式更有效率
在競程中,建議用 cout << "\n"; 來輸出換行
endl 用在 cout 輸出換行時
它會比單純的 \n 做更多細節處理
平常使用是更安全,但在競程反而會拖慢效率
拖慢效率的主因是 endl 自帶 flush
有興趣的人可以課後點這篇的前半段來看更深入的內容
落差與常識的補完 by SA
課外知識:另一種輸入輸出方式
scanf / printf
給有興趣的人去了解這篇
C++ 的輸出入 cin / cout 和 scanf / printf 誰比較快?
上課主要以 cin >> / cout << 為主
課外知識:IO 加速
如果你的程式上傳到 OJ 莫名其妙的出現 TLE
可以使用下面兩行來關閉 cin/cout 與
scanf()/printf() 之間的同步,導致其無法並用
大幅提升 cin / cout 的效能
上學期的課程幾乎都不會用到這個技巧
下學期在上演算法的時候才會出現用到的情況
C++ 如何輸入一整行
C++ 輸入規則:
一個空格或換行 為一個輸入
共有 9 個輸入
用 getline 輸入一整行
input
output
因為一行為一個輸入
所以總共有兩個輸入
比較 C++ 與 Python 的輸入規則
課外補充:
給有學Python但不知道怎麼以空白讀入整數的人
課外補充:許功蓋問題
由於涉及編碼(Big5、utf-8)相關知識
所以課堂不細講 當作課外補充給有興趣的人去了解
許功蓋問題
課程回饋
南附資研第二次社課結束

感謝各位願意耐心聽完這次的社團課程
請社員們花一點時間填寫回饋表單
讓我們知道你們的想法及建議 謝謝大家