Copyright (c) 2006 by Sasalak Tongkaw2
COMPUTER PROGRAMMING AND ALGORITHM
โครงสร้างของการตัดสนิใจ
โครงสร ้างของการต ัดสนิใจ (Decision making) เป็นลักษณะของการเลือกทางเพื่อตัดสินใจ มสีัญลักษณ์ในผังงานดังนี้
Copyright (c) 2006 by Sasalak Tongkaw3
COMPUTER PROGRAMMING AND ALGORITHM
การตัดสินใจจากการเปรียบเทียบ• เครื่องหมายเปรียบเทียบ
(Operational Operator) ใช้ในการเปรียบเทียบค่า 2 คา่ ว่าเท่ากัน มากกว่า หรือน้อยกว่ากันหรือไม่ (โดยอาจเปน็การเปรียบเทียบระหว่างตัวแปรกับตัวเลข หรือระหว่างตัวแปรกับตัวแปรก็ได้) เช่น
• การกด ATM จะต้องมีการเปรียบเทียบรหัสผ่านว่ารหัสผา่นที่รับมา ตรงกับรหัสผา่นที่มีอยู่หรือไม่ เปน็ต้น
Copyright (c) 2006 by Sasalak Tongkaw4
COMPUTER PROGRAMMING AND ALGORITHM
ตัวอยา่ง
5>3 ผลเปน็จริง เพราะ 5 มากกว่า 3 จริง
10<34 ผลเปน็จริง เพราะ 10 น้อย กว่า 34 จริง
4>=3 ผลเปน็จริง เพราะ 4 มากกว่า3 จริง
4>=4 ผลเปน็จริง เพราะ 4 เท่ากับ4
6>=20 ผลเปน็เท็จ เพราะ 6 ไม่ได้ มากกว่าหรือเท่ากับ 20
ถา้ number=10แล้ว number>10 จริงไมค๊ะ
Copyright (c) 2006 by Sasalak Tongkaw5
COMPUTER PROGRAMMING AND ALGORITHM
สญัลักษณ์ทางคณิตศาสตร์ที่ใช้ในภาษาซี> มากกว ่าหร ือไม ่< นอ้ยกว ่าหร ือไม ่>= มากกว ่า
หร ือเท ่าก ันหร ือไม ่<= นอ้ยกว ่า
หร ือเท ่าก ันหร ือไม ่!= ไม ่เท ่าก ัน
หร ือไม ่== เท ่าก ันหร ือ
ไม ่
Copyright (c) 2006 by Sasalak Tongkaw6
COMPUTER PROGRAMMING AND ALGORITHM
โครงสร้างการตัดสนิใจแบบสองทางเลือก
โปรแกรมเมอร์เรียกโครงสร้างการตัดสินใจแบบน้ีว่า โครงสร้างการตัดสินใจแบบสองทางเลอืก(dual-alternative decision)
Copyright (c) 2006 by Sasalak Tongkaw7
COMPUTER PROGRAMMING AND ALGORITHM
ตัวอยา่งผังงานการตัดสินใจแบบสองทางเลือก
Grade>75
Print“Try Harder”
Print “Good Job”
No Yes
Copyright (c) 2006 by Sasalak Tongkaw8
COMPUTER PROGRAMMING AND ALGORITHM
//Program ifthenelse.cpp#include<stdio.h>#include<conio.h>void main(){
int Grade;printf(“Please input Grade = ”);scanf(“%d”,&Grade); //รับค่าตัวแปร Gradeif(Grade>75) //ตรวจสอบค่าตัวแปร Grade ว่ามากกว่า 75 จริงหรือไม่{
printf(“Good Job\n”); // หากเง่ือนไขข้างต้นเป็น “จริง” ทำาที่น่ี}else{
printf(“Try Harder\n”); // หากเง่ือนไขขา้งต้นเป็น “เท็จ” ทำาที่น่ี}
getch();}
โค้ดต้นฉบับภาษาซี
Copyright (c) 2006 by Sasalak Tongkaw9
COMPUTER PROGRAMMING AND ALGORITHM
โครงสร้างการตัดสนิใจแบบทางเลือกเดียว• โครงสร้างการตัดสินใจแบบทาง
เลือกเดียว (single-alternative decision) มทีางเลือกสำาหรับตัดสินใจเพยีงทางเดียวดังภาพ
Year=4 ?
GraduationRoutine
No Yes
Don’t DoAnything
Copyright (c) 2006 by Sasalak Tongkaw10
COMPUTER PROGRAMMING AND ALGORITHM
โปรแกรมภาษาซีทีม่ีทางเลือกเดียว#include<stdio.h>void main(){
int age;printf(“How old are you ”);scanf(“%d”,&age);if (age>=60)
printf(“You are old\n”);printf(“Good Bye ! ”);
}
Copyright (c) 2006 by Sasalak Tongkaw11
COMPUTER PROGRAMMING AND ALGORITHM
ชนิดของโครงสร้างของการตัดสนิใจ
1. การเชื่อมต่อโดยการใช้ “และ”2. การเชื่อมต่อโดยการใช้ “หรือ”3. การเชื่อมต่อโดยการใช้ทัง้สอง
วิธีร่วมกัน
Copyright (c) 2006 by Sasalak Tongkaw12
COMPUTER PROGRAMMING AND ALGORITHM
การเชื่อมต่อโดยการใช ้“และ”• เป็นการตัดสินใจทีม่มีากกว่า 1
เงื่อนไข เช่น• ต้องการให้เงินค่าล่วงเวลาสำาหรับ
พนกังานทีท่ำางานเกนิ 40 ชั่วโมง และเป็นพนกังานใน Class 1
• ม ี2 เงื่อนไขคือ– 1. ต้องทำางานเกิน 40 ช่ัวโมง– 2. ต้องเป็นพนักงานใน Class 1
Copyright (c) 2006 by Sasalak Tongkaw13
COMPUTER PROGRAMMING AND ALGORITHM
ผงังานแสดงเงื่อนไขแบบ “และ”
Hour>40 ?
Class=1 ?
Overtime
Yes
Yes
No
NoHour>40 ?
Class 1 ?
ข้อควรระวังในการสลับทีค่ือประสิทธิภาพของการทำางานข้อควรระวังในการสลับทีค่ือประสิทธิภาพของการทำางาน
Copyright (c) 2006 by Sasalak Tongkaw14
COMPUTER PROGRAMMING AND ALGORITHM
การเชื่อมต่อโดยการใช ้“หรือ”• จะทำางานก็ต่อเมือ่เงื่อนไขหนึ่ง
เงื่อนไขใดเป็นจริงหรือเป็นจริงทัง้สองเงื่อนไขก็ได้ เช่น
• บริษัทจะให้โบนสัแก่พนกังานที่เป็นพนกังานใน Class 1 หรือเป็นพนกังานใน Class 2
• โครงสร้างของผังงานแสดงเงื่อนไขแบบ “หรือ”
Copyright (c) 2006 by Sasalak Tongkaw15
COMPUTER PROGRAMMING AND ALGORITHM
โครงสร้างของผังงานที่มีเงื่อนไขแบบ “หรือ”
Class =1?
Bonus
Yes
Yes
No
NoClass =2 ?
Bonus
ข้อควรระวังในการสลับทีค่ือประสิทธิภาพของการทำางานเช่นเดียวกัน
ข้อควรระวังในการสลับที่คือประสิทธิภาพของการทำางานเช่นเดียวกัน
Copyright (c) 2006 by Sasalak Tongkaw16
COMPUTER PROGRAMMING AND ALGORITHM
การตัดสินใจโดยใช้ทั้งสองวิธรี่วมกัน• สำาหรับภาษาซสีามารถจะใช้ทัง้
สองวิธีทีก่ล่าวมาแล้วร่วมกันได้ • ใช้สัญลักษณ์ทางคณิตศาสตร์
ดังนี้• && หมายถงึ “และ” and• || หมายถึง “หรือ” or• ! หมายถึง “ไม”่ not
Copyright (c) 2006 by Sasalak Tongkaw17
COMPUTER PROGRAMMING AND ALGORITHM
ตัวอยา่งผังงานการตัดสินใจแบบใช้สองวิธีร่วมกัน
Hour>40 and Class
=1 ?
Overtime
YesNo Class =1 or Class=2 ?
Bonus
YesNo
Copyright (c) 2006 by Sasalak Tongkaw18
COMPUTER PROGRAMMING AND ALGORITHM
โค้ดต้นฉบับภาษาซี...
if((Hours >40) &&(Class=1)) //ตรวจสอบค่าตัวแปร {
overtime(); //หากเง่ือนไขข้างต้นทั้งหมดเป็น “จริง” เรียกฟังก์ชันOvertime}
...if((Class =1) || (Class=2)) //ตรวจสอบค่าตัวแปร {
bonus(); // หากเง่ือนไขข้างต้นอันใดอันหน่ึงเป็น “จริง” เรียกฟังก์ชัน bonus}
Copyright (c) 2006 by Sasalak Tongkaw19
COMPUTER PROGRAMMING AND ALGORITHM
ตัวอยา่ง…int a=20;int b=6;if((a>0) && (b>0)){ printf(“Yes!!
Ok.”);}…
…int a=20;int b=6;int c=8;if((a>0) && (b>0) && (c>5)){ printf(“Yes!! Ok.”);}…
Copyright (c) 2006 by Sasalak Tongkaw20
COMPUTER PROGRAMMING AND ALGORITHM
กิจกรรมฝึกปฏิบตัิ• ให้นกัศึกษาเขียนผังงานทีท่ำางาน
เหมอืนโปรแกรมดังกล่าวข้างต้น ทัง้สองโปรแกรม
• ส่งตัวแทนออกไปเขียนหน้าชั้นเรียนทั้งสองโปรแกรม
Copyright (c) 2006 by Sasalak Tongkaw21
COMPUTER PROGRAMMING AND ALGORITHM
แบบสั้น
a>0 && b>0 ?
YesNo
Print “Yes! Ok”
Copyright (c) 2006 by Sasalak Tongkaw22
COMPUTER PROGRAMMING AND ALGORITHM
แบบยาว
a>0 ?YesNo
a>0 ?No Yes
Print “Yes! Ok”
Copyright (c) 2006 by Sasalak Tongkaw23
COMPUTER PROGRAMMING AND ALGORITHM
บทสรุป• โครงสร้างแบบตัดสินใจ ซึง่แบ่งออกได้เป็น 3
แบบ คือ– การเชื่อมต่อโดยใช้ “และ” – การเชื่อมต่อโดยใช้ “หรือ” – และการเชื่อมต่อโดยใช้ทั้งสองวิธีร่วมกัน
• ซึง่หลักการออกแบบและเขียนโปรแกรมเชิงโครงสร้างส่วนใหญม่กัจะใช้ทัง้สองวิธีร่วมกนัอยูแ่ล้ว ยิง่ถ้าโปรแกรมมขีนาดใหญแ่ละมคีวามซบัซอ้น โครงสร้างทางเลือกก็อาจจะเป็นหลายชั้น นอกจากนี้นกัศึกษาควรศกึษาเพิม่เติมจากแบบฝึกหัดท้ายบทเรียน จะทำาให้เข้าใจรูปแบบการเขียนโปรแกรมโดยใช้โครงสร้างตัดสนิใจมากข้ึน
Copyright (c) 2006 by Sasalak Tongkaw24
COMPUTER PROGRAMMING AND ALGORITHM
คน้คว้าเพิม่เติม• สไลด์ประกอบการเรียน
ดาวนโ์หลดได้ที ่LMS ของมหาวิทยาลัยรายวิชา 4121103 การเขียนโปรแกรมคอมพิวเตอร์และอัลกอริทึม่
• เว็บไซต์วิชา 4121202 การเขียนโปรแกรมภาษาคอมพวิเตอร์ 1หรือยอูาร์แอล
http://samet.skru.ac.th/~tsasalak/c/c-index.htm