今天要教的是

傳說中的C++

講義連結

https://goo.gl/mpojr6

https://goo.gl/hGJt2P

C++程式執行六步驟

  1. 編輯(edit)

  2. 前處理(preprocess)

  3. 編譯(compile)

  4. 聯結(link)

  5. 裝載(load)

  6. 執行(execute)

程式如何執行?

由上而下

一次只做一件事

一次多工的方法暫時不會教

下載整合開發環境(IDE)

https://goo.gl/eXCC4f

甚麼是整合開發環境?

  • 程式語言編輯器

  • 自動建立工具

  • 除錯器

  • 編譯器/直譯器

  1. OK

  2. I Agree

  3. Next

  4. Install

  5. Finish

  6. 選擇Chinese(TW),按下Next

  7. 顏色和圖示依個人喜好,下一步

  8. OK

安裝步驟

DevC++ 5.11常用快速鍵

  • ctrl+N 開啟新檔

  • ctrl+O開啟舊檔

  • ctrl+S儲存檔案

  • F9 編譯

  • F10 執行

  • F11 編譯並執行

  • F5除錯

回家想嘗試不用IDE?

 

請參考此剪報,課後也可詢問學長姐

http://goo.gl/zGmsyM

開始寫程式前,你要知道...

  1. 電腦不會思考

  2. 電腦運算能力很強大

  3. 作業可以不寫,但是寫了才會進步

  4. 學程式除了看也要實作

  5. 不能只實作而不看

  6. 不要copy別人的程式碼

  7. 有問題就問,不要怕被罵

  8. 再簡單的問題都歡迎問

C++程式架構

主要程式碼

int main(){
    /*
        程式內容
    */
    return 0;
}
int main(){

    return 0;
}

完整程式碼可能架構

#include<標頭檔> //註解
宣告一堆東西 //註解
int main(){ 
    內容
    /*
        多行註解
    */
    return 0;
}
自訂函數補充    //註解

前面說過電腦很笨

寫程式可以想成下指令

你下甚麼指令他做甚麼

你沒下的指令就別妄想他會做了

常用的指令-輸入輸出

指令使用

標準輸出是printf("內容");
標準輸入是scanf("內容");

 

嘗試看看輸出跟我螢幕一樣的內容吧?

編譯錯誤?

還記得這張圖嗎?

#include<標頭檔> //註解
宣告一堆東西 //註解
int main(){ 
    內容
    /*
        多行註解
    */
    return 0;
}
自訂函數補充    //註解

printf被定義在cstdio裡面

 

因此必須引入這個標題檔

 

#include<cstdio>

為什麼是cstdio?

stdio取自於英文Standard Input and Ouput

 

原本被定義為C的函式庫,而C++使用了他

 

翻成英文的話就是


C++ using the C Standard Input and Output Library

加上標頭檔後...

顯示一個不夠,我要三個

int main(){
    printf("大安高工電腦研究社"); //輸出大安高工電腦研究社
    printf("大安高工電腦研究社"); //輸出大安高工電腦研究社
    printf("大安高工電腦研究社"); //輸出大安高工電腦研究社
    return 0; 
}

字都在同一排...

常用跳脫字元

\n 換行

\o 空字元

\\ 印出\

\' 印出'

\" 印出"

於是改成...

int main(){
	printf("大安高工電腦研究社\n"); //輸出大安高工電腦研究社
	printf("大安高工電腦研究社\n"); //輸出大安高工電腦研究社
	printf("大安高工電腦研究社\n"); //輸出大安高工電腦研究社
	return 0; 
}

就成功換行啦!

順利輸出後,現在有個難題

我要寫一個程式和等下進教室的人說Hello

printf("Hello,等下進來的人");

糟糕!我不知道等下進來的人是誰!

對了!可以輸入他的名字後輸出!

scanf("社長");

printf("Hello,");

要怎麼讀我剛剛輸入什麼啊?

而且看起來沒有輸入啊?

嘗試一下看這段程式碼吧?

#include<cstdio>
int main(){
    char c; 
    scanf("%c",&c);
    printf("Hello,%c\n",c); 
}

變數宣告

宣告方法:

資料型態 變數名稱;

資料型態 變數名稱1,變數名稱2;

 

資料型態

(人類角度)

 

 

數字:整數、小數

文字:一個字、一句話

資料型態

 對電腦而言...

 

 

整數、浮點數、字元、布林

可參閱此表

如何在使用printf和scanf時指定變數進行輸入輸出?

scanf("格式指定字",&變數名稱);

printf("格式指定字",變數名稱);

很多個變數?

scanf("格式指定字 格式指定字",&變數名稱,&變數名稱);

printf("格式指定字 格式指定字",變數名稱,變數名稱);

 

第一個格式指定字對第一個變數名稱,第N個同

再來看一張表

再看一次這段程式碼

#include<cstdio> //標準IO標頭檔引入 
int main(){
    char c;	//字元型態變數宣告 
    scanf("%c",&c);	//輸入字元型態的變數c 
    printf("Hello,%c\n",c); //輸出Hello,c存的東西 
}

輸出結果

換成英文名字

char是一個字元

而非一個字串

字串宣告

char 變數名稱[字串長度+1];

char 變數名稱[]="內容";

char c[5];

char c[]="Rice";

輸入輸出的指定字記得改

很高興的對了

但是剛剛的字串宣告多了一種方式

char 變數名稱[]="內容";

只有字串能這樣使用嗎?

當然不!

例如...

  • int a=1,b=2;

  • double x=0.1;

  • char s[]="Rice";

  • char c='c';

  • bool bl=true;

既然有數字,我們講一下運算吧!

  • +

  • -

  • *

  • /

  • %

既然講到運算了

我們就來出個題目吧!

輸入兩個正整數
輸出第一個整數除第二個整數的結果

輸出沒有小數點怎麼辦?

可能有人直接將printf的格式指定字改為%f或%lf

但是他不是浮點數!

兩個簡單的解法

兩個簡單的解法

  • 直接宣告兩個浮點數,反正整數n就是n.0

  • 強制轉換型別

強制轉換型別

(轉換後的資料型態) 被轉的東西

 

 

例如

(float) a/b;

 

(float) 1;

今天題目更機車,要求你只能輸出小數點後兩位

printf動手腳

printf("%.小數點後的位數f",(float) 1);

printf("%預留寬度.小數點後的位數f",(float) 1);

 

printf("%.2f",(float) a/b);

使用者:「每算完一次就要重新啟動程式好麻煩!」

於是你開始嘗試解決...

while的使用!

while的使用!

我們直接看程式碼

int main(){
    float a,b;
    while(scanf("%f %f",&a,&b)!=EOF){
	printf("%.2f\n",a/b);
    }
    return 0;
}

while架構

while(條件判斷){
    區塊1;
}
區塊2;

假如條件為真,進入區塊1

否則,進入區塊2

當區塊1執行完畢會回到條件判斷

EOF是什麼?

End Of File

檔案結尾 = 後面沒東西 = 輸入結束

再拿剛剛的程式碼當範例

int main(){
    float a,b;
    while(scanf("%f %f",&a,&b)!=EOF){
	printf("%.2f\n",a/b);
    }
    return 0;
}

宣告浮點數a和b

當還有輸入a和b時,進入{}裡的程式

輸出a/b的結果到小數點後兩位

判斷是否有輸入a和b

假如沒有則return 0;結束程式

課後練習