REVIEW

by 楓資27th程教

CONTENTS

  • variables 變數
  • operator 運算子
  • condition 條件判斷
  • loop 迴圈
  • array 陣列

VARIABLE

一個不可忽視的存在--變數

variable in Math ?_?

  • 在數學領域中:  咱們熟悉的未知數
a^2+2*a*b+b^2=(a+b)^2
x+y=4, x-y=2  x=3, y=2
y=f(x)=ax+b
a^2+b^2=c^2
...

variable in programming ?_?

  • 有記憶體
  • 可更改、計算



  • 由許多形態組成
  • 唯一的值
 
int a = -2147483648;
char _b = 'b';
long long int c = 9223372036854775807;
float d = 3.1415926; //7位
double e = 3.141592653589793; //15位
...

variable ?_?

  • 可用半形的數字(0~9) || 字元(a~z, A~Z) || 底線(_)
  • 不可在同一區域重複宣告同一個變數(名稱)
  • 不能用函式庫已有的函式名稱(關鍵字) 如下:
 

(但是好棒棒的編譯器大哥其實會幫你用 粗體 或 不同顏色 標起來)

後面會講這個概念

型態 中文意思 英文字義 儲存空間(位元) 數值範圍
int 整數 Integer 4 bytes/ 32 bits -2^31~2^31-1 (10 位數)
long long 長整數 long long integer 8 bytes/ 64 bits -2^63~2^63-1 (19 位數)
float 浮點數(小數) floating point 4 bytes/ 32 bits 3.4E +/- 38 (7 位數)
double 倍精度浮點數 double 8 bytes/ 64 bits 1.7E +/- 308 (15 位數)
char 字元(半形字) Character 1 byte/ 8 bits 0~255(ASCII)
bool 布林(是非) boolean 1 byte/ 8 bits false, true, 0~255

types of variable ?_?

0
 Advanced issue found
 

小數點後XX位

declare + assign + i/ o

int num_1, num_2, num_3; 
//宣告整數型, 分別叫num_1, num_2, num_3的變數
int num_4 = 3; 
//宣告一個整數型, 叫num_4的變數, 並分配一個整數給它(賦值)
num_1 = 1; //賦值
cin>> num_2; 
//輸入一個整數進num_2
num_3 = num_1 + num_2
cout<< num_1<<" "<< num_2<< " "<< num_3<< " "<<num_4; 
//分別輸出值

Q: 要輸入己才能輸出"1 1 2 3"的費式數列??

















A: 1

宣告                            賦值                        輸入/ 輸出

 

OPERATOR

小學生就會的1+1=王田二 --運算子

算數運算子

  • + : 加,像是 6 + 5 = 11
  • - : 減,像是 6 - 4 = 2
  • * : 乘,像是 8 * 7 = 56
  • / : 除 ,整數的除就是取商,像是 11 / 3 = 3
  • 如果是小數,1.23 / 2.4 = 0.5125

mod %       

  • 取mod,就是取兩數相除後的餘數
  • 像是,11 % 3 = 2 ( 11 除以 3 等於 3 餘 2 )
  • 若被除數是負數,餘數會是負的,e.g.-8 % 5 = -3

int : ㄏㄚˋ,我才有的啦!

關係運算子

  • >   : 大於
  • == : 等於
  • <= : 小於等於
  • == 要記得不能打成 =

      =   : 賦值,把等號右邊的值指定或存取到左邊               的變數

  • < : 小於
  • >= : 大於等於
  • != : 不等於

邏輯運算子

  • && : and ( shift 7 )
  • ||  : or( shift \ , \在enter上面)
  •  !    : not(shift 1)
  • && 跟||記得是兩個喔!

偷懶ㄉ我

  • 遞增 i = i + 1 → i++
  • 遞減 i = i - 1 → i--
  • i = i + 8 → i += 8
  • i = i - 8 → i -= 8
  • i = i * 8 → i *= 8
  • i = i / 8 → i /= 8
  • i= i % 8 → i %= 8

CONDITIONAL

if (我就爛 == true) -- 條件判斷

條件判斷?

  • 當某個條件成立時,執行該條件成立時的動作 

單向選擇


 

//語法
if(要判斷的條件){
    //條件成立時要執行的指令
}
//例子
if(score>=60){
    cout<<"pass";
}

雙向選擇


 

//語法
if(要判斷的條件){
    //條件成立時要執行的指令;
}
else{
    //條件不成立時要執行的指令;
}
//例子
if(score>=60){
    cout<<"pass";
}
else{
    cout<<"fail";
}

多向選擇

  • 你可以用很多個else if!
//語法
if(條件1){
	//條件1成立時要執行的指令
}
else if(條件2){
	//不滿足條件1但條件2成立時要執行的指令
}
else if(條件3){
	//不滿足以上條件但條件3成立時要執行的指令
}
		. . . 
else{
	//以上條件皆不成立時要執行的指令
}
//例子
if(score==100){
    cout<<"wow!!!";
}
else if(score>=80){
    cout<<"excellent!!";
}
else if(score>=60){
    cout<<"good!";
}
else{
    cout<<"keep going~";
}

多向選擇 - SWITCH

  • 是一種多向選擇
  • 判斷條件的多時可以省略冗長的else if !
  • 只能用於比較特定變數是否為某一整數或字元

多向選擇 - SWITCH

