4121103 การเขียนโปรแกรมและอัลกอริทึ่ม...

25
บทที6 การตัดสินใจ 6.1 โครงสร้างของการตัดสินใจ 6.2 ชนิดของโครงสร้างของการ ตัดสินใจ 6.3 บทสรุป

Upload: know-mastikate

Post on 23-Jul-2015

32 views

Category:

Education


2 download

TRANSCRIPT

บทที่ 6 การตัดสนิใจ

6.1 โครงสร้างของการตัดสินใจ6.2 ชนดิของโครงสร้างของการตัดสินใจ6.3 บทสรุป

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

END OF CHEPTER 6

ANY QUESTION ?