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對的

  • 高中生程式解題系統
  • 水題庫
  • 建中ㄉ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;
} 

這題是zj d483可以去寫寫看

注意一下題目要的大小寫喔喔喔

要跟題目要的一模一樣才會過 

變數 & 常數

變數

變數就像一個箱子,而變數的值就是內容物

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
10^9
10^{18}

很容易有誤差

不要用

補充: 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

\學妹加我哀居/

(度不起我太噁)

Made with Slides.com