เอกสารประกอบการสอน
1309 200 Computer Programming(Python)
โดย อารยา ฟลอเรนซ์
ภาควิชาวิศวกรรมไฟฟ้าและอิเล็กทรอนิกส์
คณะวิศวกรรมศาสตร์ มหาวิทยาลัยอุบลราชธานี
Araya's Creation
ค ำน ำ
เอกสารประกอบการสอนนี้ จัดท าขึ้นเพื่อให้ใช้เป็นเอกสารประกอบการเรียนและการท าปฏิบัติการใน
รายวิชา 1309 200 Computer Programming อ้างอิงภาษาไพธอนเป็นหลัก (เอกสารนี้เป็นหนึ่งในชุดสาม
ภาษา C, C++, Python) เอกสารนี้ประกอบไปด้วยเนื้อหาทั้งหมด 8 บท ครอบคลุมการเขียนโปรแกรม
เบื้องต้น โครงสร้างแบบทางเลือก โครงสร้างวนซ้ า การเขียนฟังก์ชั่น และการใช้งานอาร์เรย์ เอกสารนี้ถูก
ออกแบบให้มีทั้งส่วนของทฤษฏีที่มีตัวอย่างโปรแกรมและค าอธิบาย แทรกด้วยปฏิบัติการตามแผนการสอนของ
รายวิชา ท้ายปฏิบัติการจะมีแบบฝึกหัดส าหรับให้ฝึกเขียนโปรแกรม โดยผู้เรียนสามารถศึกษาได้เองจาก
ตัวอย่างและข้อมูลในส่วนของทฤษฏี
ผู้เขียนหวังเป็นอย่างยิ่งว่าเอกสารนี้จะให้คุณประโยชน์แก่ผู้ที่ต้องการศึกษาการเขียนโปรแกรมเพื่อ
แก้ปัญหาเชิงวิศวกรรมเบื้องต้น โดยใช้ภาษา Python เป็นภาษาตัวอย่าง หากมีข้อผิดพลาดประการใดใน
เอกสารฉบับนี้ ผู้เขียนยินดีน้อมรับและน าข้อผิดพลาดไปแก้ไขในล าดับต่อไป
อารยา ฟลอเรนซ์
สิงหาคม 2559
Araya's Creation
สารบัญ
เรื่อง หน้า
บทที่ 1 บทน า ความรู้เบื้องต้น 1
1.1 หน่วยและการแปลงหน่วย 1
1.2 สัญกรณ์วิทยาศาสตร์ 3
1.3 การพัฒนาโปรแกรม 4
1.4 การพัฒนาขั้นตอนวิธี 5
1.5 แบบฝึกหัดท้ายบท 12
ปฏิบัติการที่ 1.1 แนะน าเทคโนโลยีที่เกี่ยวข้องและการวาดผังงานเบื้องต้น 13
ปฏิบัติการที่ 1.2 Eclipse 23
บทที่ 2 การเขียนโปรแกรมคอมพิวเตอร์เบื้องต้น 43
2.1 Python Shell 43
2.2 โครงสร้างหลักของโปรแกรมภาษา Python 44
2.3 ชื่อ การตั้งชื่อ และตัวแปร 49
2.4 ชุดค าสั่งกาหนดค่าและการแสดงการกาหนดค่า 50
2.5 ชนิดของตัวแปร 53
2.6 การรับข้อมูลเข้ามาจากคีย์บอร์ดและการจัดรูปแบบการแสดงผลข้อมูลออกทางหน้าจอ
57
2.7 การกระท าทางคณตศาสตร์ 59
ิ
2.8 ตัวกระท าแบบก าหนดเพมเติม 60
ิ่
2.9 ตัวกระท าแบบเปรียบเทียบ 61
2.10 ตัวกระท าทางตรรกะ 62
2.11 ตัวกระท าระดับบิต 62
2.12 ตัวกระท าตรวจสอบสมาชิก 62
2.13 ตัวกระท าตรวจสอบตัวตน 63
2.14 ล าดับความส าคัญของตัวกระท า 63
2.15 ฟังก์ชั่นต่างๆในโมดูล math และ random 64
ปฏิบัติการที่ 2 Elementary Programming 67
บทที่ 3 โครงสร้างแบบทางเลือก 73
3.1 ชนิดข้อมูลแบบตรรกะ 73
3.2 ตัวกระท าทางตรรกะ 74
3.3 ชุดค าสั่ง if 75
1
Araya's Creation
3.4 ชุดค าสั่ง if-else 78
3.5 ชุดค าสั่งแบบ Nested if และ multi-way if-else 79
3.6 ข้อผิดพลาดในการใช้งานโครงสร้างแบบ if, if-else และ nested if-else 80
3.7 ข้อแนะน าในการหลีกเลี่ยงหลุมพราง 82
3.8 ชุดค าสั่ง switch-case 83
3.9 ล าดับความส าคัญของตัวกระท า 84
ปฏิบัติการที่ 3 Selection 86
บทที่ 4 ฟังก์ชั่นทางคณิตศาสตร์ อักขระและข้อความ 93
4.1 ฟังก์ชั่นทางคณตศาสตร์ 93
ิ
4.2 ชนิดข้อมูลอักขระและการกระท าเกี่ยวกับอักขระ 95
4.3 ชนิดข้อมูลข้อความ 97
ปฏิบัติการที่ 4 Mathematic Calculation, Characters and Strings 99
บทที่ 5 การกระท าซ้ าและการวนรอบ 103
5.1 การกระท าซ้ าแบบ while 103
5.2 การกระท าซ้ าแบบ do-while 107
5.3 การกระท าซ้ าแบบ for 109
5.4 ค าสั่งส าหรับควบคุมทิศทาง 110
5.5 การกระท าซ้ าแบบซ้อน 111
ปฏิบัติการที่ 5 Using Loop Constructs 113
บทที่ 6 ฟังก์ชั่นที่ผู้ใช้ก าหนดเอง และการเรียกตัวเอง 119
6.1 การก าหนดฟังก์ชั่น 121
6.2 ฟังก์ชั่นที่ไม่ส่งค่ากลับ 123
6.3 การส่งผ่านค่าหรือส่งผ่านตัวอ้างอง 124
ิ
6.4 Dynamic Type Return 128
6.5 การเขียนโปรแกรมแบบโมดูล 129
6.4 สโคปของตัวแปร 131
6.7 การเรียกตัวเอง 131
ปฏิบัติการที่ 6 User defined Functions 133
บทที่ 7 ลิสต์และอาร์เรย์ 157
7.1 เบื้องต้นเกี่ยวกับลิสต์ 138
2
Araya's Creation
7.2 การจัดการกับลิสต์ 140
7.3 การส่งลิสต์เข้าไปในฟงกชั่น 142
์
ั
7.4 การค้นข้อมูลในลิสต์ 143
7.5 การเรียงข้อมูลในลิสต์ 143
7.6 การประกาศอาร์เรย์สองมิติ 143
7.7 การจัดการอาร์เรย์สองมิติ 146
ั
7.8 การส่งอาร์เรย์สองมิติเข้าไปในฟงก์ชั่น 147
ปฏิบัติการที่ 7.1 Arrays and C-String 149
ปฏิบัติการที่ 7.2 2D Arrays 153
บทที่ 8 การใช้งานไฟล์ 157
8.1 ไฟล์ในคอมพิวเตอร์ 157
8.2 ฟังก์ชั่นการจัดการไฟล์ใน Python 157
8.3 การเปิดไฟล์แบบข้อความเพื่ออ่านและเขียน 158
3
Araya's Creation
บทที่ 1
บทน ำ ควำมรู้เบื้องต้น
การเขียนโปรแกรมคอมพิวเตอร์เพื่อแก้ปัญหาการค านวณเชิงวิศวกรรม อาศัยพื้นฐานทางคณิตศาสตร์เป็น
ความรู้หลัก ที่จะน าไปสู่ความเข้าใจในเนื้อหาอันเกี่ยวเนื่องกับการใช้โปรแกรมคอมพิวเตอร์เข้ามาช่วยเหลือการ
แก้ปัญหาทางวิศวกรรม โดยหลักแล้วเกี่ยวข้องกับการคิดเป็นขั้นตอน การจัดการกับความคิด ในบทนี้รวบรวม
ความรู้พื้นฐานเกี่ยวกับการค านวณเชิงวิศวกรรมที่เกี่ยวข้องกับการเขียนโปรแกรม แบ่งเป็น 4 ส่วนได้แก่
1. หน่วยและการแปลงหน่วย (Unit Analysis)
2. สัญกรณ์วิทยาศาสตร์ (Scientific Notation)
3. การพัฒนาโปรแกรม (Software development)
4. การพัฒนาขั้นตอนวิธี (Algorithm development)
1.1 หน่วยและกำรแปลงหน่วย (Unit Analysis)
ในการค านวณเชิงวิศวกรรมหน่วยของข้อมูลมีผลกับผลลัพธ์ในการค านวณ ทั้งนี้กอนท าการค านวณ
่
จะต้องมีการค านึงถึงหน่วยของผลลัพธ์ที่ต้องการ ตัวอย่างเช่น การหาพื้นที่ของสี่เหลี่ยมผืนผ้าใดๆ มีสมการคือ
= ℎ× ℎ
เมื่อ area คือพื้นที่ซึ่งหาได้จาก ความกว้าง ( ℎ) คูณกับความยาว ( ℎ) หากหน่วยของความกว้างเป็น
ฟุต และหน่วยของความยาวเป็นนิ้ว จะต้องท าการแปลงหน่วยก่อนหาผลลัพธ์ โดยสามารถเลือกท าอย่างใดอย่าง
หนึ่งระหว่างแปลงหน่วยของความกว้างให้เป็นนิ้ว หรือแปลงหน่วยของความยาวให้เป็นฟุต เช่น ความยาว 2 ฟุต
ความกว้าง 5 นิ้ว
12 นิ้ว
= 2 ( ) ×5 นิ้ว
1 ฟุต
2
= 120 นิ้ว
หรือ
1 ฟุต
= 2×5 ( )
12 นิ้ว
2
= 0.83 ฟุต
1 | P a g e
Araya's Creation
จะเห็นได้ว่าค่าตัวเลขของผลลัพธ์ที่ได้มาแตกต่างกันโดยสิ้นเชิง ดังนั้นการค านวณใดๆในการเขียนโปรแกรม
คอมพิวเตอร์ก็จะต้องค านึงถึง หน่วยของผลลัพธ์ที่ต้องการและหน่วยของข้อมูลที่จะน ามาใช้ในการค านวณหน่วย
ต่างๆที่ใช้งานบ่อยในการค านวณเชิงวิศวกรรมแสดงในตารางที่ 1.1
2 | P a g e
Araya's Creation
ตำรำงที่ 1.1 หน่วยที่ใช้บ่อยส าหรับปริมาณเชิงกายภาพ (Bronson, 2010)
Quantity Symbol Units English Engineering Units
International
Time t seconds (s) seconds (sec)
Length l meters (m) feet (ft) 1 m = 3.2808 ft
2
2
2
Area A sq. meters (m ) sq. feet (ft ) 10.76 ft
Volume V cubic meters (m ) cubic feet (ft ) 1m =35.31 ft
3
3
3
3
Mass m kilograms (kg) pounds mass (lbm) 1 kg = 2.19 lbm
Force F Newton (1 N =1 kg- pounds-force (lbf 1 lbf = 4.448 N
2
2
m/s ) =lbm-ft/sec )
Weight W Newton (N) pounds force (lbf) 1 lbf = 4.448 N
3
3
Density ρ kilograms/cubic pounds-mass/cubic ft 1 lbf/ft =16.02 kg/m
3
meters (kg/m ) (lbm/ft )
3
Velocity v meters/sec (m/s) feet/sec (ft/sec) 1 m/s =3.2808 ft/sec
2
2
2
2
2
Acceleration a meters/sec (m/s ) feet/sec (ft/sec ) 1 m/s =3.2808
2
ft/sec
Pressure P Pascal (Pa) (1 Pa =1 lbf/ft 1 lbf/ft =47.88 Pa
2
2
2
N/m )
Heat transfer Q Joules (J) (1 J = 1N.m) British Thermal Unit 1 BTU = 1055 J
(BTU)
Heat flux Q Joules/sec (J/s) (1J/s = BTU/sec 1 BTU/sec =1055 J/s
1 Watt)
Work W Joules (J) ft-lbf 1 ft-lbf =1.356 J
Power W Watts (W) (1 W =1 J/s) ft-lbf/sec 1 ft-lbf/sec =1.356 W
Temperature T degrees Celsius (C) degrees Fahrenheit(F)
and and degrees Rankin (R)
degrees Kelvin (K)
ส าหรับอุณหภูมิให้ใช้สูตรต่างๆดังนี้ในการแปลงหน่วย
°F = 1.8°C + 32 = 9/5°C + 32
°C = (°F - 32)/1.8 = 5/9 (°F - 32)
°K = °C + 273.15
°R = °F + 459.67
°R = 1.8°K
3 | P a g e
Araya's Creation
°C = (°R - 491.67) / 1.8 = 5/9 (°R - 491.67)
4 | P a g e
Araya's Creation
1.2 สัญกรณ์วิทยำศำสตร์ (Scientific Notation)
การค านวณเชิงวิศวกรรมมีการใช้ค่าที่เป็นปริมาณมหาศาล และค่าที่มีปริมาณน้อยมากๆ เช่น อัตรา
8
ความเร็วของแสงในสูญญากาศมีค่าถึง 299,792,458 เมตรต่อวินาที (ประมาณ 3 x10 เมตรต่อวินาที) หรือ เส้น
-6
ผ่านศูนย์กลางของเส้นผมที่มีค่าประมาณ 0.000100 เมตร (100 ไมโครเมตร หรือ 100 x 10 เมตร) สังเกตว่า
ค่าต่างๆในเชิงวิศวกรรมสามารถเขียนให้อยู่ในรูปเลขทศนิยมและเลขยกก าลัง หรือที่เรียกว่าสัญกรณ์วิทยาศาสตร์
(Scientific notation) นั่นเอง ค่าเหล่านี้สามารถเขียนให้อยู่ในรูปของเลขยกก าลังที่เป็นมาตรฐานส าหรับ
โปรแกรมคอมพิวเตอร์ได้ เช่น อัตราความเร็วแสงสามารถกาหนดได้ในรูปแบบ 3e08 เมตรต่อวินาที และ
เช่นเดียวกันกับสองเท่าของรัศมีหน้าตัดเส้นผม สามารถทดแทนด้วย 100e-6 เมตร การใช้ e ในรูปแบบนี้เรียกว่า
Exponential notation ซึ่งเพิ่มความสะดวกในการเขียนโปรแกรมคอมพิวเตอร์
การเขียนค่าต่างๆในการค านวณเชิงวิศวกรรมในรูปแบบของสัญกรณ์วิทยาศาสตร์ช่วยให้การค านวณง่ายและ
สะดวกยิ่งขึ้น โดยมีหลักการของการน าเลขยกก าลังมาบวกลบกัน ดังแสดงในตัวอย่าง
ต้องการค านวณตัวเลขชุดหนึ่ง 236,000×0.345×1,345,000
65.2×.000003
ข้อมูลชุดดังกล่าวสามารถถูกน ามาดัดแปลงให้อยู่ในรูปของสัญกรณ์วิทยาศาสตร์ก่อนท าการค านวณดังนี้
−1
5
2.36×10 ×3.45×10 ×1.345×10 6 2.36×3.45×1.345×10 (5−1+6)
=
1
6.25×10 ×3.0×10 −6 6.25×3.0×10 1−6
จะได้ผลลัพธ์สุดท้ายคือ
2.36×3.45×1.345×10 15
6.25×3.0
เมื่อได้ค่ายกก าลังสุดท้ายของผลลัพธ์แล้ว สามารถน ามาเขียนให้อยู่ในรูปแบบของสัญกรณ์วิทยาศาสตร์ได้ โดยใช้
์
สัญลักษณ์ทดแทน สัญลักษณของสัญกรณ์วิทยาศาสตร์แสดงในตารางที่ 1.2
ตำรำง 1.2 สัญลักษณ์สัญกรณ์วิทยาศาสตร์
Scientific Notation Symbol Name (อ่ำนว่ำ) Exponential notation
10 -12 p pico (พิโค) e-12
10 -9 n nano (นาโน) e-9
10 -6 µ Micro (ไมโคร) e-6
10 -3 m milli (มิลลิ) e-3
10 3 k kilo (กิโล) e3
10 6 M mega (เมกะ) e6
10 9 G giga (กิกะ) e9
10 12 T tera (เท-รา) e12
5 | P a g e
Araya's Creation
6 | P a g e
Araya's Creation
1.3 กำรพัฒนำโปรแกรม (Software development)
ในการพัฒนาโปรแกรมทซับซ้อน จะมีช่วงระยะของการท างานอยู่สามช่วง ได้แก่ การออกแบบและพัฒนา
ี่
การจัดเตรียมเอกสาร และ การบ ารุงรักษา ในส่วนของการเขียนโปรแกรมคอมพิวเตอร์เพื่องานวิศวกรรมนี้ จะลง
รายละเอียดแค่ในส่วนของการออกแบบและพัฒนาโปรแกรม เนื่องจากรายวิชาการเขียนโปรแกรมคอมพิวเตอร์
ี
เป็นรายวิชาพื้นฐาน โปรแกรมที่เขียนไม่มความยุ่งยากซับซ้อนมากไปกว่าเจตนาที่ต้องการปลูกฝังแนวคิดในการ
แก้ปัญหาเชิงวิศวกรรมให้กับผู้เรียน
ื่
โดยปกติแล้วทุกๆโปรแกรมถกสร้างขึ้นมาเพอให้สามารถทางานดังรูป 1.1 คือมีอินพุท (input) เข้าไปใน
ู
กระบวนการ (process) และได้เอาท์พท (output) ออกมาเป็นผลที่ต้องการ
ุ
รูปที่ 1.1 แสดงการท างานของโปรแกรม
การออกแบบพัฒนาโปรแกรมเพื่อแก้ปัญหาเชิงวิศวกรรมแบ่งได้เป็น 5 ขั้นตอนหลักดังนี้
1. วิเครำะห์โจทย์ปัญหำ (Analyse the problem) เมื่อต้องการแก้ปัญหา จะต้องท าความเข้าใจกับ
ปัญหาเสียก่อนว่าปัญหานั้นคืออะไร ต้องการอะไรเป็นค าตอบ หากเป็นการค านวณที่ซับซ้อน
ี่
่
ผู้พัฒนาโปรแกรมจะต้องเข้าใจที่มาทไปของแต่ละส่วนที่ใช้ในการค านวณอย่างลึกซึ้ง ไมเช่นนั้นแล้วการ
พัฒนาโปรแกรมเพอแก้ปัญหาก็จะเป็นไปไม่ได้
ื่
2. ก ำหนด input/output เมื่อ input คือข้อมูลที่ต้องรับเข้ามาและส่งเข้าไปในกล่องของกระบวนการ และ
output คือสิ่งที่ต้องการ เรียกได้ว่าเป็นผลลัพธ์ของกระบวนการ, ผลของการค านวณ หรือสิ่งที่ต้องการ
แสดงให้แก่ผู้ใช้โปรแกรมผ่านหน้าจอ หรือผ่านไฟล์
3. พัฒนำขั้นตอนวิธี (Algorithm Development) คือขั้นตอนของการคิด และเขียน หรือวาดแผนผัง
ของกระบวนการในการแก้ปัญหาดังกล่าว ขั้นตอนวิธีที่จะจัดการกับ input และ output ซึ่งหมายถึง
ข้อมูล (data) นั่นเอง ขั้นตอนวิธีนี้คือวิธีการแก้ปัญหาที่เป็นขั้นเป็นตอน (steps) ต่อเนื่องกันไป เปรียบได้
กับวิธีท าอาหาร หรือวิธีติดตั้งเครื่องมือหรืออุปกรณ์ ที่มีขั้นตอนบอกอย่างชัดเจนว่าต้องท าอะไรเป็นสิ่ง
แรกและท าอะไรเป็นสิ่งถัดไป การพัฒนาขั้นตอนวิธีนี้เป็นหัวใจของการเขียนโปรแกรม หาก
ผู้พัฒนาโปรแกรมไม่สามารถคิดเป็นขั้นตอนได้ การเขียนโปรแกรมสั่งงานให้เครื่องคอมพิวเตอร์ท าในสิ่งที่
ต้องการก็จะเป็นเรื่องที่แทบจะเป็นไปไม่ได้เลย เพราะคอมพิวเตอร์มีหลักการท างานที่เป็นขั้นตอน
่
โดยทั่วไปผู้พัฒนาโปรแกรมสามารถใช้เครื่องมือช่วยในการพัฒนาขั้นตอนวิธี ได้แกผังงาน (flowchart)
ี
และ ภาษาเทียม (pseudo code) ซึ่งจะกล่าวถึงรายละเอยดในล าดับถัดไป
7 | P a g e
Araya's Creation
ื
4. กำรค ำนวณด้วยมอ (Hand example) คือการทดลองค านวณด้วยมือ หรือเครื่องคิดเลขหรือสเปรดชีท
โดยใช้ชุดข้อมูลตัวอย่างที่ก าหนดขึ้นมา ซึ่งชุดข้อมูลตัวอย่างที่ดี ควรจะสามารถครอบคลุมเงื่อนไขต่างๆ
ของปัญหาได้เป็นอย่างดี เช่น ให้ผลลัพธ์ที่เป็นค่าลบ ให้ผลลัพธ์ที่เป็นค่าบวก และให้ผลลัพธ์ที่มีค่าเป็น
ศูนย์ เป็นต้น ทั้งนี้เงื่อนไขก็จะขึ้นอยู่กับปัญหานั่นเอง การทดลองค านวณด้วยตนเองโดยการเขียนลง
กระดาษ หรือการท า hand example นี้ จะช่วยให้ผู้พัฒนาโปรแกรมสามารถเข้าใจการแก้ปัญหาได้ดี
ยิ่งขึ้น
5. กำรเขียนโปรแกรมและกำรทดสอบ (Coding and Testing) เป็นขั้นตอนในการน าขั้นตอนวิธีจากขอ
้
3 มาปรับปรุงให้เป็นโปรแกรม โดยเลือกใช้ภาษาการเขียนโปรแกรมที่เหมาะสมหรือที่ถกก าหนดไว้ แล้ว
ู
ี่
ู
ท าการทดสอบโปรแกรมที่เขียนขึ้นด้วยชุดข้อมูลทดสอบทก าหนดไว้ในข้อ 4 ที่ถกใช้ในการค านวณด้วยมือ
ซึ่งการใช้ชุดข้อมูลทดสอบเดียวกันนี้ จะท าให้ทราบว่าโปรแกรมที่เขียนขึ้นมีข้อผิดพลาดหรือไม่ประการใด
โดยการเปรียบเทียบผลตอบสนองของโปรแกรมกับผลที่ได้จากการค านวณด้วยมือที่ได้เตรียมไว้ในข้อ 4
ขั้นตอนนี้อาจมีการท าซ้ าซ้อนและกลับไปท าการแกไข เนื่องจากขอผิดพลาดในการเขียนโปรแกรมมีหลาย
้
้
็
ชนิด (จะกล่าวถึงในล าดับต่อไป) ระยะเวลาในการปรับปรุงโปรแกรมจนได้ผลตอบสนองที่ถูกต้องกขึ้นอยู่
กับปริมาณและชนิดของข้อผิดพลาดในการเขียนโปรแกรม ในขั้นตอนนี้ การส ารองข้อมูล (Backup) เป็น
สิ่งที่จ าเป็น ยิ่งความส าคัญของงานมากเท่าใดก็ต้องให้ความส าคัญของการส ารองข้อมูลมากเท่านั้น
สามารถท าได้ตั้งแต่การบันทึกไปที่ Cloud Services, Flash drive หรือ External Hard drives
จะเห็นได้ว่าทุกกระบวนการต่างมีความส าคัญที่จะท าให้สามารถเขียนเป็นโปรแกรมได้ แต่ขั้นตอนที่ส าคัญ
ที่สุดคือขั้นตอนที่ 3 หากมีการพัฒนาขั้นตอนวิธีที่ถูกต้องและเหมาะสม โดยเฉพาะการใช้ภาษาเทียมในการพัฒนา
ขั้นตอนวิธีแล้ว การดัดแปลงให้มาเป็นภาษาโปรแกรมคอมพิวเตอร์ภาษาใดๆกจะสามารถท าได้อย่างง่ายดาย
็
โดยเฉพาะมีการใช้เครื่องมือช่วยในการพัฒนาโปรแกรมภาษาคอมพิวเตอร์ที่เป็นลักษณะที่เรียกว่า Integrated
Development Environment (IDE) รายละเอียดเกี่ยวกับ IDE จะกล่าวถึงในล าดับถัดไป
1.4 กำรพัฒนำขั้นตอนวิธี (Algorithm development)
เครื่องมือพื้นฐานส าหรับการพัฒนาขั้นตอนวิธีได้แก่ ผังงาน (Flowchart) และภาษาเทียม (pseudo code)
ผังงำน (Flowchart)
เป็นเครื่องมือส าหรับการพัฒนาขั้นตอนวิธีที่เป็นมาตรฐานสากล ผังงานใช้สัญลักษณ์ที่มีความหมายใน
ื่
ตัวเองประกอบกับคาอธิบายเล็กน้อย เพื่อสื่อสารระหว่างผู้พัฒนาโปรแกรม หรือเพอใช้ในการอธิบายขั้นตอนการ
ท างานของกระบวนการที่ซับซ้อนอย่างใดอย่างหนึ่ง สัญลักษณ์และความหมายแสดงในตารางที่ 1.3
ผังงานที่ดีควรมีลักษณะดังนี้
1. มีจุดเริ่มต้นเพียงจุดเดียวและจุดสิ้นสุดเพียงจุดเดียว
8 | P a g e
Araya's Creation
2. สัญลักษณ์มีลูกศรหรือ flow line เข้าหนึ่งออกหนึ่งเท่านั้น ยกเว้น สัญลักษณ์ diamond (decision) มี
เข้าหนึ่งออกสอง และ terminator ที่มีเข้าหรือออกเพียงหนึ่งอัน
3. ใช้ตัวเชื่อมต่อ (connector) เพื่อเชื่อมต่อ flow lines
ภำษำเทียม (Pseudo code)
ภาษาเทียมคือภาษาอังกฤษพื้นฐานที่ใช้อธิบายขั้นตอนวิธีหรือกระบวนการ ภาษาเทียมจะมีลักษณะ
ใกล้เคียงกับภาษาโปรแกรมคอมพิวเตอร์ แต่ไม่ใช่ภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่ง ภาษาเทียมจะถูกน ามา
แปลงเป็นโปรแกรมคอมพิวเตอร์ภาษาใดภาษาหนึ่งได้อย่างง่ายดายโดยผู้ที่มีความเข้าใจในหลักการของการท างาน
เป็นขั้นตอน ภาษาเทียมสามารถใช้อธิบายขั้นตอนวิธีการท างานของโปรแกรมแทนผังงาน เป็นที่นิยมใช้ในการ
อธิบายขั้นตอนวิธีของผู้พัฒนาโปรแกรมทั่วโลก หรือแม้แต่ใช้ในการอธิบายขั้นตอนวิธีการท างานของระบบใด
ระบบหนึ่งที่ไม่ใช่โปรแกรมคอมพิวเตอร์ก็สามารถท าได้
ภาษาเทียมบางครั้งถกเขียนโดยใช้ไวยากรณของภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่งเป็นหลัก ท าให้การ
์
ู
น าไปแปลงเป็นภาษานั้นๆสะดวกยิ่งขึ้น ค าหลักๆ ที่ใช้ในภาษาเทียม ส่วนมากจะเป็นค าสงวน (Reserve words)
หรือค าหลัก (Keywords) ในภาษาคอมพิวเตอร์ ได้แก่ input, output, read, print, for, while, end เป็นต้น
9 | P a g e
Araya's Creation
ตำรำงที่ 1.3 สัญลักษณ์สามัญที่ใช้ในการเขียนผังงาน
สัญลักษณ์ ชื่อ ความหมาย ตัวอย่างการใช้งาน
Start/Stop เริ่มต้น/
Terminator
สิ้นสุด
รับข้อมูลเข้ามา หรือส่ง
Input, Output ข้อมูลออกไป หรือแสดงผล
ข้อมูล
การประมวลผล, การ
Process
ค านวณ, การก าหนดค่า
การตัดสินใจที่มีค าตอบ ใช่
Decision
หรือไม่ใช่
ทิศทางการไหลของข้อมูล
ใช้เชื่อมต่อสัญลักษณ์อื่นใน
Flow line
ผังงาน และ/หรือ ก าหนด
ตรรกะของเส้นทางขอมูล
้
ใช้ส าหรับเชื่อมต่อ flow
Connector
lines
Page connector ใช้เชื่อมต่อหน้า
10 | P a g e
Araya's Creation
ิ
ตัวอย่ำงกำรแก้ปัญหำทำงวศวกรรม
์
โจทยตัวอย่ำงที่ 1 จงหาพื้นที่ของสี่เหลี่ยมใดๆ
์
1. วิเครำะห์โจทย สี่เหลี่ยมมีด้านกว้างและด้านยาว ความกว้างและความยาวของสี่เหลี่ยมสามารถเป็นเลข
ทศนิยมได้
2. ก ำหนด input/output ความกว้างและความยาวของสี่เหลี่ยมคือ input ที่ต้องรับเข้ามา ส่วนพื้นที่คือ
สิ่งที่ต้องท าการค านวณหาและแสดงผลออกมา ดังนั้นพื้นที่เป็น output
3. ผังงำน สามารถเขียนผังงานได้ดังนี้
11 | P a g e
Araya's Creation
รูปที่ 1.2 แสดงผังงานของการค านวณหาพื้นที่สี่เหลี่ยมใดๆ
ภำษำเทียม (Pseudo code) สามารถเขียนภาษาเทียมได้ดังนี้
START
GET width, length
IF width and length greater than zero THEN
area=width X length
PRINT area
END
4. Hand Example ให้ความกว้างเป็น 2.50 ม. ความยาวเป็น 4.50 ม. จะได้พื้นที่ 11.25 ตร.ม.
12 | P a g e
Araya's Creation
5. Coding and Testing
Listing 1.1 ComputeArea\main.py
if __name__ == '__main__':
pass
print("Welcome to my program\n")
width=0
height=0
area=0
while ((width==0)or(height==0)):
width=input("Enter the width of your rectangle: ")
height=input("Enter the height of your rectangle: ")
area=float(width)*float(height)
print("The area is "+ str(area))
รูปที่ 1.3 ผลตอบสนองของโปรแกรม (Run Result)
13 | P a g e
Araya's Creation
โจทย์ตัวอย่ำงที่ 2 จงหา ( ) เมื่อ
2
− 2, ≤ 0
( ) = {
2
+ 2, > 0
์
1. วิเครำะห์โจทย ผลของฟังก์ชั่นเมื่อ มีค่าน้อยกว่าหรือเท่ากับ 0 และเมอ มีค่ามากกว่า 0
ื่
2. ก ำหนด input/output จะได้ input คือ ส่วน output คือ ( )
3. ผังงำน สามารถเขียนผังงานได้ดังนี้
รูปที่ 1.4 ผังงานแสดงกระบวนการหาค่า ( )
4. Hand Example ท าการทดลองค านวณหาผลลัพธ์ด้วยค่าต่างๆ ได้ผลลัพธ์ดังนี้
( )
-1 -1
0 -2
1 3
14 | P a g e
Araya's Creation
5. Coding and Testing
Listing 1.2 Example2\main.py
if __name__ == '__main__':
pass
print("Welcome to my program\nInput q to exit")
t=0
while (t!='q'):
t=input("Enter t: ")
if t=='q':
break
if int(t) <=0 :
yt=int(t)*int(t)-2
else:
yt=int(t)*int(t)+2
print("y(t) is "+ str(yt))
print("Exiting the program")
รูปที่ 1.5 ผลตอบสนอง (Run Result) ของโปรแกรม Listing 1.2
15 | P a g e
Araya's Creation
ึ
1.5 แบบฝกหัดท้ำยบท
1. จงเขียนแสดงขั้นตอนวิธีเป็นขั้นๆ (step-by-step) ของกระบวนการต่อไปนี้
1.1 ต้มมาม่า
1.2 เปลี่ยนยางรถจักรยาน
1.3 ลงทะเบียนใน reg.ubu.ac.th
1.4 ยืมหนังสือห้องสมุด
2. จงเขียนแสดงขั้นตอนวิธีเป็นขั้นๆ (step-by-step) ของกระบวนการในการนับสระ ‘e’ ในประโยค
ภาษาอังกฤษใดๆ
3. จงเขียนขั้นตอนวิธี (Algorithm) โดยใช้ pseudo code หรือ flowchart ของกระบวนการในข้อ 2
4. จงเขียนขั้นตอนวิธี (Algorithm) โดยใช้ pseudo code หรือ flowchart ในการค้นหาค่าที่น้อยที่สุดใน
้
กลุ่มขอมูลใดๆ
5. จงเขียนขั้นตอนวิธี (Algorithm) โดยใช้ pseudo code หรือ flowchart ในการเรียงข้อมูล 4 ตัวใดๆจาก
น้อยไปหามาก และจากมากไปหาน้อย
16 | P a g e
Araya's Creation
1309 200 Computer Programming Laboratory
ปฏิบัติกำรที่ 1.1: แนะนำเทคโนโลยีที่เกี่ยวข้องและกำรวำดผังงำนเบื้องต้น
เนื้อหาในปฏิบัติการนี้จะกล่าวถึงการน าเทคโนโลยีสารสนเทศในปัจจุบันมาใช้งานในรายวิชานี้ อันได้แก่
การส่งอีเมล์ การใช้งาน Social Network ในการติดต่อสื่อสาร การใช้งาน Google Chrome Applications เพื่อ
ส่งเสริมการเรียนรู้ด้วยตนเองของนักศกษา
ึ
วัตถุประสงค์
ึ
1. เพื่อให้นักศกษาสามารถสื่อสารด้วยอีเมล์อย่างมีประสิทธิภาพ
ึ
2. เพื่อให้นักศกษาทราบถึงช่องทางการสื่อสารผ่าน Social Network
ึ
3. เพื่อให้นักศกษาตระหนักถึงแอพพลิเคชั่นต่างๆที่ใช้ในรายวิชานี้
ึ
4. เพื่อให้นักศกษาเข้าใจความหมายและการสร้างขั้นตอนวิธี (Algorithm)
5. เพื่อให้นักศกษาสามารถวาดผังงานอย่างง่ายจากปัญหาที่ก าหนดได้
ึ
ทฤษฏีที่เกี่ยวข้อง
ปัจจุบันมีการน าเทคโนโลยีสารสนเทศเข้ามาใช้ในวงการศึกษาเป็นอย่างแพร่หลาย ผู้เรียนส่วนมากใช้งาน
Social Network อย่างต่อเนื่องและเป็นประจ า Social Network เช่น Google Plus จึงเป็นสื่อที่เหมาะสม
ส าหรับใช้งานในการติดต่อสื่อสารระหว่างผู้เรียนกับผู้สอน ทั้งนี้การใช้งานอีเมล์ก็เข้ามาแทนการเขียนจดหมายหรือ
เอกสารที่เป็นทางการ การเรียนรู้เกี่ยวกับช่องทางในการสื่อสารทั้ง Social Network และอีเมล์จึงเป็นพื้นฐานที่
จ าเป็นต่อการศึกษาของผู้เรียนที่สามารถน าไปต่อยอดในการค้นหาข้อมูลออนไลน์ส่วนอื่นได้ต่อไป
การเรียนรู้ของผู้เรียนในปัจจุบันได้เปลี่ยนแปลงตามเทคโนโลยีสารสนเทศที่พัฒนาไปอย่างรวดเร็ว เพื่อให้
ผู้เรียนทันต่อสถานการณ์ปัจจุบันและเรียนรู้เทคโนโลยีที่ทันสมัย รายวิชานี้จึงต้องปูพื้นฐานแอพพลิเคชั่นที่
เกี่ยวข้องกับการศึกษาให้กับผู้เรียนที่มีให้โดย Google ที่เรียกสั้นๆว่า Google Chrome Apps ซึ่งเนื้อหาใน
ปฏิบัติการนี้ผู้เรียนจะได้ฝึกฝนและลองใช้งาน Google Chrome Applications ต่างๆที่เกี่ยวข้องกับการศึกษา
และรายวิชานี้ อันได้แก่ Gliffy Diagrams, Google Drive และ SourceLair ทั้งนี้ ผู้เรียนจะได้ตระหนักถึง
่
Applications อื่นๆที่เกี่ยวข้องหรือเป็นทางเลือก อันได้แก Lucidchart Diagrams, Cacoo-Diagram,
Powerpoint, Daum Equation และอื่นๆ ที่น่าสนใจใน Chrome Web Store
17 | P a g e
Araya's Creation
สิ่งที่ต้องมีเพื่อใช้ในปฏิบัติกำรนี้
1. Google Chrome Browser และ Google Account ของนักศึกษาเอง
2. Email Account ของนักศึกษาเองที่เป็น @ubu.ac.th
ปฏิบัติกำรส่วนที่ 1 ช่องทางการสื่อสารด้วยเทคโนโลยีสารสนเทศ
Email (อีเมล์)
อีเมล์เป็นช่องทางการสื่อสารที่เป็นมาตรฐานทั่วโลกในการติดต่อ เปรียบได้กับการเขียนจดหมาย ส่วนประกอบที่
ี
ส าคัญของการใช้งานอีเมล์ได้แก่ Subject, CC/BCC, Body และภาษาที่ใช้ในการเขียนอเมล์ ข้อควรระวังส าหรับ
การใช้งานอีเมล์ได้แก ่
• ตั้งชื่อหัวข้ออีเมล์ให้สั้นกระชับได้ใจความ
• CC/Bcc สามารถใช้เพื่อส่งเมล์ฉบับเดียวกันไปที่อื่นได้ในการส่งครั้งเดียว
• ทุกอีเมล์ต้องมีส่วนของข้อความในอีเมล์ (Body)
• ลงชื่อทุกครั้งที่ใช้งานอีเมล์ในการติดต่อ
• อ่านทบทวนอย่างน้อยหนึ่งครั้งก่อนกดส่ง
• หากมีการแนบไฟล์ ตรวจสอบทุกครั้งว่าเป็นไฟล์ที่ต้องการส่ง
ตัวอย่างอีเมล์เพื่อการทดสอบส่งไฟล์ไปที่ [email protected] แสดงในรูปที่ 1.6
ี
รูปที่ 1.6 แสดงส่วนประกอบต่างๆของอเมล์ (แตกต่างกันไปส าหรับแต่ละผู้ให้บริการ)
18 | P a g e
Araya's Creation
ปัญหำต่ำงๆเกี่ยวกับอีเมล์ที่อำจจะเกิดขึ้น
่
• ทราบได้อย่างไรว่าเมล์นั้นจะถึงหรือไม โดยทั่วไปหากใส่อีเมล์ของผู้รับผิดพลาด จะม dead mail
ี
กลับมาแจ้งว่าส่งไม่ถง แต่ในบางกรณีที่อีเมล์ของผู้รับถูกต้องแต่กอาจจะเกิดความผิดพลาดขึ้นได้ที่
็
ึ
อีเมล์ที่ส่งไปไม่แสดงใน inbox ของผู้รับ ทั้งนี้ผู้ส่งสามารถดึงอีเมล์ที่ได้ส่งออกไปแล้วมาจาก Sent
ื่
Box เพอยืนยันการส่งได้หากเกิดปัญหาขึ้น
• ไม่ได้รับเมล์ตอบกลับจากอาจารย์เจ้าของอีเมล์ ในช่วงเวลาของการส่งงาน จะมีการตั้งตอบกลับ
ื่
อัตโนมัติเพอให้นักศกษาสบายใจว่างานนั้นถึงแล้ว หากไม่ได้รับเมล์ตอบกลับดังกล่าว ก็มีความ
ึ
ิ
์
เป็นไปได้สูงว่านักศกษาอาจจะพมพอีเมล์ผู้รับผิด หากตรวจสอบแล้วและแก้ไขแต่ยังไม่ได้รับการ
ึ
ื่
ตอบกลับ นักศึกษาก็อาจจะต้องหาทางติดต่อผ่านช่องทางอน แต่ทั้งนี้อีเมล์ที่ถูกส่งออกไปสามารถ
ท าการค้นได้ใน Sent Box ของนักศึกษาเองเสมอ
ื่
ค ำสั่ง จงส่งอีเมล์ถึงนักศกษาที่นั่งอยู่ข้างๆตนเอง แล้วท าการตอบกลับ หากนักศกษาได้อีเมล์ตอบจากเพอน
ึ
ึ
แสดงว่านักศกษาสามารถใช้งานอีเมล์ในการสื่อสารเบื้องต้นได้อย่างถูกต้อง
ึ
Google Plus Community
ในรายวิชานี้ ทีมงานผู้สอนได้มีการสร้างช่องทำงกำรสื่อสำรส าหรับผู้เรียนไว้ในสังคมออนไลน์ (Social
Network) ได้แก่ Community ใน Google Plus ผู้เรียนควรเข้าร่วมเพื่อรับข่าวสารเกี่ยวกับรายวิชานี้เนื่องจากจะ
ี
ไม่มการติดประกาศที่เป็นกระดาษภายในคณะ เพื่อลดภาวะการใช้งานกระดาษ อีกทั้งผู้เรียนยังสามารถตั้งค าถาม
หรือปรึกษาหารือกันในกลุ่มเพื่อแบ่งปันความเข้าใจและปัญหาเกี่ยวกับรายวิชาได้อย่างสร้างสรรได้ตลอดเวลา
ส่วนประกอบต่างๆในหน้า Community บน Google Plus แสดงในรูปที่ 1.7
สิ่งที่ควรตระหนักในการใช้งานสังคมออนไลน์
• กลุ่มที่สร้างขึ้นไม่ใช่พื้นที่ส่วนบุคคล เป็นพื้นที่สาธารณะ
• ก่อนตั้งค าถาม ควรอ่านให้ครบถ้วนก่อนว่ามีค าถามแบบเดียวกันหรือไม่
• ใช้ภาษาที่สุภาพและถูกต้องตามหลักภาษาไทย งดการใช้ภาษาสก๊อย-แว๊นซ์
ึ
• อย่าโพส รหัสนักศกษา หรือ ชื่อของตนเอง ยกเว้นแต่เป็นค าสั่ง
• ส่งข้อความส่วนตัว หากเป็นการติดต่อระหว่างบุคคล การตอบโพสไม่ใช่การส่งข้อความ
Links ส าหรับ Community คือ
• https://plus.google.com/u/0/communities/107685445050170740529
QR Code คือ
19 | P a g e
Araya's Creation
20 | P a g e
Araya's Creation
รูปที่ 1.7 แสดงองค์ประกอบต่างๆใน Google Plus Community
Chrome Web Store
หน้าเวปของ Chrome Web Store คือจุดส าหรับดาวน์โหลดแอพพลิเคชั่นต่างๆส าหรับ Google
Chrome Browser และ Google Chrome Desktop ในปฏิบัติการส่วนนี้เครื่องที่ใช้งานต้องมี Chrome
Browser ติดตั้งอยู่ และผู้เรียนต้องท าการ Sign-in Chrome Browser ด้วย Google Account ของตนเอง
ข้อดีของ Chrome Browser คือ เมื่อผู้ใช้ Sign-in ด้วย Google Account ใดๆแล้ว เมื่อไปใช้งาน
Chrome ที่เครื่องอื่นแล้ว Sign-in ด้วย Google Account ของตนเองก็จะได้แอพพลิเคชั่น ที่ลงไว้เชื่อมต่อกับ
Google Account นั้นๆอยู่ซึ่งคุณสมบัติส่วนนี้ของ Chrome ช่วยสนับสนุนการเรียนการสอนได้เป็นอย่างดี
21 | P a g e
Araya's Creation
เพื่อให้สะดวกต่อการเรียกใช้งานแอพพลิเคชั่นต่างๆบน Chrome Browser นักศึกษาควรติดตั้ง Chrome
App Launcher สามารถดาวน์โหลดและติดตั้งได้จาก https://chrome.google.com/webstore/launcher
หน้าตาของ Launcher เป็นดังแสดงในรูปที่ 1.8
รูปที่ 1.8 แสดงการใช้งาน Chrome App Launcher
เมื่อมี Launcher ติดตั้งอยู่ จากนี้ไป Chrome Apps ที่ติดตั้งต่อไปจะปรากฏ Shortcut ใน Launcher
ให้กับผู้ใช้งาน การติดตั้งแอพพลิเคชั่นต่างๆให้ไปที่หน้า
https://chrome.google.com/webstore/category/collections หน้าตาของเวปดังกล่าวมีลักษณะดังแสดง
ในรูปที่ 1.9 ด้านซ้ายมือคือเมนูที่ต้องให้ความสนใจในปฏิบัติการนี้
22 | P a g e
Araya's Creation
รูปที่ 1.9 แสดงคอลเล็กชั่นของแอพพลิเคชั่นที่เลือกติดตั้งได้บน Chrome Browser
ค ำสั่ง ให้นักศึกษาท าการตรวจสอบเครื่องที่ใช้งานอยู่ว่ามี Chrome Browser หรือไม่ หากไม่มีให้ท าการติดตั้ง
ึ
เมื่อมี Chrome Browser พร้อมใช้งานแล้วให้นักศกษา Sign-in ด้วย account ของตนเองแล้วท าการค้นใน
Store แล้วท าการติดตั้งแอพพลิเคชั่นต่างๆดังนี้
• Gliffy Diagrams
• SourceLair
• Cacoo-Diagram
• Google Drawings
• Daum Equation Editor
• Lucidchart Diagrams
Gliffy Diagrams
แอพพลิเคชั่นนี้มีไว้ใช้ในการเขียนผังภาพ เมื่อ Integrate กับ Google Drive แล้วจะสามารถสร้างผังภาพ
ได้จาก Google Drive ได้อย่างสะดวกสบาย แอพพลิเคชั่นที่เทียบเท่ากับตัวนี้ได้แก่ Google Drawings,
Lucidchart Diagrams, Cacoo-Diagram, MS-Office PowerPoint, MS-Visio, Dia และอื่นๆอีกหลายตัว
Gliffy Diagrams มีผังภาพหลายชนิดให้เลือกสร้างได้ นักศกษาควรส ารวจแต่ละ option ของแอพพลิเคชั่นด้วย
ึ
ตนเอง ซึ่งผังภาพแบบอื่นๆอาจมีความส าคัญกับรายวิชาอื่นๆที่นักศึกษาต้องเรียนในล าดับต่อไป รูปที่ 1.10 แสดง
ส่วนประกอบต่างๆใน Gliffy Diagrams
23 | P a g e
Araya's Creation
รูปที่ 1.10 แสดงองค์ประกอบแต่ละส่วนของ Gliffy Diagrams
ค ำสั่ง จงท าการสร้างผังงานดังแสดงในรูป 1.11 นี้ด้วย Gliffy Diagrams ก าหนดให้ save เป็น .png แล้วส่ง
ื่
อีเมล์ไปที่เพอนที่นั่งอยู่ข้างๆ
รูป 1.11 ผังงานแสดงการค านวณหาค่าพื้นที่สี่เหลี่ยมผืนผ้าใดๆ
24 | P a g e
Araya's Creation
Google Drive
ิ่
ู
เป็นบริการ Cloud Storage ของ Google ที่ถกพัฒนาเพมเติมมาจาก Google Docs แอพพลิเคชั่นนี้อนุญาตให้
้
ื่
ผู้ใช้สามารถเก็บขอมูลไว้ใน Cloud Storage Service และแบ่งปันกับผู้ใช้อนแบบ Real-time เช่นสามารถมีผู้ใช้
สองคนแก้ไขไฟล์เดียวกันได้ในขณะเดียวกัน ตัวอย่างการแชร์ไฟล์จาก Google Drive แสดงในรูปที่ 1.12
รูปที่ 1.12 แสดงการแชร์เอกสารบน Google Drive
ึ
หากท าการติดตั้ง Gliffy integration ได้ถูกต้อง นักศกษาจะต้องสามารถสร้าง Gliffy diagrams ได้จาก
หน้าของ Google Drive หาก Google Drive ถูกติดตั้งไว้แล้วนักศึกษาสามารถเรียกใช้งานจาก Shortcut ใน
Launcher ได้เลย หรือสามารถไปที่ https://drive.google.com/ ซึ่งจะถูกพาไปที่ Drive ของ Google
Account ที่ก าลังใช้งานอยู่ทันที
รูปที่ 1.13 แสดงหน้า Google Drive ที่มี Gliffy Diagrams เชื่อมต่ออยู่
25 | P a g e
Araya's Creation
ค ำสั่ง จงสร้างผังงานดังแสดงในรูปที่ 1.13 แต่ปรับเปลี่ยนให้เป็นการค านวณหาพื้นที่ของวงกลม หลังจากนั้น
ให้ท าการ share diagram ดังกล่าวไปที่เพื่อนที่นั่งอยู่ข้างๆในแบบอ่ำนอย่ำงเดียว
SourceLair
แอพพลิเคชั่นนี้อนุญาตให้ผู้ใช้เขียนโปรแกรม CPP, C, Python, Fortran และอื่นๆอีกหลายภาษา ที่ใดก็ได้ที่มี
Internet โดยผู้ใช้ไม่จ าเป็นต้องลงตัวแปลภาษาแต่อย่างใด สามารถใช้งานได้ทั้งบนอุปกรณ์พกพา และ
คอมพิวเตอร์ผ่านทาง Browser ที่สามารถเชื่อมต่ออินเตอร์เน็ตได้ โดย Source code จะถูกส่งไปแปล
(Compile) และท าการลิงค์ (Link) แล้ว รัน (Run) แสดงผลบน Browser ของผู้ใช้ รูปที่ 1.14 แสดงหน้าของ
SourceLair และองค์ประกอบต่างๆ
รูปที่ 1.14 แสดงหน้าของ SourceLair และองค์ประกอบต่างๆ รวมถึงการสร้างโปรแกรมอย่างง่าย
26 | P a g e
Araya's Creation
เมื่อท าการรันโปรแกรมที่ SourceLair เขียนขึ้นให้จากการกดที่ลิงค์ดังแสดงในรูป 1.14 แล้วจะปรากฏผล
รันของโปรแกรมในส่วนของ Output ของหน้าต่าง ดังแสดงในรูปที่ 1.15
รูปที่ 1.15 แสดงส่วนของการแสดงผลรันของโปรแกรมที่รันบน SourceLair
ี่
ึ
ค าสั่ง จงท าการแกไขโปรแกรมท SourceLair สร้างขึ้นให้แสดงผลรันเป็นชื่อและรหัสของนักศกษา ท าการ
้
Capture หน้าจอ และส่งเมล์ไปที่เพื่อนที่นั่งข้างๆ
27 | P a g e
Araya's Creation
ปฏิบัติกำรส่วนที่ 2 การสร้างกระบวนการแก้ปัญหา (Algorithm) ด้วยผังงานและภาษาเทียม
ึ
ค ำสั่ง อ้างถงแบบฝึกหัดท้ายบทน า ให้นักศึกษาเขียนภาษาเทียมและวาดผังงานของ
1. การแปลงค่าอุณหภูมิที่เป็นองศาเซลเซียสให้เป็นองศาฟาเรนไฮท์
2. การค้นหาค่าที่น้อยที่สุดในกลุ่มข้อมูลใดๆ
3. การเรียงข้อมูล 4 ตัวใดๆจากน้อยไปหามาก และจากมากไปหาน้อย
28 | P a g e
Araya's Creation
1309 200 Computer Programming Laboratory
ปฏิบัติกำรที่ 1.2: Using Spyder
วัตถุประสงค์
1. สามารถใช้โปรแกรม Spyder ได้
2. สามารถพัฒนาหรือเขียนโปรแกรมด้วยภาษา python อย่างง่ายโดยใช้ Spyder ได้
3. สามารถ Run โปรแกรมภาษา python บน Spyder ได้
4. สามารถแกไขความผิดพลาดพี้นฐาน (common errors) ที่เกิดเมื่อเขียนโปรแกรมบน Spyder ได้
้
ทฤษฎีที่เกี่ยวข้อง
การพัฒนาโปรแกรมคอมพิวเตอร์ ไม่ว่าภาษาใด จะต้องมีองค์ประกอบของการสร้างข้อความ และตัว
แปลภาษาเป็นองค์ประกอบหลัก ปัจจุบันมีการพัฒนาผลิตภัณฑ์ที่มีส่วนของการสร้างข้อความและการแปลภาษา
เข้าด้วยกัน เพื่อความสะดวกของนักพัฒนาโปรแกรม ผลิตภัณฑ์ดังกล่าวเป็นกลุ่มของโปรแกรมคอมพิวเตอร์ที่
เรียกว่า IDE (Integrated Development Environment) ข้อดีของการใช้งาน IDE มีหลายประการ ประการแรก
คือ ในส่วนของการสร้างข้อความ หรือส่วนประกอบที่เรียกว่า Text Editor นั้น จะมีการเช็คไวยากรณ์ระหว่างการ
ี่
สร้างข้อความไปด้วย โดยใช้สีที่แตกต่างในแต่ละค าที่พมพ์ลงไป มีการแนะน าค าทพิมพ์ให้ ตามหลักไวยากรณ์ ท า
ิ
ให้เป็นการสะดวกต่อผู้พัฒนาโปรแกรม และทาให้มีข้อผิดพลาดน้อยลงเมื่อท าการแปลภาษา ประการที่สองที่เป็น
ข้อดีของการใช้งาน IDE คือ ตัวผลิตภัณฑ IDE จะจัดการในเรื่องที่อยู่ของไฟล์ที่เกี่ยวข้องให้โดยอัตโนมัติ โดยมีการ
์
ก าหนดที่อยู่ของไฟล์ที่เกี่ยวข้องกับโปรแกรมทพัฒนาอยู่อย่างเป็นระเบียบ ประการสุดท้ายที่ท าให้ IDE เป็นที่นิยม
ี่
ใช้โดยนักพัฒนาโปรแกรมคอมพิวเตอร์เป็นอย่างมากคือ บาง IDE นั้นสามารถเพมตัวแปลภาษาได้หลากหลาย เมื่อ
ิ่
ต้องเปลี่ยนภาษาที่ใช้ นักพัฒนาโปรแกรมกไม่ต้องไปฝึกใช้ IDE ตัวใหม่ แต่สามารถลงตัวแปลภาษาที่ต้องการเพิ่ม
็
เข้าไปได้ และท าการใช้งานได้ทันที ตัวอย่างของ IDE ที่เพิ่มตัวแปลภาษาที่หลากหลายได้ ได้แก Eclipse,
่
CodeBlocks, bloodshed, NetBeans, MS Visual Studio Express, CodeLite เป็นต้น การเลือกใช้ IDE ที่
เหมาะสมควรจะเลือก IDE ที่เป็น cross platform และ Open source คือสามารถใช้งานบนระบบปฏิบัติการที่
แตกต่างกันได้ ไม่ว่าจะเป็น Windows, Unix หรือ OS X และเป็น source code แบบเปิด ที่ให้โอกาสนักพัฒนา
โปรแกรม สามารถน าไปแก้ไขเพิ่มเติมตัวเลือกที่ต้องการได้อย่างเสรี
ในปฏิบัติการนี้ จะเป็นการแนะน า IDE ที่ใช้พัฒนาโปรแกรมภาษา python ที่ชื่อว่า Spyder ซึ่งเป็น
python IDE ที่มากับโปรแกรมชุด Anaconda โปรแกรมชุด Anaconda เป็นโปรแกรมที่รวบรวม libraries ของ
29 | P a g e
Araya's Creation
python ที่เกี่ยวข้องกับการคานวณทางคณิตศาตร์ การค านวณทางวิศวกรรม การพลอทกราฟ การจัดการกับ
ข้อมูลและการวิเคราะห์ข้อมูล ชุดโปรแกรม Anaconda มีส่วนประกอบหลักสองส่วนที่ท าให้การเขียนโปรแกรม
python เป็นไปได้อย่างสะดวก ส่วนแรกคือ IP (IPython) เป็น python command line ที่ผู้ใช้สามารถรันค าสั่ง
python สั้นๆและเห็นผลการรันได้ทันที ดังแสดงในรูปที่ 1.16 เป็นการกาหนดค่าให้กับ ตัวแปร(ชื่อ) number
หลังจากนั้นท าการเพิ่มค่าให้กับตัวแปร(ชื่อ) number ส่งผลให้ตัวแปร(ชื่อ) number มีค่าที่เปลี่ยนไป
ส่วนที่สองคือ Spyder ซึ่งเป็น python IDE ของ Anaconda ซึ่งจะใช้เป็น IDE หลักในรายวิชานี้ การ
เรียกใช้งาน Spyder ท าได้ด้วยการไปที่กลุ่มของโปรแกรม Anaconda หลังจากนั้นเลือก Spyder ดังแสดงในรูปที่
1.17
รูปที่ 1.16 ตัวอย่างการใช้งาน IP (IPython) ที่มากับ Anaconda
รูปที่ 1.17 การเรียกใช้งาน Spyder ที่มากับ Anaconda
30 | P a g e
Araya's Creation
กำรพัฒนำโปรแกรมด้วยภำษำ python
ในการเขียนโปรแกรมด้วยภาษา python นั้นจะต้องมีองค์ประกอบในการท างาน 3 ส่วนที่ช่วยในการ
พัฒนางาน คือ
้
1. องค์ประกอบในการสร้างขอความ (Text Editor)
2. องค์ประกอบตัวแปลภาษา python (python interpreter) ประกอบไปด้วยตัวแปลภาษาและ
เครื่องเสมือน (Virtual Machine)
3. ไลบรารี่
ขั้นตอนในการพัฒนาโปรแกรมภาษา python บนระบบปฏิบัติการ Windows มีดังนี้
1. ในการเขียนโปรแกรมด้วย Text Editor จะได้ไฟล์ข้อความ (Text File) หรือที่เรียกว่า Source Code มี
นามสกุล .py
2. น าไฟล์ .py ผ่านขบวนการแปลด้วยตัวแปลภาษา python (python Interpreter) โดยการสั่ง python
filename.py ที่ python shell
3. หลังจากผ่านการแปลค าสั่งแล้ว virtual machine จะท าหน้าที่เชื่อมโยง Bytecode กับ library ที่จ าเป็น
เพื่อท าการรันโปรแกรม
Python มี python shell มาให้ ซึ่งรองรับการท างานแบบทีละบรรทัดในลักษณะเดียวกันกับ MATLAB
อย่างไรก็ตามในปฏิบัติการรายวิชานี้จะใช้งาน Spyder และ IP (IPython) ซึ่งมีการติดตั้ง python Interpreter
ไว้เรียบร้อยแล้วพร้อมกับการติดตั้ง Anaconda โดยจะใช้งานหน้าต่าง Editor ของ Spyder ในการสร้างไฟล์ .py
และใช้งานเมนูของ Spyder ในการสั่งรันโปรแกรมโดยไม่ต้องไปที่ python shell
การท างานของ python Interpreter ในการรันโปรแกรม python ดังแสดงในแผนภาพที่ 1.18 ประกอบ
ไปด้วย source file ที่สร้างขึ้นด้วย Text Editor จะผ่านขั้นตอนของการแปลภาษาด้วย python Interpreter ซึ่ง
ในตัว Interpreter จะประกอบไปด้วย ตัวแปลภาษาและเครื่องเสมือน (Virtual Machine) เครื่องเสมือนจะท า
หน้าที่ในการน า Bytecode ที่ได้จากตัวแปลภาษาและดึงสิ่งที่จ าเป็นในการรันโปรแกรมมาจากไลบรารี่ เพอให้
ื่
สามารถรันโปรแกรมได้
31 | P a g e
Araya's Creation
รูปที่ 1.18 องค์ประกอบของการพัฒนาโปรแกรม python
(http://opensourceforgeeks.blogspot.com.au/2015/10/how-python-works.html)
Programming Errors
่
ข้อผิดพลาดในโปรแกรม หรือ error มีอยู่ 3 ประเภทได้แก Syntax errors, Runtime errors และ
Logic errors
Syntax errors คือการเขียนโปรแกรมผิดไวยากรณ์ของภาษาเช่น ไม่ม : ปิดท้าย while, if statements,
ี
ี
ี
ไม่ม “ ปิดข้อความ หรือ ไม่ม ‘ ปิดอักขระ ข้อผิดพลาดเหล่านี้จะปรากฏขึ้นในขั้นตอนของการเขียนโปรแกรมใน
์
ิ
Spyder ซึ่งจะมีการแจ้งเตือนในขณะที่กาลังท าการพมพ code อยู่
Runtime errors จะไม่ปรากฏระหว่างการเขียนโปรแกรมหรือใน Source code แต่จะเกิดระหว่างการ
รันโปรแกรม ซึ่งอาจท าให้โปรแกรมปิดตัวลงอย่างไม่คาดคิด Spyder จะขึ้นข้อความแจ้งว่า error เนื่องจากอะไร
ตัวอย่างของข้อผิดพลาดประเภทนี้ได้แก่ การหารด้วย 0 ซึ่งท าให้เกิดการหาค่าไม่ได้ หรือการน าผลลัพท์จากการ
ค านวณที่เป็นตัวเลขไปเก็บไว้ในตัวแปรที่เป็นสตริง ตัวอย่างของข้อผิดพลาดชนิดนี้ได้แก่ น าจ านวนเต็มหารด้วย
จ านวนเต็ม แต่คาดหวังค าตอบที่เป็นทศนิยม (Listing 1.3)
Logic errors เป็นข้อผิดพลาดที่อันตรายที่สุดในการเขียนโปรแกรม ยากที่จะค้นพบและล าบากในการ
แก้ไข ข้อผิดพลาดชนิดนี้เกิดจากตรรกะ และความรู้พื้นฐานของตัวผู้พัฒนาโปรแกรมเอง โดยเฉพาะความรู้พื้นฐาน
32 | P a g e
Araya's Creation
ทางคณิตศาสตร์ที่เป็นหัวใจส าคัญของการเขียนโปรแกรม หรือ การค านวณผิดขั้นตอน หรือการไม่ใส่วงเล็บในการ
ค านวณ ท าให้ล าดับความส าคัญของการค านวณผิดพลาด
Listing 1.3 ShowLogicErrors\main.py
if __name__ == '__main__':
pass
print("Welcome to my program")
print("35 Celsius is "+ (9/5)*35+32)
33 | P a g e
Araya's Creation
กำรใช้งำนโปรแกรม Spyder บน Anaconda
ส่วนประกอบของโปรแกรม Spyder แบ่งออกเป็น 4 ส่วนดังแสดงในรูปที่ 1.19
รูปที่ 1.19 ส่วนประกอบของโปรแกรม Spyder
ส่วนประกอบของหน้าหลักของโปรแกรม Spyder แบ่งออกเป็น 4 ส่วนด้วยกัน ดังนี้
1. เมนูหลัก (Menu Bar and Tool Bar) เป็นที่รวบรวมค าสั่งทั้งหมดส าหรับใช้งาน Spyder ค าสั่ง
ส่วนมากสามารถเรียกได้จากส่วนของค าสั่งจากเมนูหลัก
2. ส่วนหน้ำต่ำงของตัวแก้ไข (Editor Window) เป็นพื้นที่ส่วนที่ใช้ส าหรับเขียนค าสั่งและแก้ไขไฟล์
หน้าต่างนี้จะเปิดขึ้นได้เมื่อท าการเลือกไฟล์จากเมนูหลักหรือ จากทางเลือกของส่วนการจัดการด้าน
ซ้ายมือ
3. หน้ำต่ำงกำรส ำรวจ (Explorers) เป็นส่วนที่แสดง Project Files และ variables ปัจจุบันที่ก าลังใช้
งานอยู่ ใช้ส าหรับน าทางไปสู่ไฟล์ต่างๆที่เกี่ยวเนื่องกับ Project หรือ ค้นหาตัวแปรที่สนใจ โดยเฉพาะไฟล์
source code ที่ต้องท าการแก้ไข โดยปกติจะอยู่ที่ Help แต่สามารถเลือกแทปได้ด้านล่างของส่วนนี้
4. ส่วนหน้ำต่ำงข้อควำม (Logs & others) เป็นหน้าต่างขนาดเล็กทางด้านล่างของหน้าจอ ซึ่งเป็นพื้นที่ที่
ใช้ส าหรับแสดงข้อความหรือข้อผิดพลาดที่เกิดขึ้นจากการคอมไฟล์และรันโปรแกรม ทั้งผลรัน และ
errors รวมถึง logs ต่างๆที่ผู้ใช้สามารถตรวจสอบได้ เมื่อท าการพัฒนาโปรแกรม
เมนูค ำสั่งของ Spyder
เมนูหลักและแถบเครื่องมือ (Menu Bar and Tool Bar) เป็นที่รวบรวมค าสั่งทั้งหมดของ Spyder โดย
ค าสั่งเหล่านี้จะแบ่งหมวดหมู่ตามประเภทของการท างาน โดยวิธีการเรียกเมนูค าสั่งและค าสั่งย่อยเมนู สามารถท า
34 | P a g e
Araya's Creation
ได้เหมือนโปรแกรมประยุกต์ทั่วไป โดยมีคีย์ลัดพื้นฐานเหมือนๆกับโปรแกรมประยุกต์อื่นๆ เช่น Alt+F คือ File
Menu เป็นต้น
กำรสร้ำงโปรเจ็คใหม ่
เมนู File เป็นค าสั่งที่เกี่ยวกับการจัดการไฟล์ ส่วนเมนูโปรเจ็คใช้จัดการเกี่ยวกับโปรเจ็ค เช่น การสร้าง
เปิด หรือบันทึกไฟล์ หรือโปรเจ็ค สามารถสร้างโปรเจ็คใหม่ได้ด้วยการเลือกที่เมนู Projects>New Project ดัง
แสดงในรูปที่ 1.20 ผลที่ได้คือ pop up window ดังแสดงในรูปที่ 1.21
รูปที่ 1.20 แสดงการสร้าง New Project จากเมนู Projects
รูปที่ 1.21 แสดง pop up window เมื่อค าสั่ง New Project ถูกเลือก
35 | P a g e
Araya's Creation
เมื่อเลือก New Project เพอสร้างโปรเจ็คใหม่ส าหรับการเขียนโปรแกรม Python จะปรากฏหน้าต่าง
ื่
รายละเอียดของโปรเจ็คขึ้นมา ให้ท าการตั้งชื่อโปรเจ็คของตนเอง โดยให้สังเกตที่เส้นทางโฟลเดอร์ที่ท าการเก็บไฟล์
โปรเจ็คดังกล่าว ให้เลือกโฟลเดอร์ที่นักศึกษาสร้างขึ้นเองเท่านั้น การตั้งชื่อโปรเจ็ค ให้ท าการตั้งให้สื่อถึงสิ่งที่อยู่ใน
โปรเจ็ค และผู้เป็นเจ้าของโปรเจ็คดังกล่าว ต าแหน่งของ Project สามารถเลือกต าแหน่งที่ต้องการเก็บ Project
ด้วยการกด folder icon สีเหลือง โดยปกติแล้ว Project type จะเป็น Empty Project ส าหรับโปรเจ็คท ี่
สร้างใหม่ ดังแสดงในรูปที่ 1.21 ข้างต้น
เมื่อกด create แล้ว Spyder จะท าการสร้างโปรเจ็คใหม่ให้และปรากฏ Project Explorer ขึ้นที่ซ้ายมือ
ี่
ให้ท าการสร้างไฟล์ด้วยการกดสัญลักษณ์แผ่นกระดาษทมุมบนซ้าย เพื่อสร้างไฟล์ใหม่ จะได้ untitledfile ที่อยู่ใน
หน้าต่าง editor ดังแสดงในรูปที่ 1.22
รูปที่ 1.22 แสดง untitledfile เมื่อกดสร้างไฟล์ใหม่ภายใต้โปรเจ็คใหม่ที่สร้างขึ้น
ท าการเพมชุดค าสั่งสามบรรทัดดังแสดงในรูปที่ 1.23 หลังจากนั้นท าการบันทึกด้วยการกดปุ่มรูปแผ่นดิสก์
ิ่
ตั้งชื่อไฟล์พร้อมนามสกุลเป็น main.py แล้วท าการรัน โดยการกดที่ปุ่ม Play สีเขียว จะได้ผลการรันโปรแกรมที่
หน้าต่าง console มุมล่างขวา ส่วนในหน้าต่าง explorer ด้านบนขวามือ ให้เลือก variable explorer tab จะ
เห็นรายละเอียดของตัวแปร ดังแสดงในรูปที่ 1.23
36 | P a g e
Araya's Creation
รูปที่ 1.23 แสดงการแก้ไขไฟล์และรันโปรแกรมบน Spyder
กำรจัดกำรในหน้ำต่ำง Editor
ในหน้าต่าง Editor เป็นพื้นที่ใช้ในการพิมพ์ค าสั่งหรือแก้ไขโปรแกรม ควรจะรู้จักการใช้ปุ่มต่างๆ บน
คีย์บอร์ด เพื่อช่วยให้ท างานได้เร็วขึ้น
กำรคัดลอกข้อมูล
้
การคัดลอกขอมูลที่ส่วนที่ต้องการไปยังบริเวณอื่น สามารถท าได้ดังขั้นตอนต่อไปนี้
้
1. เลือกข้อมูลส่วนที่ต้องการคัดลอก โดยการกาหนดบล็อกขอมูลตามวิธีการที่แสดงในหัวข้อที่ผ่านมา
้
2. ย้ายเคอร์เซอร์ไปยังต าแหน่งปลายทาง ที่ต้องการคัดลอกขอมูลไปวาง
3. กดปุ่ม <Ctrl + Insert> เพื่อวางบล็อกของข้อมูลที่คัดลอกมา
กำรแทรกข้อมล
ู
้
การแทรกขอมูลจะต่างจากการคัดลอกข้อมูล โดยการคัดลอกท าให้ข้อมูลที่เลือกทั้งหมด แล้วน าไปวางที่
ต้องการ โดยมีวิธีการดังนี้
1. เลือกข้อมูลส่วนที่ต้องการย้ายต าแหน่ง กดปุ่ม <Ctrl + Insert>
2. ย้ายเคอร์เซอร์ไปยังต าแหน่งใหม่
3. กดปุ่ม <Ctrl + N>
กำรลบข้อมูล
การลบข้อมูลที่ไม่ต้องการออกไปจากหน้าต่าง Edit มีขั้นตอนดังนี้
1. เลือกข้อมูลส่วนที่ต้องการลบ
2. กดปุ่ม <Ctrl + Delete>
37 | P a g e
Araya's Creation
์
์
ิ
การใช้งาน Spyder จะมีการแนะน าค าสั่งที่พิมพอยู่ให้อัตโนมัติ ในกรณที่มีการพมพ keywords ลงไป
ี
และผู้เขียนโปรแกรมสามารถเลือกเติมค าให้เต็ม หรือเลือกคาสั่งที่แนะน าด้วยการกดลูกศรขึ้นลง (หากมีหลาย
ี
ค าสั่ง) แล้วเคาะ Enter อีกทั้ง Spyder จะมการเพมเครื่องหมายวงเล็บ และปีกกา เมื่อมีการพิมพ์เครื่องหมาย
ิ่
ดังกล่าวลงไปเพียงหนึ่งอัน และยังท าการ highlight เครื่องหมายวงเล็บ หรือปีกกาที่เป็นคู่ของเครื่องหมายที่
ผู้เขียนโปรแกรมสนใจอยู่ให้ด้วย ทั้งนี้ Spyder จะมการแจ้ง Syntax Error ให้ในขณะที่พิมพ ลูกเล่นต่างๆและการ
ี
์
่
ู่
ตั้งค่าให้ตรงตามความต้องการของผู้ใช้ นักศึกษาที่สนใจสามารถอานได้จากคมือของ Spyder และท าการฝึกฝน
การใช้งาน Spyder อยู่เป็นประจ า
ค ำอธิบำย HelloWorld\main.py
ในส่วนนี้เป็นการอธิบายโปรแกรมตัวอย่างคร่าวๆ ณ เวลานี้ขอให้ผู้เรียนเก็บความสงสัยบางอย่างไว้ก่อน
หลังจากที่ได้เรียนต่อไปเรื่อยๆ บทเรียนและปฏิบัติการแต่ละครั้งจะตอบปัญหาและข้อสงสัยต่างๆของผู้เรียนไป
เรื่อยๆ
Listing 1.4 HelloWorld\main.py
1. '''
2. Created on 23 Jul 2016
3. @author: Araya
4. '''
5. from math import sqrt
6. if __name__ == '__main__':
7. pass
8. print("Hello World")
9. print(sqrt(25))
จาก Source code ใน Listing 1.4 หมายเลขของแต่ละบรรทัดไม่ใช่ส่วนของโปรแกรม แต่ผู้เขียน
เพิ่มเติมเข้ามาเพอใช้ในการอางถึง code ส่วนต่างๆของโปรแกรม ในแต่ละส่วนของ Source code สามารถ
ื่
้
อธิบายคร่าวๆได้ดังนี้
บรรทัดแรกและบรรทัดที่สี่ของโปรแกรม
'''
'''
38 | P a g e
Araya's Creation
คือค าอธิบายหรือคอมเมนท์ คอมเมนท์จะถูกข้ามในการแปลภาษาของตัวแปลภาษา ในการเขียน
โปรแกรม คอมเมนท์เป็นการฝึกฝนการเขียนโปรแกรมที่ดี ใช้ส าหรับอธิบายโปรแกรมหรือเตือนผู้พัฒนาโปรแกรม
เองว่าส่วนนั้นของโปรแกรมทางานอะไร ในภาษา python คอมเมนท์สามารถสร้างได้หลายแบบ ได้แก่
#This is a single line comment
''' This is how we make
multiple lines comments
'''
ึ
บรรทัดแรกถงบรรทัดที่สี่ จึงเป็นค าอธิบายและไม่ถกแปลโดยตัวแปลภาษา สิ่งที่อยู่ระหว่างบรรทัดแรก
ู
และบรรทัดที่สี่คือชื่อของผู้เขียนโปรแกรมดังกล่าว ในที่นี้นักศึกษาควรใส่ชื่อของตนเองและรหัสนักศึกษาลงไปทุก
ครั้งที่สร้าง main module
บรรทัดที่ 5
from math import sqrt
ิ่
เป็นการเพม built-in function ที่ชื่อ sqrt ซึ่ง function ดังกล่าวถูกดึงมาจากไลบรารี่ที่ชื่อ math
บรรทัดที่ 6
if __name__ == '__main__':
pass
python มีตัวแปรพิเศษที่ชื่อ __name__ ซึ่ง python interpreter จะก าหนดให้เป็น
'__main__' หากตัว interpreter ก าลังรัน module นั้นในลักษณะโปรแกรมหลัก แต่ interpreter จะ
ก าหนดเป็นชื่ออื่นหาก module นั้นถูก import และไม่ได้ใช้รันในลักษณะโปรแกรมหลัก ส่วน pass
statement เป็น placeholder ไม่ท าอะไรในที่นี้ เนื่องจากในโปรแกรมนี้ยังไม่ได้ implement การรันแบบ
โปรแกรมหลักหรือแบบ import
บรรทัดที่ 6 และ 7 นี้ เป็นชุดค าสั่ง if เป็นการเช็คว่า __name__ ตัวแปรพิเศษนั้นคือ
'__main__' หรือไม่ ถ้าใช่ให้รัน pass statement หลัง in statement จะต้องปิดด้วย : และบรรทัด
ื่
ต่อจากนั้นจะต้องย่อหน้าเข้ามา เพอให้รู้ว่าเป็นชุดค าสั่งภายใต้เงื่อนไขของ if statement
การรันแบบโปรแกรมหลักหรือแบบ import อาจเลือกท าได้ดังตัวอย่างด้านล่างนี้
if __name__ == '__main__':
print ("This program is being run by itself")
else:
39 | P a g e
Araya's Creation
print ("I am being imported from another module")
บรรทัดที่ 8
print("Hello World")
เป็นการแสดงข้อความ Hello world ออกไปที่หน้า Console โดยใช้ฟังก์ชั่น print( ) เป็นการ
พิมพ์ข้อความที่อยู่ใน " " ออกไปที่หน้าต่าง Console
บรรทัดที่ 9 เป็นค าสั่งสุดท้ายใน main.py
print(sqrt(25))
์
บรรทัดนี้เป็นการเรียกใช้งานฟังก์ชั่น print ในการพิมพค่าของรากที่สองของ 25 ออกไปที่ Console โดย
มีการเรียกใช้งานฟังก์ชั่น sqrt( ) ในการหาค่ารากที่สองของ 25 ด้วยการเรียก sqrt(25)
ข้อสังเกตุส าหรับคนที่เคยเขียนโปรแกรมภาษาอื่นๆมาก่อน
Python เป็นภาษาที่ใกล้เคียงกับภาษามนุษย์มากที่สุด และลดรายละเอียดต่างๆในเรื่องของไวยากรณ์ลง
ไปมากเมอเทียบกับภาษาเขียนโปรแกรมอื่นๆ ซึ่งมีขอแตกต่างคร่าวๆดังนี้
้
ื่
ี
1. ไม่ม statement ส าหรับเริ่มต้นหรือปิดท้ายไฟล์โปรแกรมหลัก
2. ไม่มีสัญลักษณ์ส าหรับปิดท้ายชุดค าสั่ง
3. หากเป็นชุดค าสั่งเงื่อนไข จะใช้สัญลักษณ์พิเศษปิดบรรทัด และใช้ย่อหน้าในบรรทัดถัดไปเพื่อให้ทราบว่า
เป็นชุดค าสั่งที่เกี่ยวข้องกัน
่
4. ข้อความ ปิดด้วย single quote หรือ double quote มีคาเท่ากัน
5. เป็นภาษาของการเขียนโปรแกรมเชิงวัตถุล้วนๆ
6. ไม่ต้องมีการก าหนดชนิดข้อมูลของตัวแปร
7. ไม่จ าเป็นต้องประกาศตัวแปรก่อนใช้งาน
8. การอ้างอิงเป็นการอ้างแบบ reference ทั้งหมด ไม่มีการอางแบบ value
้
9. ชื่อตัวแปรเป็นลักษณะของการติดป้าย ไม่ใช่กล่องเก็บค่า เหมือนภาษา C/C++
อนึ่งข้อแตกต่างอื่นๆก็อาจจะมีให้เห็นในบทท้ายๆของเอกสารนี้
40 | P a g e
Araya's Creation
ปฏิบัติกำรส่วนที่ 1 กำรสร้ำงโฟล์เดอร์ หรือไดเรคทอรี่
่
ในห้องปฏิบัติการ หากนักศึกษาไมได้น าคอมพิวเตอร์พกพาของตนเองมาใช้งาน และต้องใช้งานเครื่องของ
ส านักคอมพิวเตอร์และเครือข่ายซึ่งเป็นเครื่องสาธารณะ นักศึกษาพึงตระหนักถึงการสร้างที่เก็บข้อมูลของตนเอง
และความไม่ปลอดภัยของข้อมูล เนื่องจากข้อมูลของนักศึกษาอาจถูกลบออกไปจากเครื่องเมื่อใดก็ได้ เพื่อให้การ
้
เก็บขอมูลเป็นไปอย่างเหมาะสมนักศึกษาโปรดปฏิบัติตามข้อก าหนดนี้
1. สร้างโฟลเดอร์ที่ไดรฟ์อื่นที่ไม่ใช่ไดรฟ์ C:
2. ตั้งชื่อโฟลเดอร์ว่า ComProXXXX เมื่อ XXXX คือรหัสนักศึกษาสี่ตัวสุดท้ายของตนเอง
3. เก็บงานเขียนโปรแกรมของตนเองไว้ในโฟลเดอร์นี้เท่านั้น
4. ระหว่างเขียนโปรแกรมให้ท าการ save ไฟล์อย่างสม่ าเสมอ
วิธีการสร้างโฟลเดอร์บน Windows Explorer แสดงในรูปที่ 1.24
รูปที่ 1.24 แสดงการสร้างโฟลเดอร์ในต าแหน่งและชื่อที่เหมาะสม
ปฏิบัติกำรส่วนที่ 2 กำรเขียนโปรแกรมภำษำ python โดยใช้โปรแกรม Spyder
ึ
1. ให้นักศกษาเปิดโปรแกรม Spyder โดยท าการดับเบิ้ลคลิกส์ที่ไอคอน จะเข้าสู่โปรแกรม ดัง
รูปที่ 1.17 ที่ได้กล่าวถึงในส่วนของทฤษฏีที่เกี่ยวข้อง
2. หากมีโปรเจ็คอื่นใดที่มิใช่ของนักศึกษาเปิดค้างไว้ ที่หน้าต่าง package explorer ให้เลือก project แล้ว
ให้ท าการปิดโปรเจ็คด้วยการเลือกเมนู Projects แล้วเลือก close project ดังแสดงในรูป 1.25
41 | P a g e
Araya's Creation
รูปที่ 1.25 แสดงขั้นตอนการปิดโปรเจ็คที่ไม่เกี่ยวข้องที่เปิดอยู่
3. ให้ท าการสร้างโปรเจ็คใหม่ โดยโปรเจ็คนี้ จะให้นักศกษาท าการแสดงชื่อ นามสกุลของตนเอง รวมทั้งรหัส
ึ
นักศึกษา และภาควิชาที่ศึกษาอยู่ ออกทางหน้าจอ ให้นักศกษาท าตามขั้นตอนที่ได้อธิบายไว้ในส่วนของ
ึ
ทฤษฏีที่เกี่ยวข้องในการสร้างโปรเจ็คใหม่ โดยตั้งชื่อโปรเจ็คให้สอดคล้องกับสิ่งที่โปรเจ็คกระท า เช่น
MyIntroduction, IntroduceMyself เป็นต้น หลังจากสร้างโปรเจ็คเสร็จแล้ว ก่อนที่จะท าขั้นตอนถัดไป
หน้าจอของนักศึกษาจะต้องได้ไฟล์ main.py ที่มี code เหมือนดังแสดงในรูปที่ 1.23 ทุกประการ
4. เมื่อได้ไฟล์ main.py แล้ว สิ่งแรกที่นักศึกษาต้องฝึกฝนและเรียนรู้คือการสั่งให้ Spyder รันโปรแกรมของ
ตนเอง ค าสั่งดังกล่าวสามารถเรียกได้จากเมนูบาร์ หรือกดปุ่มรันที่เป็นสัญลักษณ์ play
ื่
5. ให้นักศึกษาฝึกฝนและท าการแปลและรันโปรแกรมจนมั่นใจ แล้วท าการแก้ไขโปรแกรม เพอให้ได้ผลรันดัง
แสดงในรูปที่ 1.26 เมื่อ XXX YYY คือชื่อและนามสกุลของนักศึกษา 1234567 คือรหัสประจ าตัวของ
นักศึกษา และให้แสดงภาควิชาที่นักศึกษาสังกัดอยู่ ซึ่งควรจะเป็นหนึ่งในภาควิชาต่างๆดังนี้
Electrical engineering Chemical Engineering Civil Engineering
Industrial Engineering Mechanical Engineering
รูปที่ 1.26 แสดงผลรันที่ต้องการ
42 | P a g e
Araya's Creation
ึ
6. ให้นักศกษาปิดโปรเจ็คแรก และสร้างโปรเจ็คใหม่ โดยใน main.py พิมพ์โปรแกรมเพิ่มดังตัวอย่างแล้วรัน
โปรแกรม สังเกตุผลลัพธ์ที่เกิดขึ้น
Listing 1.5 HelloWorld\main.py
'''
Created on 23 Jul 2016
@author: Araya
'''
if __name__ == '__main__':
pass
print("Hello\nWorld\t! ")
ch=input()
ึ
7. ให้นักศกษาแก้ไขโปรเจ็คแรกของตนเองเพื่อให้ได้ผลรันออกมาดังรูปที่ 1.27 โดยให้เคอร์เซอร์กระพริบรอ
รับข้อมูลหลังจากแสดงผลแล้ว
รูปที่ 1.27 แสดงผลรันใหม่ที่ต้องการ
8. ตอบค าถามต่อไปนี้
\n มีหน้าที่อะไร ..............................................................................................
.............................................................................................................................
\t มีหน้าที่อะไร...............................................................................................
…………………………………………………………………………………
ฟังก์ชัน input ( ) มีหน้าที่อะไร ……………………………………………..
.............................................................................................................................
9. จงเขียนโปรแกรมตาม Listing 1.6 นี้ สังเกตผลรัน และอธิบายความแตกต่างของสองบรรทัดที่ใช้
print
Listing 1.6 ComputeExpression\main.py
print("(10.5 + 2 * 3) / (45 - 3.5) = \n")
print((10.5+2*3)/(45-3.5))
43 | P a g e
Araya's Creation
.............................................................................................................................
.............................................................................................................................
44 | P a g e
Araya's Creation
แบบฝึกหัด
1) เขียนโปรแกรมภาษา python แนะน าข้อมูลส่วนตัวของนักศึกษา โดยมีข้อมูลดังนี้ ชื่อ-นามสกุล, รหัส
นักศึกษา, สาขาทก าลังศกษา, ชั้นปีที่, เกรดเฉลี่ยรวม, เพศ, อายุ ให้แสดงผลดังนี้ภาพต่อไปนี้
ี่
ึ
Name : Computer Programming
ID : 5413500602
Department : Electrical Engineering
GPA : 3.75
Sex : Male
Age : 20
1.2×0.1+3.3×0.3
2) จงเขียนโปรแกรม เพื่อแสดงผลการค านวณ
0.09+0.001
ั
3) จงวาดผังงาน (flowchart) ส าหรับการนับตัวอกษร ‘e’ ที่อยู่ในประโยคภาษาองกฤษใดๆ
ั
4) จงเขียนภาษาเทียม (pseudo code) อธิบายขั้นตอนในการย้ายแผ่นดิสก์ทั้งหมดออกจากหลักที่หนึ่งไปสู่
หลักที่สามดังภาพข้างล่างนี้ โดยมีกฏว่าให้ย้ายออกได้ทีละแผ่น และแผ่นที่อยู่ข้างล่างจะต้องใหญ่กว่าแผ่น
ที่อยู่ข้างบนเสมอ
45 | P a g e
Araya's Creation