The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by Araya Pothisorn Florence, 2020-04-26 12:12:39

Compro63

1309 200 Computer Programming Laboratory

ปฏิบัติการที่ 2: Elementary Programming



วัตถุประสงค์
1. สามารถเขียนโปรแกรมภาษา Python อย่างง่ายได้
2. สามารถก าหนดตัวแปรได้ถูกต้องตามกฎของการตั้งชื่อตัวแปร

3. สามารถก าหนดตัวแปรและชนิดข้อมูลในโปรแกรมภาษา Python ได้
4. สามารถเรียกค่าคงที่จาก SciPy ออกมาแสดงผลได้
5. สามารถติดต่อกับ Console ได้อย่างเหมาะสม



ทฤษฎที่เกี่ยวข้อง

พื้นฐานการเขียนโปรแกรมเบื้องต้นเริ่มจากความเข้าใจเกี่ยวกับตัวแปร การเขียนค าสั่งเพื่อ
ค านวณทางคณิตศาสตร์ และการติดต่อผู้ใช้ผ่าน Console อย่างเหมาะสม การประกาศตัวแปรให้
เหมาะสมกับชนิดข้อมูลที่ต้องการใช้งาน รวมถึงเข้าใจถึงหลักการท างานของโปรแกรมที่เป็นการท า
ครั้งละบรรทัด ตั้งแต่บรรทัดบนลงล่าง ซึ่งเป็นการท างานที่เป็นขั้นเป็นตอน ทั้งนี้ ในรายวิชานี้ ทุก

โปรแกรมที่เขียนมีโครงสร้างหลักๆดังน ี้

1. รับข้อมูลจากผู้ใช้

2. ท าการค านวณ
3. แสดงผลออกทางหน้าจอ
ส่วนโครงสร้างทั่วไปของโปรแกรมภาษา Python มีดังน ี้

1. ส่วนหัวโปรแกรม ได้แก่ import
2. ส่วนฟังก์ชั่นหลัก
2.1 ส่วนของการประกาศตัวแปร
2.2 ส่วนของการก าหนดค่า/รับข้อมูลจากผู้ใช้
2.3 ส่วนของการประมวลผล

2.4 ส่วนของการแสดงผลที่ได้จากการค านวณ
3. ส่วนฟังก์ชั่นอนๆ
ื่


ในปฏิบัติการนี้ ผู้เรียนจะได้เรียนรู้การใช้งาน Debugger ใน Debugging mode เพื่อตรวจ
ตราความเปลี่ยนแปลงของสิ่งที่ตัวแปรเก็บอยู่ ซึ่งความสามารถนี้จะช่วยให้ผู้เรียนเข้าใจการใช้งานตัว
แปรอย่างลึกซึ้ง และจะง่ายต่อการท าความเข้าใจโปรแกรมที่ท างานซับซ้อนซึ่งจะได้เรียนในบทต่อๆไป












67 | P a g e




Araya's Creation

ปฏิบัติการส่วนที่ 1 การใช้งาน Debugger ใน Debugging mode


ตัวแปร (variable) คือพื้นที่หน่วยความจ าในคอมพิวเตอร์ที่ถูกจองโดยการประกาศ
(declaration) ไว้ในโปรแกรม ตัวแปรต้องมีชื่อ เพื่อให้การอ้างอิงถึงเนื้อที่หน่วยความจ าส่วนที่จองไว้
ได้อย่างสะดวก การตั้งชื่อให้กับตัวแปรจะต้องตั้งให้เหมาะสมกับการใช้งานของตัวแปร ขนาดของ

หน่วยความจ าที่จองในตอนประกาศตัวแปรขึ้นอยู่กับชนิดข้อมูลที่จะเก็บลงไป ดังนั้น การประกาศตัว
แปรให้เหมาะสมกับข้อมูลที่ต้องการใช้ จะเป็นการประหยัดเนื้อที่หน่วยความจ าในการประมวลผล



ได้ชื่อว่าตัวแปร นั่นหมายความว่าสิ่งที่เก็บอยู่ในพื้นที่หน่วยความจ าสามารถเปลี่ยนแปรได้
นั่นคือการประกาศตัวแปรขึ้นมาหนึ่งตัว สามารถน าไปเก็บข้อมูลได้ซ้ าแล้วซ้ าเล่า สิ่งที่เก็บอยู่ใน
หน่วยความจ าซึ่งสามารถเรียกหาได้โดยใช้ชื่อตัวแปร ก็จะมีการเปลี่ยนแปลงได้หากมีการก าหนดไว้ใน

โปรแกรม การตรวจสอบว่าตัวแปรเก็บค่าอะไรอยู่ ณ ขณะใดๆสามารถท าได้ใน Eclipse โดยใช้
Debugger เข้าช่วย


ค าสั่ง ให้ท าการสร้างโปรเจ็คใหม่ขึ้นมาตั้งชื่อโปรเจ็คว่า DebuggerTest แล้วท าการคัดลอก
Listing 2.5 ลงไปใน main.py ของโปรเจ็คที่ได้สร้างขึ้น การท า Debugging ในการติดตามตัวแปร
สามารถท าได้โดย ท าการเพิ่ม Breakpoints ให้กับบรรทัดที่เราสนใจ สามารถท าได้ด้วยการดับเบิ้ล
คลิกส์ที่หน้าตัวเลขหมายเลขบรรทัด เพื่อเพิ่ม Breakpoint จะได้ pin สีเขียวปรากฏขึ้น ดังแสดงใน
รูปที่ 2.3







































รูป 2.3 เพิ่ม Breakpoints ที่บรรทัดที่เราสนใจ ก่อนการเริ่มท างานใน Debugging mode


68 | P a g e




Araya's Creation

Listing 2.5 DebuggerTest\main.py

1. class Test(object):
2. def mod1(self,i):
3. if i < 10:
4. print(i)
5. i+=1
6. self.mod1(i)
7. if __name__ == "__main__":
8. Test().mod1(0)

ท าการตั้ง breakpoints ให้กับบรรทัดที่ 9 ดังแสดงในรูปที่ 2.3 จะได้จุดพินสีเขียวที่หน้าหมายเลข

บรรทัด ท าการเริ่ม Debugging mode ด้วยการกด F11 หรือเลือกเมนู Run >> Debug จะ
ปรากฏหน้าต่างเปลี่ยนแปลง perspective ให้กด Yes หลังจากนั้นให้สังเกตความเปลี่ยนแปลงบน
หน้าต่าง Variables และจุดสีเทาที่ได้ตั้งไว้ เมื่อท าการกด F5 เพื่อให้ Debugger ท างานสเต็ปถัดไป
จะเห็นความเปลี่ยนแปลงของค่าที่อยู่ในตัวแปร ดังแสดงในรูปที่ 2.5 สามารถยกเลิกหรือสิ้นสุด

Debugging mode ด้วยการกด shift+F8 หรือเลือก stop จากเมนูใน Debug menu สามารถ
เปลี่ยน เพิ่ม ลด breakpoint ด้วยการไปที่ Run เลือก remove breakpoints หรือคลิกขวาที่จุดสี
เทาแล้วเลือก disable breakpoint แทนการลบออกไป




























รูป 2.4 แสดงการใช้ Debugging mode, adding breakpoints, start/stop


หากต้องการปรับ Perspective ให้กลับเป็นดังเดิม สามารถท าได้ ดังแสดงในรูปที่ 2.6














69 | P a g e




Araya's Creation

รูปที่ 2.5 การปรับ Perspective

ค าสั่ง ให้ท าการเปลี่ยนแปลงค่าที่ก าหนดให้กับ radius เป็น 1.5 ไมครอน ลองท าการ Debug
โปรแกรม สังเกตผลที่ได้

Hint: การก าหนดค่าด้วยสัญกรณ์วิทยาศาสตร์ใน Python ใช้สัญลักษณ์ E เช่น 1.23E2 แทน 123
ผลที่สังเกตได ้
................................................................................................................................................................

................................................................................................................................................................

ปฏิบัติการส่วนที่ 2 การรับข้อมูลเข้ามาจากคีย์บอร์ด
โปรแกรมที่ดีต้องมีความยืดหยุ่น หากท าการก าหนดค่ารัศมีไว้ในโปรแกรม ถ้าต้องการเปลี่ยนแปลงค่า

ของรัศมี ก็จะต้องเข้าไปเปลี่ยนในโปรแกรม ต้องท าการคอมไพล์ใหม่ และรันอีกครั้ง การรับค่าจาก
คีย์บอร์ดผ่านทาง Console เป็นวิธีการสื่อสารติดต่อกับผู้ใช้ในการรับ input เข้าไปสู่โปรแกรมอย่าง
ง่ายที่สุด แต่ผู้เรียนต้องพึงระลึกว่าโปรแกรมท างานอย่างไร ค่าที่จะใส่เข้าไปทดสอบคืออะไร และผลที่
จะได้รับคืออะไร โดยให้นึกถึงสิ่งเหล่านี้

 เวลาผู้คุมปฏิบัติการมาตรวจ ผู้คุมคือผู้ใช้โปรแกรม ผู้คุมไม่ได้เป็นคนเขียนโปรแกรม
 อย่ารันโปรแกรมแล้วเกิดหน้าว่าง ต้องติดตอกับผู้ใช้ด้วยข้อความที่เหมาะสม

 มีการค านวณด้วยมือไว้ก่อนเสมอว่าสิ่งที่ก าลังจะป้อนเข้าไปจะได้ผลรันเป็นอย่างไร


ค าสั่ง ให้สร้างโปรเจ็คใหม่ โดยตั้งชื่อว่า ComputeAreaWithInput หลังจากนั้นให้ท าการคัดลอก
โค้ดจาก main.py ของโปรเจ็คก่อนหน้านี้ (ComputeArea) แล้วท าการแก้ไขโปรแกรมให้รับค่ารัศมี
จากผู้ใช้ผ่านทาง Console Input

ปฏิบัติการส่วนที่ 3 การใช้งานค่าคงที่





70 | P a g e




Araya's Creation

ค่าคงที่คือสิ่งที่จะไม่มีการเปลี่ยนแปลงตลอดทั้งโปรแกรม เสมือนค่าคงที่ในการค านวณเชิงวิศวกรรม
เช่น ค่า π ค่าสัมประสิทธิ์แรงเสียดทาน µ ค่าประจุของอิเล็กตรอนหนึ่งอิเล็กตรอน e เป็นต้น ค่า

เหล่านี้ส่วนมากจะเป็นสัญลักษณ์พิเศษในสูตรค านวณทางวิศวกรรม ซึ่งไม่มีอักขระภาษาอังกฤษใดมา
แทนที่ได้ ดังนั้นเวลาตั้งชื่อค่าคงที่ในการเขียนโปรแกรม ให้ค านึงถึงการออกเสียงเรียกค่านั้นๆแล้ว
แทนด้วยชื่อที่จะตั้ง เช่นค่า π อ่านว่า พาย ภาษาอังกฤษใช้ค าว่า PI หรือค่า สัมประสิทธิ์แรงเสียด

ทานที่แทนด้วยสัญลักษณ์ µ อ่านว่ามิว ภาษาอังกฤษใช้ค าว่า MEW เป็นต้น

ค าสั่ง จงท าการแก้ไขโปรเจ็ค ComputeAreaWithInput โดยให้มีการก าหนดค่าคงที่ PI เป็น
3.145 ท าการแก้ไขโปรแกรมให้ค านวณหาพื้นที่โดยใช้ค่า PI ที่ได้ก าหนดขึ้น แล้วลองปรับเรียกใช้งาน

ค่า PI จาก SciPy ด้วยการ import scipy.pi แล้วท าการปรับในส่วนของการค านวณให้ใช้ pi แทน
การใช้ PI สังเกตผลที่ได้
ผลที่สังเกตได ้
................................................................................................................................................................

................................................................................................................................................................

ปฏิบัติการส่วนที่ 4 การก าหนดรูปแบบการแสดงผล

การแสดงผลข้อมูลออกที่หน้าจอ สามารถก าหนดรูปแบบการแสดงผลได้ ไม่ว่าจะเป็นจ านวนดิจิต
หรือจ านวนหลักทศนิยมกี่ต าแหน่ง เพื่อให้เหมาะสมกับข้อมูลที่ต้องการแสดงออกแก่ผู้ใช้
ค าสั่ง จงท าการแก้ไขโค้ดจากโปรเจ็คที่ได้ในปฏิบัติการส่วนที่ 3 ให้มีการแสดงผลออกเป็นทศนิยม
2 ต าแหน่ง และให้แสดงผลชิดขวา โดยก าหนด field width ให้เป็น 10 ดิจิต รันโปรแกรม และ
สังเกตผลที่ได้

ผลที่สังเกตได ้
................................................................................................................................................................
................................................................................................................................................................

ปฏิบัติการส่วนที่ 5 การประมวลผลทางคณิตศาสตร์

การค านวณเชงวิศวกรรมส่วนมากจะมีการใช้ฟังก์ชั่นพื้นฐานทางคณิตศาสตร์ได้แก่การใช้เลข
ยกก าลัง การหาค่าลอการิทึ่ม การหาค่าตรีโกณต่างๆ ฟังก์ชั่นเหล่านี้มีให้เรียกใช้งานอยู่ในไลบรารี่ที่ชื่อ
cmath

ค าสั่ง จงสร้างโปรเจ็คใหม่เพื่อเขียนโปรแกรมค านวณหาระยะทางระหว่างจุด A ( , )และจุด
1
1
B ( , ) เมื่อระยะห่างระหว่างจุดหาได้จากสูตร
2
2
2
= √ +
2
ก าหนดให้รับพิกัดเข้ามาจากผู้ใช้ และแสดงผลเป็นทศนิยม 3 ต าแหน่ง











71 | P a g e




Araya's Creation

แบบฝึกหัด
ค าสั่ง ให้นักศึกษาน ารหัสนักศึกษาของตนเอง modulus ด้วย 3 หากได้เศษ 0 ให้ท าข้อ 3 เศษ 1

ท าข้อ 1 และเศษ 2 ท าข้อ 2 โดยท าการเขียนโค้ดในโปรเจ็คใหม่ เพื่อหาผลลัพท์ของการท า modulo
รหัสนักศึกษาของตนเองก่อนท าการเขียนโค้ด ตามโจทย์ของข้อที่ได้ต่อไปนี้
1. The polar coordinates of a point consist of the distance, r, from a specified
origin and an angle, θ, with respect to the x-axis. The point’s x and y coordinates are

related to its polar coordinates by these formulas:
= cos และ = sin
Using these formulas, write a C program to calculate the x and y coordinates of a
point with the polar coordinates r = 10 and θ = 30 degrees. Verify the results your

program produces by calculating the results manually. After verifying that your
program is working correctly, use it to convert the polar coordinates r = 12.5 and θ =
67.8 degrees into rectangular coordinates.
Input: r, θ

Output:
2. The number of years it takes for an isotope of uranium to decay to one-half
an original amount is given by this formula, where , the decay constant (which is

equal to the inverse of the mean lifetime), equals 0.00012:
ln 2
ℎ =

Using this formula, write, compile, and execute a C program that calculates and

displays the half-life of this uranium isotope. Verify the result your program produces
by using a hand calculation. After verifying that your program is working correctly, use
it to determine the half-life of a uranium isotope with = 0.00026.
Input:
Output: half life


3. A model to estimate the number of grams of a radioactive isotope left after
t years is given by this formula:

= ( ) −0.00012
Using this formula, write, compile, and execute a C program to determine the

amount of radioactive material remaining after 1000 years, assuming an initial
amount of 100 grams. Verify the display your program produces by using a hand
calculation. After verifying that your program is working correctly, use it to determine
the amount of radioactive material remaining after 275 years, assuming an initial

amount of 250 grams.
Input:
Output:



72 | P a g e




Araya's Creation

บทที่ 2

การเขียนโปรแกรมคอมพวเตอร์เบื้องต้น

(Elementary Programming)

ในบทนี้จะกล่าวถึงโครงสร้างของภาษา กฎเกณฑ์การตั้งชื่อ การก าหนดตัวแปรและค่าคงที่
ชนิดของข้อมูลในภาษา Python การรับข้อมูลจากคีย์บอร์ด และการแสดงผลออกทางหน้าจอ ซึ่ง

หัวข้อต่างๆดังกล่าวเป็นพื้นฐานของการเขียนโปรแกรมภาษาคอมพิวเตอร์ ในเอกสารนี้ ภาษา
Python เป็นภาษาหลักในการเขียนโปรแกรม

2.1 Python Shell
Python มีเครื่องมือส าหรับเขียนโปรแกรมในลักษณะของ Script นั่นคือ การรันทีละค าสั่ง
ทาง Command Line เครื่องมือนี้คือ Python Shell ซึ่งเป็น GUI ของ Python การเรียกใช้งาน

Python Shell บนระบบปฏิบัติการวินโดวส์ สามารถท าได้ด้วยการไปที่ Program >> Python >>
IDLE จะได้หน้าต่าง Python Shell ดังแสดงในรูปที่ 2.1



































รูปที่ 2.1 หน้าต่าง Python Shell แสดงตัวอย่างองค์ประกอบต่างๆ
สัญลักษณ์ >>> เรียกว่า prompt ผู้พัฒนาสามารถรันค าสั่งต่างๆทดสอบการเขียนโปรแกรม
สั้นๆได้ โดยไม่ต้องเปิดใช้งาน Eclipse ชุดค าสั่งต่างๆที่ใช้ก็คล้ายคลึงกันกับการเขียนบน Eclipse IDE

ในเอกสารอาจกล่าวถึงการใช้ Python Shell ในบางส่วนที่เป็นการทดสอบชุดค าสั่งสั้นๆ

43 | Page













Araya's Creation

2.2 โครงสร้างหลักของโปรแกรมภาษา Python

ลักษณะโครงสร้างของโปรแกรมภาษา Python นั้นจะประกอบด้วยกัน 3 ส่วนหลัก คือ ส่วน

หัวของโปรแกรม ส่วนฟังก์ชั่นหลัก และส่วนฟังก์ชั่นอื่นๆ ดังแสดงใน Listing 2.1

Listing 2.1 ComputeArea\main.py
1. '''
2. Created on 23 Jul 2016

3. @author: Araya
4. '''
5. from math import pow
6. def foo(x):
7. print("You are printing in foo, " + str(x))
8. return
9. PI = 3.14 # there is no constant in python,
you just don't change it
10. if __name__ == '__main__':
11. pass
12. radius = 20
13. area = PI * pow(radius, 2)
14. print("Area is " + str(area))
15. foo(5)

ส่วนหัวของโปรแกรม (Header Part)
เป็นส่วนที่ใช้ก าหนดค าอธิบายเกี่ยวกับโปรแกรม และมีส่วนที่แจ้งให้ตัวแปลภาษาดึงฟังก์ชั่น

ที่จ าเป็นในการรันโปรแกรมเขามา โดยธรรมชาติของภาษา Python มีการเก็บชุดฟังก์ชั่นต่างๆใน

ลักษณะของ package ไว้ใน module และอนุญาตให้ผู้พัฒนาสามารถดึง module หรือส่วนของ
module ของผู้อื่นเข้ามาใช้งานในโปรแกรมของตนเองได้ module ต่างๆเหล่านี้บางครั้งถูกเรียกว่า
ั้
library หากต้องการดึงทง module จะใช้ import statement หากต้องการดึงบางส่วนใน
module จะใช้ from … import statement ในโปรแกรมตัวอย่างนี้เป็นการดึงการใช้งาน

ฟังก์ชั่น pow จาก module ที่ชื่อ math ดังบรรทัดที่ 5 ในโปรแกรมตัวอย่าง

รูปแบบการใช้งาน import

import module_name1[, module_name2,…]
หาก module_name1 มี m_function() อยู่ เวลาเรียกใช้งาน m_function() จะใช้

งานในลักษณะนี้
module_name1:m_function()

รูปแบบการใช้งาน from…import
from module_name1 import m_function[, extra_function, …]







44 | Page



Araya's Creation

เป็นการ import เฉพาะ m_function และ extra_function จาก module_name1
module ดังนั้นเวลาเรียกใช้งาน m_function และ extra_function จะใช้งานใน

ลักษณะนี้
m_function()
extra_function()


