CH01認識電腦.程式.Python

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 71

Chapter 1

認識電腦.程式. Python

Python 程式設計初學指引 ( 第二版 )


本章重點
• 認識電腦的硬體架構與運作原理。
• 軟體與程式語言。
• 為什麼要學習 Python ?
• Python 的誕生與特色。
• Python 開發工具— IDLE 與 Google Colaboratory 。

© 滄海圖書 Ch01 認識電腦.程式. Python 2


電腦
• 原文是 “ Computer” ,原本是指從事資料計算的專業人士,
中文譯稱也叫作「電子計算機」
• 所謂的電腦還是指那些可以自動執行數學運算或邏輯指令
的電子裝置,只是隨著技術演進,以前一個房間大小的電
腦,已經可以被縮小、塞進手上的智慧型手機裡,而且運
算能力更為強大、也更便宜。電腦的樣式也不再侷限於放
在桌上的主機、螢幕、鍵盤和滑鼠的刻板樣貌,依舊有大
如房間的超級電腦,或是物聯網感測設備裡小如米粒的嵌
入式電腦。
© 滄海圖書 Ch01 認識電腦.程式. Python 3
范紐曼架構
• 現在的電腦系統,小至手機、大到超級電腦,都是源自相
同的硬體架構 — 由美國普林斯頓大學的約翰•范•紐曼
(John von Neumann) 於 1945 年所提出的范紐曼架構 (von
Neumann Architecture)
• 固定的硬體 (Hardware) 元件所組合
• 可以儲存程式,並依程式的不同而有不同功能

© 滄海圖書 Ch01 認識電腦.程式. Python 4


圖 1-1 電腦的硬體架構

© 滄海圖書 Ch01 認識電腦.程式. Python 5


范• 紐曼設計電腦的硬體架構
輸 • 方便使用者將外界資料傳入電腦
入 • 例如:鍵盤滑鼠、觸控螢幕、麥克風、感測器

輸 • 將電腦的運算結果以特定型態呈現出來的設備
出 • 例如:電腦螢幕、喇叭、印表機、電控設備


• 用於儲存資料與程式的電腦元件,區分成「主要儲存
記 體」與「次要儲存體」
憶 • 主要儲存體常被稱作主記憶體 (Main Memory) ,可以說
單 是連結電腦各個單元、交換資料的核心

© 滄海圖書 Ch01 認識電腦.程式. Python 6


范• 紐曼設計電腦的硬體架構
算 • 負責程式指令中關於基本的數學運算以及邏輯

邏 判斷的元件


• 負責解讀程式指令的內容,然後決定該指派哪

制 些單元、執行什麼動作

© 滄海圖書 Ch01 認識電腦.程式. Python 7


CPU

• 控制單元、算術邏輯單元,以及暫存器會在中央處理器
(Central Processing Unit, CPU) 裡,然後安裝於主機板上
• 安裝於主機板上的 CPU 與主記憶體,是透過主機板上的系
統匯流排 (System Bus) 互相連結

© 滄海圖書 Ch01 認識電腦.程式. Python 8


記憶單元
• 主要儲存體(主記憶體)都是以 IC 晶片的電子訊號形式來
存放資料,但是電子訊號在電腦關機後就消失了
• 電腦需要另一個可以永久儲存資料的元件,也就是「次要
儲存體」
容量要大,才能存放所有的資料,所以只好採用較為慢速、成本
較低的儲存技術,例如常見的硬碟、光碟與磁帶等機械設備
• 透過主要儲存體與次要儲存體的結合,即可兼顧永久性儲
存、大容量、低價位,以及可配合 CPU 高效率執行的多面
需求
© 滄海圖書 Ch01 認識電腦.程式. Python 9
數字系統
• 數字系統有:二進位 (Binary) 制、十進位 (Decimal) 制、
八進位 (Octal ,簡稱 Oct) 制、十六進位 (Hexadecimal ,
簡稱 Hex)
• 在 Python 下的書寫模式
二進位數前面會加上 0b ( 如 0b1101) 、八進位數前面會加上 0o
( 如 0o620) ,而十六進位數前面則會加上 0x ( 如 0x3AFF) ,至於
十進位數就不加任何前置 ( 注意!前置碼的第一個字是數字 0)

© 滄海圖書 Ch01 認識電腦.程式. Python 10


© 滄海圖書 Ch01 認識電腦.程式. Python 11
資料編碼
• 編碼 (Encoding)
文字也必須轉換為二進位碼來表示,這個轉換動作就稱為「文字編
碼」,或是簡稱為編碼。
在電腦系統的發展歷史中,有很多不同的文字編碼方式,但最著名
的應該就是 ASCII (American Standard Code for Information
Interchange) 編碼法
繁體中文字的 BIG-5 中文編碼系統
國際間開始推廣 Unicode 編碼系統, Uni 有 Universal 的意思,因
此中文譯名常被稱為「萬國碼」
• 解碼 (Decoding)
從二進位碼轉換成文字
© 滄海圖書 Ch01 認識電腦.程式. Python 12
© 滄海圖書 Ch01 認識電腦.程式. Python 13
© 滄海圖書 Ch01 認識電腦.程式. Python 14
軟體 (Software)
• 應用軟體:
提供給使用者特定應用服務 ( 功能 ) 的軟體程式,例如瀏覽網頁
時所需的各種瀏覽器程式 ( 如 Chrome 或 Firefox) ,或是像
Office 這類的文書處理軟體,又或是各種遊戲軟體等。
• 系統軟體:
為了讓電腦系統可以正常運作,需要一些控制或管理用的軟體程
式,例如 Windows 所提供的磁碟管理工具軟體,或是防毒軟體
等確保系統安全的程式。作業系統 (Operating System) ,也是系統
軟體之一。

© 滄海圖書 Ch01 認識電腦.程式. Python 15


圖 1-3 電腦系統與軟體的關聯

© 滄海圖書 Ch01 認識電腦.程式. Python 16


作業系統
• 工作管理:
讓 CPU 可「同時」執行多個軟體程式,這種電腦就稱作多工
(Multitasking) 系統,因此該在何時執行哪一支程式,這個控管工
作就是作業系統的主要工作之一。
• 資源管理:
當多支程式同時搶用有限數量的硬體資源時 ( 例如兩個應用軟體
要使用同一台印表機輸出文件 ) ,作業系統就需負責協調與控管。
其中最重要的資源就是每支程式都需要的記憶體空間。

© 滄海圖書 Ch01 認識電腦.程式. Python 17


作業系統
• 檔案管理:
存放在次要儲存體的軟體程式或資料統稱為檔案 (File)
檔案系統 (File System) 進行檔案的建立、搜尋、讀寫與刪除等繁
雜作業。
• 使用者介面:
結合輸入 / 輸出設備,提供使用者操控的機制就稱作使用者介面
(User Interface) 。

© 滄海圖書 Ch01 認識電腦.程式. Python 18


軟體的來源與版權
• 現成的套裝軟體:
大多屬於通用型的工具軟體,使用者付費購買 Office 只是取得該
軟體的使用權利。

• 訂製軟體:
企業按照自己的需求,量身訂作公司專屬的軟體程式。開發費用
通常比購買現成的套裝軟體高出許多。

© 滄海圖書 Ch01 認識電腦.程式. Python 19


軟體的來源與版權
• 開放原始碼軟體:
提供原始的程式碼,允許他人使用,甚至進行修改、功能更新,
但條件是更新後的軟體也一樣要公開, 也就是一種分享、互惠的
軟體使用概念。
• 雲端軟體:
應用軟體被安裝、執行在遠端的機房中,使用者只要透過網路即
可使用該軟體。有需求才付費購買雲端軟體的使用權。

© 滄海圖書 Ch01 認識電腦.程式. Python 20


程式語言的分類
1. 機器語言 (Machine Language)
是最低階的程式語言,機器語言的優點是執行效率高,但缺點是
太難寫了。

2. 組合語言 (Assembly Language)


改用簡單的英文縮寫指令 (Mnemonic Symbol , 助憶符號 ) 來表
示程式碼。

