ppt - สาขาวิชาวิทยาการคอมพิวเตอร์ และเทคโนโลยีสารสนเทศ

Download Report

Transcript ppt - สาขาวิชาวิทยาการคอมพิวเตอร์ และเทคโนโลยีสารสนเทศ

บทที่ 11
โครงสร้ างการควบคุมโปรแกรมคอมพิวเตอร์
โครงสร้ างการควบคุมโปรแกรม
 โครงสร้ างการควบคุมโปรแกรมแบบลาดับ (Sequential Control)
 โครงสร้ างการควบคุมโปรแกรมแบบเงื่อนไข (Selection Control)
 โครงสร้ างการควบคุมโปรแกรมแบบวนซ ้า (Iteration Control)
 โครงสร้ างการควบคุมโปรแกรมแบบกระโดด (Jump Control)
โครงสร้ างการควบคุมโปรแกรมแบบลาดับ
จะมีลกั ษณะการทางานของโปรแกรมจากบนลงล่าง โดยจะทา
คาสัง่ ทุกๆ คาสัง่ ที่เขียนจากบนลงล่าง โดยไม่มีเงื่อนไข รูปแบบ
โครงสร้ างการควบคุมโปรแกรมแบบลาดับแสดงดังรูป
1
Instruction 1
2
Instruction 2
3
4
Instruction n
5
ตัวอย่ างที่ 1 จงเขียนผังงานของโปรแกรมแบบลาดับเพื่อ
คานวณหาพื ้นที่ 4 เหลี่ยมผืนผ้ า
ถ้ าโจทย์ไม่ได้ ระบุวา่ ให้ คา่ ตัวเลขมา
จากไหนอินพุตอะไร ให้ สมมุติว่า
ได้ รับอินพุตของเลขมาจากคีย์บอร์ ด
ดังนันท
้ าการรับข้ อมูลอินพุตคือรับ
ตัวเลขสองตัวเข้ ามา เมื่อรับค่าเข้ า
มาแล้ วจะเก็บค่าไว้ ที่ตวั แปร A และ
ตัวเลขตัวที่สองไว้ ที่ตวั แปร B แล้ ว
จากนันก็
้ เอาเลขสองตัวมาคูณกัน
เพื่อหาพื ้นที่ของ 4 เหลี่ยมผืนผ้ า
จากนันแสดงผลที
้
่ต้องการ ซึง่
สามารถเขียนเป็ นผังงานได้ ดงั รู ป
Start
Input A
Input B
Area = A x B
Area
End
โครงสร้ างการควบคุมโปรแกรมแบบเงื่อนไข
จะมีลกั ษณะการทางานของโปรแกรมที่สามารถเลือกชุดคาสัง่ ใน
การประมวลผลได้ การจะกระทาชุดคาสัง่ ไปในทิศทางไหน
แล้ วแต่เงื่อนไขที่ตงไว้
ั ้ รูปแบบโครงสร้ างการควบคุมโปรแกรม
แบบลาดับแสดงดังรูป
Condition
1
Instruction 1
2
4
Instruction 2
Instruction 3
3
Instruction 4
5
ตัวอย่ างที่ 2 จงเขียนผังงานของโปรแกรมตรวจสอบค่าตัวเลข โดยถ้ าเลขที่รับเข้ ามา
เป็ นเลขคูใ่ ห้ แสดงคาว่า EVEN ถ้ าเลขที่รับเข้ ามาเป็ นเลขคี่ให้ แสดงคาว่า ODD
ให้ รับค่าตัวเลขไว้ ที่ตวั แปร A
จากนันตรวจสอบตั
้
วเลขว่าเป็ นเลข
คูห่ รื อเลขคี่ โดยถ้ า A หาร 2 แล้ วได้
เศษ 0 แสดงว่าเป็ นเลขคู่ ถ้ า A หาร
2 แล้ วได้ เศษ 1 แสดงว่าเป็ นเลขคี่
ดังนันจะต้
้ องมีตวั แปรเก็บเศษจาก
การหารสองสมมุติวา่ เป็ นตัวแปร B
ถ้ าเศษเป็ น 0 แสดงคาว่า Even ถ้ า
เศษเป็ น 1 แสดงคาว่า Odd
จากนันแสดงผลที
้
่ต้องการ ซึง่
สามารถเขียนเป็ นผังงานได้ ดงั รู ป
Start
Input A
B = A mod 2
B=0?
Yes
No
Even
Odd
End
ตัวอย่ างที่ 3 จงเขียนผังงานของโปรแกรมตรวจสอบค่าตัวเลข โดยถ้ าค่าตัว
เลขที่รับเข้ ามา ถ้ าติดลบให้ แสดงคาว่า NEGATIVE ถ้ าเป็ นบวกให้ แสดงคาว่า
POSITIVE
โปรแกรมนี ้รับค่าอินพุตหนึ่งตัวโดย
ให้ รับเข้ ามาเก็บไว้ ที่ตวั แปร A
จากนันท
้ าการตรวจสอบตัวแปร A
โดยถ้ า A มากกว่าหรื อเท่ากับศูนย์
ก็แสดงคาว่า Positive ถ้ าน้ อยกว่า
ให้ แสดงคาว่า Negative ซึง่
สามารถเขียนเป็ นผังงานได้ ดงั รู ป
Start
Input A
A >= 0 ?
Yes
No
Positive
Negative
End
ตัวอย่ างที่ 4 จงเขียนผังงานของโปรแกรมรับค่าอายุ ถ้ าน้ อยกว่า 10 พิมพ์คาว่า
CHILDREN ถ้ าน้ อยกว่า 20 ให้ พิมพ์คาว่า YOUNG ถ้ ามากกว่านันให้
้ พิมพ์คาว่า ADULT
โปรแกรมนี ้รับค่าอายุเข้ ามาเก็บไว้ ที่
ตัวแปร A แล้ วนาค่า A มาพิจารณา
ว่าน้ อยกว่า 10 หรื อไม่ ถ้ าน้ อยกว่า
ให้ พิมพ์คาว่า Children แต่ถ้าเป็ น
อย่างอื่นก็ไปมาพิจารณาต่อว่า A
น้ อยกว่า 20 หรื อไม่ ถ้ าน้ อยกว่า
พิมพ์คาว่า Young และถ้ า
นอกเหนือจากนันแสดงว่
้
าอายุเกิน
20 ปี ให้ พิมพ์คาว่า Adult เลย ซึง่
สามารถเขียนเป็ นผังงานได้ ดงั รู ป
Start
Input A
A < 10
No
Yes
A < 20
Children
Yes
No
Young
Adult
End
ตัวอย่ างที่ 5 จงเขียนผังงานของโปรแกรมตัดเกรดตามเกณฑ์ดงั นี ้
คะแนนต่ากว่า 50 ได้ F
คะแนน 50 แต่ไม่ถงึ 60 ได้ D
คะแนน 60 แต่ไม่ถงึ 70 ได้ C
คะแนน 70 แต่ไม่ถงึ 80 ได้ B
คะแนน 80 เป็ นต้ นไปได้ A
โปรแกรมรับอินพุตเป็ น
คะแนนนักศึกษาโดยเก็บไว้ ที่
ตัวแปร A จากนันตรวจสอบ
้
ค่าเกรดที่ได้ โดยถ้ า A<50 ให้
Grade = อักษร F และถ้ า
A<60 ให้ Grade = อักษร D
และถ้ า A<70 ให้ Grade =
อักษร C และถ้ า A<80 ให้
Grade = อักษร B และถ้ า
A>=80 ให้ Grade = อักษร A
สุดท้ ายให้ แสดงค่าของ
Grade ที่ได้ ซึง่ สามารถเขียน
เป็ นผังงานได้ ดงั รูป
Start
Input A
A < 50
No
A < 60
No
Yes
A < 70
Yes
No
Yes
A < 80
Yes
Grade = F
Grade = D
Grade = C
Grade
End
Grade = B
No
Grade = A
โครงสร้ างการควบคุมโปรแกรมแบบวนซ ้า
จะมีลกั ษณะการทางานของโปรแกรมที่วนซ ้าชุดคาสัง่ ซึง่ เหมาะสาหรับการเขียน
โปรแกรมที่ต้องการทาซ ้า คานวณซ ้าหลายๆ รอบ โดยจะทาซ ้าจนกว่าจะได้ ผลลัพธ์
ที่ต้องการ รูปแบบโครงสร้ างการควบคุมโปรแกรมแบบวนซ ้าแสดงดังรูป
1
2
Instruction
Condition
3
False
True
True
4
Condition
False
Instruction
5
รูปแบบตรวจสอบเงื่อนไขก่อน รูปแบบตรวจสอบเงื่อนไขทีหลัง
ตัวอย่ างที่ 6 จงเขียนผังงานของโปรแกรมพิมพ์ชื่อออกทางหน้ าจอจานวน 100 ครัง้
การเขียนโปรแกรมในรูปแบบนี ้ควร
ใช้ วิธีการวนซ ้าโดยที่เงื่อนไขในการ
ทาซ ้าคือจานวนรอบ เริ่มต้ นให้ ตวั
แปรนับรอบชื่อ A มีคา่ เริ่มต้ นเป็ น 1
จากนันตรวจสอบเงื
้
่อนไข ถ้ า A >
1000 ให้ หยุดทา แต่ถ้าน้ อยกว่าให้
พิมพ์ชื่อออกทางหน้ าจอภาพและ
เพิ่มค่า A โดยจะเป็ นการวนซ ้า
จนกว่าค่าของตัวแปร A มีคา่
มากกว่า 100 ซึง่ สามารถเขียนเป็ น
ผังงานได้ ดงั รูป
Start
A=1
A > 100
No
Dr. Krit
Yes
A=A+1
End
ตัวอย่ างที่ 7 จงเขียนผังงานของโปรแกรมหาค่าผลรวมตังแต่
้ 1 ถึง 10
Start
การเขียนโปรแกรมควรมีตวั แปรสะสม
ค่า ซึง่ จะเป็ นตัวแปรที่เก็บผลรวมของ
1 ถึง 10 โดยจะตังชื
้ ่อว่า SUM มีค่า
เริ่ มต้ นเป็ น 0 แล้ วใช้ การทาซ ้า ถ้ า
เงื่อนไขในการทาซ ้าคือ จานวนรอบ
สมมุติให้ ตวั แปรนับรอบชื่อ A มีค่า
เริ่ มต้ นเป็ น 1 ถ้ า A > 10 ให้ หยุดทา
สิ่งที่ต้องทาซ ้าคือการนาเอาค่าของ A
ไปรวมไว้ ที่ตวั สะสมค่า หลังเสร็ จสิ ้น
การทาซ ้าก็แสดงค่าผลลัพธ์ของง
SUM ออกมา ซึง่ สามารถเขียนเป็ นผัง
งานได้ ดงั รูป
SUM = 0
A=1
A > 10
No
SUM = SUM + A
A=A+1
SUM
End
Yes
ตัวอย่ างที่ 8 จงเขียนผังงานของโปรแกรมหาค่าผลรวมของเลขคูต่ งแต่
ั ้ เลข 1 ถึง 10
Start
การเขียนโปรแกรมในข้ อนี ้จะ
คล้ ายตัวอย่างที่แล้ ว แต่มีการเพิ่ม
การตรวจสอบค่าที่เป็ นเลขคู่และ
ค่าที่เป็ นเลขคี่จากการหาร 2 และ
เก็บเศษไว้ พิจารณา ถ้ าเศษได้ 0
แสดงว่าตัวเลขที่ตรวจสอบจะเป็ น
เลขคู่ ถ้ าเศษได้ 1 แสดงว่าตัว
เลขที่ตรวจสอบจะเป็ นเลขคี่ ซึง่
สามารถเขียนเป็ นผังงานได้ ดงั รูป
SUM = 0
A=1
A > 10
Yes
No
B = A mod 2
B=0?
NO
Yes
SUM = SUM + A
A=A+1
SUM
End
ตัวอย่ างที่ 9 จงเขียนผังงานของโปรแกรมหาค่าเฉลี่ยส่วนสูงของนักศึกษา
Start
การเขียนโปรแกรมต้ องทราบก่อน
ว่าในห้ องนี ้มีคนกี่คน แล้ วทาการ
ทาซ ้าทากับจานวนคนที่มีอยูใ่ น
ห้ อง โดยแต่ละรอบของการทาซ ้า
นันก็
้ จะทาการรับส่วนสูงของแต่ละ
คนเข้ ามา แล้ วนาไปสะสมค่ากับ
ตัวแปรสะสมความสูงรวม สุดท้ าย
ก็นาเอาค่าตัวแปรสะสมความสูง
รวมไปหารกับจานวนคนที่มีอยู่ใน
ห้ อง ก็จะได้ คา่ เฉลี่ยออกมา ซึง่
สามารถเขียนเป็ นผังงานได้ ดงั รู ป
SUM = 0
Input n
m=n
n=0?
No
Input A
SUM = SUM + A
n=n-1
SUM/m
End
โครงสร้ างการควบคุมโปรแกรมแบบกระโดด
โครงสร้ างการควบคุมโปรแกรมแบบกระโดดจะมีลกั ษณะการทางานของ
โปรแกรมที่กระโดดข้ ามชุดคาสัง่ ถัดไป โดยจะสามารถกระโดดไปในส่วน
ไหนก็ได้ ซึง่ สามารถกระโดดได้ ทงแบบมี
ั้
เงื่อนไข และกระโดดแบบไม่มี
เงื่อนไข โดยทัว่ ไปรูปโครงสร้ างการควบคุมโปรแกรมแบบกระโดดจะไม่
นิยมนามาใช้ ในการเขียนโปรแกรมในภาษาระดับสูง รูปแบบโครงสร้ างการ
ควบคุมโปรแกรมแบบกระโดดแสดงดังรูป
1
Instruction 1
2
Jump 4
3
4
5
Instruction 3
Instruction 4
แบบฝึ กหัดทบทวน
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
โครงสร้ างการควบคุมโปรแกรมแบบลาดับมีลกั ษณะการทางานอย่างไร จงอธิบายพร้ อมภาพ
ประกอบการอธิบาย
โครงสร้ างการควบคุมโปรแกรมแบบเงื่อนไขมีลกั ษณะการทางานอย่างไร จงอธิบายพร้ อม
ภาพประกอบการอธิบาย
โครงสร้ างการควบคุมโปรแกรมแบบวนซ ้ามีลกั ษณะการทางานอย่างไร จงอธิบายพร้ อมภาพ
ประกอบการอธิบาย
โครงสร้ างการควบคุมโปรแกรมแบบกระโดดมีลกั ษณะการทางานอย่างไร จงอธิบายพร้ อม
ภาพประกอบการอธิบาย
จงเขียนผังงานของโปรแกรมในการตัดเกรดของนักศึกษา
จงเขียนผังงานของโปรแกรมในการบวกเลขคี่ตงแต่
ั ้ เลข 1 ถึง 100
จงเขียนผังงานของโปรแกรมในการแสดงเลขคูท่ ี่หน้ าจอภาพตังแต่
้ เลข 1 ถึง 100
จงเขียนผังงานของโปรแกรมในการแสดงชื่อของนักศึกษาจานวน 100 ครัง้
จงเขียนผังงานของโปรแกรมในการหาค่า Factorial
จงเขียนผังงานของโปรแกรมในการหาค่าเฉลี่ยของนักศึกษาจานวน 10 คน
http://www.udru.ac.th
เอกสารอ้ างอิง
กิติ ภักดีวฒ
ั นะกุล, คัมภีร์ระบบสารสนเทศ., กรุงเทพฯ, เคทีพี คอมพ์ แอน คอนซัลท์, 2547.
งามนิจ อาจอินทร์ , ความรู้ท่ วั ไปเกี่ยวกับวิทยาการคอมพิวเตอร์ ., กรุงเทพฯ, 2542.
เตชา อัศวสิทธิถาวร, เทคโนโลยีสารสนเทศเบือ้ งต้ น., กรุงเทพฯ, วังอักษร, 2547.
ธีรวัฒน์ ประกอบผล, คู่มือการเขียนโปรแกรมภาษา PASCAL., กรุงเทพฯ, 2550.
ภาควิชาวิทยาการคอมพิวเตอร์ มหาวิทยาลัยบูรพา, เอกสารประกอบการสอนวิชาเทคโนโลยี
สารสนเทศและการสื่อสาร., 2552.
วศิน เพิ่มทรัพย์, และวิโรจน์ ชัยมูล, ความรู้ เบือ้ งต้ นเกี่ยวกับคอมพิวเตอร์ และเทคโนโลยี
สารสนเทศ., กรุงเทพฯ, 2548.
วิเชียร ศรี พระจันทร์ , ภาษาโปรแกรมคอมพิวเตอร์ ., กรุงเทพฯ, 2542
เอกพันธุ์ คาปั ญโญ, หลักการออกแบบและพัฒนาโปรแกรม., กรุงเทพฯ, ซัคเซสมีเดีย, 2549.
P. Norton, Introduction to Computer., Singapore, McGraw-Hill, 2003.
http://www.udru.ac.th
http://www.udru.ac.th