Professional Documents
Culture Documents
tw
或來電(02)2705-5066
目錄
推薦序 I
作者序一 III
作者序二 VII
開始
Chapter 3 上手 Julia 045
基礎篇
Chapter 7 函式 165
Chapter 8 遞迴 193
Chapter 9 例外處理 203
本試閱檔為五南所有。如欲購買此書,請至五南網站www.wunan.com.tw
或來電(02)2705-5066
CONTENTS
附錄:參考資料與學習資源、運算子優先權表、ASCII 字碼介紹與字碼表、
跳脫字元表 349
本試閱檔為五南所有。如欲購買此書,請至五南網站www.wunan.com.tw
或來電(02)2705-5066
02
走入 Julia 的世界
1. 認識 Julia 4. 電腦是一台計算機
安裝 Julia 加法運算
Julia 命令列 減法運算
套件管理器 乘法運算
2. 認識 Jupyter 除法運算
安裝 Jupyter 及 IJulia 5. 型別與值
Jupyter notebook 環境介紹 6. 讓我們把數字存下來
3. 我的第一支 Julia 程式 變數
註解 變數命名
跳脫字元 使用變數的範例
本試閱檔為五南所有。如欲購買此書,請至五南網站www.wunan.com.tw
或來電(02)2705-5066
012 Julia 程式設計
1. 認識 Julia
安裝 Julia
接著就要帶大家走進 Julia 的世界,我們將會一步一步帶著大家安裝
Julia 語言。我們可以透過瀏覽器連上 julialang 的官網 https://julialang.
org/,圖 2-1 是官網的畫面:
圖 2-1 julia 官網
本試閱檔為五南所有。如欲購買此書,請至五南網站www.wunan.com.tw
或來電(02)2705-5066
02 走入 Julia 的世界 013
圖 2-2 讀者可依自己的作業系統選擇下載的版本
圖 2-3 下載 1.1.0 版
本試閱檔為五南所有。如欲購買此書,請至五南網站www.wunan.com.tw
或來電(02)2705-5066
014 Julia 程式設計
圖 2-4 選擇安裝路徑
本試閱檔為五南所有。如欲購買此書,請至五南網站www.wunan.com.tw
圖 2-5 安裝中
或來電(02)2705-5066
03
上手 Julia
1. 變數 3. 複數與有理數
變數的概念 複數
記憶體概念 有理數
支援類 LaTeX 作為變數名稱 4. 電腦的數字儲存方式
支援 Unicode 作為變數名稱 整數的上下限
2. 數字 位元運算子
整數 位元溢位
算術運算子 布林值介紹
浮點數 布林值的運算
比較運算子
運算元與運算子
常數
數字字面係數
本試閱檔為五南所有。如欲購買此書,請至五南網站www.wunan.com.tw
或來電(02)2705-5066
046 Julia 程式設計
1. 變數
變數的概念
在電腦中的變數(variable)與數學上的變數有相似卻又不同的概念。
數學上,我們會設定一個變數來代表一個概念,或是一個數字。通常我們
在數學上會將變數拿來做運算,或是作為架構方程式的基礎元素。在代表
概念這點上,電腦中的變數的確有著這樣的概念。電腦中的變數的確可以
拿來代表一個概念或是一個物件,不同的是,電腦中的變數卻無法用來架
構方程式,進而解出方程式的解答。在抽象的程度上還是有所不同。
另一方面,電腦中的變數其實會存在於記憶體中。精確地描述,電腦
的記憶體會區分出一塊空間,這塊空間當中的位元資料代表著某個數字,
而這個數字則是變數現存的值。變數會因為運算而改變,在經過各種演算
法的步驟後,變數當中儲存的數值會不斷地變化,直到運算結束。變數的
另一個特性就是可以將數值暫存下來,以便之後的運算使用。在記憶體中
儲存的這些數值會在程式結束執行之後被清空。
記憶體概念
我們在程式當中所使用的變數都會儲存在記憶體中。每個變數都會俱
備名稱(name)、型別(type)、位元大小(size)以及值(value)。當執
行以下敘述時:
In [1]:
x=5
Out[1]:
5
便不指定型別,編譯器便會自動去辨識這個值相對應的型別是什麼,所以
在產生這個變數的當下,編譯器已經知道了它是個 Int64 的型別,並且為
它安排了 64 位元的記憶體空間作為存放空間。想當然耳,生成愈多的變
數便會占去愈多的記憶體空間。
In [2]:
y=7
Out[2]:
7
In [3]:
z=x+y
Out[3]:
12
In [ ]:
\delta
In [ ]:
δ
小練習
如何產生 α2α2 呢?
首先,在 cell 中輸入 \alpha。
In [ ]:
\alpha
按下 Tab 鍵,會出現 α。
In [ ]:
α
在 α 的後方接著 \_2。
In [ ]:
α\_2
In [ ]:
α
本試閱檔為五南所有。如欲購買此書,請至五南網站www.wunan.com.tw
或來電(02)2705-5066
03 上手 Julia 049
我們可以使用 α2 作為合法的變數名稱。
In [4]:
α2 = 0.23
Out[4]:
0.23
小叮嚀
支援 Unicode 作為變數名稱
這是 Julia 極為有特色的功能之一,一般的程式語言只有支援 ASCII
字碼表可以作為變數名稱,但是 Julia 支援了更廣泛的 Unicode 作為變數
名稱。以下的變數名稱是合法的:
In [5]:
δ = 0.00001
Out[5]:
1.0e-5
In [6]:
안녕하세요 = "Hello"
Out[6]:
"Hello"
In [7]:
哈囉 = "Hello"
Out[7]:
本試閱檔為五南所有。如欲購買此書,請至五南網站www.wunan.com.tw
"Hello"
或來電(02)2705-5066
050 Julia 程式設計
In [8]:
おはよう = "Good morning"
Out[8]:
"Good morning"
小叮嚀
命名指南:
●建議變數命名都用小寫。
●字跟字之間請用底線隔開,像 lower_case ,不過不鼓勵使用底線,
除非影響到可讀性。
2. 數字
整數
整數(integer)有分成不同位元大小的版本。不同位元大小的意思
是會以不同的位元來儲存一個整數,比較多位元可以表示的整數範圍較
大,相對較少的位元占的記憶體空間較少,可以表示的整數範圍也較小。
本試閱檔為五南所有。如欲購買此書,請至五南網站www.wunan.com.tw
或來電(02)2705-5066
03 上手 Julia 051
我們可以看到表 3-1,表中顯示了不同整數的位元版本,最小的 8 位
元到最大的 64 位元,可以看到它們的表示範圍大小並不同, 像是 Int8 的
表示的範圍會從負值 − 27 到正值 27 − 1。它是整數當中用的位元最少的
整數,然而可以表達的範圍也最小。
一般來說,整數都會包含正負號的表示範圍,我們稱為有符號整數
(signed integer),然而也有是表現 0 及正值範圍的整數型別,我們稱
為無符號整數(unsigned integer),這些整數型別可以表達的正值範圍
會是有符號整數的兩倍。
整數型別的使用上,一般會遵循系統預設值,如果有需要最佳化記憶
體的使用或是運算的效能,就會去調整整數的位元大小以及有無符號。
如果沒有特別宣告的話,會依據系統位元數決定
如果沒有特別宣告,整數的位元大小會由系統預設值決定,一般來
說,64 位元的電腦會使用 Int64,32 位元的電腦會使用 Int32。
我們可以用以下程式碼來測試看看你的電腦預設使用的整數位元大小
本試閱檔為五南所有。如欲購買此書,請至五南網站www.wunan.com.tw
或來電(02)2705-5066
052 Julia 程式設計
是多少:
In [9]:
Int
Out[9]:
Int64
Int 代 表 的 是 整 數 本 身, 並 沒 有 預 設 位 元 大 小, 而 系 統 回 應 的 是
Int64,則代表筆者的電腦是使用 64 位元的電腦。
我能不能使用其他型別的數字?
In [10]:
Int8(10)
Out[10]:
10
有符號及無符號整數
在電腦中,符號的有無是指有沒有一個位元來代表正負號。通常系
統預設的整數是有符號的整數。無符號的整數會表示 0 以及一系列的正整
數。相較有符號整數,無符號所能表示的正整數的數目約是有符號整數的
兩倍。如果想轉換有無符號整數的話,可以參考以下函式:
In [11]:
unsigned(8)
Out[11]:
0x0000000000000008
unsigned 可以將整數轉成無符號整數。
本試閱檔為五南所有。如欲購買此書,請至五南網站www.wunan.com.tw
或來電(02)2705-5066
03 上手 Julia 053
In [12]:
signed(UInt8(5))
Out[12]:
5
signed 則是可以將整數轉成有符號整數。
算術運算子
這邊介紹數字都通用的算術運算子(arithmetic operators)以及比
較運算子。算術運算子除了大家平時非常熟悉的四則運算,還有取餘數以
及次方的運算。
當 x 跟 y 都是數字……
● -x: 變號
● x + y、 x – y、 x * y、 x / y: 一般四則運算
● div(x, y): 商
● x % y: 餘數,也可以用 rem(x, y)
● x \ y: 跟 / 的作用一樣
● x ^ y: 次方
我們這邊只介紹大家比較不熟悉的取商數、餘數以及次方運算。以下
分別是 123 除以 50 的商及餘數:
In [13]:
div(123, 50)
Out[13]:
2
In [14]:
123 % 50
Out[14]:
23
本試閱檔為五南所有。如欲購買此書,請至五南網站www.wunan.com.tw
或來電(02)2705-5066
054 Julia 程式設計
2 的 10 次方則是寫成:
In [15]:
2^10
Out[15]:
1024
小叮嚀
讓程式更好閱讀:運算子前後的空白多寡是不影響語法的 ,
假設我們以底線 _ 來表示空白字元,所以 1+1、1+_1、1_+1 或
是 1_+_1 四種不同的寫法都是可以順利執行的。但是為了閱讀上
的便利性,筆者傾向寫成 1_+_1,會有比較好的閱讀效果。
運算子優先權規則
在一個表達式中,常常會有多個運算子一起組合成一個表達式的時
候,以不同的順序計算整個表達式可能會有不同的答案。就如同我們在數
學中學到的,先乘除後加減,在程式當中也是一樣的,也就是乘法與除法
的優先權會高於加法與減法。我們在程式當中運算子的優先權如下表 3-2:
表 3-2 運算子的優先權
優先權 運算子
高 ^
中 *, /, %, \
低 +, -
這一段表達式中優先權高的會先被運算,依序算到優先權最低的,像
是 5^2 * 6 + 2,5^2 的部分會先被運算,變成 25 * 6 + 2,接著運算 25 * 6
的部分,最後會是加法的運算。
本試閱檔為五南所有。如欲購買此書,請至五南網站www.wunan.com.tw
或來電(02)2705-5066
03 上手 Julia 055
以小括弧來組織運算式
由於有運算子優先權的規則,我們無法任意更改運算子的運算優先順
序,但是我們可以藉由加入小括弧促使電腦優先計算小括弧內的值,來重
新組織運算優先權。像是:
((1 + 2) * 3)
浮點數
浮點數(floating-point number)基本上就是在有小數點的數,但
是同樣位元數的浮點數,比起同樣位元數的整數表示範圍來得大, 然而浮
點數可以以科學符號表示。以下是各種浮點數的表示方式:
In [16]:
0.5
Out[16]:
0.5
In [17]:
.5
Out[17]:
0.5
In [18]:
5e10
Ot[18]:
5.0e10
ISBN 978-957-763-382-8(平裝)
1.Julia(電腦程式語言)
312.32J8 108005089
1HAF
Julia程式設計:
新世代資料科學與數值運算語言
作 者 ─ 杜岳華、胡筱薇
發 行 人 ─ 楊榮川
總 經 理 ─ 楊士清
總 編 輯 ─ 楊秀麗
副總編輯 ─ 張毓芬
責任編輯 ─ 紀易慧
文字校對 ─ 許宸瑞、黃志誠
封面設計 ─ 姚孝慈
出 版 者 ─ 五南圖書出版股份有限公司
地 址:台北市和平東路二段339號4樓
電 話:(02)27055066 傳真(02)27066100
郵撥帳號:01068953
網 址: http://www.wunan.com.tw/
電子郵件: wunan@wunan.com.tw
戶 名:五南圖書出版股份有限公司
法律顧問 林勝安律師事務所 林勝安律師
出版日期 2018年12月初版一刷
2019年 3 月初版二刷
2019年 6 月二版一刷
本試閱檔為五南所有。如欲購買此書,請至五南網站www.wunan.com.tw
定 價 新台幣500元
或來電(02)2705-5066
※版權所有.欲利用本書內容,必須徵求本公司同意※