SlideShare a Scribd company logo
1 of 36
Download to read offline
第 三 講
用 數 學 寫 程 式
python 程式設計
python 簡要講義
國立中央大學數學系 吳維漢
學好程式的關鍵 : 善用數學推導
2
 先想清楚再動手撰寫
 利用數學思維於紙筆上推導
 將複雜問題簡化成系列的漸進式題組,然後逐步克服
 與人討論可破除思考盲點,但程式仍需自己完成
 寫程式通常會出錯,很少有一路順利完成程式
 留意解譯器產生的錯誤訊息
 看懂他人程式後,冷卻後重頭撰寫
 試著變化已完成的程式問題,再次練習
 多多找尋題目挑戰自己
 精神不濟時避免練習程式,徒然浪費時間
 學好程設就要經常練習,別無他法
 https://stackoverflow.com/
3 用數學寫程式
三角數字塔 (一)
33 用數學寫程式
三角數字塔 (二)
43 用數學寫程式
while True :
n = int( input("> ") )
# 大縱向
for s in range(n) :
# 小縱向
for i in range(n) :
print( " "*((n-1-s)*n) , end="" )
# 大橫向
for t in range(s+1) :
print( " "*(n-1-i)+str(i+1)*(2*i+1)+
" "*(n-1-i) , end="" )
print()
print()
當程式問題有些複雜,找不出清楚的規律,此時可將問題簡化到可完成的小問題,
然後由此小問題逐步加入條件,循序漸進完成程式設計。
三角數字塔 (三)
53 用數學寫程式
 分解步驟:
1.列印一個數字三角形,但將三角形當成矩形列印,也就是包含
數字前後的空格,先以橫線替代,以下 n = 4 為例:
2.列印一排數字矩形:
---1---
--222--
-33333-
4444444
---1--- ---1--- ---1--- ---1---
--222-- --222-- --222-- --222--
-33333- -33333- -33333- -33333-
4444444 4444444 4444444 4444444
三角數字塔 (四)
63 用數學寫程式
3.列印 n 排數量遞增的數字矩形:
---1---
--222--
-33333-
4444444
---1--- ---1---
--222-- --222--
-33333- -33333-
4444444 4444444
---1--- ---1--- ---1---
--222-- --222-- --222--
-33333- -33333- -33333-
4444444 4444444 4444444
---1--- ---1--- ---1--- ---1---
--222-- --222-- --222-- --222--
-33333- -33333- -33333- -33333-
4444444 4444444 4444444 4444444
4.在每排數字矩形之前增加若干個空格,
以星號替代。
************---1---
************--222--
************-33333-
************4444444
********---1--- ---1---
********--222-- --222--
********-33333- -33333-
********4444444 4444444
****---1--- ---1--- ---1---
****--222-- --222-- --222--
****-33333- -33333- -33333-
****4444444 4444444 4444444
---1--- ---1--- ---1--- ---1---
--222-- --222-- --222-- --222--
-33333- -33333- -33333- -33333-
4444444 4444444 4444444 4444444
山水圖案 (一)
73 用數學寫程式
山水圖案 (二)
83 用數學寫程式
while True :
n = int( input("> ") )
# 山
for i in range(n) :
for j in range(-n+1,n) :
s = abs(j) # 山高至頂端距離
h = n - s # 山高
w = 2 * ( n - abs(j) ) # 山寬
t = i - s # 山頂往下距離
if i < s :
print( " "*w , end="" )
else :
print( " "*(n-1-i)+"/"+"*"*(2*t)+""+
" "*(n-1-i) , end="" )
print()
山水圖案 (三)
93 用數學寫程式
# 水
for i in range(2) :
for j in range(-n+1,n) :
w = 2*(n-abs(j))
print( "~"*w , end="" )
print()
print()
山水圖案 (四)
103 用數學寫程式
 分解步驟:
1. 用矩形方式產生高度為 n 的山,即同時列印山的前後空格,
先以橫線替代。
2. 若 s 為山高到頂端距離,輸入 s,以矩形方式印出此山,
此矩形包含山高到頂端。以下為山高 n = 6 時, s 分別
為 1 與 2 的圖形。
-----/-----
----/**----
---/****---
--/******--
-/********-
/**********
> 1 > 2
---------- --------
----/---- --------
---/**--- ---/---
--/****-- --/**--
-/******- -/****-
/******** /******
山水圖案 (五)
113 用數學寫程式
3. 讓 s 由 0 1 2 依次變化,橫向印出三座山,相鄰兩山的空格暫以
不同符號替代,以資區分。
4. 設定 j 迴圈為 for j in range(-n+1,n) ,取其絕對值為 s,
仿上題印出所有的山,再加上兩排 ~ 底線即可完成程式。
-----/-----++++++++++--------
----/**----++++/++++--------
---/****---+++/**+++---/---
--/******--++/****++--/**--
-/********-+/******+-/****-
/**********/********/******
行道樹 (一)
123 用數學寫程式
行道樹 (二)
133 用數學寫程式
while True :
n = int( input("> ") )
a = 3 * n + 2
for i in range(a) :
for j in range(-n+1,n) :
s = abs(j) # 樹與中間樹單位距離
f = n - s # 樹幹高
h = 2 * n + 1 - 2 * s # 樹身高
w = 4 * ( n - s ) + 1 # 樹身底寬
d = 3 * s # 樹稍與頂部距離
if i < d :
print( " "*w , end=" " )
elif i < d+h :
print( " "*(d+h-i-1)+"*"*(2*(i-d)+1)+" "*(d+h-i-1) , end=" " )
elif i < d+h+f :
print( " "*(2*(n-s))+"|"+" "*(2*(n-s)) , end=" " )
else :
print( "="*(2*(n-s))+"="+"="*(2*(n-s)) , end=("=" if j<n-1 else " ") )
print()
print()
行道樹 (三)
143 用數學寫程式
 推導過程:
此題表面上看起來與數學無關,倒像一個刁難程式設計題目。但若將問題
看成數學題目,就是一個簡單數學問題。舉例來說:讓 n 代表由最左
邊最矮的樹到中間最高的樹的數量,同時再以中間樹為標準,緊鄰的左
右兩旁的樹與中間樹差距為 1,再兩旁則為 2,將此數設為 s,如下圖:
行道樹 (四)
153 用數學寫程式
讓 f 函數代表樹幹長,h 函數為樹身高,w 函數為樹身底部寬,
d 函數為樹梢與頂部的距離,這些函數若分別以 n 與 s 表示各
為何?
當程式問題改成數學題目後,大概都可立即推導出:
f(n,s) = n - s
h(n,s) = 2 n + 1 - 2 s
w(n,s) = 4 ( n - s ) + 1
d(n,s) = 3 s
行道樹 (五)
163 用數學寫程式
包圍每棵樹的矩形高 = f + h + d = n − s + 2n + 1 − 2s + 3s
= 3n + 1,再加上底部等號線就是 3n+2,也就是縱向迴圈執行次數。
函式推導出來後,轉換為程式就簡單了。
列印時每棵樹都被看成矩形,樹體以外的空格暫以橫線替代,由下圖可知
本題的撰寫方式如同上題一樣。
本題需要應用「數學思維」才能解決程式設計 !!
----- --------- ------*------ --------- -----
----- --------- -----***----- --------- -----
----- --------- ----*****---- --------- -----
----- ----*---- ---*******--- ----*---- -----
----- ---***--- --*********-- ---***--- -----
----- --*****-- -***********- --*****-- -----
--*-- -*******- ************* -*******- --*--
-***- ********* ------|------ ********* -***-
***** ----|---- ------|------ ----|---- *****
| ----|---- ------|------ ----|---- |
=============================================
結語
 學好基礎程式設計的第一步即是要能靈活地使用迴圈與條件
式,能根據問題需要不加思索地混合配用迴圈與條件式來完
成程式設計。以下每道題目都需要一些思考,其中或有相似
,請在正式動手寫程式之前,多加利用「數學思維」於紙上
推導。許多題目都使用到國中的「等差數列」來設定字元重
複次數或迴圈迭代次數,多加練習,必能找到竅門。
173 用數學寫程式
面對複雜的程式題目,先試著簡化問題。由可完成的簡化問題開始著
手,逐步加入條件,修改程式直到完成程式問題為止。這樣由淺到深
的漸進式解題方式,每一步都在應用數學思維,訓練邏輯,長期下來
自會有良好的學習成效。此外也避免不知程式從何下手而胡亂拼湊的
窘境,後者導致許多人在經過長時間奮鬥還是無法完成程式設計,最
終落得勞而無獲,浪費時間。這是初學者最常犯的錯誤,也是中途放
棄程式設計的主要原因。
習題 1
 輸入數字 n 印出以下圖形:
183 用數學寫程式
> 3 > 4
1 1
1 1 1 1
11111 1 1
1 2 1111111
1 1 2 2 1 2
11111 22222 1 1 2 2
1 2 3 1 1 2 2
1 1 2 2 3 3 1111111 2222222
11111 22222 33333 1 2 3
1 1 2 2 3 3
1 1 2 2 3 3
1111111 2222222 3333333
1 2 3 4
1 1 2 2 3 3 4 4
1 1 2 2 3 3 4 4
1111111 2222222 3333333 4444444
習題 2
 輸入數字 n 印出以下底部重疊的雙三角形:
193 用數學寫程式
> 4
1 1
222 222
33333 33333
4444444 4444444
1 1 1 1
222 222 222 222
33333 33333 33333 33333
4444444 4444444 4444444 4444444
1 1 1 1 1 1
222 222 222 222 222 222
33333 33333 33333 33333 33333 33333
4444444 4444444 4444444 4444444 4444444 4444444
1 1 1 1 1 1 1
222 222 222 222 222 222 222
33333 33333 33333 33333 33333 33333 33333
4444444 4444444 4444444 4444444 4444444 4444444 4444444
> 3
1 1
2 2 2 2
33333 33333
1 1 1 1
2 2 2 2 2 2 2 2
33333 33333 33333 33333
1 1 1 1 1
2 2 2 2 2 2 2 2 2 2
33333 33333 33333 33333 33333
2 2 2 2 2 2 2 2 2 2
1 1 1 1 1
33333 33333 33333 33333
2 2 2 2 2 2 2 2
1 1 1 1
33333 33333
2 2 2 2
1 1
習題 3
203 用數學寫程式
 輸入數字 n 印出以下重疊的空心鑽石圖案:
習題 4
 輸入數字 n 印出以下空心鑽石圖案:
213 用數學寫程式
> 3 > 4
1 1
2 2 2 2
33333 3 3
1 1 4444444
2 2 2 2 1 1
33333 33333 2 2 2 2
1 1 3 3 3 3
2 2 2 2 4444444 4444444
33333 33333 1 1
2 2 2 2 2 2 2 2
1 1 3 3 3 3
33333 33333 4444444 4444444
2 2 2 2 1 1
1 1 2 2 2 2
33333 3 3 3 3
2 2 4444444 4444444
1 3 3 3 3
2 2 2 2
1 1
4444444 4444444
3 3 3 3
2 2 2 2
1 1
4444444 4444444
3 3 3 3
2 2 2 2
1 1
4444444
3 3
2 2
1
習題 5
 撰寫程式印出由左到右遞增的金字塔方塊圖案,
每個方塊高為 3 ,寬為 5 :
223 用數學寫程式
> 2 > 3
11111 11111
11111 11111
11111 11111
11111 22222 22222 11111 22222 22222
11111 22222 22222 11111 22222 22222
11111 22222 22222 11111 22222 22222
11111 22222 22222 33333 33333 33333
11111 22222 22222 33333 33333 33333
11111 22222 22222 33333 33333 33333
習題 6
 參考上題已知,撰寫程式印出以下對稱圖案:
233 用數學寫程式
> 3
11111
11111
11111
11111 22222 22222 11111
11111 22222 22222 11111
11111 22222 22222 11111
11111 22222 22222 33333 33333 33333 22222 22222 11111
11111 22222 22222 33333 33333 33333 22222 22222 11111
11111 22222 22222 33333 33333 33333 22222 22222 11111
11111 22222 22222 11111
11111 22222 22222 11111
11111 22222 22222 11111
11111
11111
11111
習題 7
 撰寫程式輸入數字印出以下的窗櫺圖案:
243 用數學寫程式
> 3 > 4
||||||||/|||||||| |||||||||||||||/|||||||||||||||
|||/||/ ||/||| ||||||||/||||/ ||||/||||||||
// / / / |||/||/ ||/ ||/ ||/|||
/ / / // // / / / / /
|||/|| /||/||| / / / / / //
||||||||/|||||||| |||/|| /|| /|| /||/|||
||||||||/|||| /||||/||||||||
|||||||||||||||/|||||||||||||||
習題 8
 如何修改上題程式,印出以下先由大到小,後由小到大的
窗櫺圖案:
253 用數學寫程式
> 5
||||/||||||||||||||||||||||||||||||||||||||||||||||/||||
|||/ ||||||/||||||||||||||||||||||||||||/||||||/ |||
||/ ||||/ ||||/||||||||||||||/||||/ ||||/ ||
|/ ||/ ||/ ||/||||/||/ ||/ ||/ |
/ / / / // / / / 
 / / / // / / / /
| /|| /|| /||/||||/|| /|| /|| /|
|| /|||| /||||/||||||||||||||/|||| /|||| /||
||| /||||||/||||||||||||||||||||||||||||/|||||| /|||
||||/||||||||||||||||||||||||||||||||||||||||||||||/||||
習題 9
 撰寫程式輸入數字印出上下振動的波形圖案:
263 用數學寫程式
> 3 > 4
/
/|| / /
/ /|||| / /|| /||
||/ ||/ / /|||| /|||| /
/ / ||/ ||||||/ ||/
/ ||||/ /
||/
/
習題 10
 撰寫程式,輸入數字 n 印出以下圖案:
273 用數學寫程式
> 3 > 4
3 3 3 4 4 4 4
2 2 3 3 3 2 2 3 3 3 4 4 4 4 3 3 3
1 2 2 3 3 3 2 2 1 2 2 3 3 3 4 4 4 4 3 3 3 2 2
1 2 2 3 3 3 2 2 1 1 1 2 2 3 3 3 4 4 4 4 3 3 3 2 2 1
2 2 3 3 3 2 2 1 1 2 2 3 3 3 4 4 4 4 3 3 3 2 2 1
3 3 3 2 2 3 3 3 4 4 4 4 3 3 3 2 2
3 3 3 4 4 4 4 3 3 3
4 4 4 4
習題 11
 參考上題,輸入數字 n 印出以下類似燈籠圖案:
283 用數學寫程式
> 5 > 6
55555 666666
4444-----4444 55555------55555
333-------------333 4444----------------4444
22-------------------22 333------------------------333
1-----------------------1 22------------------------------22
1-----------------------1 1----------------------------------1
22-------------------22 1----------------------------------1
333-------------333 22------------------------------22
4444-----4444 333------------------------333
55555 4444----------------4444
55555------55555
666666
習題 12
 撰寫程式輸入奇數印出以下 X 方塊圖案:
293 用數學寫程式
> 3 > 5
333 333 555 555
333 333 555 555
333 333 555 555
333 555 555
333 555 555
333 555 555
333 333 555
333 333 555
333 333 555
555 555
555 555
555 555
555 555
555 555
555 555
習題 13
 撰寫程式輸入數字印出以下不同放大程度的「中」字圖案:
303 用數學寫程式
> 1 > 2
央 央央
央 央央
央央央央央 央央
央 央 央 央央
央央央央央 央央央央央央央央央央
央 央央央央央央央央央央
央 央央 央央 央央
央央 央央 央央
央央央央央央央央央央
央央央央央央央央央央
央央
央央
央央
央央
提示:設定座標,使用數學方程式表示「中」的各個筆劃
習題 14
 輸入數字 2 水平點數,利用方程式建構 2 的筆劃印出以下 2 中有 2 的圖案:
313 用數學寫程式
習題 15
 修改行道樹範例使得印出的行道樹由高到矮兩兩排列:
323 用數學寫程式
> 3
* *
*** ***
***** *****
******* ******* * *
********* ********* *** ***
*********** *********** ***** *****
************* ************* ******* ******* * *
| | ********* ********* *** ***
| | | | ***** *****
| | | | | |
===========================================================
習題 16
 修改行道樹範例印出行道樹的倒影:
333 用數學寫程式
> 3
*
***
*****
* ******* *
*** ********* ***
***** *********** *****
* ******* ************* ******* *
*** ********* | ********* ***
***** | | | *****
| | | | |
---------------------------------------------
    
*****    *****
*** *********  ********* ***
* ******* ************* ******* *
***** *********** *****
*** ********* ***
* ******* *
*****
***
*
習題 17
 參考行道樹範例印出以下高腳房舍:
343 用數學寫程式
習題 18
 修改上題程式,印出高低交錯的高腳房舍:
353 用數學寫程式
習題 19
 輸入數字 n ,印出以下幾何圖案:
363 用數學寫程式

More Related Content

What's hot

策略管理-SWOT分析-案例研討與實務演練
策略管理-SWOT分析-案例研討與實務演練策略管理-SWOT分析-案例研討與實務演練
策略管理-SWOT分析-案例研討與實務演練
Jager Chen
 
20140815 台北好行案例分析 iek
20140815 台北好行案例分析 iek20140815 台北好行案例分析 iek
20140815 台北好行案例分析 iek
Vincent Chen
 

What's hot (20)

捉住觀眾注意力的簡報技巧
捉住觀眾注意力的簡報技巧捉住觀眾注意力的簡報技巧
捉住觀眾注意力的簡報技巧
 
Ch11 教學
Ch11 教學Ch11 教學
Ch11 教學
 
高齡化社會運動產業發展策略
高齡化社會運動產業發展策略高齡化社會運動產業發展策略
高齡化社會運動產業發展策略
 
【商模五式】商業模式 營銷方案設計(2021數位轉型即戰力線上工作坊)—20210701
【商模五式】商業模式營銷方案設計(2021數位轉型即戰力線上工作坊)—20210701【商模五式】商業模式營銷方案設計(2021數位轉型即戰力線上工作坊)—20210701
【商模五式】商業模式 營銷方案設計(2021數位轉型即戰力線上工作坊)—20210701
 
策略管理-SWOT分析-案例研討與實務演練
策略管理-SWOT分析-案例研討與實務演練策略管理-SWOT分析-案例研討與實務演練
策略管理-SWOT分析-案例研討與實務演練
 
20140815 台北好行案例分析 iek
20140815 台北好行案例分析 iek20140815 台北好行案例分析 iek
20140815 台北好行案例分析 iek
 
用十分鐘 學會《資料結構、演算法和計算理論》
用十分鐘  學會《資料結構、演算法和計算理論》用十分鐘  學會《資料結構、演算法和計算理論》
用十分鐘 學會《資料結構、演算法和計算理論》
 
高绩效人士的五项管理
高绩效人士的五项管理高绩效人士的五项管理
高绩效人士的五项管理
 
集約署名
集約署名集約署名
集約署名
 
OKR-老查商業好書簡報
OKR-老查商業好書簡報OKR-老查商業好書簡報
OKR-老查商業好書簡報
 
導演您的教學簡報
導演您的教學簡報導演您的教學簡報
導演您的教學簡報
 
服務設計思考工作坊 (Service Design Thinking Workshop)
服務設計思考工作坊 (Service Design Thinking Workshop)服務設計思考工作坊 (Service Design Thinking Workshop)
服務設計思考工作坊 (Service Design Thinking Workshop)
 
馬玉山觀光工廠 - 紅頂穀創 整合行銷企劃 (整合行銷規劃師乙級證照檢定術科)
馬玉山觀光工廠 - 紅頂穀創 整合行銷企劃 (整合行銷規劃師乙級證照檢定術科)馬玉山觀光工廠 - 紅頂穀創 整合行銷企劃 (整合行銷規劃師乙級證照檢定術科)
馬玉山觀光工廠 - 紅頂穀創 整合行銷企劃 (整合行銷規劃師乙級證照檢定術科)
 
02 PDCA Management
02 PDCA Management 02 PDCA Management
02 PDCA Management
 
也許你需要的是多一點瀑布 - 敏捷八不
也許你需要的是多一點瀑布 - 敏捷八不也許你需要的是多一點瀑布 - 敏捷八不
也許你需要的是多一點瀑布 - 敏捷八不
 
麥肯錫式圖表風格 / 商業簡報網-韓明文講師
麥肯錫式圖表風格 / 商業簡報網-韓明文講師麥肯錫式圖表風格 / 商業簡報網-韓明文講師
麥肯錫式圖表風格 / 商業簡報網-韓明文講師
 
雙B台灣市場分析Ppt
雙B台灣市場分析Ppt雙B台灣市場分析Ppt
雙B台灣市場分析Ppt
 
76【績效管理】阿里巴巴的績效管理是怎麼做的?績效管理流程|績效考核組成|管理層與員工考核 |績效結果運用
76【績效管理】阿里巴巴的績效管理是怎麼做的?績效管理流程|績效考核組成|管理層與員工考核 |績效結果運用76【績效管理】阿里巴巴的績效管理是怎麼做的?績效管理流程|績效考核組成|管理層與員工考核 |績效結果運用
76【績效管理】阿里巴巴的績效管理是怎麼做的?績效管理流程|績效考核組成|管理層與員工考核 |績效結果運用
 
Binary indexed tree
Binary indexed treeBinary indexed tree
Binary indexed tree
 
マッチングサービスにおけるKPIの話
マッチングサービスにおけるKPIの話マッチングサービスにおけるKPIの話
マッチングサービスにおけるKPIの話
 

Similar to Ch3

Similar to Ch3 (16)

Ch3 習題
Ch3 習題Ch3 習題
Ch3 習題
 
Ch2 習題
Ch2 習題Ch2 習題
Ch2 習題
 
Ch1 習題
Ch1 習題Ch1 習題
Ch1 習題
 
Ch3 教學
Ch3 教學Ch3 教學
Ch3 教學
 
Ch2
Ch2Ch2
Ch2
 
程式人雜誌 -- 2014 年7月號
程式人雜誌 -- 2014 年7月號程式人雜誌 -- 2014 年7月號
程式人雜誌 -- 2014 年7月號
 
Ch4 習題
Ch4 習題Ch4 習題
Ch4 習題
 
Mahout資料分析基礎入門
Mahout資料分析基礎入門Mahout資料分析基礎入門
Mahout資料分析基礎入門
 
姜昱安108學年度下學期數學科課程學習成果
姜昱安108學年度下學期數學科課程學習成果姜昱安108學年度下學期數學科課程學習成果
姜昱安108學年度下學期數學科課程學習成果
 
2017 9-14 Keras example
2017 9-14 Keras example2017 9-14 Keras example
2017 9-14 Keras example
 
Sap fico-configuration-guide
Sap fico-configuration-guideSap fico-configuration-guide
Sap fico-configuration-guide
 
Ch10 習題
Ch10 習題Ch10 習題
Ch10 習題
 
真正读懂oracle sql执行计划execution plan v20131025
真正读懂oracle sql执行计划execution plan v20131025真正读懂oracle sql执行计划execution plan v20131025
真正读懂oracle sql执行计划execution plan v20131025
 
Ch1
Ch1Ch1
Ch1
 
Enterprise Data Lake in Action
Enterprise Data Lake in ActionEnterprise Data Lake in Action
Enterprise Data Lake in Action
 
Smart Calculator Show
Smart Calculator ShowSmart Calculator Show
Smart Calculator Show
 

More from Alisha Smile (20)

Chem ex1 1082
Chem ex1 1082Chem ex1 1082
Chem ex1 1082
 
Chem ex2 1082
Chem ex2 1082Chem ex2 1082
Chem ex2 1082
 
3-3
3-33-3
3-3
 
3 -2
3 -23 -2
3 -2
 
3-1
3-13-1
3-1
 
Python3-3
Python3-3Python3-3
Python3-3
 
Chem ex2
Chem ex2Chem ex2
Chem ex2
 
Chem ex
Chem exChem ex
Chem ex
 
Func diff cal_exercise2-3
Func diff cal_exercise2-3Func diff cal_exercise2-3
Func diff cal_exercise2-3
 
Sym py edu
Sym py eduSym py edu
Sym py edu
 
Sym py exersice2
Sym py exersice2Sym py exersice2
Sym py exersice2
 
Sym py example
Sym py exampleSym py example
Sym py example
 
Sym py exersice1
Sym py exersice1Sym py exersice1
Sym py exersice1
 
Taylor exercise2
Taylor exercise2Taylor exercise2
Taylor exercise2
 
Taylor exercise1
Taylor exercise1Taylor exercise1
Taylor exercise1
 
Taylor example
Taylor exampleTaylor example
Taylor example
 
Polar exercise2
Polar exercise2Polar exercise2
Polar exercise2
 
Polar exercise1
Polar exercise1Polar exercise1
Polar exercise1
 
Polar example
Polar examplePolar example
Polar example
 
Appendix B
Appendix BAppendix B
Appendix B
 

Ch3