C++語法衝刺 (1)
mouyilai
今天要上ㄉ
- 西嘉嘉簡介
- IDE
- OJ
- 輸入輸出
- 變數
- 運算子
- if else if else
前~情~提~要~
課程簡介
C++是一個歷史悠久的程式語言。是C語言的進化版(為什麼進化版要叫++你之後就知道ㄌ)。
因為C++的運行效率高過很多語言,所以你們之後在接觸競賽的時候主要也是用C++來寫,這三周的課也可以視為接下來演算法課的前導。有問題都可以直接來問我或是其他學長姐,也可以直接在discord問,電神學長會去回答你。
btw 把這三堂語法衝刺的東西都學會之後,你高一整學年資訊課都可以躺ㄌ,傳單沒有作假歐歐歐
IDE
文字編輯器
- 編輯文字的東西(廢話
- 有些會有語法高亮、自動補全之類ㄉ功能
- 可以裝酷酷的外掛就可以跑程式ㄌ
IDE
整合開發環境(Integrated Development Environment,簡稱IDE)是一種輔助程式開發人員開發軟體的應用軟體,在開發工具內部就可以輔助編寫原始碼文字、並編譯打包成為可用的程式,有些甚至可以設計圖形介面。
常見的C++ IDE有 Dev C++, Code::blocks, 線上的repl.it等,今天會用repl.it,以後有時間再帶你們裝vscodeㄅ
來註冊repl.itttttt
開檔案
開檔案
取檔名
寫完code之後ㄋ
讓你的code編譯並執行
OJ
online judge
Online Judge
練習題目ㄉ地方,上面會有題目然後可以丟code上去它會幫你測484對的
- zerojudge
- TIOJ
- codeforces
- atcoder
- ckefgisc oj
- 高中生程式解題系統
水題庫
- 建中ㄉOJ
- 有很多難難ㄉ題
- 俄羅斯ㄉOJ
- 一個禮拜大概會有2、3場線上賽
- 日本ㄉOJ
- 每個周末會有線上賽可以打
- 前面ㄉ題目很親切
- 有日文題解
CKEFGISC OJ
- 維修中
- 維修完ㄌ再告訴你們
開始寫code!!!
每段程式碼都會有的東西
#include <iostream> //輸入輸出用ㄉ標頭檔
using namespace std; //表示當有函式名稱衝突時使用std空間
int main(){ //主程式的意思,這裡面的東西是會被電腦執行的
//你目前寫的code幾乎都會在這裡
return 0; //告訴電腦程式結束了
} //對在//後面的東西是”註解”,是給人看的,電腦不會編譯到
/*
btw這也是註解
但他可以一次把很多行都註解掉
*/
可以先記得每一段code都要有這些就好ㄌ
第一支程式 -- Hello world!
#include <iostream>
using namespace std;
int main(){
cout << "Hello world!" << endl;
//將字串Hello world!輸出到螢幕上
//"Hello world"的雙引號表示Hello world!是一個字串
//endl是endline 也就是換行的意思
return 0;
}
變數 & 常數
變數
變數就像一個箱子,而變數的值就是內容物
by 北資電神 丁瑞萱
變數類型
類型 | 中文名字 | 值域 | 記憶體用量 |
---|---|---|---|
int | 整數 | 約 | 4 bytes |
long long (int) | 長整數 | 約 | 8 bytes |
float | 浮點數 | 精確位數7位 | 4 bytes |
double | 雙精度浮點數 | 精確位數15位 | 8 bytes |
char | 字元 | -128 ~ 127 | 1 byte |
bool | 布林值 | true or false | 1 byte |
很容易有誤差
不要用
補充: ascii
變數ㄉ命名
- 只可以用英文字母、數字、底線(_)、錢錢($)
- 變數名稱不能用數字開頭 (a1可以 1a不行)
- 不能用保留字
- 大小寫不一樣 (a跟A不一樣)
宣告變數
#include <iostream>
using namespace std;
int main(){
int a; //宣告一個整數型變數a
int b, c; //也可以一次宣告不只一個 記得用逗號隔開
double d; //宣告一個雙精度浮點數型變數d
int renee = 0; //可以宣告完馬上賦值
int mouyilai, MOUYILAI = 0;
//一次只能賦值給一個變數(mouyilai沒有被賦值到ㄛ)
string starburst_stream;
//宣告一個叫starburst_stream的字串型變數
return 0;
}
宣告的方法是 變數型態 變數名稱( = 值);
輸入輸出(I/O)
I/0
I代表input,O代表output
有兩種方式可以輸入輸出,分別是C-style的的scanf / printf,搭配的標頭檔是<stdio.h>;和C++的cin/cout,搭配的標頭檔是<iostream>
我們主要教的輸入和輸出是cin/cout
cout的使用方法
#include <iostream>
using namespace std;
int main(){
int renee = 1, mouyilai = 0;
cout << renee << " " << mouyilai << '\n';
//cout寫起來會是cout << 要輸出的東西
//每一個東西之間要用 << 隔開
// '\n'跟endl都可以換行
//用雙引號包起來的是字串
return 0;
}
cin 的使用方法
#include <iostream>
using namespace std;
int main(){
int renee, mouyilai;
cin >> renee >> mouyilai;
//cin寫起來會是cin >> 儲存輸入的變數
//每一個東西之間要用 >> 隔開
//如果輸入有用空白或是換行隔開的話不會被視為同一個東西
return 0;
}
比較快ㄉ輸入輸出
其實就跟剛剛一樣拉
只是在main函式的最前面加上這三行
#include <iostream>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
//做事
return 0;
}
好奇這三行在幹嘛的話可以看看這篇
運算子
指定運算子(=)
把右邊的東西指定給左邊的變數
像是x = 0 或是x = y
#include <iostream>
using namespace std;
int main(){
int a = 1, b; //宣告變數a和b 並把a的初始值設為1
b = 2; //把b的值指定為2
cout << a << " " << b << endl;
a = b; //把b的值指定為a的值
cout << a << " " << b << endl;
return 0;
}
兩數交換
輸入兩個整數a, b,輸出a, b兩數交換的結果
喔可以想一下la
#include <iostream>
using namespace std;
int main(){
int a, b, tmp;
cin >> a >> b;
tmp = a;
a = b;
b = tmp;
cout << a << " " << b;
return 0;
}
也可以直接swap啦ww
算術運算子(+, -, *, /, %)
- 就跟你數學ㄉ加減乘除一樣
- %是取餘數的意思
#include <iostream>
using namespace std;
int main(){
int a = 1, b = 2;
cout << "a+b=" << a + b << '\n';
cout << "a-b=" << a - b << '\n';
cout << "a*b=" << a * b << '\n';
cout << "a/b=" << a / b << '\n';
//整數除整數只會是整數
//那就把一個強制轉成浮點數就會輸出浮點數ㄌ
cout << "a/b=" << (double)a / b << '\n';
cout << "a%b=" << a % b << '\n';
return 0;
}
方便的東西 1
這好像叫複合指定運算式但不太重要 | 這是原本ㄉ意思 |
---|---|
x += y | x = x + y |
x -= y | x = x - y |
x *= 2 | x = x * 2 |
x /= 2 | x = x / 2 |
x %= 2 | x = x % 2 |
總之左邊那欄的東西等價於右邊那欄的東西
有+=, -=, *=, /=, %=
方便的東西 2
它的名字不重要 | 它在幹嘛 |
---|---|
y = ++x | 把x += 1之後再把這個值給y |
y = x++ | 把x的值給y之後再把x += 1 |
y = --x | 把x -= 1之後再把這個值給y |
y = x-- | 把x的值給y之後再把x -= 1 |
上面其實目前還不太重要啦
反正目前你只要知道x++和++x等價於x += 1
還有x--和--x等價於x -= 1
題目
可以去寫個題目之類ㄉ 但不寫好像也沒差
if else
if else的基本結構
if(條件){
做事
}
else if(條件){
做事
}
else{
做事
}
關係運算子
== : 不是傻眼,是等於
!= :不等於
>:大於
>=:大於等於
<:小於
<=:小於等於
#include <iostream>
using namespace std;
int main(){
int a, b;
if(a == b){
cout << "a等於b";
}
if(a != b){
cout << "a不等於b";
}
if(a > b){
cout << "a大於b";
}
if(a >= b){
cout << "a大於等於b";
}
if(a < b){
cout << "a小於b";
}
if(a <= b){
cout << "a小於等於b";
}
return 0;
}
邏輯運算子
and:&&
or:||
not:!
#include <iostream>
using namespace std;
int main(){
int a = 1, b = 2;
if(!(a == b) && a > b){
cout << "好耶\n";
}
else if(a != b || a < b){
cout << "不好耶\n";
}
return 0;
}
真值表
P | 0 | 0 | 1 | 1 |
Q | 0 | 1 | 0 | 1 |
P AND Q | 0 | 0 | 0 | 0 |
P | 0 | 0 | 1 | 1 |
Q | 0 | 1 | 0 | 1 |
P OR Q | 0 | 1 | 1 | 1 |
P | 1 | 0 |
NOT P | 0 | 1 |
寫題目
如果還有時間的話
ㄅㄅ下禮拜三記得來上ㄛ
有問題記得問
希望你喜歡我ㄉ課>////<
btw我的哀居帳號是
@fgisc35th_lai_xiang_yi
\學妹加我哀居/
(度不起我太噁)
C++語法衝刺的啦(1)
By mouyilai
C++語法衝刺的啦(1)
- 551