機器人思維與設計課程
Python 講義
指導老師:高啟洲 老師
一、程式語言
語言(Language)是人與人之間互相溝通、交換訊息、觀念的
橋樑。無論是口語、手語等肢體動作,都是以約定成俗的共同認識為
要件。同樣的,人與電腦溝通,也必須取得協調,電腦才會依照你的
指令動作,達成你想做的事情。這種電腦能夠理解的語言,稱為電腦
語言,又稱程式語言。
電腦看得懂的語言只有一種,稱為機器語言,是 CPU 可以直接
解讀的程式語言。機器語言是用二進位來表示,CPU 能直接辨識且執
行的語言。例如說,當希望電腦將暫存器 BX 的資料送到 AX 時,我們
需要對電腦下達:
1000 1001 1101 1000
然而,這樣的語言對人類來說是非常不人性化的,要想寫程式,需要
熟記所有電腦的指令及指令的含意。在用機器語言開發程式時,我們
會需要將每個步驟都詳細的用 0 與 1 對電腦下達指令,會是非常繁瑣
且費時的工作,且完成品的可讀性極差。因此,現在除了電腦生產方
面的專家會學習以外,基本上不會學機器語言。
為了讓開發程式更人性化,工程師們用簡單的英文單字來代表
連串的機械語言的指令,使其可讀性更高,且便於工程師開發。這種
以簡單英文字代表一連串指令的語言,稱為組合語言。舉例來說,上
文提到的將資料從 AX 存到 BX 的指令,我們就可以用:
MOV AX, BX
這樣簡單的指令對電腦下達。這樣來說,比起看一連串的 0 和 1,若
以組合語言撰寫程式,比較可以快速理解其每一行在執行甚麼動作。
組合語言現在也並不是開發程式的主要語言,通常會被應用在底層硬
體操作、驅動程式等領域。
雖然組合語言比起機器語言更人性化,開發更方便,但是對於
人類來說,以單字對話依舊不是日常會出現的情況。為了讓程式開發
更加接近人類在說話的方式,高階語言出現了。高階程式語言
(High-level programming language)是經過高度封裝的程式語
言,與低階語言(機器語言、組合語言)相比,他是以人類的日常語
言為基礎的一種程式語言,以一般人易於接受的文字及語言邏輯來表
示,使程式開發更加方便,有更高的可讀性,使開發、除錯、維護更
加快速,且對開發人員的門檻較低(與低階語言比較,不須理解所有
電腦的指令集)。
高階語言大抵可以分成兩種,分別是「編譯語言」及「直譯語
言」。編譯語言是指在開發完成後,需要以編譯器(Compiler)進
行編譯(Compile),Compiler 會將高階語言編譯成低階語言(也
就是把你看得懂的翻譯成電腦看得懂的),產生一個執行檔。當要執
行程式時,是執行生成的執行檔。例如:C 語言、Java(物件導向)
等。直譯語言不同於編譯語言,直譯語言在執行時會一行一行、動態
的將程式碼直譯(Interpret)成機械語言,並且直接執行。例如:
Python、JavaScript 等。
二、開發環境
通常在做程式開發時,會應用各公司出的開發工具進行開發。
這些開發工具將多數你在做 coding 的時候會需要的東西包裝起來,
使開發者可以很方便、快速的找到他要的功能。這些開發環境稱為
IDE(Integrated Development Enviropment)。
IDE 通常包含程式語言編輯器(打字的地方)、自動建構工具
(編譯器)、除錯器(Debugger),有些 IDE 更有自動排版等方便
的功能,使開發者在工作時更加方便省事。目前主流的 IDE:
Visual Studio(C/C++/C#),
Intellij(Java/Kotlin/Android), Anaconda(Python),
Jupyter(Python)。
三、資料型態
在程式設計時,我們會需要根據我們要操作的資料的種類、型
態來決定要用甚麼容器、方式來儲存,才能在最快的效率、最小的消
耗來達成我們的目的。本文介紹幾種最常使用的資料型態。
• String 字串
◦ 如其名,就是拿來儲存字元符號的。
• Short 短整數
◦ 儲存範圍較短的整數。佔 16 個 Bits(-32768~32767)
• Integer 整數
◦ 儲存整數。佔 32 個 bits(-2147483648~2147483647)
• Long 長整數
◦ 儲存較長的整數。佔 64 個 bits(很大)
• float 浮點數
◦ 儲存有小數點的數。佔 32 個 bits(很大)
• Double 雙精度浮點數
◦ 儲存有小數點的數。佔 64 個 bits(超級大)
• Array 陣列(資料結構)
◦ 陣列是一種資料結構,是由多數資料型態組成,根據排列組
合方法等進行操作,來簡化程式開發或是加快效率。
◦ 陣列是一組資料的群組,在陣列中每筆資料會有一個索引
(Index),只需指定某索引,即可對該筆資料進行存取。
◦ Index 從 0 開始(各語言不同,但是主要都是從 0)
(・∀・)思考一下(・∀・)
1.若 Long 的儲存範圍比 Integer 大;Integer 比 short 大,為
何需要有 integer 或是 short 的存在?直接全部用 Long 不就
好了?
2.下圖輸出結果為?
四、演算子
程式語言的演算子分成兩種,分別是「邏輯演算子」跟「算數
演算子」。邏輯演算子用來表示一件事情的邏輯(成立或不成立;
True and False);算數演算子是用來做運算的。下文以兩個變數
A、B 為例:
• 算數演算子
◦A + B
▪ A 與 B 相加。若想將 B 加到 A,則為 A += B
◦A – B
▪ A 與 B 相減。若想將相減結果儲存到 A,則為 A -= B
◦A * B
▪ A 與 B 相乘。若想將相乘結果儲存到 A,則為 A *= B
◦A / B
▪ A 與 B 相除。若想將相除結果儲存到 A,則為 A /= B
◦ A // B
▪ A 與 B 相除取整數。若想將結果儲存到 A,則為 A //=
B
◦A % B
▪ A 與 B 取餘數。若想將結果儲存到 A,則為 A %= B
◦ A ** B
▪ A 的 B 次方。若想將相減結果儲存到 A,則為 A **=
B
• 邏輯演算子
◦ A == B
▪ A 與 B 相等
◦ A != B
▪ A 與 B 不相等
◦A < B
▪ A 小於 B
◦A > B
▪ A 大於 B
◦ A <= B
▪ A 小於等於 B
◦ A >= B
▪ A 大於等於 B
◦ A is B
▪ 與 A == B 邏輯同等
◦ A is not B
▪ 與 A != B 邏輯同等
◦ A and B
▪ A 邏輯且 B 邏輯都為 True
◦ A or B
▪ A 邏輯或是 B 邏輯其中一個為 True
◦ not A
▪ A 反向邏輯。
五、保留字
程式語言常會保留一些字,這些字你不能拿來當成變數的名稱
做宣告。保留字通常都有特殊的功能,本文介紹一些常用的基礎保留
字:
• if/else if/else
◦ 用來做邏輯的判斷。
◦ 舉例來說(描述語言):
• for
◦ 迴圈。設定的條件內重複執行某些動作。
◦ 舉例來說