Built-in Functions ที่ไม่ต้อง import
Python มี Built-in functions ให้เรียกใช้งานโดยไม่ต้อง import module ซึ่งใน Python 3.5.x มี
รายการดังนี้ (https://docs.python.org/3/library/functions.html) ฟังก์ชั่นเหล่านี้เป็นฟังก์ชั่น


พื้นฐาน การท างานของฟงก์ชั่นสามารถเดาได้จากชื่อของฟงก์ชั่นได้เช่น abs() เป็นการให้ค่า
absolute ของ number object ที่ใส่เข้าไป หรือ int() เป็นการท าสิ่งที่อยู่ในวงเล็บให้เป็นชนิด
จ านวนเต็ม str() เป็นการแปลงให้เป็นสตริง float() เป็นการแปลงให้เป็นชนิดทศนิยม
complex() เป็นการสร้างจ านวนเชิงซ้อน เป็นต้น
abs() dict() help() min() setattr()
all() dir() hex() next() slice()
any() divmod() id() object() sorted()
ascii() input() oct() bin() eval()
int() open() str() bool() exec()
ord() sum() filter() pow() super()
bytes() float() iter() print() tuple()
callable()format() len() property()type()
chr() list() range() vars() classmethod()
getattr() locals() repr() zip() compile()
globals() map() reversed()complex() hasattr()
max() round() delattr() hash() memoryview()
set() staticmethod() enumerate()
isinstance() bytearray() issubclass()
frozenset() __import__()


Note: จะเห็นว่า pow() เป็น Built-in function นั่นหมายความว่าการ import ด้วย from
math import pow จะท าให้การเรียกใช้ฟังก์ชั่นชื่อ pow ในโปรแกรมตัวอย่างเป็นการเรียก

pow() ที่อยู่ใน math module ไม่ใช่ pow() ที่อยู่ใน built-in function แม้จะมีชื่อเดียวกันก ็
ตาม


ไลบรารี่หรือโมดูลส าคัญที่ควรทราบ
ไลบรารี่ที่เกี่ยวกับการคานวณเชิงวิศวกรรมมีดังนี้

numbers — Numeric abstract base classes
math — Mathematical functions
cmath — Mathematical functions for complex numbers

45 | Page













Araya's Creation

decimal — Decimal fixed point and floating point arithmetic
fractions — Rational numbers

random — Generate pseudo-random numbers
statistics — Mathematical statistics
นอกจากนี้แล้ว ผู้พัฒนายังสามารถติดตั้ง package เพิ่มเติม ที่ประกอบไปด้วย modules
ต่างๆมากมาย ด้วยการใช้งาน pip (Python Package Index) โดยการติดตั้ง pip ที่ Python shell

ก่อนการใช้งาน pip ด้วยค าสั่ง python get-pip.py ข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้ง module ด้วย
pip อยู่ที่ https://docs.python.org/3.6/installing/index.html ในการเขียนโปรแกรมทาง
วิศวกรรมอาจได้ใช้งาน matplotlib (http://matplotlib.org/users/installing.html) ซึ่งมีอยู่ใน

Anaconda และ Canopy

ส่วนฟังก์ชั่นอื่นๆและการก าหนดค่าโกลบอล (Other Functions and Global variables)

เป็นส่วนของการก าหนดฟังกชั่นอื่นๆ ได้แก่ฟังก์ชั่นที่ผู้ใช้ก าหนดเอง (User-defined
functions) และการก าหนดค่าให้กับชื่อ (ตัวแปร) ต่างๆที่จะถูกเรียกใช้งานได้ในไฟล์ main.py
ทั้งหมด


def foo(x):

print("You are printing in foo, " + str(x))

return


เป็นการก าหนดฟังก์ชั่นที่ผู้ใช้ก าหนดเอง ชื่อฟังก์ชั่นคือ foo มีอาร์กิวเมนต์หนึ่งตัวชื่อ x ใน

ฟังก์ชั่นมีการพมพออกไปที่ Console ด้วยฟังก์ชั่น print() การเขียนฟังก์ชั่นจะมีการอธิบาย

อย่างละเอียดในบทต่อๆไป

PI = 3.14 # there is no constant in python, you just
don't change it

เป็นการก าหนดค่าคงที่ 3.14 ให้เรียกว่า PI ในภาษา Python ให้อิสระแก่ผู้พัฒนาโปรแกรม
ในการก าหนดสิ่งต่างๆ ดังนั้นเมื่อเราต้องการใช้ชื่อ PI ส าหรับค่า 3.14 เราก็จะไม่ไปเปลี่ยนค่า PI

ในภายหลัง กล่าวคือไม่มการใช้ชื่อ PI ในการเรียกค่าอื่นๆที่ไม่ใช่ 3.14

ในการเขียนโปรแกรมให้พยายามหลีกเลี่ยงการก าหนดตัวแปรหรือชื่อในส่วนนี้ (Global
variable) และการใช้งานค่าพาย สามารถเรียกได้จาก math module โดยไม่ต้องก าหนดเอง ด้วย

การสั่ง

from math import pow, pi

จะท าให้สามารถใช้ pi ที่เป็นค่าจาก Built-in มาใช้ในการค านวณได้ดังนี้


area = pi * pow(radius, 2)






46 | Page



Araya's Creation

ส่วนโปรแกรมหลัก (Main)
เป็นส่วนเริ่มการท างานหลักของโปรแกรม ในโปรแกรมตัวอย่างนี้เริ่มจากบรรทัดที่ 10 ถึง

บรรทัดที่ 15 ซึ่งประกอบไปด้วย statement ต่างๆ

if __name__ == '__main__':
pass
เป็นส่วนของการตรวจสอบว่าโปรแกรมรันในลักษณะของโปรแกรมหลักหรือรันในลักษณะ
ที่ถูกดึงมาร่วม ซึ่งได้อธิบายแล้วในบทที่ 1

radius = 20
เป็นการก าหนดให้จ านวนเต็ม 20 มีชื่อเรียกว่า radius
area = PI * pow(radius, 2)
เป็นการน าชื่อ radius มาใช้ในการเรียกใช้งานฟังก์ชั่น pow ซึ่งฟังก์ชั่น pow นี้มีรูปแบบ
y
การใช้งานคือ pow(x,y) จะให้ค่าของ x ดังนั้นการเรียก pow(radius,2) คือการหาค่า
radius นั่นเอง และ PI*pow(radius,2) ก็คือการหาค่าพื้นที่วงกลมนั่นเอง ผลลัพท์ที่ได้จะ
2
ถูกเรียกว่า area ซึ่งเนื่องจาก PI มีค่าเป็นทศนิยม จึงท าให้ผลลัพท์ที่ได้เป็นค่าทศนิยม

print("Area is " + str(area))
เป็นการแสดงข้อความออกที่หน้าต่าง Console โดยใช้ฟังก์ชั่นที่ชื่อว่า print() ฟังก์ชั่น

นี้สามารถใช้พมพ์วัตถุออกไปที่ไฟล์และสตรีมชนิดอื่นๆได้ด้วยหากเพิ่มอาร์กิวเมนต์ให้กับมัน แต่ในการ

ใช้งานเบื้องต้นนี้จะใช้พิมพข้อความออกไปที่ Console โดยข้อความจะอยู่ใน “ ” และใช้ + ในการ
ต่อข้อความ
ฟังก์ชั่น str() เป็นการแปลงสิ่งที่อยู่ในวงเล็บให้เป็นข้อความ ในที่นี้สั่ง str(area)
จะท าการแปลงสิ่งที่เรียกว่า area (ผลของการค านวณที่เป็นทศนิยม) ให้กลายเป็นข้อความเพอให้
ื่

สามารถเชื่อมต่อกับขอความก่อนหน้าเครื่องหมาย + ในส่วนของการเรียกใช้งานฟังก์ชั่น print()
ได้

foo(5)
เป็นการเรียกใช้งานฟังก์ชั่น foo() ที่ถูกก าหนดไว้ก่อนหน้าในโปรแกรม การก าหนด
ฟังก์ชั่น foo นี้เรียกว่าเป็น user-defined function ซึ่งจะมีการอธิบายโดยละเอียดในบทต่อๆไป


Note: การเขียนโปรแกรมเป็นการท างานบรรทัดต่อบรรทัด หากไม่มีการก าหนด PI และฟังก์ชั่น
foo () ไว้ก่อนหน้าส่วนของโปรแกรมหลัก จะก่อให้เกิด Error


การท างานของโปรแกรม
จะสังเกตเห็นได้ว่า ขั้นตอนการท างานในฟังก์ชั่นหลักของโปรแกรมใน Listing ที่ 2.1 คือ

1. ตั้งค่ารัศมีให้กับชื่อ radius (Set radius)

47 | Page













Araya's Creation

2. ท าการค านวณหาค่าพื้นที่ (Compute area)
3. แสดงผลค่าพื้นที่ที่ค านวณได้ (Display area)
ขั้นตอนเหล่านี้เป็นขั้นตอนมาตรฐานของการเขียนโปรแกรมในรายวิชานี้ แต่ละขั้นตอนต้องอยู่
ื้


ในล าดับดังกล่าว นั่นหมายถึง จะต้องไม่มการคานวณหาพนที่ก่อนที่จะมีการก าหนดค่าให้กับรัศมีของ
วงกลม ผู้เรียนจ าเป็นที่จะต้องเข้าใจว่า โปรแกรมทางานเป็นล าดับ กล่าวคือจะท าการรันทีละบรรทัด

เริ่มจากบรรทัดบนสุดเสียก่อน การใช้งานชื่อ PI, radius และ area จะต้องเกิดขึ้นหลังจากที่มีการ
ก าหนดให้ชื่อเหล่านี้สอดคล้องกับค่าเสียก่อน โดยใช้เครื่องหมาย = ในการก าหนด เมื่อถึงบรรทัดที่
12 ชื่อของ 20 คือ radius หรืออาจเรียกได้ว่าก าหนดให้ตัวแปร (variable) radius มีค่า 20
เนื่องจากมีการตั้งชื่อ radius ให้กับค่า 20 ในบรรทัดที่ 12 แล้วด้วยค าสั่ง radius = 20 จึงท า
ให้บรรทัดที่ 13 สามารถเรียกใช้งานชื่อ radius ได้ และในบรรทัดที่ 13 ค่าที่ถูกเรียกด้วยชื่อ area

คือ 1256.64 เนื่องจากมีการก าหนดค่าชื่อ area ใช้ส าหรับเรียกค่าทได้จากการค านวณ
ี่
20*20*3.14 นั่นเอง หากรันโปรแกรมนี้ จะได้ผลตอบสนองดังแสดงในรูปที่ 2.1



















รูปที่ 2.2 ผลรันของ ComputeArea\main.py

ธรรมเนียมของการเขียนโปรแกรม (Coding Convention)


การเขียนโปรแกรมนอกจากจะต้องเขียนให้ถูกต้องตามหลักไวยากรณ์ของภาษาแล้ว ควรจะ
เขียนให้ถูกธรรมเนียมในการเขียนโปรแกรมด้วย โดยยึดหลักดังนี้
● ใช้คอมเมนท์อย่างเหมาะสม ควรจะมีคอมเมนท์ ชื่อและรหัสนักศึกษา และจุดประสงค์ของ

โปรแกรม อาจะเป็นค าอธิบายสั้นๆว่าโปรแกรมนี้เขียนขึ้นเพื่ออะไร ในบรรทัดแรกๆของโค้ด
โดยผู้เรียนอาจออกแบบเป็นแบนเนอร์เฉพาะตัวของตนเองได้เช่น

'''----------------------------------------------------------------------------
----------This program is coded by Araya Florence------------
-------------This is a demonstration of using a banner---------
------------------------------------------------------------------------------- '''
● การวรรค (space) ควรจะต้องใส่เข้าไปเมื่อมีการใช้ตัวกระท าแบบสองทาง (binary

operator) เช่น
print(3 + 4) #ตัวอย่างที่ดี
print(3+4) # ตัวอย่างที่ไม่ดี





48 | Page



Araya's Creation

● การจัดรูปแบบของโค้ดสามารถท าได้ด้วย Eclipse โดยท าเลือกที่หน้าต่าง Editor แล้วกด
Ctrl + A เลือก เมนู Source เลือก Format code หรือ กด Ctrl+Shift+F

● ควรใช้บรรทัดว่างเพื่อแยกส่วนของโปรแกรม จะท าให้อ่านง่ายและหาจุดผิดพลาดได้ง่ายขึ้น


2.3 ชื่อ การตั้งชื่อ และตัวแปร (Identifier, Names)

ชื่อต่างๆที่ปรากฏอยู่ใน Listing ที่ผ่านมาเช่น PI, radius, area คือชื่อของสิ่งต่างๆ
ที่ปรากฏอยู่ในโปรแกรม ในการเขียนโปรแกรมชื่อเหล่านี้เรียกว่า identifier (ไอเดนติฟายเออร์) ซึ่ง

จะต้องเป็นไปตามกฏของการตั้งชื่อดังนี้
● เป็นล าดับของอกขระต่อกัน ประกอบไปด้วยอักขระที่เป็นอักษร (a, b, c, ..., X, Y, Z) ตัวเลข

หรือ digit (1, 2, 3...) และ _ (underscore อ่านว่าอันเดอร์สคอร์)
● ตัวแรกจะต้องเป็นอักขระที่เป็นอักษรหรือ underscore เสมอ ห้ามเริ่มต้นด้วยตัวเลขหรือ

digit
● ห้ามเป็นค าสงวน (Reserved words/ Keywords) ดังแสดงในตารางที่ 2.1
● ความยาวของชื่อจะเป็นเท่าใดก็ได้

การตั้งชื่อต่างๆดังที่กล่าวข้างต้น ใช้กับทั้งชื่อตัวแปร ชื่อฟังก์ชั่น ชื่อคลาส ชื่อออปเจ็ค ชื่อ
โมดูล ชื่อแพคเกจ นอกจากการตั้งชื่อให้ถูกต้องตามกฏแล้ว ผู้เขียนโปรแกรมควรตั้งชื่อให้ถูกหลัก

สากล (Naming convention) เพื่อให้เป็นที่เข้าใจส าหรับผู้เขียนโปรแกรมคนอื่นๆทั่วโลก การตั้งชื่อ
ให้ถูกต้องตามหลักสากลนี้รวมถึง ชื่อโปรเจ็ค ชื่อโฟลเดอร์ ด้วย ซึ่งมีหลักดังนี้
● ชื่อตัวแปร ชื่อฟังก์ชั่น ชื่อตัวอางอิง (reference) ให้เริ่มต้นด้วยอักขระตัวเล็ก (lowercase)

และแยกค าด้วยอักขระตัวใหญ่ (uppercase) เช่น studentScore,
studentName, totalScore, isThisACase เป็นต้น
● หากต้องการแบ่งค าด้วย _ (underscore อ่านว่าอันเดอร์สคอร์) แทนการใช้ uppercase ก็
ให้ใช้แบบเดียวกันทั้งโปรเจ็คส าหรับชื่อตัวแปร ชื่อฟังก์ชั่น ชื่อตัวอ้างอิง เช่น
student_score, student_name, total_score,
is_this_a_case เป็นต้น

● ชื่อโปรเจ็ค ชื่อคลาสให้เริ่มต้นด้วย uppercase และแยกคาด้วย uppercase เช่น
MyClass, MyObject, MyFirstProject
● ห้ามตั้งชื่อเริ่มต้นด้วยตัวเลข ห้ามมช่องว่าง ห้ามใช้ภาษาไทย (ภาษาไทยถือเป็นอักขระ

พิเศษ)
● ตั้งชื่อให้สื่อกับความหมายของชื่อ หรือการใช้งานของสิ่งที่ตั้งชื่อให้ เช่น studentScore

ใช้เก็บค่าคะแนนของนักเรียนคนหนึ่งๆ
● ส าหรับค่าคงที่ให้ใช้อักขระ uppercase ทั้งหมด เช่น PI ส าหรับค่า π หรือ MEW ส าหรับค่า
µ เป็นต้น


49 | Page













Araya's Creation

ตารางที่ 2.1 แสดงค าสงวนใน Python ที่ห้ามใช้ในการตั้งชื่อใดๆในโปรแกรม
False class finally is return
None continue for lambda try
True def from nonlocal while
and del global not with
as elif if or yield
assert else import pass
break except in raise

ชื่อ หรือ ตัวแปร (Variables)


ในภาษา Python มีชื่อทใช้เรียกวัตถุต่างๆ แต่บางครั้งจะแทนว่าตัวแปร ตัวแปรคือสิ่งที่ใช้
ี่

เก็บค่าที่สามารถเปลี่ยนแปลงได้ในโปรแกรม เนื่องจากค่าที่เก็บในตัวแปรสามารถถกเปลี่ยนแปลงได้
ดังนั้นจึงถูกเรียกว่าตัวแปรเนื่องจากค่าแปรผันได้ ดังที่เห็นใน Listing ที่ผ่านมาสิ่งที่เรียกว่าตัวแปร

ได้แก่ radius และ area การก าหนดค่าเริ่มต้นให้กับตัวแปรสามารถท าได้ในโปรแกรมดัง
บรรทัดที่ 12 ใน Listing 2.1 ข้างต้น ส่วนตัวแปร area ใช้เก็บผลจากการค านวณ ซึ่งเกิดขึ้นใน
บรรทัดที่ 13



ในภาษา Python จะไมมีการประกาศตัวแปร ตัวแปรหรือชื่อไม่จ าเป็นต้องถูกก าหนดค่า
เริ่มต้นให้ ไม่จ าเป็นต้องประกาศชนิดของข้อมูล ชนิดของข้อมูลที่ตัวแปรหรือชื่อนั้นจะเก็บหรือ
อ้างอิงอยู่ ขึ้นอยู่กับการก าหนดค่าให้กับตัวแปรนั้นๆในครั้งแรก


2.4 ชุดค าสั่งก าหนดค่าและการแสดงการก าหนดค่า (Assignment statements and

Assignment Expressions)

ชุดค าสั่งก าหนดค่าสามารถใช้แสดงการก าหนดค่าให้กับตัวแปรในการเขียนโปรแกรมภาษา
ื่
Python ได้ ในความเป็นจริงคือเป็นการก าหนดชื่อให้กับวัตถุ เพอจะสามารถใช้ชื่อดังกล่าว (อาจ
เรียกว่าตัวแปร) ในการอ้างถึงวัตถุนั้นๆ หรือค่านั้นๆในภายหลัง เมื่อต้องการก าหนดค่าให้กับตัวแปร
ผู้เขียนโปรแกรมจะต้องใช้ชุดค าสั่งก าหนดค่า ที่เรียกว่า assignment statement ในภาษา Python
ใช้เครื่องหมายเท่ากับ ( = , assignment operator) เป็นตัวกระท าในการกาหนดค่าให้กับตัวแปร

โดยมีรูปแบบดังนี้


variable = expression
expression (อ่านว่าเอกซ์เพรสชั่น) ในที่นี้อาจเป็นค่าที่ต้องการก าหนดให้กับตัวแปรที่อยู่

ด้านซ้ายมือ หรืออาจเป็นการค านวณทางคณิตศาสตร์ การใช้งานตัวแปรของ Python แตกต่างจาก
การเขียนโปรแกรมด้วยภาษาอื่น เนื่องจาก Python ใช้ชื่อ ในลักษณะของ nametag ไม่ใช่กล่องใส่ค่า

เหมือนการเขียนโปรแกรมภาษาอื่นๆ เนื่องจากทุกอย่างใน Python เป็นวัตถุ ดังนั้นการอางถึงวัตถุจะ
เป็นการอ้างถึงแบบอ้างอิง หรือ by reference ทั้งสิ้น สังเกตตัวอย่าง

Note: ค าอธิบายเกี่ยวกับชื่อ หรือ identifiers ใน Python มีรายละเอียดอยู่ที่
http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#other-
languages-have-variables





50 | Page



Araya's Creation

a = 1 #ก าหนดให้ a เป็นตัวแปรส าหรับ


เก็บขอมูลชนิดเลขจ านวนเต็ม หรือเรียกชื่อ
a เมื่อต้องการกล่าวถึง 1 ซึ่ง a จะเก็บ
ต าแหน่งหน่วยความจ าของวัตถุ 1

a = 2 #ก าหนดให้ a เป็นตัวแปรส าหรับ

เก็บขอมูลชนิดเลขจ านวนเต็ม ณ ตอนนี้คือ
เลข 2 หรือเรียกชื่อ a เมื่อต้องการกล่าวถึง 2
ซึ่ง a จะเก็บต าแหน่งหน่วยความจ าของวัตถุ
2
b = a #ก าหนดให้ b เป็นชื่อ หรือตัวแปร

ส าหรับเก็บข้อมูลชนิดเดียวกันกับที่ a อ้างถึง
อยู่ ณ ตอนนี้คือเลข 2 หรือเรียกชื่อ b ได้เมื่อ

ต้องการกล่าวถึง 2 เช่นเดียวกันกับ a
กล่าวคือ 2 มีสองชื่อ คือ b และ a

x = 5 * 3 + 2

#ก าหนดให้ x เป็นตัวแปรส าหรับเก็บขอมูลชนิดจ านวนเต็ม โดย

#มีค่าเริ่มต้นเป็นผลของการคานวณทางคณิตศาสตร์ 5 * 3 + 2
#ซึ่งมีค่าเป็น 17 (เกิดจาก 5 * 3 ได้ 15 แล้ว + 2 ได้ 17)

x = x + 1;

#ค่าของ x + 1 จะถูกน าไปเก็บในตัวแปร x ดังนั้นไม่ว่าก่อนหน้า
#นี้ตัวแปร x เก็บค่าอะไรอยู่ จะถูก + ด้วย 1 แล้วผลที่ได้ก็จะถูกอ้างถึง
#ได้ด้วย x

การก าหนดหลายๆชื่อ พร้อมๆกันสามารถท าได้ดังนี้
a, b, c = 1, 2, "john"
#เทียบได้กับการสั่ง a = 1 b = 2 และ c = "john"
***Note เครื่องหมายเท่ากับในการเขียนโปรแกรมไม่ได้หมายความว่าสิ่งที่อยู่ทางซ้ายกับขวานั้น
ี่
เท่ากัน แต่หมายถึงการก าหนดค่า คือก าหนดให้ค่าทอยู่ทางขวา เก็บอยู่ในสิ่งที่อยู่ทางซ้าย ***









51 | Page













Araya's Creation

2.5 ชนิดของตัวแปร


ชนิดของตัวแปรใน Python มีมากมายหลายประเภท หลักๆที่ผู้เขียนโปรแกรมเบื้องต้นควร
รู้จักแบ่งเป็นสองประเภทหลักคือ Standard Data Types และ Object Type ในที่นี้จะกล่าวถึง
Standard Data Types ได้แก่ Numbers, String, List, Tuple, Dictionary และ Object Type


บางส่วนได้แก่ callable, ModuleType, ClassType, FileType จะถกกล่าวถึงในบทต่อๆไป
ื่

ในความเป็นจริงแล้วทุกอย่างใน Python เป็นวัตถุ ที่ถกสร้างจากคลาสทั้งสิ้น แต่เพอความ
สะดวกของผู้พัฒนาโปรแกรม ชนิดข้อมูลที่เป็น Primitive Data Type ต่างๆได้แก่ int, float
ถูกท าให้ใช้ได้ง่ายขึ้นจนเสมือนไม่ต้องสร้างวัตถุเอง


Numbers เป็นข้อมูลตัวเลขชนิดพื้นฐาน หรือบางครั้งอาจเรียกว่า Built-in Data Types เป็นข้อมูล
ที่ใช้ในทางคณิตศาตร์ ใช้ในการค านวณ สามารถแบ่งเป็นชนิดจ านวนเต็ม เลขทศนิยม และจ านวน

เชิงซ้อน ชื่อชนิดข้อมูลประเภทนี้ได้แก่ int (signed integers), long (long
integers also can presented in octal and hexadecimal) ,
float และ complex ขนาดหน่วยความจ าและช่วงของข้อมูลชนิดพื้นฐานแบบตัวเลขนี้ไม่ม ี
ก าหนดใน Python เนื่องจาก Python จัดการกับ memory ในลักษณะ transparent โดยที่ผู้พัฒนา

ไม่ต้องกังวลถึงการจัดการหน่วยความจ าแต่อย่างใด กล่าวคือ หากต้องการพื้นที่หน่วยความจ าที่ม ี
ขนาดใหญ่ ส าหรับเก็บจ านวนใหญ่ๆ เมื่อก าหนดชื่อตัวแปรให้ ขนาดของหน่วยความจ าก็จะขยายให้
เอง สิ่งที่ผู้เรียนจะได้ใช้งานประจ า ได้แก่ int, float และ complex หากต้องการทราบ
ขนาดของหน่วยความจ าที่ใช้เก็บข้อมูลใน Python สามารถท าได้โดยใช้ฟังก์ชั่น

getsizeof(variable) ฟังก์ชั่นนี้อยู่ใน sys module ตัวอย่างเช่น ที่ Python Shell

>>>a = 42


>>>sys.getsizeof(a)

>>>28

>>>a = 2**1000 #pow(2,1000)

>>>sys.getsizeof(a)

>>>160


>>>a = 12.5

>>>sys.getsizeof(a)

>>>24

จะเห็นได้ว่าขนาดของหน่วยความจ าที่ตัวแปร หรือชื่อ a เปลี่ยนไปตามขนาดของข้อมูลที่ a
อ้างอิงอยู่ นอกจากนี้แล้วชนิดข้อมูลที่ชื่อหรือตัวแปรอ้างอิงอยู่ก็เปลี่ยนแปลงไปตามสิ่งที่ผู้เขียน

โปรแกรมก าหนดให้กับชื่อหรือตัวแปร ณ ขณะนั้นๆ ดังนั้นในเอกสารนี้จะไม่กล่าวถึงว่าข้อมูลชนิด
ต่างๆเก็บขนาดเท่าใดในหน่วยความจ า ตัวอย่างของข้อมูลชนิดต่างๆแสดงในตารางที่ 2.2 ตัวอย่าง




52 | Page



Araya's Creation

การก าหนดค่าให้กับตัวแปรและชนิดข้อมูลที่ชื่อหรือตัวแปรอ้างอิงอยู่ ณ เวลานั้นๆแสดงในตารางที่
2.3


ี่
ตารางท 2.2 แสดงตัวอย่างขอมูลชนิดต่างๆที่เป็นตัวเลข
(http://www.tutorialspoint.com/python/python_variable_types.htm)
int long float complex
10 51924361L 0.0 3.14j
100 -0x19323L 15.20 45.j
-786 0122L -21.9 9.322e-36j
080 0xDEFABCECBDAECBFBAEl 32.3+e18 .876j
-0490 535633629843L -90. -.6545+0J
-0x260 -052318172735L -32.54e100 3e+26J
0x69 -4721885298529L 70.2-E12 4.53e-7j
***Note: ท าไมถึงเรียกเลขทศนิยมใน Python ว่า floating point? เนื่องจากการเก็บค่าทศนิยม
ในการเขียนโปรแกรมเป็นการเก็บแบบสัญกรณ์วิทยาศาสตร์ ซึ่งจะสังเกตได้ว่า ค่า 123.456 นั้นเมื่อ
ถูกจัดเก็บในรูปแบบของสัญกรณ์วิทยาศาสตร์ จะได้ 1.23456E2 ซึ่งจุดทศนิยม (decimal point) ได้

ถูกเลื่อนไป (float) จึงเป็นที่มาของค าว่า floating point ซึ่งหมายถึงจุดทศนิยมที่เลื่อนต าแหน่ง
นั่นเอง***
ตารางที่ 2.3 แสดงตัวอย่างการก าหนดค่าให้กับตัวแปร

ตัวอย่าง ชื่อ ชนิดข้อมูลของชอ ณ เวลาที่ใช้
ื่
ชุดค าสั่ง
noOfStd = 25 noOfStd int
dataRecs = dataRecs long
51924361L
studentGPA = 3.5 studentGPA float
impedanceA = 3.14j impedanceA complex
voltage = -.6545+0J voltage complex
voltage = 10 voltage int
voltage = 12.5 voltage float

ไม่ว่าจะเป็น int, long, float หรือ complex ล้วนเป็นวัตถุทั้งสิ้น ท าให้ชนิด
ข้อมูลเหล่านี้มี Built-in methods ให้เรียกใช้งานได้ ซึ่งฟังก์ชั่นเหล่านี้ส่วนมากเกี่ยวข้องกับทาง
คณิตศาสตร์ ซึ่งจะได้กล่าวถึงในบทต่อๆไป

การแปลงชนิดข้อมูลสามารถท าได้ด้วยการเรียก method ที่สอดคล้องกับชนิดที่ต้องการ
ดังนี้

int(x) ใช้ส าหรับแปลง x ให้เป็นจ านวนเต็ม
long(x) ใช้ส าหรับแปลง x ให้เป็นจ านวนเต็มแบบยาว
float(x) ใช้ส าหรับแปลง x ให้เป็นจ านวนทศนิยม




53 | Page













Araya's Creation

complex(x) ใช้ส าหรับแปลง x ให้เป็นจ านวนจ านวนเชิงซ้อนที่มีส่วนจริงเป็น x และ
ส่วนจินตภาพเป็น 0

complex(x, y) ใช้ส าหรับแปลง x, y ให้เป็นจ านวนจ านวนเชิงซ้อนที่มีส่วนจริงเป็น x และ
ส่วนจินตภาพเป็น y จะได้ x+yj

String เป็นข้อมูลชนิดข้อความ สตริง อาจถูกก าหนดอยู่ใน ' ' (single quote) หรือใน " " (double


quote) ก็ได้ สตริงหรือข้อความ หมายถึงอักขระที่เรียงต่อกันที่ถกก าหนดในเครื่องหมาย ' ' (single
quote) หรือใน " " (double quote) เช่น "Hello", 'World' การอ้างถึงอักขระใดๆใน
ข้อความสามารถท าได้ด้วย [ ]

ตัวอย่าง
device = "phone"

การอ้างถึงอักขระต่างๆในขอความจะมีลักษณะดังนี้

p h o n e

device[0] device[1] device[2] device[3] device[4]

ในสตริงสามารถมีอกขระพิเศษที่เรียกว่า escape sequence คืออกขระที่พิมพ์ออกมาไม่ได้

แต่มีผลกับเคอร์เซอร์ที่ออกหน้าจอหรือส่งสัญญาณเสียง escape sequence ที่ได้ใช้บ่อย แสดงใน
ตารางที่ 2.4
ตารางที่ 2.4 แสดง escape sequence ที่ใช้บ่อยในการเขียนโปรแกรม
Backslash notation ค าอธิบาย

\a Beep or alert
\b Backspace
\f Formfeed

\n ขึ้นบรรทัดใหม่ (new line)
\r Carriage Return
\s ช่องว่าง (Space)
\t ย่อหน้า (Tab)
\v Vertical tab


การอพเดทหรือเปลี่ยนแปลงข้อความสามารถท าได้โดยสั่งก าหนดค่าใหม่ด้วยเครื่องหมาย =

ได้โดยตรง

ตัวอย่างการใช้งานบน Python Shell
>>>msg = "Hello\t"
>>>print (msg)
>>> Hello
>>>msg = "Hello\n"
>>>print (msg)
>>>Hello

>>>



54 | Page



Araya's Creation

การแปลงชนิดข้อมูลอื่นให้เป็นสตริงสามารท าได้ด้วยการสั่ง str() เช่น
num = 25
print(“num is “ + str(num))
สตริงสามารถใช้ตัวกระท า (Operator) พิเศษต่างๆได้ เพื่อจัดการเกี่ยวกับสตริง ตัวกระท า
เหล่านี้แสดงในตาราง 2.5 ก าหนดให้ a = "Hello" และ b = "Python"


ี่
ตารางท 2.5 ตัวกระท าพิเศษที่เกี่ยวข้องกับสตริง
Operator ค าอธิบาย ตัวอย่าง ผลที่ได้
+ ต่อสตริง a + b HelloPython
(Concatenate)

* ท าซ้ า (Repetition) 3*b PythonPythonPython
[ ] Slice b[1] 'y'
[ : ] Range Slice a[1:4] 'ell'
in Membership 'H' in a True

not in Not a member 'x' not in a True
r/R Raw String print \n
(r'\n')
% Format ตัวอย่างในส่วนต่อไป


ในส่วนของการจัดรูปแบบหรือ Format ด้วย % นั้น สามารถท าได้ดังตัวอย่าง

print ("My name is %s and I am %d years old. ") %
("Araya", 43)
ผลลัพท์ที่ได้คือ My name is Araya and I am 43 years old. รูปแบบต่างๆของ % และ
ความหมายสามารถอ่านรายละเอียดได้ใน Python Doc

นอกเหนือจากนี้แล้ว เนื่องจากสตริงเป็นวัตถุ ซึ่งมีคุณสมบัติหรือ method (function) ให้
เรียกใช้งานได้มากมาย ตัวอย่างรายการ method บางส่วนที่ใช้งานกับสตริงได้ แสดงในตาราง 2.6

ตารางท 2.6 Built-in String methods (รายละเอียดค้นได้ใน Python Doc)
ี่
Method ค าอธิบาย
find() ค้นหาต าแหน่งสตริงในสตริง
isalnum() Returns true if string has at least 1 character and all characters

are alphanumeric and false otherwise.
isalpha() Returns true if string has at least 1 character and all characters
are alphabetic and false otherwise.
isdigit() Returns true if string contains only digits and false otherwise.




55 | Page













Araya's Creation

Method ค าอธิบาย
islower() Returns true if string has at least 1 cased character and all

cased characters are in lowercase and false otherwise.
isspace() Returns true if string contains only whitespace characters and
false otherwise.
isupper() Returns true if string has at least one cased character and all

cased characters are in uppercase and false otherwise.
len(string) Returns the length of the string
lower() Converts all uppercase letters in string to lowercase.

replace(old, Replaces all occurrences of old in string with new or at most
new [, max])
max occurrences if max given.

Boolean or Truth Value Testing Type
ใน Python การทดสอบเงื่อนไขหากเป็นจริง จะให้ค่า True หรือ 1 หากผลการทดสอบ

เงื่อนไขเป็นเท็จ จะได้ False หรือ 0 เงื่อนไขสามารถเชื่อมต่อกันได้ด้วยตัวกระท า ตัวกระท าทางบูล
ลีนแสดงในตารางที่ 2.7


ี่
ตารางท 2.7 Boolean Operations (https://docs.python.org/3/library/stdtypes.html)
Operation result note
x or y if x is false, then y, This is a short-circuit operator, so it only
else x evaluates the second argument if the first

one is False.
x and y if x is false, then x, This is a short-circuit operator, so it only
else y evaluates the second argument if the first

one is True.
not x if x is false, then True, not has a lower priority than non-Boolean
else False operators, so not a== b is interpreted as
not (a == b), and a == not b is a syntax

error.

ชนิดข้อมูลที่นอกเหนือจากนี้ ได้แก่ List, Tuple และ Dictionary จะกล่าวถึงในบทต่อๆไป
เมื่อมีความจ าเป็นที่ต้องใช้งานในรายวิชานี้ รายละเอียดสามารถอานได้จาก

(http://www.tutorialspoint.com/python/python_strings.htm)

ค่าคงที่ (Constant)


เป็นค่าที่ถกก าหนดให้มีค่าที่แน่นอนตายตัวตลอดทั้งโปรแกรมโดยไม่มีการเปลี่ยนแปลงค่า

เหมือนตัวแปร (Variable) โดยจุดประสงค์ที่ก าหนดค่าคงที่ คือ เพื่อเพิ่มความสะดวกในการอ้างอิง

ี่
เช่น ในการเขียนโปรแกรมที่เกี่ยวกับวงกลมนั้นจะต้องมีคา อยู่ ซึ่งท าให้มีค่าคงทคือ ประมาณ

56 | Page



Araya's Creation

3.1414926 ถ้าก าหนดให้เป็นค่าคงที่ชื่อ pi ก็จะช่วยให้อ้างอิงได้ง่ายเพราะไม่ต้องแทนด้วยตัวเลข

ยาวๆ เป็นต้น ในภาษา Python ไม่มการก าหนดค่าคงที่ Python ให้ความรับผิดชอบของ
ผู้พัฒนาโปรแกรมในการจัดการกับค่าคงที่ เพราะผู้เขียนโปรแกรมเป็นผู้ที่ทราบดีว่าค่าใดเป็นค่าคงที่
และไม่ควรเปลี่ยนแปลงตลอดทั้งโปรแกรม อย่างไรก็ตามค่าคงที่มาตรฐาน เช่น pi, e มีการก าหนดไว้
ในระบบของ Python และค่าเหล่านี้ถูกเรียกว่า Built-in Constant โดยเฉพาะใน SciPy Module
ี่
จะมีค่าคงทที่เกี่ยวข้องกับทางวิทยาศาสตร์อยู่มากมายให้เลือกใช้ในการค านวณ หากต้องการใช้งานค่า
ิ่
เหล่านี้ ต้องลง SciPy เพมเติม เมื่อต้องการใช้งานก็สามารถเรียก import scipy.pi แล้วเรียกใช้งาน
pi ได้ในการเขียนโปรแกรม
หากต้องการกาหนดค่าคงที่ใน Python อาจท าได้โดยทางออม ด้วยการก าหนด class พิเศษ


ขึ้นมา วิธีการนี้ค่อนข้างซับซ้อน แต่สามารถแก้ปัญหาการใช้ค่าคงตัวในการค านวณได้
def constant(f):
def fset(self, value):
raise TypeError
def fget(self):
return f()
return property(fget, fset)

class _Const(object):
#@constant
def FOO(self):
return 0xBAADFACE
#@constant
def BAR(self):
return 0xDEADBEEF

CONST = _Const()
#usage print(CONST.FOO())

หรืออาจใช้การก าหนดชื่อ เช่น CONST_my_pi แทน my_pi เป็นชื่อของค่าคงตัวที่
ต้องการใช้งานในโปรแกรม



2.6 การรับข้อมลเข้ามาจากคีย์บอร์ดและการจัดรูปแบบการแสดงผลข้อมูลออกทางหน้าจอ

จะเห็นได้ว่าโปรแกรมใน Listing 2.1 ไม่มความยืดหยุ่นพอส าหรับการหาค่าพื้นที่ของวงกลม


ใดๆ เนื่องจากมการก าหนดค่าของรัศมีในตัวโปรแกรม ส่วน Listing 2.2 แสดงโปรแกรม
ComputeAreaWithInput\main.py ที่มีการรับข้อมูลจากคีย์บอร์ด


Listing 2.2 ComputeAreaWithInput\main.py
1. '''
2. Created on 23 Jul 2016

57 | Page













Araya's Creation

3. @author: Araya
4. '''
5. from math import pow,pi
6. if __name__ == '__main__':
7. pass

8. #Step#1 get radius from user
9. radius = input("Enter a radius of your circle: ")
10. #Step#2 calculate area
11. area = pi * pow(int(radius), 2)
12. #Step#3 show area
13. print("Area is " + str(area))



สังเกตว่า Step ที่ 1 คือการรับรัศมี ถูกแกไขจากการก าหนดค่าในโปรแกรมที่อยู่ใน Listing
2.1 ให้เป็นการรับข้อมูลเข้ามาจาก Console ในที่นี้คือ keyboard นั่นเอง การรับข้อมูลเข้ามาจาก

ผู้ใช้ผ่านทาง keyboard ประกอบไปด้วย ส่วนประกอบส าคัญสองส่วนคือ
1. ส่วนของการติดต่อกับผู้ใช้ โดยแสดงข้อความออกไปที่หน้าจอเพอแจ้งให้ผู้ใช้ทราบว่าผู้ใช้
ื่
จะต้องป้อนข้อมูลอะไรเข้าไป (บรรทัดที่ 9 ในส่วนของข้อความ Enter a radius of
your circle: จะถูกแสดงออกไปที่หน้าจอ)
2. ส่วนของการรับข้อมูลจากผู้ใช้เข้าไปเก็บในตัวแปร (บรรทัดที่ 9 radius = input ( )

อ่านข้อมูลจากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปร radius)

ฟังก์ชั่นส าหรับใช้ในการรับข้อมูลเข้ามาจากคีย์บอร์ดใน Python ใช้ฟังก์ชั่นหรือเมธอด
input() เท่านั้น สิ่งที่ตามมาคือผลที่เก็บในตัวแปรที่ใช้รับค่าจากเมธอดนี้จะเป็นสตริง ท าให้
บรรทัดที่ 11 มีการแปลงชนิดข้อมูลให้เป็น int ด้วยการสั่ง int(radius)



การจัดรูปแบบการแสดงผลข้อมลออกทางหน้าจอ

การค านวณเชิงวิศวกรรมเกี่ยวข้องกับจุดทศนิยมและความแม่นย าของข้อมูล (precision)

ดังนั้นความจ าเป็นที่จะต้องกาหนดรูปแบบการแสดงผลเลขทศนิยมเพื่อแสดงความแม่นย าของข้อมูล
หรือผลลัพธ์ที่ได้จากการเขียนโปรแกรม การแสดงจ านวนทศนิยมสามารถใช้ format มาร่วมกับการ
แสดงผลของตัวเลขได้ รายการรหัสรูปแบบการแสดงผลแสดงในตารางที่ 2.8 และ สามารถใช้ร่วมกับ

escape sequence ที่ได้กล่าวถึงไปก่อนหน้าในตารางที่ 2.4
ตารางที่ 2.8 แสดงรหัสรูปแบบแสดงผล

รหัสรูปแบบแสดงผล ลักษณะการใช้งาน
%d แสดงค่าในรูปแบบ จ านวนเต็ม
%u แสดงค่าในรูปแบบ จ านวนเต็มไม่คิดเครื่องหมาย
%f แสดงค่าในรูปแบบ จ านวนทศนิยมแบบ float

%lf แสดงค่าในรูปแบบ จ านวนทศนิยมแบบ double
%c แสดงค่าในรูปแบบ ตัวอักษร 1 ตัว
%s แสดงค่าในรูปแบบ ข้อความ (String)




58 | Page



Araya's Creation

ตัวอย่างการใช้งาน

รูปแบบทั่วไป
print("%m.nf" % variable)
m : จ านวนดิจิตทั้งหมดที่ต้องการจะแสดงผล

n : จ านวนตัวเลขหลังจุดทศนิยมที่ต้องการจะแสดงผล
ตัวอย่าง
x = 1.76925
print ("%5.3f" % x)

2.7 การกระท าทางคณิตศาสตร์ (Arithmetic Operations)
ในส่วนของการค านวณทางคณิตสาสตร์ ครอบคลุมในเรื่องของตัวกระท าทางคณิตศาสตร์
ล าดับการกระท า ตัวกระท าแบบก าหนดเพิ่มเติม ตัวกระท าแบบเพิ่ม/ลด การแปลงชนิดข้อมูล และ

ฟังก์ชั่นส าเร็จทางคณิตศาสตร์ที่อยู่ในไลบรารี่ math


ตัวกระท าทางคณิตศาสตร์ (Numeric Operators)

ตัวกระท าทางคณิตศาสตร์ใน Python ประกอบไปด้วยการ บวก ลบ คูณ หาร ยกก าลัง การ
ท า modulus หรือที่เรียกว่าหาเศษการหาร และการหารแบบฟลอร์ ตัวกระท าเหล่านี้เป็น binary
operator คือเป็นตัวกระท าที่ต้องการตัวถูกกระท าทั้งสองข้าง ซ้ายและขวา รายการตัวกระท าและ

ตัวอย่าง แสดงในตารางที่ 2.8


ตารางที่ 2.8 แสดงตัวกระท าทางคณิตศาสตร์พื้นฐาน
Operator Name Example Result
+ Addition 34 + 1 35

- Subtraction 34.0 – 0.1 33.9
* Multiplication 300 * 30 9000
** Exponent 2**3 8
(power)
/ Division 1.0 / 2.0 0.5

% Modulus 20 % 3 2
// Floor Division 9//2 4

เมื่อมีการเขียนสมการทางคณิตศาสตร์ให้อยู่ในรูปของการแสดงออกทางคณิตศาสตร์

(mathematic expression) ใน Python สิ่งที่ต้องค านึงถงมีดังนี้
● ต่อเมื่อตัวกระท าเป็นจ านวนเต็ม การหารจะให้ผลลัพท์เป็นทศนิยมเสมอถ้าหารไม่ลงตัว
● ตัวกระท าโมดูลัส (modulus) ใช้กับเลขจ านวนเต็มเท่านั้น และโดยทั่วไปแล้วใช้กับเลข
จ านวนเต็มบวก



59 | Page













Araya's Creation

● Modulus มีประโยชน์ในการแบ่งกลุ่ม เช่นอยากทราบว่า เป็นวันอะไรของสัปดาห์ สามารถ
ใช้ modulus 7 หากได้เศษ 0 คือวันอาทิตย์ เศษ 1 คือวันจันทร์ เศษ 2 คือวันอังคาร และ

ี่
เช่นเดียวกันกับวันอื่นๆทเหลือ นอกจากนี้ยังสามารถใช้ในการประยุกต์เรื่องการหาเงินทอน
การแสดงผลเวลา ตัวอย่างของการแสดงผลเวลาอยู่ใน Listing 2.3

Listing 2.3 DisplayTime\main.py
1. '''
2. Created on 23 Jul 2016
3. @author: Araya
4. '''
5. seconds=input("Enter an integer for seconds: ")
6. minutes = int(seconds) // 60
7. remainingSeconds = int(seconds) % 60
8. print(str(seconds)+ " seconds is " +
str(minutes) + " minutes and " +
str(remainingSeconds) + " seconds.")

ล าดับความส าคัญตัวกระท าทางคณิตศาสตร์ (Operator Precedence)

ปกติแล้วในการเขียนโปรแกรมคอมพิวเตอร์เพื่อค านวณทางคณิตศาสตร์ เป็นการแปลง

สมการทางคณิตศาสตร์ให้อยู่ในรูปของ ภาษาโปรแกรมคอมพิวเตอร์ เช่นการค านวณทางคณิตศาสตร์
ดังต่อไปนี้


3 + 4 10( − 5)( + + ) 4 9 +
− + 9( + )
5
สามารถเขียนให้อยู่ในรูปการแสดงออกทางคณิตศาสตร์ได้ดังนี้

(3 + 4 * x) / 5 – 10 * (y – 5) * (a + b + c) / x + 9 * (4 / x + (9 + x) / y)
การประเมินค่าของ expression ดังกล่าวใน C จะมีล าดับความส าคัญของตัวกระท าเข้ามาเกี่ยวข้อง

โดยมีหลักการดังนี้
● ท าในวงเล็บก่อน

● การคูณ การหาร และการหาเศษถูกกระท าก่อน ถ้ามีตัวกระท าเหล่านี้มากกว่าหนึ่งให้
● ท าจากซ้ายไปขวา
● การบวก การลบ จะถูกกระท าหลังสุด


● เครื่องหมายสุดท้ายที่จะถูกกระท าคอเครื่องหมายก าหนดค่า ( = )
เช่น

3 + 4 * 4 + 5 * (4 + 3) – 1
3 + 4 * 4 + 5 * 7 - 1
3 + 16 + 5 * 7 -1
3 + 16 + 35 – 1

19 + 35 -1
54 – 1
53




60 | Page



Araya's Creation

2.8 ตัวกระท าแบบก าหนดเพิ่มเติม (Augmented Assignment Operators)

ตัวกระท า + - * / % ** และ //สามารถถูกน ามาใช้ร่วมกันกับตัวกระท าก าหนดค่า หรือ

เครื่องหมายเท่ากับ ( = ) ได้ โดยมีผลของการกระท าเทียบเท่ากับการกระท าทางคณิตศาสตร์ตามตัว
กระท านั้นๆแล้วก าหนดค่าในคราวเดียวกัน ตารางที่ 2.9 แสดงตัวกระท าประเภทนี้


ตารางที่ 2.9 Augmented Assignment Operators
Operator Name Example Equivalent

+= Addition Assignment n += 8 n = n + 8
-= Subtraction n -= 8 n = n - 8
Assignment
*= Multiplication n *= 8 n = n * 8
Assignment

/= Division Assignment n /= 8 n = n / 8
%= Modulus Assignment n %= 8 n = n % 8
**= Exponent Assignment n **= 8 n = n ** 8
//= Floor Division n //= 8 n = n // 8
Assignment

2.9 ตัวกระท าแบบเปรียบเทียบ (Comparison Operators)


ตัวกระท าเหล่านี้จะท าการเปรียบเทียบค่า และหาความสัมพันธ์ของตัวถูกกระท าทั้งสองข้าง
ของมัน รายละเอียด ดังแสดงในตารางที่ 2.10 ในที่นี้ก าหนดให้ a = 10 และ b=20


ตารางที่ 2.10 Increment/Decrement Operators (http://www.tutorialspoint.com/)
Operator Description Example Result
== เปรียบเทียบว่าเท่ากันหรือไม่ (a == b) False

!= ตรวจสอบว่าค่าทั้งสองไม่เท่ากันหรือไม่ (a != b) True
<> ตรวจสอบว่าค่าทั้งสองไม่เท่ากันหรือไม่ (a <> b) True
เหมือนกันกับ !=
> ตรวจสอบว่าทางซ้ายมากกว่าทางขวาหรือไม่ (a > b) False

< ตรวจสอบว่าทางซ้ายน้อยกว่าทางขวาหรือไม่ (a < b) True

>= ตรวจสอบว่าทางซ้ายมากกว่าหรือเท่ากบ (a >= b) False
ทางขวาหรือไม่

<= ตรวจสอบว่าทางซ้ายน้อยกว่าหรือเท่ากบ (a <= b) True
ทางขวาหรือไม่


61 | Page













Araya's Creation

2.10 ตัวกระท าทางตรรกะ (Logical Operator)


การใช้งานตัวกระท าทางตรรกะ มักใช้ร่วมกับตัวกระท าเปรียบเทียบความสัมพันธ์ เพื่อเชื่อม
เงื่อนไขเข้าด้วยกัน ตัวกระท าทางตรรกะเป็นตัวกระท าที่ใช้ในการเชื่อมเงื่อนไขตั้งแต่ 2 เงื่อนไขเข้า
ด้วยกัน เพื่อหาผลรวมทางตรรกะของเงื่อนไขว่าเป็นจริงหรือเท็จ ในการใช้ตัดสินใจการท างานใน

ภาษา Python


ตารางที่ 2.11 แสดงตัวกระท าทางตรรกะ


Operator Meaning Description Example

and AND เป็นจริงเมื่อทุกเงื่อนไขเป็นจริง (n > = 10) and (n <= 35)

or OR เป็นเท็จเมื่อทุกเงื่อนไขเป็นเท็จ (m = = ‘N’) or (m = = ‘Y’)

not NOT ให้ค่าเป็นตรงข้ามกับค่าเดิม not (ch == ‘N’)




2.11 ตัวกระท าระดับบิต (Bitwise Operator)

ใช้ในการจัดการในข้อมูลระดับบิต เป็นกระท าในลักษณะตัวเลขฐาน 2 มักใช้ในงานเขียน
โปรแกรมควบคุมทางฮาร์ดแวร์ เช่น การเลื่อนบิต หมุนบิต เพื่อส่งข้อมูลในลักษณะไฟวิ่ง เป็นต้น



ตารางที่ 2.12 แสดงตัวกระท าระดับบิต


Operator Meaning Description

& AND การ AND บิตข้อมูล

| OR การ OR บิตข้อมูล

^ Exclusive OR การกระท า XOR กับบิตข้อมูล

<< Shift bit Right การเลื่อนบิตไปทางขวา

>> Shift bit Left การเลื่อนบิตไปทางซ้าย

~ 1‘ Complement การกระท า 1‘ Complement บิตข้อมูล



2.12 ตัวกระท าตรวจสอบสมาชิก (Membership Operator)

ใช้ในการจัดการตรวจสอบความเป็นสมาชิกของ identifier (variable) ใช้ในข้อมูลชนิด String,

List และ Tuple เช่น ใช้ในการหาอักขระใดๆ ในข้อความ








62 | Page



Araya's Creation

ตารางที่ 2.13 แสดงตัวกระท าตรวจสอบสมาชิก


Operator Description Example
in ตรวจสอบว่ามี x ใน y หรือไม่ ให้ผลเป็นจริงถ้าเจอ x in y

ค่า x ใน y
not in ตรวจสอบว่าไม่ม x ใน y ใช่หรือไม่ ให้ผลเป็นจริง x not in y

ถ้า ไม่มี x ใน y



2.13 ตัวกระท าตรวจสอบตัวตน (Identity Operator)

ใช้ในการจัดการตรวจสอบต าแหน่งหน่วยความจ าของวัตถุ เนื่องจากชื่อต่างๆใน Python เป็น

การอ้างอิงถึงวัตถุ ดังที่ได้กล่าวถึงในส่วนของชนิดข้อมูลที่ผ่านมา การก าหนดการอ้างอิงใช้
เครื่องหมาย = ในการก าหนด ในบางครั้งอาจจ าเป็นต้องมีการตรวจสอบว่าชื่อสองชื่อนี้อ้างไปถึงวัตถุ
เดียวกันหรือไม่ เช่น a = 10 แล้วก าหนด b = 10 สามารถใช้ a is b หรือ a is not b เพื่อตรวจสอบ
ได้ว่า a และ b อ้างถึงวัตถุเดียวกันหรือไม่


ตารางที่ 2.14 แสดงตัวกระท าตรวจสอบตัวตน


Operator Description Example
is ตรวจสอบว่า ตัวแปรทั้งสองฝั่ง a is b
ของ is อ้างหรือชี้ไปที่วัตถุ ให้ผล True

เดียวกันหรือไม่
is not ตรวจสอบว่า ตัวแปรทั้งสองฝั่ง a is not b
ของ is not ไม่ได้อ้างหรือชี้ไป ให้ผลเป็น False

ที่วัตถุเดียวกันใช่หรือไม่



2.14 ล าดับความส าคัญของตัวกระท า (Operator Precedence)

เมื่อท าการเขียนโปรแกรม expression จะมีความซับซ้อนและใช้ตัวกระท าที่หลากหลาย หากไม่

มีการใช้วงเล็บ ล าดับของการกระท าจะเป็นตามตารางที่ 2.15 เรียงจากมากไปหาน้อย จากบนลงล่าง
ดังนั้นเพื่อไม่ให้สับสน ควรใช้วงเล็บก าหนดเมื่อมีการใช้ ตัวกระท าที่หลากหลายและปะปนกันในหลาย
ประเภท เพื่อลดความผิดพลาดในการเขียนโปรแกรม






63 | Page













Araya's Creation

ตารางที่ 2.15 แสดงล าดับความส าคัญของตัวกระท า


Operator Description
** Exponentiation (raise to the power)

~ + - Ccomplement, unary plus and minus
(method names for the last two are +@
and -@)
* / % // Multiply, divide, modulo and floor
division

+ - Addition and subtraction
>> << Right and left bitwise shift
& Bitwise 'AND'

^ | Bitwise exclusive `OR' and regular `OR'
<= < > >= Comparison operators
<> == != Equality operators
= %= /= //= -= += *= **= Assignment operators

is is not Identity operators
in not in Membership operators
not or and Logical operators


2.15 ฟังก์ชั่นต่างๆในโมดูล math, random

ฟังก์ชั่นในกลุ่มนี้จะใช้ส าหรับการค านวณฟังก์ชั่นทางคณิตศาสตร์ทั่วไป การใช้งานฟังก์ชั่นกลุ่มนี้
จะต้องท าการ import math หรือ import random เมื่อต้องการใช้งาน method หรือ

function ต่างๆในโมดูลดังกล่าว


ตารางที่ 2.16 แสดงการใช้งานฟังก์ชั่นที่รวบรวมอยู่ใน Math Library


Method/ Function Description

sqrt(x) หาค่ารากที่สองของ x

pow(x,y) หาค่ายกก าลัง x ด้วย y


exp(x) หาค่าเอกซ์โปแนนเชียลของ x

log(x) หาค่าล็อกธรรมชาติของ x

log10(x) หาค่าล็อกฐานสิบของ x

abs(x) หาค่าสัมประสิทธิ์ของ x (เมื่อ x เป็นเลขจ านวนเต็ม)

fabs(x) หาค่าสัมประสิทธิ์ของ x (เมื่อ x เป็นเลขจ านวนทศนิยม)





64 | Page



Araya's Creation

Method/ Function Description

ceil(x) คืนค่าเลขจ านวนเต็มของ x โดยปัดเศษขึ้น

floor(x) คืนค่าเลขจ านวนเต็มของ x โดยปัดเศษลง


sin(x) หาค่า sin ของ x เรเดียน

cos(x) หาค่า cos ของ x เรเดียน

tan(x) หาค่า tan ของ x เรเดียน

cmp(x,y) -1 if x < y, 0 if x == y, or 1 if x > y


max(x1,x2,x3,…) The largest of its arguments: the value closest to
positive infinity

min(x1,x2,x3,…) The smallest of its arguments: the value closest to
negative infinity

degrees(x) Converts angle x from radians to degrees.



Listing 2.4 แสดงการค านวณหาค่ารากของสมการก าลังสอง (Quadratic Equation) ซึ่งอยู่ในรูปของ
2
+ + = 0
Listing 2.4 Roots\main.py
1. '''
2. Created on 25 Jul 2016
3. @author: Araya Florence
4. Demonstrate quadratic equation
5. '''
6. import math, cmath
7. if __name__ == '__main__':
8. pass
9. print("This program find the root of ax^2 + bx
+ c = 0\n")
10. a = int(input("Enter a: "))
11. b = int(input("Enter b: "))
12. c = int(input("Enter c: "))
13. if (b*b-4*a*c > 0):
14. print("There are real roots\n")
15. root1= (-b + math.sqrt (a*a - 4*a*c))/2*a
16. root2= (-b - math.sqrt (a*a - 4*a*c))/2*a
17. else:
18. print("Complex root/s found\n")
65 | Page













Araya's Creation

19. root1= (-b + complex(cmath.sqrt (a*a -
4*a*c))/2*a)
20. root2= (-b - complex(cmath.sqrt (a*a -
4*a*c))/2*a)


21. print("Root1 is " + str(root1) + "\n")
22. print("Root2 is " + str(root2) + "\n")

ในบทนี้เป็นการเขียนโปรแกรมเบื้องต้น อันได้แก่ การประกาศตัวแปร การรับข้อมูลเข้ามา
จากผู้ใช้ การก าหนดค่าให้กับตัวแปร การค านวณสมการทางคณิตศาสตร์ การแสดงผลข้อมูลออกทาง

หน้าจอ ทั้งนี้หลักๆในการเขียนโปรแกรมทุกๆโปรแกรมคือ
1. รับ input
2. ประมวลผล
3. แสดงผลที่ประมวลได้





























































66 | Page



Araya's Creation

บทที่ 3


โครงสร้างแบบทางเลือก (Selection Structures)



การเขียนโปรแกรมคอมพิวเตอร์เพื่อแก้ปัญหาการค านวนเชิงวิศวกรรม บ่อยครั้งที่การรับข้อมูลเข้ามา
จากผู้ใช้อาจท าให้เกิดข้อผิดพลาดในโปรแกรมขึ้นได้ อีกทั้งการค านวณที่ซับซ้อนมีเงื่อนไขในการค านวณ เช่น
ถ้าค่ารัศมีมากกว่า 0 จึงจะเป็นค่ารัศมีที่ถูกต้อง หรือค่าคะแนนการสอบปฏิบัติของนักศึกษาแต่ละคนจะต้อง

เป็นค่าที่อยู่ระหว่าง 0 ถึง 20 คะแนน เงื่อนไขเหล่านี้เป็นการสร้างทางเลือก ซึ่งการเขียนโปรแกรมสามารถ
เขียนในลักษณะของโครงสร้างแบบทางเลือกได้ โครงสร้างทางเลือกทั่วๆไปได้แก่ if, if-else, nested if การที่
ื่
จะตรวจสอบเงอนไขได้ ผู้เรียนจ าเป็นที่จะต้องเข้าใจตรรกะ ซึ่งเป็นผลของการทดสอบเงอนไข ผลที่ได้เป็นจริง
ื่
หรือเท็จเท่านั้น

เนื้อหาในบทนี้เริ่มต้นด้วยชนิดข้อมูลแบบตรรกะ (Boolean, bool) ตัวกระท าเปรียบเทียบ ตาราง
ตรรกะและตัวกระท าทางตรรกะ การใช้ if statement การใช้ if-else และ switch case


3.1 ชนิดข้อมูลแบบตรรกะ (Boolean data type)


ในภาษา Python มีชนิดข้อมูล bool ที่เป็นวัตถุ มีค่าเป็น True หรือ False เทียบกับ 1 หรือ
0 ตามล าดับ อีกทั้งยังสามารถแปลง expression ให้กลายเป็นข้อมูลชนิด bool ได้ด้วยการสั่ง bool
(expression) ตัวอย่างของการใช้งาน True แสดงใน Listing 3.1 นี้


Listing 3.1 Sample1/main.py

'''
Created on 26Jul.,2016

@author: Araya
'''

if __name__ == '__main__':
pass
while(True):
ch = input("Enter a character(q to quit): ")
if(ch == 'q'):
break
print("End")



โดยทั่วไปแล้วเงื่อนไขในความเป็นจริง ไม่ได้ขึ้นอยู่กับสิ่งเดียว หรือการทดสอบค่าที่เท่ากัน
เท่านั้น ตัวกระท าเกี่ยวกับความสัมพันธ์แสดงในตารางที่ 3.1

73 | Page













Araya's Creation

ตาราง 3.1 Increment/Decrement Operators (http://www.tutorialspoint.com/)

Operator Description Example Result
== เปรียบเทียบว่าเท่ากันหรือไม่ (a == b) False
!= ตรวจสอบว่าค่าทั้งสองไม่เท่ากันหรือไม่ (a != b) True
<> ตรวจสอบว่าค่าทั้งสองไม่เท่ากันหรือไม่ (a <> b) True
เหมือนกันกับ !=

> ตรวจสอบว่าทางซ้ายมากกว่าทางขวาหรือไม่ (a > b) False

< ตรวจสอบว่าทางซ้ายน้อยกวาทางขวาหรือไม่ (a < b) True
>= ตรวจสอบว่าทางซ้ายมากกว่าหรือเท่ากับ (a >= b) False

ทางขวาหรือไม่

<= ตรวจสอบว่าทางซ้ายน้อยกวาหรือเท่ากับ (a <= b) True
ทางขวาหรือไม่



หากต้องการก าหนดตัวแปรให้เป็นชนิดตรรกะสามารถท าได้ดังนี้

lightOn = True

หากต้องการตรวจสอบว่าสิ่งที่เก็บอยู่ในตัวแปร lightOn เป็นจริงหรือไม่ สามารถเขียนเป็น expression

ได้ดังนี้

lightOn == True

เช่น

print (lightOn == True)


จะได้ผลเป็น True ออกที่หน้าจอ เนื่องจากก่อนการทดสอบเงื่อนไข (lightOn == True) ได้มีการ
ก าหนด lightOn ให้เก็บค่า True

print (lightOn != True)

จะได้ผลเป็น False เนื่องจาก lightOn เก็บค่า True การทดสอบเงื่อนไขว่า lightOn ไม่เท่ากับ
True จึงให้ค่าเป็นเท็จ


3.2 ตัวกระท าทางตรรกะ (Logical Operators)


การเปรียบเทียบสามารถน ามาเชื่อมต่อกันด้วยตัวกระท าทางตรรกะเพื่อหาผลลัพท์ที่เป็นตรรกะ จริง
หรือเท็จให้ได้ ตัวกระท าทางตรรกะใน C มีดังแสดงในตาราง 3.2








74 | Page








Araya's Creation

ตาราง 3.2 ตัวกระท าทางตรรกะ (Logical Operators)


Operator Meaning Description Example


and AND เป็นจริงเมื่อทุกเงื่อนไขเป็นจริง (n > = 10) and (n <= 35)

or OR เป็นเท็จเมื่อทุกเงื่อนไขเป็นเท็จ (m = = ‘N’) or (m = = ‘Y’)

not NOT ให้ค่าเป็นตรงข้ามกับค่าเดิม not (ch == ‘N’)



ตัวกระท าเหล่านี้ใช้ตารางความจริง (truth tables) ในการหาค่าผลลัพท์ของตรรกะ ตารางความจริง
ของแต่ละตัวกระท าแสดงในตาราง 3.3

ตาราง 3.3 ตารางความจริง (truth table)


p1 p2 !p p1 && p2 p1 || p2
true true false true true
true false false false true
false true true false true
false false true false false

ตัวอย่างของการหาค่าความจริงจากตัวกระท าทางตรรกะ


สมมุติว่า age = 24 และ weight = 55

Example Result

(age > 18) && (weight <=50) True

(age > 18) && (weight > 55) False


(age > 34) || (weight < 55) False

(age > 34) || (weight <= 55) True

3.3 if statement


เป็นโครงสร้างแบบทางเดียวกล่าวคือมีทางเลือกเดียวที่จะท า หมายความว่า หากการทดสอบเงื่อนไข

ถูกต้องก็จะท าชุดค าสั่งที่ก าหนดไว้ หากผลของการทดสอบเงื่อนไขเป็นเท็จ ก็จะข้ามชุดค าสั่งที่ก าหนดไว้ไป
บางครั้งโครงสร้างการท างานแบบนี้ถูกเรียกว่าเป็น one-way selection หรือแบบทางเลือกเดียว รูปแบบของ
โครงสร้างแบบนี้คือ



75 | Page













Araya's Creation

if (boolean-expression):

statement
statement
statement

statement that not in if clause



สามารถแทนด้วยผังงานไดดังแสดงในรูปที่ 3.1 จะสังเกตได้ว่าหากค่ารัศมีไม่ได้มากกว่าหรือเท่ากับ 0

ซึ่งก็หมายความว่าค่ารัศมีน้อยกว่า 0 นั่นเอง การท างานของโปรแกรมก็จะข้ามการค านวณหาค่าพื้นที่ไป




























รูปที่ 3.1 แสดงผังงานของโครงสร้างแบบ if-statement

ตัวอย่างการท างานของ if-statement ใน Listing 3.2 เป็นการทดสอบว่าจ านวนเต็มที่ป้อนเข้ามา
หารด้วย 5 ลงตัวหรือไม่ ทั้งนี้ยังบอกได้ว่าเลขที่ป้อนเข้ามาเป็นเลขคู่หรือเลขคี่ การท างานของโปรแกรมเริ่ม

ด้วยการรับค่าเลขจ านวนเต็มเข้ามาเก็บไว้ในตัวแปร number หลังจากนั้นท าการตรวจสอบเงื่อนไขว่าสิ่งที่เก็บ
อยู่ใน number นั้นหาร 5 ลงตัวหรือไม่ด้วยการใช้ modulus (%) แล้วท าการตรวจสอบเงื่อนไขว่าเป็นเลขคู่
หรือไม่ด้วยการ %2


Listing 3.2 SimpleIfDemo\main.c

1. '''
2. Created on 26Jul.,2016

3. @author: Araya
4. '''

5. if __name__ == '__main__':
6. pass
7. num = input("Enter an integer: ")
8. if(num % 5 == 0):
9. print("Hi Five!")
76 | Page








Araya's Creation

10. if(num % 2 == 0):
11. print("Hi Even!")


ในการทดสอบเงื่อนไขบรรทัดที่ 8 หากเงื่อนไขเป็นจริง บรรทัดที่ 10 จะถูกท างาน แล้วด าเนินการ

บรรทัดที่ 10 ต่อไป ทั้งนี้ บรรทัดที่ 10 จะถูกท างานเสมอไม่ว่าเงื่อนไขในบรรทัดที่ 8 จะจริงหรือเท็จ สามารถ
เขียนเป็นผังงานเพื่อให้เห็นชัดเจนขึ้นได้ ดังรูปที่ 3.2














































รูปที่ 3.2 แสดงผังงานของส่วนทดสอบเงื่อนไขใน Listing 3.1 (บรรทัดที่ 8 – 11)


หากท าการแก้ไขให้การตรวจสอบเงื่อนไขว่าเป็นเลขคู่หรือไม่ จะถูกท าก็ต่อเมื่อหารด้วย 5 ลงตัวแล้ว

ต้องน าชดค าสั่งตรวจสอบเงื่อนไขเลขคู่ไปไว้ในบลอค (block) ใน Python คือย่อหน้าที่ตรงกัน ดังแสดงใน
Listing 3.3 โปรดสังเกตการใช้ย่อหน้า เพื่อให้เห็นชัดเจนว่าชุดค าสั่งใดเกยวเนื่องกัน ย่อหน้าจะต้องตรงกัน
ี่
เพื่อให้ทราบว่าเป็น block ของชุดค าสั่ง if (number % 5) ในบรรทัดที่ 9 และ 11

Listing 3.3 SimpleIfDemo2\main.c


1. '''
77 | Page













Araya's Creation

2. Created on 26Jul.,2016

3. @author: Araya
4. '''

5. if __name__ == '__main__':
6. pass
7. num = input("Enter an integer: ")
8. if(num % 5 == 0):
9. print("Hi Five!")
10. if(num % 2 == 0):
11. print("Hi Even!")


3.4 if-else statement (Two-way if)

โครงสร้างแบบทางเลือกสองทางนี้ เกิดจากการใช้งาน if-else ซึ่งสามารถอธิบายในเชิงภาษาชาวบ้าน

ได้คือ ถ้าจริงท าอย่างที่หนึ่ง ถ้าไม่จริงท าอย่างอื่น หลังจากนั้นแล้วท าต่อไป รูปที่ 3.3 แสดงผังงานของ
โครงสร้างแบบ if-else























รูปที่ 3.3 ผังงานโครงสร้างแบบสองทางเลือก (if-else statement)

ตัวอย่างโปรแกรมที่ใช้โครงสร้างแบบสองทางเลือกแสดงใน Listing 3.3 จะสังเกตว่า หลังจากทดสอบ

เงื่อนไขว่ารัศมีมากกว่าหรือเท่ากับ 0 หรือไม่ โปรแกรมเลือกที่จะค านวณหาพื้นที่และแสดงค่าพื้นที่ออกทาง
ื่
หน้าจอหากเงอนไขดังกล่าวเป็นจริง แต่หากเงื่อนไขเป็นเท็จ ก็โปรแกรมจะแสดงข้อความออกที่หน้าจอว่ารัศมี
เป็นค่าติดลบ


Listing 3.3 ComputeAreaIfElse\main.c

1. '''
2. Created on 23 Jul 2016

3. @author: Araya
4. '''
5. from math import pow,pi
78 | Page








Araya's Creation

6. if __name__ == '__main__':
7. pass
8. radius = input("Please enter a radius: ")
9. if(float(radius) >= 0):
10. area = pi * pow(float(radius), 2)
11. print("The area is %5.2f" % area + ".")
12. else:
13. print("Negative radius")

เมื่อท าการทดสอบโปรแกรมด้วยค่า -2 และ 2.5 จะได้ผลตอบสนองตามรูปที่ 3.4 และ 3.5
ตามล าดับ
















รูปที่ 3.4 ผลตอบสนองเมื่อรับค่ารัศมีที่เป็นลบ


















รูปที่ 3.5 ผลตอบสนองเมื่อรับค่ารัศมีที่เป็นบวก

3.5 Nested if and multi-way if-else statements


โครงสร้างแบบ if-else สามารถน ามาซ้อนกันได้ เรียกว่า nested if-else (อ่านว่าเนสเต็ด อีฟ เอลส์)
โครงสร้างแบบนี้เหมาะสมกับการทดสอบเงื่อนไขแบบต่อเนื่องหลายทางเลือก เช่นการตัดเกรดที่มีเงือนไขดังน ี้
ถ้าได้คะแนนตั้งแต่ 90 คะแนน ขึ้นไป จะได้เกรด A

ถ้าได้คะแนนตั้งแต่ 80 คะแนน ขึ้นไป จะได้เกรด B
ถ้าได้คะแนนตั้งแต่ 70 คะแนน ขึ้นไป จะได้เกรด C
ถ้าได้คะแนนตั้งแต่ 60 คะแนน ขึ้นไป จะได้เกรด D

79 | Page













Araya's Creation

ถ้าได้คะแนนต่ ากว่า 60 คะแนน จะได้เกรด F
สามารถเขียนผังงานแสดงขั้นตอนการท างานของโปรแกรมได้ดังในรูป 3.6























































รูป 3.6 ผังงานการท างานของโปรแกรมในส่วนพิจารณาเงื่อนไขเกรด

ส่วนของโค้ดเป็นดังนี้
if (score >= 90.0):
print("Grade is A")
elif (score >= 80.0):
print("Grade is B")
elif (score >= 70.0):
print("Grade is C")
elif (score >= 60.0):
print("Grade is D")
else:
print("Grade is F")

80 | Page








Araya's Creation

3.6 ข้อผิดพลาดในการใช้งานโครงสร้างแบบ if, if-else และ nested if-else


การใช้งานโครงสร้างแบบทางเลือกมักจะมีข้อผิดพลาดเกิดขึ้นได้บ่อย โดยที่ตัวผู้เขียนโปรแกรมเอง
อาจจะหาไม่พบ แต่ผลลัพท์ที่ได้อาจจะไม่ถูกต้องตามเงื่อนไขของโจทย์ปัญหา ข้อผิดพลาดต่างๆมีดังนี้
1. ลืมย่อหน้าให้ตรงกับเงื่อนไขครอบกลุ่มของชุดค าสั่ง หากต้องการให้โปรแกรมท าหลายๆชุดค าสั่งเมื่อ
เงื่อนไขที่ทดสอบเป็นจริง ชุดค าสั่งเหล่านั้นต้องอยู่ย่อหน้าตรงกันเสมอ

2. ไม่มี โคล่อนหลัง if statement เช่น if (count >= 0) ขาดโคล่อนปิดท้าย if statement
จะท าให้โครงสร้าง if นั้นไม่ท างาน ข้อผิดพลาดนี้จะท าให้เกิด error สีแดงในการเขียนโปรแกรมบน
Eclipse แต่จะรู้ตอนรัน หากใช้ Python Shell หรือ IDLE
3. ใช้ = แทนการใช้ == โดยไม่ได้ตั้งใจ ข้อผิดพลาดนี้จะท าให้เกิด error สีแดงในการเขียนโปรแกรมบน

Eclipse แต่จะรู้ตอนรัน หากใช้ Python Shell หรือ IDLE เช่น

if (count = 3):
print ("count is zero")
else:
print ("count is not zero")
4. วาง else ไว้ในต าแหน่งที่ก่อให้เกิดความเข้าใจผิด ยกตัวอย่างเช่น มีการใช้ if สองครั้งและใช้
else หนึ่งครั้ง ท าให้เกิดการสับสนว่า else นั้นเป็นของ if ตัวไหน ข้อผิดพลาดนี้สามารถ
หลีกเลี่ยงได้ง่ายด้วยการใช้ย่อหน้าให้เหมาะสม เช่น

i = 1, j =2, k = 3
if (i > j):
if(i > k):
print("A")
else:
print ("B")
โค้ดข้างบนนี้ หากท าการรันจะไม่ได้ A และไม่ได้ B เนื่องจาก i ไม่ได้มากกว่า j จึงไม่มีการทดสอบ
เงื่อนไขของการเปรียบเทียบ i และ k ซึ่งจะเห็นได้ว่า else เป็นของ if (i > k) ท าให้

ชุดค าสั่งของ else ก็ไม่ถูกท างานไปด้วย สามารถใช้ย่อหน้าเพื่อท าให้เข้าใจได้ง่ายขึ้นดังนี้
หากต้องการเขียนโปรแกรมให้ท างานอย่างถูกต้องว่าถ้า i ไม่ได้มากกว่า j ให้แสดง B ออกที่หน้าจอก็
สามารถแก้ไขให้เป็นดังนี้
i = 1, j =2, k = 3
if (i > j):
if(i > k):
print("A")
else:
print ("B")
5. ท าการทดสอบเงื่อนไขซ้ าซ้อน เช่น มีการประกาศตัวแปร even = True (ให้เป็นชนิด bool)

แล้วน าตัวแปร even ไปท าการทดสอบเงื่อนไขใน if statement ดังแสดงในตัวอย่าง
if (even == True):


81 | Page













Araya's Creation

print ("It is true")

สามารถน า even มาใช้ได้เลย กล่าวคือ

if (even):

print ("It is true")

3.7 ข้อแนะน าในการหลีกเลี่ยงหลุมพราง (Pitfalls)


บ่อยครั้งที่การค านึงถึงตรรกะและการทดสอบเงื่อนไข ส่งผลให้การเขียนโปรแกรมในส่วนนั้นมีความ
ยุ่งยากมากขึ้นโดยใช่เหตุ ข้อแนะน าในการหลีกเลี่ยงความยุ่งยากมีดังนี้


1. ท าให้การก าหนดตัวแปรชนิดตรรกะเรียบงายด้วยการใช้เครื่องหมายก าหนดค่า ดังตัวอย่าง

ต่อไปนี้
if (number % 2 == 0)

even = True

else

even = False

สามารถเขียนให้เรียบง่ายได้ดังนี้

even = number %2 == 0


2. หลีกเลี่ยงการเขียนโค้ดซ้ าซ้อนในแต่ละกรณีของการทดสอบเงื่อนไข ดังแสดงในตัวอย่าง จะเห็น
ว่าหากต้องการแสดงค่า tuition ไม่ว่าเงื่อนไขจะจริงหรือเท็จ ก็ให้เอา statement ของการ
แสดงค่า tuition ออกมานอก if-else statement
if (instate):

tuition = 5000

print ("The tuition is %d .\n" , % tuition)

else:

tuition = 15000
print ("The tuition is %d .\n" , % tuition)





โค้ดข้างต้นไม่ผิด และไม่มี error เมื่อท าการ compile หรือ run แต่สามารถเขียนให้ดีขึ้นและลด
ความซ้ าซ้อนได้ดังนี้

if (instate):

tuition = 5000


82 | Page








Araya's Creation

else:

tuition = 15000
print ("The tuition is %d .\n" , % tuition)


3.8 switch-case

โครงสร้างแบบ switch-case เป็นโครงสร้างแบบหลายทางเลือก ในความเป็นจริงแล้วคือ nested if

นั่นเอง ใน Python ไม่มีไวยากรณ์ switch-case ปัญหาที่อาจใช้โครงสร้างแบบนี้ เช่น การค านวณภาษีเงินได้
สามารถท าได้หลายกรณีได้แก่


1. ผู้ยื่นภาษีแบบคนโสด
2. ผู้ยื่นแต่งงานแล้วขอใช้สิทธิ์ลดหย่อนโดยยื่นพร้อมกันทั้งสามีภรรยา
3. ผู้ยื่นแต่งงานแล้วแต่ยื่นแยกกัน
ทั้งนี้สามารถเขียนเป็นภาษาเทียมส าหรับการท างานแบบ switch-case ได้ดังนี้


switch (status)

{


case 0: compute tax for single filer

break


case 1: compute tax for married jointly filers

break


case 2: compute tax for married filing separately

break


default: Default action

}


ในความเป็นจริงก็คือ

If (status == 0)


compute tax for single filer

else if (status == 1)

83 | Page













Araya's Creation

compute tax for married jointly filers


else if (status == 2)

compute tax for married filing separately


else

Default action


และสามารถเขียนเป็นผังงานได้แสดงในรูป 3.7












































รูปที่ 3.7 ผังงานแสดงขั้นตอนการค านวณภาษีเงินได้บุคคลธรรมดา






3.9 ล าดับความส าคัญของตัวกระท า

จะเห็นได้ว่านอกจากตัวกระท าทางคณิตศาสตร์แล้ว ในบทนี้มีตัวกระท าเปรียบเทียบและตัวกระท า
ิ่
ทางตรรกะเพมเข้ามา เมื่อเขียน expression ข้อให้ค านึงถึงล าดับความส าคัญ แต่เพื่อให้แน่ใจ การใส่วงเล็บ



84 | Page








Araya's Creation

เป็นการก าหนดความส าคัญได้ตามที่เราต้องการ ล าดับความส าคัญของตัวกระท าต่างๆ โดยนับจากบนลงล่าง
เป็นดังนี้
+, - (Unary plus and minus), ++var,--var
(type) Casting
! (Not)
*, /, % (Multiplication, division, and remainder)
+, - (Binary addition and subtraction)
<, <=, >, >= (Comparison)
==, != (Equality)
&& (Conditional AND) Short-circuit AND
|| (Conditional OR) Short-circuit OR
=, +=, -=, *=, /=, %= (Assignment operator)


เนื้อหาในบทนี้ เปิดโลกของการเขียนโปรแกรมมากขึ้นในส่วนของการประมวลผล ท าให้ผู้เรียนสามารถเขียน
โปรแกรมค านวณที่ซับซ้อนยิ่งขึ้นได้ โดยเฉพาะการประมวลผลที่เกี่ยวข้องกับเงื่อนไข และทางเลือก



















































85 | Page













Araya's Creation

1309 200 Computer Programming Laboratory

ปฏิบัติการที่ 4: Selection



วัตถุประสงค์


1. รู้จักการสุ่มข้อมูล
2. สามารถใช้ค าสั่ง if ได้
3. สามารถใช้ค าสั่ง if – else แบบสองทางเลือกได้
4. สามารถใช้ค าสั่ง if – else แบบหลายทางเลือกได ้


ทฤษฎีที่เกี่ยวข้อง


บ่อยครั้งที่การค านวณทางวิศวกรรมเกี่ยวข้องกับการตรวจสอบเงื่อนไขก่อนการค านวณ หรือท าการ
ค านวณแล้วน ามาตรวจสอบเงื่อนไข โครงสร้างแบบทางเลือกถูกใช้ในการตรวจสอบเงื่อนไขในโปรแกรมอยู่
เสมอ โครงสร้างแบบทางเลือกที่ใช้อยู่แทบทุกภาษาของการเขียนโปรแกรมคิด if, if-else และ nested if-else

ก่อนที่จะปฏิบัติการเกี่ยวกับโครงสร้างทางเลือก ทฤษฏีเกี่ยวกับการสุ่มข้อมูลเป็นสิ่งที่จ าเป็นต่อการน ามา
ประยุกต์ใช้เพื่อสร้างความเข้าใจเกี่ยวกับโครงสร้างทางเลือก และเปิดกว้างโจทย์ที่สามารถน ามาประยุกต์ใช้ได้
หลายครั้งที่เราต้องการได้ข้อมูลที่น ามาทดสอบโปรแกรม โดยข้อมูลนั้นมาจากการสุ่มที่เราไม่รู้ว่าจะเป็นค่าใด
การสุ่มนี้สามารถน าไปใช้ได้กับโจทย์ปัญหาเกี่ยวกับลอตเตอร์รี่ การสอบย่อย (ตั้งโจทย์สอบย่อย) การทายวัน

เกิด ทายไพ่ เป็นต้น

4.1 การสร้างตัวเลขสุ่ม (Generating Random Numbers)


ในการสุ่มตัวเลข ใน Python สามารถเรียกใช้ฟังก์ชั่นที่ชื่อว่า random() และ ฟังก์ชั่นนี้ให้ค่า
ตัวเลขจ านวนทศนิยมระหว่าง 0 – 1 การเรียกใช้งาน random() จะต้องท าการ import random

module เสียก่อน ดังตัวอย่าง


Listing 3.4 SimpleRandom\main.py

1. '''
2. Created on 26Jul.,2016
3. @author: Araya
4. '''
5. import random
6. if __name__ == '__main__':
7. pass
8. print("random#1")
9. print(random.random())
10. print("random#2")
11. print(random.random())
86 | Page








Araya's Creation

ตัวอย่างการใช้งาน random() แสดงใน Listing 3.5 โปรแกรมดังกล่าวท าการสุ่มจ านวนเต็มสอง

ตัวมาเก็บไว้ที่ตัวแปร number1 และ number2 แล้วท าการเปรียบเทียบค่าที่ได้ เพื่อน าค่ามากไปใช้เป็น
ตัวตั้ง และท าการลบด้วยค่าที่น้อยกว่า แล้วแสดงผลลัพท์ออกทางหน้าจอเพื่อถามว่า ผลของการลบกันคือ

อะไร เมื่อผู้ใช้ใส่ค าตอบเข้าไปก็จะถูกเก็บไว้ในตัวแปร answer ซึ่งจะใช้ในการทดสอบว่าผู้ใช้ตอบถูกหรือไม่


Listing 3.5 SubtractionQuiz\main.c

1. '''
2. Created on 26Jul.,2016

3. @author: Araya
4. '''
5. import random
6. if __name__ == '__main__':
7. pass
8. #1. Generate two random single-digit integers
9. number1 = int(random.random()*100 % 10)
10. number2 = int(random.random()*100 % 10)
11. # 2. If number1 < number2, swap number1 with number2
12. if (number1 < number2):
13. temp = number1
14. number1 = number2
15. number2 = temp
16. # number1,number2 = number2,number1
17. # 3. prompt user for answer
18. answer = int(input("What is {} - {}
?".format(number1,number2)))
19. # 4. Grade the answer and display the result
20. if (number1 - number2 == answer):
21. print("You are correct!")
22. else:
23. print("Your answer is wrong.\n {} - {} should
be {}.\n".format(number1,number2,(number1 -
number2)))
***Note การ swap ค่าใน Python สามารถท าได้โดยไม่ต้องมี temp variable ดังบรรทัดที่ 16


4.2 การท าเมนู


โครงสร้าง switch-case เป็นโครงสร้างที่เหมาะสมมากเพื่อใช้ส าหรับท าเมนูให้เลือกว่าผู้ใช้ต้องการจะ
ท าอะไร ใน Python ไม่มี switch case แต่สามารถใช้ nested if ช่วยในการท าเมนูได้ ตัวอย่างของการท า

เมนูอยู่ใน Listing 3.6 ผลตอบสนองของโปรแกรมแสดงในรูปที่ 3.8


87 | Page













Araya's Creation

Listing 3.6 SimpleMenu\main.py


1. '''
2. Created on 26Jul.,2016
3. @author: Araya
4. '''
5. if __name__ == '__main__':
6. pass
7. # Greeting user
8. print("Welcome to my program!\n")
9. print("1.Latte\n2.Cappuccino\n3.Americano\n4.Esp
resso\n5.Chocolate\n")
10. # getting user's pick
11. choice = input("Please pick your choice:")
12. #check what's the order
13. if(choice == '1'):
14. #do what you have to if user pick 1
15. print("\nHere is your cup of latte.\n")
16. elif(choice == '2'):
17. #do what you have to if user pick 2
18. print("\nHere is your cup of
cappuccino.\n")
19. elif(choice == '3'):
20. #do what you have to if user pick 3
21. print("\nHere is your cup of americano.\n")
22. elif(choice == '4'):
23. #do what you have to if user pick 4
24. print("\nHere is your cup of espresso.\n")
25. elif(choice == '5'):
26. #do what you have to if user pick 5
27. print("\nHere is your cup of chocolate.\n")
28. else:
29. #default://if the input is not in our cases
30. print("\nInvalid choice, bye!\n")

***Note สังเกตว่าการรับตัวเลือกเข้ามาจากผู้ใช้นั้นรับเข้ามาการใช้ input( ) จะได้สตริงเสมอ ดังนั้นการ
น าตัวเลือกมาตรวจสอบจึงตองตรวจสอบอักขระไม่ใช่เลขจ านวนเต็ม









88 | Page








Araya's Creation

รูปที่ 3.8 แสดงผลตอบสนองของโปรแกรมใน Listing 3.6


4.3 การจัดการเกี่ยวกับวันและเวลา

ใน Python มีโมดูลเกี่ยวกับวันและเวลา (date and time) ให้ผู้พัฒนาโปรแกรมสามารถน ามาใช้ใน

การเขียนโปรแกรมได้ โดยปกติแล้วเวลาจะนับจาก tick ตั้งแต่วันที่ 1 มกราคม 1970 เวลา 12:00 am นับ

วินาทีตั้งแต่นั้นเป็นต้นมา หากเราอยากทราบวาปัจจุบันเป็นจ านวนกี่ ticks ก็สามารถใช้ค าสั่ง


ticks = time.time()
print ("Number of ticks since 12:00am, January 1, 1970:",
ticks)
จากจ านวน ticks จนถึงปัจจุบัน สามารถน าจ านวนที่เรียกจากฟังก์ชั่น time()ไปใช้งานต่อได้

หากต้องการทราบเวลาปัจจุบันที่ต าแหน่งปัจจุบันก็สามารถเรียกใช้งาน

localtime = time.localtime(time.time())
print ("Local current time :", localtime)

รายละเอียดเกี่ยวกับวันและเวลา สามารถดได้ที่
http://www.tutorialspoint.com/python/python_date_time.htm







89 | Page













Araya's Creation

ปฏิบัติการส่วนที่ 1 การสุ่มตัวเลข


★ค าสั่ง จงสร้างโปรเจ็คใหม่โดยใช้ชื่อว่า AdditionQuiz แล้วท าการปรับปรุงแก้ไข Listing 3.5 เพื่อให้เป็น

การเล่นเกมบวกเลขแทนการลบเลข

ปฏิบัติการส่วนที่ 2 การใช้ if-else หลายทางเลือก


★ค าสั่ง จงสร้างโปรเจ็คใหม่โดยใช้ชื่อว่า ComProGrading แล้วท าการเขียนโปรแกรมตัดเกรด โดยรับค่า

คะแนนเข้ามาจากผู้ใช้แล้วท าการแสดงผลว่าคะแนนดังกล่าวได้เกรดอะไร โดยช่วงของการตัดเกรดคือ


ถ้าได้คะแนนตั้งแต่ 90 คะแนน ขึ้นไป จะได้เกรด A
ถ้าได้คะแนนตั้งแต่ 85 คะแนน ขึ้นไป จะได้เกรด B+
ถ้าได้คะแนนตั้งแต่ 80 คะแนน ขึ้นไป จะได้เกรด B
ถ้าได้คะแนนตั้งแต่ 75 คะแนน ขึ้นไป จะได้เกรด C+


ถ้าได้คะแนนตั้งแต่ 70 คะแนน ขึ้นไป จะได้เกรด C
ถ้าได้คะแนนตั้งแต่ 65 คะแนน ขึ้นไป จะได้เกรด C+

ถ้าได้คะแนนตั้งแต่ 60 คะแนน ขึ้นไป จะได้เกรด D
ถ้าได้คะแนนต่ ากว่า 60 คะแนน จะได้เกรด F



ปฏิบัติการส่วนที่ 3 การใช้งานเมนู


★ค าสั่ง จงสร้างโปรเจ็คใหม่โดยใช้ชื่อว่า CircleMenu แล้วท าการเขียนโปรแกรมเพื่อรับค่ารัศมีเข้ามาจากผู้ใช้
และท าการเช็คว่าค่ารัศมีที่รับเข้ามาไม่ใช่ค่าลบ หลังจากนั้นให้ผู้ใช้เลือกที่จะค านวณ


1. Circle Area

2. Circle Circumference
3. Volume

โดยโปรแกรมจะต้องท าการค านวณ ค่าพื้นที่วงกลมเมื่อผู้ใช้เลือก 1 ท าการหาค่าเส้นรอบวงเมื่อ
ผู้ใช้เลือก 2 และท าการหาปริมาตรทรงกลมเมื่อผู้ใช้เลือก 3


(Hint: ปริมาตรทรงกลมต้องการความสูงเพื่อใช้ในการค านวณ)


ปฏิบัติการส่วนที่ 4 การใช้งานวันและเวลา


★ค าสั่ง จากตัวอย่างการใช้งานวันและเวลา ให้นักศึกษาลองเขียนโปรแกรมแสดงวันและเวลาในประเทศอื่นๆ





90 | Page








Araya's Creation

แบบฝึกหัด


★ค าสั่ง ให้นักศึกษาน ารหัสนักศึกษาของตนเอง modulus ด้วย 4 หากได้เศษ 0 ให้ท าข้อ 4 เศษ 1 ท าข้อ 1

เศษ 2 ท าข้อ 2 และเศษ 3 ท าข้อ 3 โดยท าการเขียนโค้ดในโปรเจ็คใหม่ เพื่อหาผลลัพท์ของการท า modulo
รหัสนักศึกษาของตนเองก่อนท าการเขียนโค้ด ตามโจทย์ของข้อที่ได้ต่อไปนี้


1. โปรแกรมลอตเตอรี่ โดยท าการสุ่มตัวเลขสองหลัก เพื่อให้เป็นเลขที่ออก หลังจากนั้นแล้วให้รับตัวเลข
2 หลักจากผู้ใช้ เพื่อที่จะท าการตรวจเช็คว่าตัวเลขที่ผู้ใช้ใส่เข้ามาถูกรางวัลหรือไม่ โดยท าการ

ตรวจสอบกับเลขที่ออกที่ได้สุ่มไว้ โดยก าหนดว่าถ้าถูกเลขท้ายสองตัว จ่าย 5000 บาท ถ้าถูกสองตัว

แต่สลับที่จ่าย 500 บาท ถ้าถูกตัวใดตัวหนึ่งจ่าย 200 บาท ถ้าไม่ถูกเลยคือถูกกิน ไม่ได้สักบาท
Hint: random()%1000 จะได้เลขจ านวนเต็มสามหลัก digit1=number/100 จะให้ค่า

หลักที่หนึ่ง digit2=number%10 จะได้หลักที่สอง


2. (Data Processing) Write, execute, and verify a C program that accepts three numbers
as input, and then sorts the three numbers and displays them in ascending order,
from lowest to highest. For example, if the input values are 7 5 1, the program

should display them in the numerical order 1 5 7.
3. (Data Processing) As a part-time student, you took two courses last term. Write, run,
and test a C program that calculates and displays your grade point average (GPA) for
the term. Your program should prompt the user to enter the grade and credit hours

for each course. This information should then be displayed with the lowest grade
first, and the GPA for the term should be calculated and displayed. A warning
message should be printed if the GPA is less than 2.0 and a congratulatory message if
the GPA is 3.5 or above.

4. (Data Processing)
a. Write a C program to compute and display a person’s weekly salary as determined

by the following conditions: If the hours worked are less than or equal to 40, the

person receives $8.00 per hour otherwise, the person receives $320.00 plus $12.00
for each hour worked over 40 hours. The program should request the hours worked

as input and display the salary as output.

b. How many runs should you make for the program written in Exercise 4a to verify

that it’s operating correctly? What data should you input in each program run?



91 | Page













Araya's Creation

This page intentionally left blank.































































92 | Page








Araya's Creation


Click to View FlipBook Version