開發環境&前置作業

課堂目標 : 介紹開發環境並成功寫好程式初始架構
作者 : CBJ
參考資料 : N/A

開發環境

。OnlineGDB

OnlineGDB是個線上版的程式編譯環境,雖然仍然建議各位使用非線上版的環境來寫程式,但考量到安裝過程會出現的各種奇異狀況,所以還是先以線上版的為主 (撇除電腦本身的變因),若以後有空各位可以嘗試自己安裝像是VS Code, Code::Blocks(C/C++), Python等等,現在網路上都有不少的安裝教學,有興趣的話可以去玩玩看。

前置作業

打開OnlineGDB後,會看到以下這個畫面 (以C為例):

看到這裡,又必須來補充一些事情。

1 ~ 7 行:註解

在C/C++當中,註解有兩種形式,「單行註解」和「多行註解」。

// 這是單行註解

這不是註解

/*這是
   多
  行 註
         解
*/

但這不是註解//

/*這是用多行註解的方式寫單行註解*/

/***********這樣也是註解************/

/*但這不是註解

而Python的單行註解和多行註解,則是用 # 和 ‘‘‘ ’’’ (長字串)。

# 這是單行註解

這不是註解

'''這是
   多
  行 註
         解
'''

但這不是註解 #

'''這是用多行註解的方式寫單行註解'''

''''''''''''可是這樣就「不是」註解''''''''''''

''' 這也不是註解

從範例中可以看到,綠色的文字才是有被註解到的內容。

第 8, 10, 14, 17 行:空白行

空白行在程式中並不會影響到任何東西,有時只是為了美觀易讀而已,因此在看程式時不需要特別去理會空白行。

第 9 行:#include< … >

在 < > 內我們會放入函式庫的檔名,而#include就是指「引入」的意思,如此一來,我們的程式就能夠使用該函式庫裡的所有函式。

C 語言所引入的函式庫是 stdio.h,他內含許多重要的輸入輸出函式 (例如 scanf(), printf() … ) ,讓我們在輸入輸出的時候十分便利 (因為輸入輸出的實作本身是個很深奧的學問)。

若是 C++ 則引入 iostream (#include<iostream>),並在下一行加上一個「using namespace std ;」,會省下一些功夫 (少打一些重複的std::) (原理可以上網查詢)。

而Python不用引入即可輸入輸出,是不是很方便呢? (X)

第 11 (12,16) 行:int main() { … }

在 C/C++ 中,主程式要寫在 main() 函式裡面,才會被成功執行,其原理主要是因為,要讓電腦知道程式從哪裡開始,所以「main()」這個東西就是一個約定好的程式入口,所有程式就是從 main() 裡的第 1 行開始,而不是程式的第 1 行。

P.S. 當然也可以不要用main這個名稱,只是還需要額外做一些複雜的事,不如就乖乖地照規定走就好。

而在 main() 之前還有一個 int,指的是回傳值的資料型態 (int型態指的是「整數」) (關於資料型態會在下一周的單元裡提到),在程式中有規範,必須要回傳「整數」型態才行,因此這裡用 int (整數也有一個別名叫做 signed,因此 signed main() { … } 也是OK的)。

此外,main() 函式的括號內沒有放東西,表示不需要傳入「參數」,但是以後可能有機會看到像是 int main(int argc, char** argv) 、int main(int argc, char* argv[ ])這類的東西,這個所涉及到的東西絕對是超範圍的,各位現在可以先不用去理解它。

所有的主程式都要寫在{ }包起來的範圍中,至於{ }所擺放的位置,不同人有不同的風格。({ }的後面不需要再加上分號)

那麼Python呢? 很遺憾的,Python不需要main()就可以直接寫主程式,是不是很方便呢? (X)

第 13 行:printf()

這裡有點小爆雷了,我在下一章節就會詳細說明,大家敬請期待。

第 15 行:return 0

函式必須要回傳值,回傳的型態取決於定義,像 main() 的定義就是 int,所以要回傳一個整數值,通常一個順利執行的程式會回傳 0,反之會回傳 1,因此第 15 行就寫了 return(回傳) 0。

Python因為根本沒有 main(),所以不會出現需要回傳的問題,是不是很方便呢?(我好像講了三次…?)

結論

要寫程式之前,要先把開發環境搞好。

要寫主程式之前,要先將一些該寫的都寫好。痾,Python除外。

練習

  1. 摸索一下OnlineGDB的一些功能
  2. 把寫主程式之前的那些該寫好的程式先寫一次看看(前置作業)

提示

。C的前置作業範例

// C
#include<stdio.h>
int main(){
    // do something ...
    return 0;
}

。C++的前置作業範例

// C++
#include<iostream>
using namespace std;
int main(){
    // do something ...
    return 0;
}

。Python的前置作業範例

## Python
''' do something ... '''

相關文章

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *