การทำงานแบบเลือกทำ
ภาควิชาวิศวกรรมคอมพิวเตอร์
จุฬาลงกรณ์มหาวิทยาลัย
๒๕๖๒
ผังงาน (Flowchart)
3
ผังงาน : บรรยายขั้นตอนการทำงาน
Program
weight = float(input())
height = float(input())
hm = height / 100
bmi = weight / (hm**2)
print( bmi )
4
ผังงานและคำสั่ง : if - else
if เงื่อนไข :
do this if true
else :
do this if false
5
6
การเขียนคำสั่ง if - else
ต้องมี
เครื่องหมาย
:
คำสั่งในกลุ่มเดียวกันต้องเยื้อง
เข้าไปทางขวา ให้ตรงกัน
if a < 9 :
a += 5
b = a * c / 2
else :
a -= 1
b = a + b
✔
กลุ่ม if กับ else ไม่ตรงกันก็ได้
7
นิพจน์บูลลีน: กำหนดเงื่อนไข
•ได้ผลเป็น True หรือ False
•ใช้เครื่องหมาย < > <= >= != == เพื่อ
เปรียบเทียบว่า < > ≤ ≥ ≠ เท่ากัน
•เชื่อมการเปรียบเทียบได้ด้วย and or
•กลับผลการเปรียบเทียบได้ด้วย not
•ถ้ามีทั้ง and or not จะทำ not ก่อน แล้ว and แล้ว or
if m == 4 or m == 6 or m == 9 or m == 11 :
print('ลงท้ายด้วย "ยน"')
if not(m == 2 or m == 4 or \
m == 6 or m == 9 or m == 11) :
print('ลงท้ายด้วย "คม"')
if m != 2 and m != 4 and \
m != 6 and m != 9 and m != 11 :
print('ลงท้ายด้วย "คม"')
8
ตัวอย่าง
if x % 2 == 0 : # ถ้า x เป็นจำนวนคู่
if 1 <= m <= 12: # ถ้า m มีค่าตั้งแต่ 1 ถึง 12
if y % 400 == 0: # ถ้า y หารด้วย 400 ลงตัว
if student_id[-2:] == "21": # ถ้าเป็นนิสิตวิศวฯ
if tel_no[:2] == "02": # ถ้าเป็นโทรศัพท์ใน กทม
9
แบบฝึกหัด: หมายเลขโทรศัพท์เคลื่อนที่
tel_no เป็นหมายเลขโทรศัพท์เคลื่อนที่ เมื่อมี
- 10 หลัก และ
- ขึ้นต้นด้วยเลข 06, 08 หรือ 09
(ไม่ต้องตรวจหลักอื่นว่าเป็นตัวเลข
ถ้าตรวจจะยาวเกินไป ค่อยทำในภายหลัง)
10
ตัวอย่าง
weight = float(input())
height = float(input())
if weight <= 0 or \
height <= 0 :
print("Error")
else :
hm = height / 100
bmi = weight / hm**2
if bmi < 18.5 :
print("Underweight")
else :
if bmi < 25 :
print("Normal")
else:
print("Overweight")
11
การเปรียบเทียบลิสต์กับลิสต์
•เปรียบเทียบทีละตัวจากซ้ายไปขวา
[10, 2] > [9, 9, 9]
เป็นจริง
[10, 2] > [10, 1, 9]
เป็นจริง
[10, 2] > [10]
เป็นจริง
[10] > []
เป็นจริง
12
การเปรียบเทียบสตริงกับสตริง
•อักษรอังกฤษตัวเล็กมีค่ามากกว่าตัวใหญ่
•ตัวอักษรมีค่าน้อยไปมากตามลำดับ A ถึง Z
"A" < "Z"
เป็นจริง
"A" < "B" < "Z" < "a" < "b" < "z"
เป็นจริง
•สตริงตัวเลขมีค่าน้อยไปมากตามลำดับ 0 ถึง 9
"0" < "1" < "2" < "3" < "4" < "9"
เป็นจริง
•เปรียบเทียบสตริงจะเปรียบเทียบทีละตัวจากซ้ายไปขวา
"ABC" < "aA"
เป็นจริง
"ABC" < "ACAA"
เป็นจริง
"ABC" < "ABCC"
เป็นจริง
"100" < "19"
เป็นจริง
13
ตัวอย่าง
if "a" <= x <= "z" or \
"A" <= x <= "Z" : # ถ้า x เป็นตัวอักษรอังกฤษ
if "0" <= x <= "9" : # ถ้า x เป็นตัวเลข
# ถ้าเกิดหลัง 31 ก.ย. 2540, birth_date = [y,m,d]
if birth_date > [2540,9,31] :
14
แบบฝึกหัด: เลขใหญ่เล็ก
โปรแกรมรับอักขระสามตัว ตรวจว่า ตัวซ้าย
ตัวกลาง และตัวขวา เป็น ตัวเลข ตัวอังกฤษใหญ่
และ ตัวอังกฤษเล็ก ตามลำดับ หรือไม่
15
if a in b : a อยู่ใน b ?
•ถ้า a กับ b เป็นสตริง
–a in b หาว่า a เป็นสตริงย่อยของ b หรือไม่
–"python" in "I love python" เป็นจริง
–"python" in "I love Python" เป็นเท็จ
•ถ้า b เป็นลิสต์
–a in b หาว่า a เป็นสมาชิกในลิสต์ b หรือไม่
–6 in [2,4,6,8,10] เป็นจริง
–"Bones" in ["Kirk", "McCoy", "Spock"] เป็นเท็จ
•if not (a in b) : # ถ้า a ไม่อยู่ใน b
•if a not in b : # ถ้า a ไม่อยู่ใน b
16
ตัวอย่าง
# ให้ x เป็นสตริงที่เก็บตัวอักษรตัวเดียว
# ทดสอบว่า x เก็บตัวอักษรที่เป็นสระ
if x=="a" or x=="e" or x=="i" or \
x=="o" or x=="u" or x=="A" or \
x=="E" or x=="I" or x=="O" or x=="U" :
if x in "aeiouAEIOU" :
if x in ["a","e","i","o","u",
"A","E","I","O","U"] :
ยาวมาก
ถ้า x เก็บ "ei"
ก็เป็นจริง
แบบนี้ชัวร์สุด
17
แบบฝึกหัด: ตรวจรหัสที่รับมาว่าถูกต้องหรือไม่ ?
01
02
20
21
22
23
24
25
26
27
28
29
30
31
สถาบันภาษาไทยสิรินธร
ศูนย์การศึกษาทั่วไป
บัณฑิตวิทยาลัย
คณะวิศวกรรมศาสตร์
คณะอักษรศาสตร์
คณะวิทยาศาสตร์
คณะรัฐศาสตร์
คณะสถาปัตยกรรมศาสตร์
คณะพาณิชยศาสตร์
และการบัญชี
คณะครุศาสตร์
คณะนิเทศศาสตร์
คณะเศรษฐศาสตร์
คณะแพทยศาสตร์
คณะสัตวแพทยศาสตร์
32
33
34
35
36
37
38
39
40
51
53
55
58
คณะทันตแพทยศาสตร์
คณะเภสัชศาสตร์
คณะนิติศาสตร์
คณะศิลปกรรมศาสตร์
คณะพยาบาลศาสตร์
คณะสหเวชศาสตร์
คณะจิตวิทยา
คณะวิทยาศาสตร์การกีฬา
สำนักวิชาทรัพยากร
การเกษตร
วิทยาลัยประชากรศาสตร์
วิทยาลัยวิทยาศาสตร์
สาธารณสุข
สถาบันภาษา
สถาบันบัณฑิตบริหารธุรกิจ
ศศินทร์ฯ
18
รูปแบบคำสั่งกรณี จริงถึงทำ / เท็จถึงทำ
pass เป็นคำสั่งที่บอกว่าไม่ต้องทำอะไร ผ่านไปเลย
19
ตัวอย่าง: ปีนี้มีกี่วัน
•ให้ y เก็บเลขปี ค.ศ.
เดือนกุมภาพันธ์มี 29 วัน ก็เมื่อ
– y หารด้วย 400 ลงตัว หรือ
– y หารด้วย 4 ลงตัว แต่ต้องหารด้วย 100 ไม่ลงตัว
– เช่น ปี 2004, 2000, (ปี 2100 ไม่เงื่อนไข)
20
ตัวอย่าง: ซื้อ 2 แถม 1
p1 = float(input())
p2 = float(input())
p3 = float(input())
min_p = p1
if p2 < min_p:
min_p = p2
if p3 < min_p:
min_p = p3
total_p = p1 + p2 + p3
print("Total:", total_p)
print("Get on free:", min_p)
print("Pay only:", total_p – min_p)
รับข้อมูล
หาค่าน้อยสุด
แสดงผล
21
แบบฝึกหัด: คะแนนยิมนาสติก
คะแนนของกรรมการ 4 คน ตัดคะแนนที่ต่ำสุดและสูงสุดออก
แล้วนำคะแนนของสองคนที่เหลือมาหาค่าเฉลี่ย
Input
Output
9.15 9.20 9.30 9.50
9.25
22
if – else – if – else - … if – else
if w == 0 :
print("เสาร์")
else :
if w == 1 :
print("อาทิตย์")
else :
if w == 2 :
print("จันทร์")
else :
if w == 3 :
print("อังคาร")
else :
if w == 4 :
print("พุธ")
else :
if w == 5 :
print("พฤหัสบดี")
else :
print("ศุกร์")
23
if – else – if – else → if – elif – else
if w == 0 :
print("เสาร์")
else :
if w == 1 :
print("อาทิตย์")
else :
if w == 2 :
print("จันทร์")
else :
if w == 3 :
print("อังคาร")
else :
if w == 4 :
print("พุธ")
else :
if w == 5 :
print("พฤหัสบดี")
else :
print("ศุกร์")
☹
if w == 0 :
print("เสาร์")
elif w == 1 :
print("อาทิตย์")
elif w == 2 :
print("จันทร์")
elif w == 3 :
print("อังคาร")
elif w == 4 :
print("พุธ")
elif w == 5 :
print("พฤหัสบดี")
else :
print("ศุกร์")
☺
24
แบบฝึกหัด: ตัดเกรด
25