© 滄海圖書 Ch01 認識電腦.程式. Python 21


© 滄海圖書 Ch01 認識電腦.程式. Python 22
程式語言的分類
3. 高階語言:
前述的機器語言跟組合語言都稱作「低階語言」。
高階語言提供可讀性更高的程式語法、更結構化的方式來撰寫程
式,以降低開發程式的複雜度、提升開發效率。
常見的高階語言還包含 C/C+
+ 、 VB 、 Java 、 PHP 、 R 、 GO 、 Swift 等,以及本書的主角
Python 。

© 滄海圖書 Ch01 認識電腦.程式. Python 23


圖 1-5 程式開發流程

© 滄海圖書 Ch01 認識電腦.程式. Python 24


直譯式與編譯式
• 直譯器 (Interpreter)
非常直覺,可以一邊寫程式、一邊執行、馬上知道結果,初學者
都選用直譯式語言做為入門,像是知名的 VB ,以及本書介紹的
Python 。

圖 1-6 直譯式程式語言

© 滄海圖書 Ch01 認識電腦.程式. Python 25


直譯式與編譯式
• 編譯器 (Compiler)
可方便且有效率地重複執行該執行檔。編譯器還可以分析整個程
式碼,轉譯出最佳化的執行檔, 強調執行效率的程式語言多數都
是採用編譯式。

圖 1-7 編譯式程式語言

© 滄海圖書 Ch01 認識電腦.程式. Python 26


為什麼要學習 Python ?
1. 第一個原因是 Python 是直譯式語言,可以邊寫邊執行。
2. Python 官網提供了精簡、功能完善且安裝容易的開發工
具,重點是完全免費。
3. Python 從一開始設計時就是以「教學語言」為出發點,
儘量以精簡的語法結構來降低初學者的學習障礙。
4. Python 在校園、產業界的熱門程度也是推薦的重要原因,
一個熱門的程式語言學習者眾,自然各種參考資源 ( 如實
體書、線上文章、教學影片 ) 就多。

© 滄海圖書 Ch01 認識電腦.程式. Python 27


圖 1-8 開發者論壇的程式語言趨勢統計

© 滄海圖書 Ch01 認識電腦.程式. Python 28


圖 1-9 2020 年 IEEE Spectrum 程式語言
排行榜

© 滄海圖書 Ch01 認識電腦.程式. Python 29


Python 的發明
• 1989 年, 當時 33 歲的荷蘭籍軟體工程師吉多 •
范羅蘇姆 (Guido van Rossum) , 為了打發耶誕節
假期時光,開始了新語言 Python 的構思。
• 「 Python 」名字的由來,是源自作者熱愛的英國電視喜劇
《蒙提 • 派森的飛行馬戲團》 (Monty Python’s Flying
Circus , 1969 年 ) 。
• 第一版的 Python 一直到 1991 年才正式推出。 Python 一
直是以開源 (Open Source) 的方式進行開發。 Python 第二
版與第三版分別在 2000 年、 2008 年推出。
© 滄海圖書 Ch01 認識電腦.程式. Python 30
Python 的目標

• 一套簡單且直覺的程式語言,並與主要競爭者一樣強大。

• 採用開放源始碼政策,以便任何人都可以為它做出貢獻。

• 程式碼就像英文那樣容易理解,減少繁雜的語法。

• 可以用來解決各種日常問題,而且只要很短的開發時間。

© 滄海圖書 Ch01 認識電腦.程式. Python 31


優點與特色
• 屬於直譯式程式語言類型,對初學者而言上手容易,且具
有「跨平台」特性
• 可以轉換成獨立的執行檔,方便程式被布署到一些沒有直
譯器的電腦,而且執行更有效率,可與其他常見的語言整

• 支援動態型別,內建比一般語言更豐富的資料型別
• 透過強制性的縮排來定義程式區塊,程式布局看來簡潔清
爽,簡潔的語法更讓程式的可讀性提升不少。

© 滄海圖書 Ch01 認識電腦.程式. Python 32


Python 常見的套件
• 數學 / 科學運算: NumPy 、 Pandas 、 SciPy…… 。
• 圖表 / 資料視覺化:
Bokeh 、 Matplotlib 、 Plotly 、 Seaborn…… 。
• 人機介面 GUI 設計: PyQt 、 WxPython…… 。
• 網站開發:
Django 、 Flask 、 Tornado 、 Twisted 、 webpy…… ( 例如
Dropbox 與 Instagram 網站都是以 Python 開發 ) 。

© 滄海圖書 Ch01 認識電腦.程式. Python 33


Python 常見的套件
• 大數據分析: Scrapy 、 Statsmodels…… 。

• 機器學習 / 深度學習: Keras 、 SciKit-


Learn 、 TensorFlow 、 Theano…… 。

• 自然語言: cltk 、 Gensim 、 NLTK…… 。

• 影像處理 / 辨識: OpenCV 、 SciKit-Image…… 。

© 滄海圖書 Ch01 認識電腦.程式. Python 34


版本歧異: Python 2 vs. Python 3
1. 2008 年推出的 Python 3.0 卻無法與舊的 2.X 版完全相容。
2. 有些是程式碼撰寫時的語法問題,第二版設計成指令模式:
print “Hi!” ,比較有英文語法的感覺,第三版則是改成函
式模式: print(“Hi!”) 。
3. 另一類的差異則是運算上的改變。以「 3 除以 2 」 ( 即
3/2) 為例, 第二版會當作整數相除,結果 ( 商 ) 也須是
整數,所以答案是 1 。但是第三版會設法給更精準的答案,
所以結果是 1.5 。

© 滄海圖書 Ch01 認識電腦.程式. Python 35


開發環境
• 各種程式語言都有它相應的整合開發環境 (Integrated Development
Environment ,簡稱 IDE)
 所謂「整合」自然是強調結合多種與開發程式有關的功能或工具,像是提供
程式版本管理工具、除錯工具、更豐富的函式庫等
• 寫一支 Python 程式,最基本需要兩個東西:一是編寫程式碼的編輯
器;二是用來轉譯、執行程式碼的 Python 直譯器
• Python 近年來大受矚目,相關的 IDE 自然是多不勝數
 Python 官網提供的 IDLE 就是很好的選擇
 如果已經有一點點基礎了,那麼有更強大輔助功能、操作流程更流暢的、直
接內建更多第三方套件的開發工具會是較好的選擇,比如知名的 Anaconda
 本書另會介紹免費且功能強大的 Google Colaboratory
© 滄海圖書 Ch01 認識電腦.程式. Python 36
圖 1-10 Python 官網首頁

© 滄海圖書 Ch01 認識電腦.程式. Python 37


圖 1-11 使用 Python 官網上的線上直譯器

© 滄海圖書 Ch01 認識電腦.程式. Python 38


IDLE
• IDLE 為最基本、最單純的開發環境。

• 是 Python 官網提供的正式開發工具。

• 原文是 Integrated Development and Learning Environment 。

© 滄海圖書 Ch01 認識電腦.程式. Python 39


圖 1-12 IDLE 下載頁面

© 滄海圖書 Ch01 認識電腦.程式. Python 40


圖 1-13 IDLE 安裝畫面 (1/3)

© 滄海圖書 Ch01 認識電腦.程式. Python 41


圖 1-14 IDLE 安裝畫面 (2/3)

© 滄海圖書 Ch01 認識電腦.程式. Python 42


圖 1-15 IDLE 安裝畫面 (3/3)

© 滄海圖書 Ch01 認識電腦.程式. Python 43


圖 1-16 Windows 開始功能表上的 Python 項目

© 滄海圖書 Ch01 認識電腦.程式. Python 44


圖 1-17 IDLE 指令視窗提供簡易輔助資訊

© 滄海圖書 Ch01 認識電腦.程式. Python 45


圖 1-18 關閉 IDLE 指令視窗

© 滄海圖書 Ch01 認識電腦.程式. Python 46


圖 1-19 準備開啟 IDLE 的程式編輯視窗

© 滄海圖書 Ch01 認識電腦.程式. Python 47


圖 1-20 IDLE 的編輯視窗與程式執行

