【計算機程式】程式基本架構

朱痕染跡璧有瑕
6 min readOct 18, 2019

--

非本科系的學生程式要寫得好(至少堪用乾淨),還是要多下一點功夫研究基礎,此為台大開放式線上課程計算機程式(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 方法類似,可以控制輸出資料的左右對齊。

輸入比輸出困難,要注意一些地方:

  1. data type:系統定義的一些資料型態,有:int(整數)、unsigned integer(無符號整數,即正整數)、short int、long int(佔記憶體比較小和比較大的整數)、float(小數)、double、long double(可以存位數比較大的小數)、char(字元)、bool(布林值)。
  2. 變數:用來儲存使用者輸入的資料,以利程式後續操作。變數需要經過宣告才能使用,宣告方式:資料型態 名字,例如我想要一個叫做 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 只要寫一次,後面輸出的小數都會走這個模式,如有需要切換顯示,只要在要切換的輸出行再次宣告方法即可。

參考資料:

--

--