非本科系的學生程式要寫得好(至少堪用乾淨),還是要多下一點功夫研究基礎,此為台大開放式線上課程計算機程式(http://ocw.aca.ntu.edu.tw/ntu-ocw/ocw/cou/101S112)聽課心得。作業嗎?沒有寫唷QQ
C++ 程式語言結構
基本語法(影片沒有拍到投影片上老師正在講解的程式碼,所以有在網路上順便搜尋資料輔助學習):
//:註解,可以出現在程式的任何地方#:程式要使用的既有函式庫,通常會在編譯時執行。例:程式中有使用 input/output 功能時,要先 include 函式,寫法:#include<iostream>using:將常常用到的指令先載入,主程式就可以少寫很多一樣的字。最常見的用法:using namespace std; 這樣就可以使用 std 這個 class 裡面的所有方法。main():主程式開頭,以花括號({})作為界定範圍,程式中的其它多行 statement 也是以花括號作為區塊data type:程式執行完之後會回傳的資料型態,通常寫在 main()前面return 0;:一個 statement 的結尾,要有分號\:脱逸字元
I/O指令:
輸出:cout << "我是要出現在螢幕上的文字";
<< endl; //換行
輸入:cin >> 要儲存的變數名字
輸出的元素可以是任何東西,字串、數字或變數都行,也可以混合使用。字串的換行可以使用 \n 標記,常數、變數等沒有用雙引號框起來的輸出,則使用 endl。cout 也可以直接輸出計算結果。
用來讓輸出格式變整齊的方法:
setw(n)
使用前要先 #include <iomanip>,效果與 Ruby 的 rjust/ljust 方法類似,可以控制輸出資料的左右對齊。
輸入比輸出困難,要注意一些地方:
- data type:系統定義的一些資料型態,有:int(整數)、unsigned integer(無符號整數,即正整數)、short int、long int(佔記憶體比較小和比較大的整數)、float(小數)、double、long double(可以存位數比較大的小數)、char(字元)、bool(布林值)。
- 變數:用來儲存使用者輸入的資料,以利程式後續操作。變數需要經過宣告才能使用,宣告方式:資料型態 名字,例如我想要一個叫做 a 的變數,用來儲存整數,宣告方式即為:
int a;
這樣就可以在程式裡面重複呼叫使用了,當然最好使用有意義的文字,不然日子久了大概就想不起來這是用來幹嘛的。C++是 case sensitive 的語言,所以大小寫的意義不同,不要寫錯不然會抓不到。此外,變數的第一個字不可以是數字,一定要是英文字母;下底線開始的變數,通常是系統內建設定,為了避免撞名,最好也不要使用,還有就是系統本身的保留字,也不能拿來做變數名稱。
運算符號:
加:+
減:-
乘:*
除:/
餘數:%,使用條件:除數與被除數都要是整數
C++ 裡面各種類型的 operator 都可以互相串接,優先順序如下:
(1)()
(2)* / %
(3)+ -
(4)<< >>
(5)< <= > >=
(6)== !=
(7)=
除了 assign operator 之外,若同一條算式中出現同一級運算元,皆以由左至右順序處理,例:1 + 2 * 3 / 4 / 5,乘除優先權為同一級,故會依順序執行 2 * 3 / 4 / 5 再加 1。
程式中的邏輯判斷
程式原則上是由上往下一行一行執行,除非碰上條件設定:
single selection:滿足條件才執行,否則跳過
double selection:滿足某個條件,則執行某個動作,否則跳過,會有兩種的選擇
multiple selection:同上,但有兩種以上的條件判斷與選擇
repetition:條件完成前重複執行該程式碼(即迴圈)
邏輯判斷常使用的幾個方法:
(1)if/else
if(判斷條件) {
要執行的動作;
}
else if(判斷條件) {
要執行的動作;
}
else(判斷條件) {
要執行的動作;
}
(2)switch
switch(判斷條件) {
case 條件一
動作一;
break;
case 條件二
動作二;
break;
default
動作三;
}
迴圈常使用的方法:
(1)while
while(執行條件) {
要執行的內容;
}
(2)do…while
do {
要執行的內容;
}
while(執行條件);
迴圈要記得給終止條件,不然會進入無窮無法停止。
(3)for
for(控制元素初始值;執行條件;控制元素改變規則) {
要執行的內容;
}控制元素的初始值與條件(如果有在迴圈其它地方設定的話)可以空白,一樣要用分號隔開;在 for loop 裡面宣告的變數,有效範圍只在 loop 裡面,使用時要特別注意
此外,有兩個方法:continue、break,常與 loop 連用,於執行到某個部份時強制終止迴圈使用。
break:達成條件時,迴圈直接終止
continue:達成條件時,跳過該次迴圈的動作,繼續執行迴圈直到結束
資料型態轉換
在 C++ 的運算中,結果的資料型態取決於輸入的資料型態,
整數 + 整數,回傳整數
整數 + 小數,回傳小數以資料型態精確度高的優先,加減乘除規則皆同
但在操作上,有時候希望再不改變資料的前提下轉換型態(例如:整數轉成小數),就要使用轉換語法:
static_cast<想要轉換的資料型態>(想要轉換的標的);
這不會改變記憶體裡面的值,而是將資料複製一份,轉換型態輸出。
小數點輸出方式轉換
小數有兩種記錄方式:浮點數與科學記號表示法,可以使用方法控制想顯示的樣式:
fixed:輸出浮點數模式,有時會和 setprecision(n) 連用,用來設定要輸出到小數第幾位(四捨五入);如果沒有設定,預設值為小數點以下六位(僅顯示設定,不影響記憶體中紀錄的值)scientific:輸出科學記號表示法
fixed 和 scientific 只要寫一次,後面輸出的小數都會走這個模式,如有需要切換顯示,只要在要切換的輸出行再次宣告方法即可。
參考資料: