บทท่ี 5
การเขียนโปรแกรมเบอื้ งต้น
เนือ้ หา
ตัวแปลภาษา
ร้จู ักกับภาษาไพทอน
พ้นื ฐานการเขียนโปรแกรมด้วยภาษาไพทอน
จุดประสงคก์ ารเรียนรู้
เขยี นโปรแกรมเพอื่ รบั และแสดงผลข้อมลู ได้
เลือกใชต้ วั ดาเนนิ การไดอ้ ยา่ งถูกต้องและเหมาะสม
เขยี นโปรแกรมทม่ี โี ครงสรา้ งการทางานแบบลาดับได้
ตวั แปลภาษา (Compiler/Interpreter)
การเขยี นโปรกรมด้วยภาษาระดับสูง จะมลี ักษณะของโครงสร้างภาษาแตกตา่ งกันออกไป ซ่งึ โปรแกรมที่
มนุษย์เขียนขั้นมานั้น เรียกว่า โปรแกรมต้นฉบับ (Source Code) มนุษย์จะอ่านโปรแกรมต้นฉบับน้ีได้ แต่
คอมพิวเตอร์จะไม่เข้าใจคาส่ังเหล่าน้ัน เนื่องจากคอมพิวเตอร์เข้าใจแต่ภาษาเครื่อง (Machine Language) ซึ่ง
ประกอบข้ันจากเลขฐานสองเท่านี้น จึงต้องมีการใช้ตัวแปลภาษาคอมพิวเตอร์ (Translator) ในการแปลภาษา
คอมพิวเตอร์ภาษาต่าง ๆ ไปเป็นภาษาเคร่ือง ซ่ึงจะประกอบไปด้วยรหัสคาส่ังที่คอมพิวเตอร์สามารถเข้าใจและ
นาไปปฏิบตั ิได้ ตวั แปลภาษาทมี่ ีใช้ในปัจจบุ ันจะแตกต่างกนั สามารถแบง่ ได้เป็น 2 แบบ ได้แก่
1. คอมไพลเลอร์ (Compiler) เปน็ ตวั แปลภาษาท่ีใช้หลักการแปลโปรแกรมต้นฉบบั ท้ังโปรแกรมและจะ
บันทึกไว้ในลักษณะของแฟ้มข้อมูลหรือไฟล์ เมื่อต้องการเรียกใช้งานโปรแกรมก็สามารถเรียกจากไฟล์มาใช้งาน
โดยไม่ต้องทาการแปลอีก ทาให้การทางานเป็นไปอย่างรวดเร็ว โดยคอมไพลเลอร์จะตรวจสอบความถูกต้องตาม
หลักไวยากรณ์ของภาษาท่ีใช้เขียนโปรแกรม โดยจะสร้างรายการข้อผิดพลาดของโปรแกรมเพื่อใช้เก็บโปรแกรม
ต้นฉบับและคาส่ังทีเขียนไม่ถูกต้องตามกฎเกณฑ์ของภาษานั้น ๆ ซึ่งจะช่วยให้ผู้เขียนโปรแกรมสามารถแก้ไข
โปรแกรมได้
รูปที่ 5.1 การทางานของตวั แปลภาษาแบบคอมไพลเลอร์
2. อินเทอร์พรีเตอร์ (Interpreter) เป็นตัวแปลภาษาที่จะแปลภาษาระดับสูง ท่ีทางานตามชุดคาสั่งที่
เขียนไว้ทันที ซึ่งจะทาการแปลทีละคาส่ังแล้วให้คอมพิวเตอร์ทาตามคาสั่งนั้น เม่ือทาเสร็จแล้วจึงมาทาการแปล
คาสั่งลาดับถัดไป จนจบโปรแกรม ทาให้การแก้ไขโปรแกรมทาได้ง่ายและรวดเร็ว แต่ข้อเสียคือ ถ้านาโปรแกรม
นม้ั าใชง้ านอีกจะตอ้ งทาการแปลโปรแกรมใหมท่ กุ ครงั้
รปู ท่ี 5.2 การทางานของตัวแปลภาษาแบบอินเทอร์พรเี ตอร์
2
รจู้ กั กบั ภาษาไพทอน
ภาษาไพทอน (python) เป็นภาษาระดับสูง (High level Language) อยู่ในลักษณะของภาษาอินเทอร์
พรีเตอร์โปรแกรมมิ่ง (Interpreter Programming) คือจะประมวลผลทีละบรรทัด พัฒนาขึ้นโดย กีโด ฟาน รอส
ซัม (Guido van Rossum) ท่ี Centrum Wiskunde & Informatica (CWI) ในประเทศเนเธอแลนด์ เมื่อปี
พ.ศ. 2533 เปน็ ภาษาทเ่ี หมาะกบั ผู้เร่ิมตน้ เขยี นโปรแกรม เนอ่ื งด้วยมขี อ้ ดหี ลายประการ ดังนี้
1. เขียนง่าย เม่ือเทียบกับภาษาคอมพิวเตอร์ส่วนใหญ่แล้ว ภาษาไพทอนเขียนง่าย รูปแบบคาส่ังไม่
ซบั ซอ้ น สง่ ผลใหท้ าความเขา้ ใจไดง้ า่ ย
2. นาไปใช้งานจริงได้ แม้ว่าภาษาไพทอนจะเขียนง่าย เหมาะกับผู้เร่ิมต้น แต่เม่ือมีความเช่ียวชาญแล้ว
ผู้เขียนโปรแกรมสามารถเขียนโปรแกรมขนาดใหญท่ ที่ างานซับซ้อนและนาไปประยุกต์ใช้งานได้จริง
3. ตอ่ ยอดงา่ ย ภาษาไพทอน มีไลบรารีให้ใชง้ านมากมาย ช่วยให้การเขียนโปรแกรมใหม่ทาได้รวดเรว็ ขึ้น
4. มผี ้ใู ชง้ านจานวนมาก ปัจจุบนั ไพทอนเปน็ ภาษาหนึ่งท่ีได้รบั ความนิยมท่ัวโลก ทาให้มีกลุ่มผู้ใชจ้ านวน
มากท่ีพรอ้ มให้ความช่วยเหลอื และตอบคาถามเม่อื มปี ัญหา สาหรับในประเทศไทยไพทอนเร่ิมไดร้ ับความนยิ มมาก
ขึ้น โดยมีสถาบันอุดมศึกษาหลายแห่งได้บรรจุภาษาไพทอนเป็นวิชาในหลักสูตรด้านการเขียนโปรแกรม
คอมพิวเตอร์แล้ว
สงิ่ ท่คี วรรู้ก่อนการขียนโปรแกรมด้วยภาษาไพทอน
สาหรับผู้เรม่ิ ต้นเขียนโปรแกรมคอมพวิ เตอรด์ ้วยภาษาไพทอน ควรทาความเขา้ ใจกบั ความร้พู นื้ ฐาน
ต่อไปนี้ เพ่ือให้การเขียนโปรแกรมทาไดร้ วดเรว็ ขน้ึ
1. ไอดีอี ภาษาไพทอน (Python IDE) ภาษาไพทอนเป็นภาษาระดับสูง โปรแกรมท่ีเขียนข้ึนจึงต้องถูก
แปลให้เป็นภาษาเครื่องก่อนท่ีจะใช้ส่ังงานคอมพิวเตอร์ได้โดยตรง การแปลภาษาไพทอนนี้ต้องใช้ตัวแปลภาษา
(Interpreter) ซ่งึ ผเู้ ขยี นโปรแกรมต้องดาเนินการหลายขัน้ ตอนกวา่ ทจ่ี ะได้โปรแกรมท่ีถูกต้องสมบรู ณน์ าไปใช้งาน
ได้ ดังน้ันผู้เขียนโปรแกรมจึงนิยมใช้ซอฟต์แวร์เพ่ือการพัฒนาโปรแกรม ท่ีเรียกว่า ไอดีอี (IDE: Integrated
Development Environment) ซ่ึงประกอบด้วยเคร่ืองมือสาหรับแก้ไขซอร์สโค้ด (source code editor)
เครอื่ งมอื สาหรบั แก้ไขจุดบกพร่องของโปรแกรม (debugger) และเครอื่ งมือทช่ี ่วนรนั (run) ซอรส์ โคค้ ปัจจุบันได้
มีผู้สร้างไอดีอีสาหรับภาษาไพทอนจานวนมากให้เลือกใช้ตามความถนัดของผู้เขียน โดยไอดีอีภาษาไพทอนจะ
ทางานไดท้ ้งั ในโหมดอิมมีเดยี ท (immediate mode) และโหมดสครปิ ต์ (script mode)
• โหมดอิมมีเดียท เป็นการพิมพ์คาสั่งทีละคาสั่ง แล้วตัวแปลภาษาไพทอนจะทางานตามคาสง่ั
ดงั กล่าวทนั ที
• โหมดสคริปต์ เป็นการพิมพ์คาสั่งหลายคาสั่งเก็บไว้เป็นไฟล์ก่อน เมื่อผู้เขียนโปรแกรมส่ังให้
ทางาน ตัวแปลภาษาไพทอนจะทางานตามคาสั่งในโปรแกรมตั้งแต่คาสั่งแรกจนถึงคาสั่งสุดท้าย
ตอ่ เน่ืองกันไป
3
พน้ื ฐานการเขียนโปรแกรมด้วยภาษาไพทอน
1. ค่าและชนดิ ของข้อมลู
ข้อมูลจัดเป็นสิง่ พื้นฐานทส่ี ุด ทส่ี ามารถนาไปประมวลผลได้ ส่วนประกอบของข้อมลู ได้แก่ ชนิดของ
ข้อมลู คา่ ของขอ้ มูล ขอบเขตของข้อมลู
ชนิดของขอ้ มูล เช่น ตวั เลข ข้อความหรือสตรงิ (string)
ค่าของข้อมลู เชน่ 16 , ‘Python’
ค่าของข้อมูลท่ีใช้ในการประมวลผลมีหลายคลาส เช่น จานวนเต็ม (int) , สตริง (str) , จานวนจริง
(float) , และบูล (bool) ซึง่ ในภาษาไพทอนจะมีฟังกช์ นั type() ที่สามารถบอกคลาสของค่าข้อมูลได้
ตวั อย่างที่ 5.1 การตรวจสอบคลาสของขอ้ มูลดว้ ยฟงั กช์ นั type()
>> type (‘Hello’)
<class ‘str’>
>> type (16)
<class ‘int’>
2. ตวั แปร
ตัวแปร (variable) คือ ช่ือที่กาหนดขึ้นสาหรับใช้เก็บค่าในหน่วยความจา ตัวแปร จะมีชื่อ (identifier)
สาหรับใช้ในการอ้างอิงถึงค่าข้อมูล ผู้เขียนโปรแกรมสามารถใช้คาส่ังกาหนดค่า (assignment statement) เพ่ือ
ใช้ในการกาหนดให้ตัวแปรมคี ่าตามที่ตอ้ งการ
ตวั อยา่ งท่ี 5.2 การกาหนดคา่ ของตวั แปรในภาษาไพทอน
a=3
b = 4.92
p = “Python Coding”
pi = 3.142857
การตง้ั ชื่อตวั แปร
• การตัง้ ชือ่ ตัวแปรทดี่ คี วรสอ่ื ความหมายและไมซ่ า้ กบั ช่ือฟงั ก์ชนั หรือคาสงวนต่าง ๆ
• ตวั พิมพ์เลก็ และตวั พิมพ์ใหญ่คือคนละตัวกัน เช่น data กบั Data จะเปน็ ตัวแปรคนละ
ตวั กนั
• ตัวแปรท่ีสร้างข้ึนต้องไม่เว้นวรรคหรือมีช่องว่าง หากต้องการให้ตัวแปรอ่านง่ายอาจใช้
เครือ่ งหมาย underscore (_) ในการเช่ือต่อคา เชน่ room_temp
• หา้ มใชเ้ ครอื งหมายดาเนนิ การต่าง ๆ เช่น + - * / เป็นต้น ในการตัง้ ชื่อตัวแปร
• หา้ มใช้สญั ลักษณ์ เชน่ $ # @ % เป็นต้น ในการตัง้ ช่อื ตัวแปร
• ไม่เริ่มต้นดว้ ยตัวเลข แตส่ ามารถใชต้ ัวเลยในตาแหนง่ อื่น ๆ ได้ เช่น
1test ไม่สามารถตั้งชอื่ ตัวแปร
test1 เปน็ ชื่อตวั แปรได้
4
คาสงวน (Reserve Words) ของภาษาไพทอน มีดงั น้ี
and as assert break class continue def
exec finally for
del elif else except in is lambda
raise return try
from global if import False None eval
nonlocal not or pass
while with yield True
3. สตรงิ
การกาหนดข้อความในภาษาไพทอน ผู้เขยี นโปรแกรมสามารถเลือกใชเ้ ครื่องหมายอัญประกาศเดี่ยว
(‘ ’) หรอื เครอื่ งหมายอัญประกาศคู่ (“ ”) ไดต้ ามความเหมาะสม เช่น “Good” ถ้ามีความจาเป็นต้องกาหนด
ข้อความที่ต้องมีเคร่ืองหมาย “ ” เป็นส่วนหน่ึงของข้อความก็ให้เลือกใช้เคร่ืองหมาย ‘ ’ เป็นเครื่องหมาย
กาหนดข้อความแทน เชน่
คาส่ัง ผลลพั ธ์
str = ‘He said “You must come here”’ He said “You must come here”
print(str)
4. นิพจน์และตัวดาเนินการ
นิพจน์ (expression) ในภาษาไพทอน ได้แก่ ค่าของข้อมูลหรือค่าคงตัว (literal) ตัวแปร หรือการ
รวมกลุ่มของสิ่งดังกล่าวกับ ตัวดาเนินการ (operator) ตัวดาเนิการมีหลายประเภท เช่น ตัวดาเนินการ
คณติ ศาสตร์ ตวั ดาเนนิ การเปรียบเทยี บ และตัวดาเนนิ การตรรกะ
ตวั ดาเนนิ การคณิตศาสตร์ (arithmetic operator)
ตัวดาเนินการ ความหมาย ตัวอย่าง กาหนดตวั แปร ผลลัพธ์
( ) จดั กลุ่ม (hour * 60) + minute hour = 2 125
minute = 5
** ยกกาลงั r ** 2 r = 4 16
* คณู hour * 60 hour = 3 180
c = 10.2 2.04
/ หารจานวนจริง c / 5 2
- 4
// หารปดั เศษทิ้ง 8 // 3 - 43
a=5
% หารเอาเศษ 28 % 24 b = 38 68
f = 100
+ บวก a + b
- ลบ f - 32
ตัวดาเนนิ การคณิตศาสตรม์ ีลาดับความสาคญั ทใ่ี ช้ในการประมวลผล ถ้าหากในกรณที ่ีมีตัวดาเนิน
หลายตัวในนิพจนเ์ ดียวกัน การตัดสนิ ใจว่าตัวดาเนินการใดจะทางานกอ่ นหรือหลังขนึ้ อยู่กับลาดบั ความสาคญั
โดยจะเรียงลาดับความสาคญั ดงั น้ี
5
1. ( ) จดั กล่มุ มคี วามสาคญั สูงสุด
2. ** ยกกาลงั มคี วามสาคญั รองลงมา
3. * / // % คุณ หาร หารปัดเศษทิ้ง หารเอาเศษ มคี วามสาคัญเท่ากัน โดยจะกระทาตามลาดับ
จากซา้ ยไปขวาในนิพจน์
4. + - บวก และลบ มีความสาคัญต่าสุด โดยจะกระทาจากซ้ายไปขวาในนิพจน์
ตวั ดาเนนิ การเปรียบเทยี บ (relational operator)
โดยกาหนดตวั แปร x = 5 และ y = 7
ตัวดาเนินการ ความหมาย ตวั อย่าง ผลลัพธ์
== เทา่ กัน x == y False
!= ไม่เทา่ กัน x != y True
>= มากกวา่ หรือเท่ากับ x >= y False
<= น้อยกว่าหรอื เท่ากบั x <= y True
> มากกว่า x>y False
< นอ้ ยกว่า x<y True
ตัวดาเนินการตรรกะ (logical operator)
x y not x x and y x or y x ^ y
True True False True True False
True False False False True True
False True True False True True
False False Ture False False False
5. คาสงั่ การแสงดผลขอ้ มูลทางจอภาพ
คาส่ังที่ใชแ้ สดงข้อมลู ทางจอภาพ คอื คาสง่ั print() มีรปู แบบกาใชง้ านดงั น้ี
print(“ข้อความที่ต้องการพิมพ์”) หรือ print(‘ข้อความที่ต้องการพิมพ์’)
ตัวอย่างท่ี 5.3 การใชค้ าสั่ง print แสดงผลขอ้ มลู ทางจอภาพ
คาสงั่ ผลลพั ธ์
print(‘Good time’) Good time พิมพ์ข้อความแล้วขึ้นบรรทัด
ใหม่
print(“Hello”, end = “ ”) Hello Python Coding
print(“Python Coding”) พิ ม พ์ ข้ อ ค ว า ม Python coding ต่ อ จ า ก
บรรทัดทแี่ ลว้
print(“Python\nCoding”) Python
Coding
print(“Python\“Coding\””) Python“Coding”
6
รูปแบบคาสงั่ แสดงผล (print) มรี ปู แบบดังนี้
1. รูปแบบท่ีใช้ String modulo operator (%)
print(*objects , sep = ‘ ’,end = ‘\n’,file = sys.stdout, flush=False)
ตัวดาเนินการ % สามารถใช้สาหรับการจัดรูปแบบสตริง โดยมีสัญลักษณ์ % แทนชนิดของ
ข้อมูลดงั น้ี
% format ชนดิ ขอ้ มูล
%s สตริง (ขอ้ ความ)
%d เลขจานวนเต็ม
%f เลขทศนิยม
เลขทศนิยมมีจานวนตัวเลขทางด้านขวาของ
%.<number of digits>f จุดทศนิยมเทา่ กบั เลขหลงั จุดทศนยิ ม
เลขจานวนเตม็ ในระบบเลขฐานสิบหก
%x
ตวั อยา่ ง
print(‘Total students : %d , Average : %.2f’ ผลลัพธ์ Total student :144, Average : 13.45
%(144,13.450))
print(‘Python version %.1f,’%(3.0)) ผลลัพธ์ Python version 3.0
num = 100 ผลลพั ธ์ 100/2
print(“%d/2” %(num))
2. รปู แบบแสดงผลทีใ่ ชเ้ มธอด format()
รูปแบบ format() จะมีการใช้เครื่องหมาย { } เพ่ือแทนตาแหน่งท่ีตัวแปรจะถูกแทนที่และ
สามารถใหค้ าสั่งการจดั รปู แบบได้อย่างละเอยี ด
ตวั อยา่ ง
print(‘a = {0}’.format(3)) ผลลพั ธ์
print(‘{0} love to learn{1}’.format(‘Students’, ‘Python’)) a = 3
Students love to learn Python
x = 10 ผลลัพธ์
y = 20 10 and 20 and 10
print(‘{0} and {1} and {0}’.format(x,y))
ผลลพั ธ์
x = 12,345 x is 12.34 and y is 6.7
y = 6.7890
print(‘x is {0:.2} and y is {1:.1}’.format(x,y))
7
6. การใส่คาอธบิ าย (comment)
คอมเมนท์คือการเขยี นบนั ทกึ ไว้เตอื นความจาว่าคาสัง่ หรอื สว่ นของโปรแกรมทางานอยา่ งไร โดย
ขอ้ ความส่วนนีจ้ ะไม่ถกู นาไปประมวลผล (Execute) การใส่ comment ทาได้ 2 วธิ ี คอื
1. ใส่ comment ในรูปแบบบรรทัดเดยี ว ทาไดโ้ ดย ใส่คาอธิบายหลงั เครอ่ื งหมาย # เช่น
#This program is developed since May.22,2019
2. การใส่ comment ในรูปแบบหลายบรรทัด ทาไดโ้ ดยใสค่ าอธบิ ายระหวา่ ง เครื่องหมาย
‘’’ ‘’’ เชน่
‘’’
This program is first version
I love coding
‘’’
7. คาส่ังการอา่ นข้อมลู จากแป้นพมิ พ์
คาสงั่ ทีใ่ ช้ในการรบั คา่ คือคาส่ัง input( ) ซ่ึงใชร้ บั ค่าจากคยี ์บอรด์ มาเก็บไว้ในรปู แบบสาย
อกั ขระ(string)
ตัวอยา่ งท่ี 5.4 การใชค้ าสง่ั input ในการรบั ข้อมูล
x = input("Input x: ") ผลลพั ธค์ ือ
print(x) Input: 2
print(type(x)) 2
<class 'str'>
จะสังเกตเห็นวา่ เรากรอกข้อมูลเป็นจานวนเต็มแต่ไพทอนจะมองว่าเปน็ ข้อมูลชนดิ string โดย
อตั โนมัติดังน้นั หากต้องการให้รับคา่ เปน็ ชนิดของมูลแบบจานวนเต็ม (integer) หรอื จานวนจริง(float)
สามารถใชค้ าส่งั ดังน้ี
ตัวอยา่ งที่ 5.5 การรับข้อมลู ตวั เลขจานวนเตม็ (integer) จากแป้นพิมพ์
n = int(input("Input number: ")) ผลลพั ธค์ ือ
print(n) Input number: 25
print(type(n)) 25
<class 'int'>
ตวั อยา่ งท่ี 5.6 การรบั ข้อมูลตวั เลขทศนยิ ม (float) จากแปน้ พิมพ์
pi = 3.1459265 ผลลพั ธค์ ือ
r = float(input("Input radius: ")) Input radius: 2
area = pi * r ** 2 area of circle = 12.583706
print("area of circle = {}" .format(area)) Input radius: 5
area of circle = 78.648162
8
8. การแปลงชนิดของข้อมลู (type conversion)
เนอ่ื งจากภาษาไพทอนมีความยดื หยุ่นในการแปลงชนิดข้อมูล ดังน้นั เราจึงสามารถจัดการแปลง
ข้อมลู ได้ตาวัตถปุ ระสงค์การใช้งาน ยกตัวอยา่ งเช่น หากเรานาตวั แปรทเี่ ก็บคา่ สตริงจานวนสองตวั แปร
มาบวกกัน ผลลัพธ์ที่ได้จะเปน็ การเชอ่ื มต่อสตรงิ ดงั ตัวอยา่ ง ดังนัน้ หากต้องการนาตวั แปรทั้งสองมา
คานวณจาเป็นต้องมีการแปลงชนิดขอ้ มูลจากสตริงไปเป็นจานวนเต็มก่อน
ตวั อย่างที่ 5.7 การแปลงชนิดข้อมลู ประเภทข้อความเป็นตวั เลขจานวนเต็ม
a = "2" ผลลพั ธค์ ือ
b = "3" 23
print(a+b)
a = "2" ผลลพั ธค์ ือ
b = "3" 5
print(int(a) + int(b))
อีกกรณคี ือการใชค้ าสัง่ input ซึง่ จะเป็นการรบั ค่าแบบสตริง ดังนน้ั หากเราต้องการนาไปคานวณเรา
สามารถแปลงชนดิ ข้อมูลไดด้ งั ตัวอยา่ ง
ตัวอย่างท่ี 5.8 การแปลงชนิดขอ้ มลู ประเภทข้อความเป็นตวั เลขทศนยิ ม
x = float(input("Enter a number: ")) ผลลพั ธค์ ือ
y = float(input("Enter another number: ")) Enter a number: 1
print(x+y)
Enter another number: 2
3.0
x = float("123" * int(input("Enter a ผลลพั ธค์ ือ
number:" ))) Enter a number:3
print(x) 123123123.0
9