//語法
switch(變數名稱){
    case 條件1:
        //條件1成立時執行的指令
        break;
    case 條件2:
        //條件2成立時執行的指令
        break;
        . . . 
    default:
        //以上皆不成立時執行的指令
}
//條件只能為某個整數或字元,或者是整數或字元的區間
//例子(數字)
switch(score){
    case 100:
        cout<<"滿分";
        break;
    case 60 ... 99:
        cout<<"及格";
        break;
    default:
        cout<<"不及格";
}
//例子(字元)
switch(grade){
    case 'A':
        cout<<"90~100";
        break;
    case 'B':
        cout<<"80~89";
        break;
    case 'C':
        cout<<"70~79";
        break;
    case 'D':
        cout<<"60~69";
        break;
    case 'E':
        cout<<"0~59";
        break;
    case 'F' ... 'Z':
        cout<<"error";
        break;
}
  • 區間語法:整數/字元(空格)...(空格)整數/字元

TIPS

  • 程式執行順序由上而下執行,當上方條件成立後便會執行該對應敘述,就不會繼續執行下方的條件判斷了!
  • else或default若不需要使用可以省略

LOOP

一直一直一...直重複 --迴圈

BREAK && CONTINUE

loop in programming ?_?

  • 一種常見(用)的控制流程
  • 在特定程式區塊中,重複執行相同的指令
  • C++有三種迴圈​​
    • while loop
    • for loop
    • do-while (後測試迴圈,比較不常用)

while loop ?_?

  • 當條件||數值為true, 執行{ }裡的 statement
  • 注意: condition非 0 即為 true
while(condition){ //條件
    statement; //內容
    //do something...
}

infinite loop ?_?

while(1){ 
    //do something...
}
  • 1永遠"非 0",條件恆為true
  • 通常會跟continue, break搭配

無窮

 
  • 當條件(中間)成立時,執行{}裡的動作
  • 注意: C語言不可在小括號內宣告
  • 注意: 變數/ 條件/ 更新 用分號隔開

for loop ?_?

for((宣告)初始化變數; 條件; 更新){
    statement;  //內容
    //do something...
}

(int) i=0

i<5

i++

for(int i=0; i<5; i++){ //外層迴圈
    for(int j=0; j>5; j++){ //內層迴圈
    	cin>> array[i][j];
    }
}
  • 迴圈裡有一個以上的迴圈
  • 常用在多維陣列

nested loop ?_?

巢狀

 
for(int i=0; i<5; i++){ 
    if(i==3) break;
    cout<< i<<" ";
}
//0 1 2
  • 提前結束迴圈(跳出一層迴圈)
  • 通常放在條件判斷後

break ?_?

for(int i=0; i<5; i++){ 
    if(i==3) continue;
    cout<< i<<" ";
}
//0 1 2 4
  • 直接進入下一個迴圈(跳過本次迴圈的內容)
  • 通常放在條件判斷後

continue ?_?

attention !_!

  • 如大括號裡只有一行指令,可以縮排去大括號
  • 區域變數只能在宣告處以內的地方使用
#include<iostream>
using namesapce std;
int a=5;
int main(){
    int x=1;
    for(int i=0; i<3; i++){
        cout<< i<< " "; //ok
        cout<< x<< " "; //ok
        cout<< a<< " "; //ok
    }
    cout<< i; //X
    return 0;
}

ARRAY

老師你錯了 是從0開始不是1 --陣列

一維陣列

declare an array

 
  • 資料型態 變數名稱[儲存空間];
  • 陣列的儲存是從0開始
int a[10]; 
// 資料型態: 整數(陣列), 陣列名稱: a, 陣列大小: 10  
// 沒有初始化的陣列
// 裡面也許長這樣 a = {-2147483648, 2147483657, ...}
double b[100] = {0.1, 0.05, 0.2};
// 資料型態: 浮點數(陣列), 陣列名稱: b, 陣列大小: 100
// 陣列值用大括號括
//除了初始化的3個數其他預設為0
char str[6];
// 資料型態: 字元(陣列), 陣列名稱: str, 陣列大小: 6
// 字元陣列會包含最後一個字元'\0', 因此開的大小要字數+1
// 但建議還是開大一點, 不開白不開, 你也不會少一塊肉

存取陣列

 
  • 迴圈
int a[6];
for(int i=0;i<=5;i++) 
	a[i]=i;
a[0] a[1] a[2] a[3] a[4] a[5]

1

0

5

4

3

2

注意

 
  • 不要存取不在陣列空間內的值
  • 如果打成下面那樣的話OJ會出現RE
  • 電腦會當機
int a[10];
cout<<a[100]<<endl;
cout<<a[1000]<<endl;

注意

 
  • 陣列的長度在宣告後就固定不變了
  • 那有些人會想說要打成這樣
  • 不建議
int n=2;
int a[n];

多維陣列

declare an array

 
  • 資料型態  變數名稱[儲存空間][儲存空間]....
  • 幾維就開幾格
int a[5][2];
double b[7][1][2];

存取陣列

 
  • 巢狀迴圈
int a[3][3];
for(int i=0;i<3;i++){
    for(int j=0;j<3;j++) 
    	a[i][j]=i+j;
}
0 1 2
0
1
2

0

4

3

3

2

2

1

2

1

FINISH

NOT

a mini quiz

ReviewI_variable2array

By h94usu6

ReviewI_variable2array

2020試教_part1

  • 176