310 likes | 725 Views
การโปรแกรมคอมพิวเตอร์. สมเกียรติ บุญรอดดิษฐ์ o oy.somk@rmutl.ac.th http://somkiat.tak.rmutl.ac.th. บทที่ 1. ผัง งานโปรแกรม ( Program Flowchart ). ผัง งาน โปรแกรม. ขั้นตอนการพัฒนาโปรแกรม การวิเคราะห์ปัญหา การเขียนผังงาน ผังงานแบบลำดับ ผังงานแบบเงื่อนไข ผังงานแบบวนซ้ำ. Problem
E N D
การโปรแกรมคอมพิวเตอร์การโปรแกรมคอมพิวเตอร์ สมเกียรติ บุญรอดดิษฐ์ ooy.somk@rmutl.ac.th http://somkiat.tak.rmutl.ac.th
บทที่1 ผังงานโปรแกรม (Program Flowchart)
ผังงานโปรแกรม • ขั้นตอนการพัฒนาโปรแกรม • การวิเคราะห์ปัญหา • การเขียนผังงาน • ผังงานแบบลำดับ • ผังงานแบบเงื่อนไข • ผังงานแบบวนซ้ำ
Problem กำหนดปัญหา Analysis วิเคราะห์ปัญหา Flowchart เขียนผังงาน Testing ทดสอบโปรแกรม Program เขียนโปรแกรม Input ข้อมูล Output ผลลัพธ์ 1.1 ขั้นตอนพัฒนาโปรแกรม • การพัฒนาโปรแกรม 5 ขั้นตอน • 1. กำหนดปัญหา • 2. วิเคราะห์ปัญหา • 3. เขียนผังงาน • 4. เขียนโปรแกรม • 5. ทดสอบโปรแกรม ปัญหาคืออะไร?คำตอบ ที่ต้องการคืออะไร
1.2 วิเคราะห์ปัญหา • วิเคราะห์ปัญหา(Problem Analysis): 3 ขั้นตอน • การรับข้อมูล (Input Data) • การคำนวณ (Process) • การแสดงผลลัพธ์ (Output Result) • ข้อมูล input และ Output ในโปรแกรมจะต้องเก็บใน Memory • ผ่านตัวแปร (Variables) • เช่น X, Y, …
Memory … X Y Sum ตัวอย่าง 1.1 • การวิเคราะห์ปัญหาการคำนวณผลบวก ที่คล้ายการทำงานของเครื่องคิดเลขอย่างง่าย • ตัวแปร X, Y สำหรับเก็บค่าของเลข 2 ค่า • ตัวแปร Sum สำหรับเก็บผลลัพธ์ • การวิเคราะห์ปัญหา • 1. Input: รับค่า X, Y • 2. Process: คำนวณ Sum = X + Y • 3. Output: พิมพ์ค่า Sum
Memory … X1 X2 X3 Sum Mean ตัวอย่าง 1.2 • การวิเคราะห์ปัญหา การคำนวณค่าเฉลี่ยของเลข 3ค่า และแสดงค่าเฉลี่ย ทางจอภาพ • ตัวแปร X1, X2, X3 สำหรับเก็บค่าของเลข 3 ค่า • ตัวแปร Sum สำหรับเก็บผลบวก • ตัวแปร Mean สำหรับเก็บค่าเฉลี่ย • การวิเคราะห์ปัญหา • 1. Input: รับค่า X1, X2, X3 • 2. Process:Sum = X1 + X2 + X3 • Mean = Sum/3 • 3. Output: พิมพ์ค่า Mean
Memory … X N Sum Mean ตัวอย่าง 1.3 • การวิเคราะห์ปัญหา การคำนวณค่าเฉลี่ยของเลข N ค่า เมื่อ ค่าเฉลี่ย = åiN Xi / N) • ตัวแปร N สำหรับเก็บจำนวนค่า • ตัวแปร X สำหรับเก็บค่าของเลข N ค่า (เป็นข้อมูลเข้าในแต่ละรอบ) • ตัวแปร Sum สำหรับเก็บผลบวก (แบบสะสมในแต่ละรอบ) • ตัวแปร Mean สำหรับเก็บค่าเฉลี่ย • การวิเคราะห์ปัญหา • 1. Input: รับค่า N (1 ค่า) และค่า X (N ค่า) โดยรับรอบละค่า • 2. Process:ในแต่ละรอบ (i=1, 2, … , N) • รับค่า X • คำนวณ Sum = Sum + X • จบการทำงานซ้ำ (เมื่อทำซ้ำครบ N รอบ) • คำนวณ Mean = Sum/N • 3. Output: พิมพ์ค่า Mean
1.3การเขียนผังงาน • ผังงาน (Flowchart) เป็นแผนภาพ ที่ใช้อธิบายขั้นตอนและลำดับการทำงานของโปรแกรมตั้งแต่เริ่มจนจบ • สัญลักษณ์พื้นฐาน ทีใช้ในผังงาน แสดงจุดเริ่มต้น หรือจุดจบของผังงาน แสดงทิศทางของการดำเนินงาน แสดงการคำนวณ แสดงการรับข้อมูล หรือแสดงผล (ไม่ระบุชนิดอุปกรณ์) การแสดงผลทางจอภาพ การแสดงผลทางเครื่องพิมพ์ แสดงการทดสอบเงื่อนไข (เมื่อมีทางเลือก) แสดงจุดเชื่อมต่อในผังงาน
รูปแบบของผังงาน • ผังงานแบบลำดับ • ผังงานแบบเงื่อนไข • ผังงานแบบวนซ้ำ
Input Process Output end 1.3.1 ผังงานแบบลำดับ • Flowchart แบบลำดับ(Sequence) start แสดงขั้นตอนการทำงานที่ทำงานตามลำดับ (จากบนลงล่าง) ไม่มีการข้ามขั้น หรือย้อนกลับ)
InputX,Y Memory … X Y Sum = X+Y Sum Print Sum end ตัวอย่าง 1.4 • แสดง Flowchart ของการหาผลบวก (Sum) ของ ข้อมูล 2 ค่า (X,Y) พร้อมแสดงผลบวก start 50 100 150
check condition yes 1.3.2 ผังงานแบบเงื่อนไข • แสดงการทำงานตามเงื่อนไข ที่จะต้องเลือกทำอย่างใดอย่างหนึ่ง ซึ่งมี 3 กรณี คือ เลือกจาก 1, 2, หรือ n 1. เงื่อนไขทางเลือกจาก 1 เส้นทาง จะทำงาน (Statement) เมื่อเงื่อนไขเป็นจริงเท่านั้น Statement(s) no
Input ID,X X >= 60 Memory … X PrintID,X yes end ตัวอย่าง 1.5 • แสดง Flowchart เพื่อตรวจสอบเงื่อนไขเพื่อคัดเลือกที่สอบผ่าน (คะแนน X³60 ) และแสดงผลเฉพาะผู้ที่สอบผ่าน start no
check condition yes no statement 1 statement2 ผังงาน-เงื่อนไข 2. เงื่อนไขทางเลือกจาก 2 เส้นทาง เมื่อเงื่อนไขเป็นจริงจะทำ (Statement 1) เมื่อเงื่อนไขเป็นเท็จจะทำ (Statement 2)
ตัวอย่าง 1.6 แสดง Flowchart เพื่อแบ่งนักศึกษาเป็น 2 กลุ่ม ตามเพศ คือ ชาย (Male) หรือหญิง (Female) Input ID, Name,Gender Gender=‘M’ Print “Male” no yes Print “Female” end start
statement1 yes no statement2 yes no condn-1 cond3 cond1 cond2 statement3 yes no statement n-1 statement n yes no ผังงาน-เงื่อนไข 3. เงื่อนไขทางเลือกจาก n เส้นทาง เมื่อเงื่อนไข 1 เป็นจริงจะทำคำสั่ง 1 (statement1) ถ้าไม่แต่เงื่อนไข 2 เป็นจริงจะทำคำสั่ง 2 (statement2) . . . ถ้าไม่แต่เงื่อนไข n-1 เป็นจริงจะทำคำสั่ง n-1 (statement n-1) ถ้าไม่จะทำคำสั่งสุดท้าย คือ n (statement n)
Grade = ‘D’ Grade = ‘C’ Grade = ‘A’ Grade = ‘B’ yes yes yes yes Memory no Name Input ID Name,X X ³ 60 X ³ 50 X ³ 80 X ³ 70 . . . … no เงื่อนไข >>> no X ID … คะแนน 80-100 เกรด A คะแนน 70-79 เกรด B คะแนน 60-69 เกรด C คะแนน 50-59 เกรด D คะแนน < 50 เกรด F Grade = ‘F’ Grade no Print Grade end start ตัวอย่าง 1.7 • แสดง Flowchart เพื่อตัดเกรดตามคะแนน พร้อมแสดงผลทางลัพธ์
check condition exit loop no yes statement(s) 1.3.3 ผังงานแบบวนซ้ำ • การทำซ้ำ (Looping) แบ่งเป็น 3 กรณี while, do-while, for • 1. การทำซ้ำที่มีเงื่อนไขแบบ while ตรวจสอบเงื่อนไขก่อน จะทำงาน (Statement) ซ้ำเมื่อเงื่อนไขเป็นจริง (ออกจากทำซ้ำเมื่อเงื่อนไขเป็นเท็จ)
1 1 1 I = 1 whileI<=100 no yes I = I+1 end ตัวแปร ในการทำซ้ำ • การทำซ้ำ (ขั้นพื้นฐาน)ที่นิยม คือ กำหนดตัวแปรเก็บค่าเลขนับ (เช่น I= 1, 2, 3, … , 100) เพื่อควบคุมรอบการทำซ้ำ • กำหนดค่าI = 1, 2, 3, ..., 99, 100 100 1 start 3 คำสั่งในการทำซ้ำ ค่าเริ่มต้น I=1 ค่าสุดท้าย I=100 PrintI ค่าเพิ่ม I=I+1
I = 1 Memory … I no SUM whileI<100 Print SUM yes end ตัวอย่าง 1.8 • แสดง Flowchart เพื่อคำนวณ ผลบวกของเลขนับ 1+2+...+100 (ด้วยคำสั่ง while) • กำหนดค่าI= 1, 2, 3, ..., 100 คำนวณ SUM = 1+2+3+...+100 start 3 คำสั่งในการทำซ้ำ ค่าเริ่มต้น I=1 SUM = 0 ค่าสุดท้าย I=100 ค่าเพิ่ม I=I+1 ค่า SUMเริ่มต้น SUM=0 SUM = SUM+I ค่า SUMเพิ่ม SUM+I I = I+1
statement(s) check condition exit loop no yes ผังงาน-ทำซ้ำ 2. การทำซ้ำที่มีเงื่อนไขแบบ do-while ทำงาน (Statement) ก่อน จึงทำการตรวจเงื่อนไข และทำซ้ำถ้าเงื่อนไขเป็นจริง (จนกระทั่งเงื่อนไขเป็นเท็จจึงออกจากทำงานซ้ำ)
ตัวอย่าง 1.9 แสดง Flowchartเพื่อคำนวณ ผลบวกของเลขนับ 1+2+...+100 (ด้วยคำสั่ง do-while) กำหนดค่าI= 1, 2, 3, ..., 100 I = 1 Memory … I SUM PrintSUM whileI<100 no end yes คำนวณ SUM = 1+2+3+...+100 start 3 คำสั่งในการทำซ้ำ ค่าเริ่มต้น I=1 SUM = 0 ค่าสุดท้าย I=100 SUM = SUM+I ค่าเพิ่ม I=I+1 I = I+1 ค่า SUMเริ่มต้น SUM=0 ค่า SUMเพิ่ม SUM+I 23
fori=1 to N exit loop i > N i £ N statement(s) ผังงาน-ทำซ้ำ 3. การทำซ้ำตามจำนวนที่ระบุ ทำงานตามรอบที่กำหนด โดยเริ่มจากรอบเริ่มต้น (i=1) ไปยังรอบสุดท้าย (i=N) (แต่ละรอบปกติจะเพิ่มทีละ 1 ค่า (i = i+1)) (ออกจากทำงานซ้ำเมื่อ i > N)
SUM = 0 Memory … I no SUM forI=1 to100 PrintSUM yes end ตัวอย่าง 1.10 • แสดง Flowchartเพื่อคำนวณ ผลบวกของเลขนับ1+2+...+100 (ด้วยคำสั่ง for) • กำหนดให้I= 1, 2, 3, ..., 100 คำนวณSUM = 1+2+3+...+100 start 3 ค่าในการทำซ้ำ ค่าเริ่มต้น I=1 ค่าสุดท้าย I=100 ค่าเพิ่ม I=I+1 SUM = SUM+I กำหนดใน forเดียว
MUL = 1 3 ค่าในการทำซ้ำ Memory … I ค่าเริ่มต้น I=1 no MUL ค่าสุดท้าย I=10 forI=1 to10 ค่าเพิ่ม I=I+1 PrintMUL yes กำหนดใน forเดียว end ตัวอย่าง 1.11 • แสดง Flowchartเพื่อคำนวณ ผลคูณ 1x2x...x10 • กำหนดให้I= 1, 2, 3, ..., 10 คำนวณ MUL = 1x2x3x...x10 start MUL = MUL x I
Input T Memory … T i i > 12 R i <=12 R=Txi PrintT, i, R end ตัวอย่าง 1.12 • แสดง Flowchartเพื่อคำนวณ สูตรคูณแม่ T (เช่น T=2) • กำหนดi=1, 2, …, 12, และ R = Txi start Txi=R 2x 1 = 2 2x 2 = 4 2x 3 = 6 2x 4 = 8 2x 5 = 10 2x 6 = 12 2x 7 = 14 2x 8 = 16 2x 9 = 18 2x10 = 20 2x11 = 22 2x12 = 24 fori=1to12
Sum=0 InputX InputN Memory … N X i > N fori=1 to N Sum=Sum+X Mean=Sum/N Mean Sum i £ N PrintMean end ตัวอย่าง 1.13 • แสดง Flowchartเพื่อคำนวณค่าเฉลี่ยของข้อมูล Nค่า ข้อมูลแต่ละค่าเก็บในXรอบละค่า (X1, X2, ..., XN) เมื่อ ค่าเฉลี่ย(åiNXi/N) start Sum = 0 N = _ 5 60 x1 = _ 60 x2 = _ 50 110 x3 = _ 25 135 x4 = _ 30 165 x5 = _ 80 245 Mean= 245/5 =49