暑假資讀[0]
郭彥聖
講師介紹
- 227郭彥聖
- yennnn
- 資訊讀書會 負責
開門的人 - 建中資訊 外交長
- FB:郭彥聖
- IG:@yen_sheng.kuo
資讀介紹
暑假資訊讀書會
- 暑假資讀
- C++基本語法
- 銜接開學資讀的演算法課程
- 時間:每週二晚上18:00~21:00
- 8/10、8/17、8/24、8/31共四堂課
- 利用Discord線上進行
暑假資讀課表
日期 | 講師 | 課程 |
---|---|---|
8/10 | 郭彥聖 | 資讀介紹、C++簡介與環境安裝、基本輸入輸出、變數與資料型態、運算子 |
8/17 | 謝一 | 競賽介紹、OJ介紹、條件判斷、迴圈、陣列、時間複雜度 |
8/24 | 陳仲肯 | 函數、struct與object、運算子重載、指標、鏈結串列 |
8/31 | 王政凱 | stack、queue、tree、STL |
資訊讀書會
- 資讀
- 建中行之多年的傳統(?
- 以競賽程式為主
- 傳授進階演算法知識
- 程式語言:C++
資訊讀書會
- 時間:每週二18:00~21:00
- 段考週停課
- 考前一週模競
- 地點:建中資源大樓三樓電腦教室
- 有異動會在FB社團公告
資訊讀書會
- 請加入以下資讀社群
- FB:No Code No Life 從零開始的資訊讀書會
- Discord
- 我們歡迎所有對資訊競賽有興趣的建中生加入
什麼是程式語言?
什麼是程式?
- 指令
- 流程
- 函數
- 食譜?
什麼是程式語言?
- 用來敘述程式的語言
- 人類與電腦溝通的方式
程式語言
低階語言v.s.高階語言
低階語言 | 高階語言 | |
---|---|---|
親近度 | 貼近硬體 | 貼近人類 |
執行速度 | 快 | 慢 |
記憶體用量 | 少 | 多 |
可讀性 | 低 | 高 |
可攜性 | 低 | 高 |
開發難度 | 高 | 低 |
例子 | 機器碼、組合語言 | C++、Java |
低階語言v.s.高階語言
編譯式v.s.直譯式
編譯式語言 | 直譯式語言 |
---|---|
一次編譯完,全部一起執行 | 逐行直譯,逐行執行 |
執行速度快 | 執行速度慢 |
可獨立執行 | 依賴執行環境 |
C/C++、C# | python、javascript、R |
C++簡介
關於C++
- 1979年由比雅尼·史特勞斯特魯普發明
- 改良自C
- 1998年發布第一個C++標準:C++98
- 之後還有C++03、C++11、C++14、C++17等各種版本的標準
- 目前最新版是2020發布的C++20
關於C++
- 編譯式語言
- 執行速度快
- 標準函式庫
- 物件導向
C++編譯環境安裝
常見的C++編輯器
- Code::Blocks
- Dev C++
- Visual Studio Code
- Visual Studio
- Vim
- Sublime Text
接下來帶大家安裝
dev C++
裝不了的替代方案
線上編輯器:repl.it
Hello World!
來寫人生第一支程式吧!
#include <iostream>
using namespace std;
int main(){
cout << "Hello world!" << endl;
return 0;
}
看到這個代表你成功ㄌ
基本輸入輸出
輸出
- 把資料顯示到螢幕上
- #include <iostream>
- std::cout
- std::endl
- '\n'
- std::cout.flush()
輸出--小數
- 要指定小數的輸出位數的話
- #include <iomanip>
- cout << setprecision(4)
- cout << fixed << setprecision(4)
- setprecision一旦用了在這支程式中就會一直有效
- setprecision可以重複設定
Hello World!
就是單純的輸出練習
輸入
- 讀取使用者輸入的資料
- #include <iostream>
- 讀到空白或換行
- std::cin
- 一次讀一個字元,可以讀空白和換行
- std::cin.get(ch)
- 讀一個字串,讀到換行停止,可以讀空白
- getline(cin, str)
哈囉
變數與資料型態
整數
資料型態 | 佔用空間(bytes) | 值域 |
---|---|---|
short | 2 | -32768~32767 |
int | 4 | -2147483648~2147483647 |
unsigned int | 4 | 0~4294967295 |
long long | 8 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
unsigned long long | 8 | 0~18,446,744,073,709,551,615 |
浮點數
資料型態 | 佔用空間(bytes) | 值域 | 精度 |
---|---|---|---|
float | 4 | 3.4 E +-38 | 7位數 |
double | 8 | 1.7 E +- 308 | 15位數 |
字元與字串
- char可以存一個字元
- 占用1 byte
- 值域-128~127
- 以ASCII編碼儲存
- string可以存字串
- 空間視長度而定
- 可以想成是char的陣列
布林值
- bool
- 佔用空間:1byte
- 值域:0~1
- True/False
變數命名規則
- 命名可以是英文字母、底線、數字
- 不能以數字開始
- 大小寫都可以,但大小寫視為不同
- 保留字不允許用
- 盡量用有意義的名字命名
運算子
指定運算子
- a=3
- 把=左邊的變數設定成右邊的值
- 左邊必須是變數
算術運算子
- +
- -
- *
- /
- %
- 前後要是同型態的變數才可以運算
- 常見的型態C++會幫你轉換
- 一般會轉換成比較大的資料型態
- 除不盡會 向0取整
- 負數取餘數是負數
- 浮點數不能取餘數
算術指定運算子
- +=
- -=
- *=
- /=
- %=
- 算術+指定
- a+=b
- a=a+b
- 特性大致上和算術差不多
遞增遞減運算子
- ++
- --
- 就是把值+1或-1
關係運算子
- >
- >=
- <
- <=
- ==
- !=
- 比較兩個變數的大小關係
- 回傳一個布林值(True/False)
邏輯運算子
- &&
- ||
- !
位元運算子
- <<
- >>
- <<=
- >>=
- &
- |
- ^
- &=
- |=
- ^=
- ~
優先性
- 先乘除後加減
- 大致上是算術>位元>關係>邏輯>算術指定
- i++與++i
簡易加法
兩光法師占卜術
a + b problem
暑假資讀[0]
By yennnn
暑假資讀[0]
- 831