© 滄海圖書 Ch01 認識電腦.程式. Python 48


範例程式 1-1

© 滄海圖書 Ch01 認識電腦.程式. Python 49


圖 1-21 程式執行結果呈現在 IDLE 指令視窗

© 滄海圖書 Ch01 認識電腦.程式. Python 50


圖 1-22 直接在指令視窗寫程式

© 滄海圖書 Ch01 認識電腦.程式. Python 51


使用 Google Colaboratory 寫程式
• 雲端上的 Python 開發環境
• 外掛於 Google 雲端硬碟的應用服務
• 只要使用者有一個 Google 帳戶,在任何一台擁有網路連結
與瀏覽器(建議使用 Chrome )的電腦都可以使用
• 有自動存檔的功能,非常適合初學者

© 滄海圖書 Ch01 認識電腦.程式. Python 52


圖 1-23 Google 搜尋主頁面

© 滄海圖書 Ch01 認識電腦.程式. Python 53


圖 1-24 登入 Google 帳戶

© 滄海圖書 Ch01 認識電腦.程式. Python 54


圖 1-25 建立新的 Google 帳戶

© 滄海圖書 Ch01 認識電腦.程式. Python 55


圖 1-26 新建 Google 帳戶的完成畫面

© 滄海圖書 Ch01 認識電腦.程式. Python 56


圖 1-27 Google 提供的應用服務選單

© 滄海圖書 Ch01 認識電腦.程式. Python 57


圖 1-28 Google 雲端硬碟主頁面

© 滄海圖書 Ch01 認識電腦.程式. Python 58


圖 1-29 Google 雲端硬碟的下拉選單

© 滄海圖書 Ch01 認識電腦.程式. Python 59


圖 1-30 Google 的應用程式市集

© 滄海圖書 Ch01 認識電腦.程式. Python 60


圖 1-31 搜尋 Colaboratory

© 滄海圖書 Ch01 認識電腦.程式. Python 61


圖 1-32 Colaboratory 連結完成

© 滄海圖書 Ch01 認識電腦.程式. Python 62


圖 1-33 Colaboratory 出現在應用程式選單中

© 滄海圖書 Ch01 認識電腦.程式. Python 63


圖 1-34 解除安裝 Colaboratory 的畫面

© 滄海圖書 Ch01 認識電腦.程式. Python 64


圖 1-35 Colaboratory 的程式編輯頁面

© 滄海圖書 Ch01 認識電腦.程式. Python 65


圖 1-36 Colaboratory 的斷線畫面

© 滄海圖書 Ch01 認識電腦.程式. Python 66


範例程式 1-2

© 滄海圖書 Ch01 認識電腦.程式. Python 67


程式說明 1-2

© 滄海圖書 Ch01 認識電腦.程式. Python 68


重點回顧
• 認識電腦硬體架構 — 范紐曼架構,共分成五個單元:
輸入單元。
輸出單元。
記憶單元。
算術邏輯單元。
控制單元。
• 介紹主要儲存體與次要儲存體的關聯。

© 滄海圖書 Ch01 認識電腦.程式. Python 69


重點回顧
• 認識電腦裡的數字系統,包含二進位制、八進位制、十六
進位制。
• 了解電腦系統為何需要進行「資料編碼」,以及主要的文
字編碼機制: ASCII 編碼法與 Unicode 編碼系統。
• 介紹應用軟體、系統軟體、作業系統與電腦硬體間的關聯。
• 認識作業系統的四大工作項目:工作管理、資源管理、檔
案管理與使用者介面。
• 了解使用軟體的來源:套裝軟體、訂製軟體、開放原始碼
軟體與雲端軟體。
© 滄海圖書 Ch01 認識電腦.程式. Python 70
重點回顧
• 認識直譯式與編譯式程式語言的差異。
• 了解 Python 的發展史以及它的特點。
• 說明 Python 2 與 Python 3 版本歧異的問題。
• 認識三個開發 Python 程式的工具:線上直譯器、 IDLE 以
及 Google Colaboratory 。

© 滄海圖書 Ch01 認識電腦.程式. Python 71

You might also like