今天要教的是
傳說中的C++
講義連結
https://goo.gl/mpojr6
https://goo.gl/hGJt2P
C++程式執行六步驟
-
編輯(edit)
-
前處理(preprocess)
-
編譯(compile)
-
聯結(link)
-
裝載(load)
-
執行(execute)
程式如何執行?
由上而下
一次只做一件事
一次多工的方法暫時不會教
下載整合開發環境(IDE)
https://goo.gl/eXCC4f
甚麼是整合開發環境?
-
程式語言編輯器
-
自動建立工具
-
除錯器
-
編譯器/直譯器
-
OK
-
I Agree
-
Next
-
Install
-
Finish
-
選擇Chinese(TW),按下Next
-
顏色和圖示依個人喜好,下一步
-
OK
安裝步驟
DevC++ 5.11常用快速鍵
-
ctrl+N 開啟新檔
-
ctrl+O開啟舊檔
-
ctrl+S儲存檔案
-
F9 編譯
-
F10 執行
-
F11 編譯並執行
-
F5除錯
回家想嘗試不用IDE?
請參考此剪報,課後也可詢問學長姐
http://goo.gl/zGmsyM
開始寫程式前,你要知道...
-
電腦不會思考
-
電腦運算能力很強大
-
作業可以不寫,但是寫了才會進步
-
學程式除了看也要實作
-
不能只實作而不看
-
不要copy別人的程式碼
-
有問題就問,不要怕被罵
-
再簡單的問題都歡迎問
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;結束程式
課後練習
C++的第一堂課
By s5590220001
C++的第一堂課
輸出入、變數、型態、while概論、運算子
- 2,189