420 likes | 913 Views
บทที่ 1 . ผังงาน ( Flowchart). หัวข้อ. . โปรแกรมภาษา ขั้นตอนการพัฒนาโปรแกรม การวิเคราะห์โจทย์ปัญหา การเขียนผังงาน ประเภทของผังงาน สัญลักษณ์ ( พื้นฐาน ) ของผังงาน รูปแบบของผังงาน. 1 . 1 โปรแกรมภาษา. โปรแกรมภาษา ใช้ในการพัฒนาโปรแกรมประยุกต์สำหรับงานเฉพาะตามที่ผู้ใช้ต้องการ
E N D
บทที่1 ผังงาน(Flowchart)
หัวข้อ • โปรแกรมภาษา • ขั้นตอนการพัฒนาโปรแกรม • การวิเคราะห์โจทย์ปัญหา • การเขียนผังงาน • ประเภทของผังงาน • สัญลักษณ์(พื้นฐาน)ของผังงาน • รูปแบบของผังงาน
1.1 โปรแกรมภาษา • โปรแกรมภาษา ใช้ในการพัฒนาโปรแกรมประยุกต์สำหรับงานเฉพาะตามที่ผู้ใช้ต้องการ • ประเภทของโปรแกรมภาษา 1. ภาษาระดับต่ำ (Low-Level Language) เช่นภาษาเครื่อง (Machine language) 2. ภาษาระดับกลาง(Middle-Level Language) เช่น ภาษาแอสเซมบลี (Assembly Language) 3. ภาษาระดับสูง (High-Level Language) เช่น Pascal, Fortran, C, JAVA, ...
1.1.1ภาษาเครื่อง • ภาษาเครื่อง(Machine Language) เป็นภาษาที่คอมพิวเตอร์เข้าใจ ซึ่งเขียนเป็นรหัสเลขฐาน 2 (0/1) และคำสั่งมีความเกี่ยวข้องกับอุปกรณ์ของคอมพิวเตอร์โดยตรง • แต่มนุษย์เข้าใจภาษาเครื่องได้ยาก ดังนั้นการเขียนโปรแกรมด้วยภาษาเครื่องจึงยากมาก
1.1.2ภาษาแอสเซมบลี • ภาษาแอสเซมบลี (Assembly Language) เป็นภาษาที่เขียนโดยใช้คำสั่งที่มนุษย์เข้าใจ (English-like statements) แทนการใช้รหัสเลขฐาน 2 • แต่ออกแบบมาเฉพาะสำหรับคอมพิวเตอร์แต่ละแบบ • และผู้เขียนโปรแกรมยังต้องทราบข้อมูลที่เกี่ยวข้องกับอุปกรณ์ของคอมพิวเตอร์ • ใช้แอสเซมเบอร์(Assembler)ในการแปลภาษาแอสเซมบลีให้เป็นภาษาเครื่อง
1.1.3ภาษาระดับสูง • ภาษาระดับสูง (High-Level Languages) เป็นภาษาที่มนุษย์เข้าใจ (English-like language) เช่น Basic, Pascal, C, JAVA, ... • ใช้คอมไพเลอร์(Compiler)หรือ Interpreter ในการแปลภาษาระดับสูงให้เป็นภาษาเครื่อง • Compilerแปลทั้งโปรแกรม (เช่น Pascal, C, ...) • Interpreter แปลทีละบรรทัด (เช่น Basic, ...)
#include <stdio.h> #include <math.h> void main() { const float pi = 3.1415926; float radius = 2.0, area, radius_check; printf("Input: Enter radius > "); scanf("%f", &area); area = pi * radius * radius; printf("Output: radius = %f\n", radius); printf(" area = %f\n", area); } C code Compiler
1.2 ขั้นตอนการพัฒนาโปรแกรม • การพัฒนาโปรแกรม ประกอบด้วย 5 ขั้นตอน 1. กำหนดและวิเคราะห์ปัญหา(State problem & Problem analysis) 2. เขียนผังงาน(Flowchart) 3. เขียนโปรแกรม(Program Development) 4. ทดสอบและแก้ไขโปรแกรม(Testing & debugging) 5. ทำเอกสารและบำรุงรักษาโปรแกรม(Document & maintenance)
Analysis Flowchart Input Program Output Test การพัฒนาโปรแกรม • สรุป 5 ขั้นตอนในการพัฒนาโปรแกรม Problem
1.3 กำหนด-วิเคราะห์ปัญหา • กำหนดขอบเขตของปัญหาให้ชัดเจนว่า จะให้คอมพิวเตอร์ทำอะไร (What?) • วิเคราะห์ปัญหา(Problem analysis) กำหนด • Input: ลักษณะของข้อมูลเข้า • Process:วิธีการประมวลผล (How?) • Output: ลักษณะของผลลัพธ์ที่ต้องการ
Memory … X Y sum ตัวอย่าง 1.1 • ออกแบบโปรแกรมให้คอมพิวเตอร์ทำงานเป็น เครื่องคิดเลขอย่างง่าย โดยรับข้อมูล 2 ค่า (X,Y) และแสดงผลบวกทางจอภาพ • Problem:คำนวณผลบวกของ 2 ค่า • Problem Analysis 1. Input:รับข้อมูล (X, Y) จากคีย์บอร์ด 2. Process: คำนวณ sum = X + Y 3. Output:แสดงผลบวก (sum) ทางจอภาพ
Memory … X1 X2 X3 sum mean ตัวอย่าง 1.2 • ออกแบบโปรแกรมให้คอมพิวเตอร์รับข้อมูล 3 ค่า คำนวณค่าเฉลี่ยและแสดงค่าเฉลี่ย ทางจอภาพ • Problem:คำนวณค่าเฉลี่ยของ 3 ค่า((X1+X2+X3)/3) • Problem Analysis 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 ค่า คำนวณค่าเฉลี่ยและแสดงค่าเฉลี่ย ทางจอภาพ • Problem:คำนวณค่าเฉลี่ยของ N ค่า (iN Xi/N) • Problem Analysis 1. Input:รับข้อมูล N และ X (X1,..., XN) 2. Process:loop for (i=1 to N) read X sum = sum + X end for mean = sum/N 3. Output:แสดงค่าเฉลี่ย (mean) ทางจอภาพ
1.4 การเขียนผังงาน • ผังงาน (Flowchart) เป็นแผนภาพ ที่ใช้อธิบายลำดับการทำงานของโปรแกรมเป็นขั้นตอน • ประโยชน์ของ Flowchart 1. อธิบายลำดับขั้นตอนการทำงานของโปรแกรม 2.ทำให้ตรวจสอบข้อผิดพลาดของโปรแกรมได้ง่าย 3. ทำให้ผู้อื่นสามารถศึกษาการทำงานและแก้ไข โปรแกรมได้ง่าย
1.4.1ประเภทของผังงาน • ผังงานระบบ (System Flowchart) แสดงขั้นตอนการทำงานภายในระบบงาน โดยเป็นขั้นตอนที่กล่าวไว้อย่างกว้างๆ • ผังงานโปรแกรม (Program Flowchart) • แสดงขั้นตอนของคำสั่ง • ที่ใช้ในโปรแกรม
1.4.2สัญลักษณ์(พื้นฐาน) ของผังงาน การเริ่มต้น และการสิ้นสุดการทำงาน • สัญลักษณ์พื้นฐานที่นิยมใช้ใน Flowchart ลูกศรแสดงทิศทางการทำงาน และการไหลของข้อมูล การประมวลผล หรือการคำนวณ การรับข้อมูล หรือแสดงผล (ไม่ระบุชนิดอุปกรณ์) การแสดงผลทางจอภาพ การแสดงผลทางเครื่องพิมพ์ (เป็นเอกสาร) การตรวจสอบเงื่อนไข (เพื่อการตัดสินใจเมื่อมีทางเลือก) จุดเชื่อมต่อของผังงาน
1.4.3 รูปแบบของผังงาน • แบบลำดับ(Sequence) • แบบมีทางเลือก(Selection) • แบบทำซ้ำ(Looping)
Input statement output end 1.4.3.1 ผังงานแบบลำดับ • Flowchart แบบลำดับ(Sequence) start แสดงขั้นตอนการทำงานที่เรียงลำดับ(ไม่มีการข้ามขั้น หรือย้อนกลับ)
Read X,Y Memory … X Y sum = X+Y sum Print sum end ตัวอย่าง 1.4 • แสดงการออกแบบFlowchartเพื่อให้โปรแกรมทำงานเป็นเครื่องคิดเลขอย่างง่าย โดยรับข้อมูล 2 ค่า (X,Y) คำนวณ การบวก(sum) พร้อมแสดงผลบวก start
check condition no yes statement(s) 1.4.3.2 ผังงานแบบมีทางเลือก • แสดงการตรวจสอบเงื่อนไขให้โปรแกรมเลือกทำอย่างใดอย่างหนึ่ง ซึ่งมี3 กรณี 1.การเลือกแบบ 1 เส้นทาง จะทำงานเฉพาะเมื่อเงื่อนไขเป็นจริงเท่านั้น
Read X X >= 60 เงื่อนไข Print “Pass” Memory yes คะแนน 60 ผ่าน (Pass) คะแนน < 60 ตก (Fail) … X end ตัวอย่าง 1.5 • แสดงการออกแบบFlowchartเพื่อให้โปรแกรมรับคะแนนนักศึกษา (X) ตรวจสอบและแสดงผล ถ้าผ่าน (Pass) โดยมีเงื่อนไขดังนี้ start no
check condition yes no statement 1 statement2 ผังงาน-ทางเลือก 2.การเลือกแบบ 2 เส้นทาง เมื่อเงื่อนไขเป็นจริงจะทำอย่างหนึ่ง เมื่อเงื่อนไขเป็นเท็จจะทำอีกอย่างหนึ่ง
หรือ statement1 yes no statement2 yes no statement3 yes no statement n-1 check condition yes Cond#1 Cond#n-1 Cond#3 Cond#2 no 1 2 3 n statement n ผังงาน-ทางเลือก 3.การเลือกแบบหลายเส้นทาง(n) . . . statement1 statement2 statement3 statementn เมื่อเงื่อนไขเท่ากับทางเลือกใดจะทำตามทางนั้น
grade = ‘P’ grade = ‘G’ yes yes Read X X > 79 X > 49 เงื่อนไข Memory คะแนน 80-100 กลุ่ม G(Good)คะแนน 50-79 กลุ่ม P (Pass)คะแนน < 50 กลุ่ม F(Fail) no … X grade = ‘F’ grade no Print grade end ตัวอย่าง 1.6 • แสดงการออกแบบFlowchartเพื่อ ให้โปรแกรมรับคะแนนนักศึกษา (X) ตรวจสอบและจัดกลุ่มตามเงื่อนไข พร้อมแสดงผลลัพธ์ start
grade = ‘B’ grade = ‘D’ grade = ‘A’ grade = ‘C’ yes yes yes yes no Read X X > 79 X > 69 X > 59 X > 49 no เงื่อนไข no คะแนน 80-100 เกรด Aคะแนน 70-79 เกรด B คะแนน 60-69 เกรด C คะแนน 50-59 เกรด D คะแนน < 50 เกรด F grade = ‘F’ no Print grade end start ตัวอย่าง 1.7 • แสดงการออกแบบFlowchartเพื่อ ให้โปรแกรมรับคะแนนนักศึกษา (X) ตรวจสอบและตัดเกรดตามเงื่อนไข พร้อมแสดงผลทางลัพธ์
check condition exit loop no yes statement(s) 1.4.3.3 ผังงานแบบทำซ้ำ • การทำซ้ำ(Looping) แบ่งเป็น 3 กรณี • 1.การทำซ้ำเมื่อเงื่อนไขเป็นจริง ตรวจสอบเงื่อนไขก่อน จะทำงาน (Statement) ซ้ำเมื่อเงื่อนไขเป็นจริง (ออกจากทำงานซ้ำเมื่อเงื่อนไขเป็นเท็จ)
1 1 1 Memory … I I = 1 while I<=100 no yes I = I+1 end ตัวอย่าง 1.8 • แสดงการออกแบบFlowchartเพื่อให้โปรแกรมกำหนดและคำนวณค่าที่เพิ่มทีละ 1จาก 1 – 100 • กำหนดให้ I = 1, 2, 3, ..., 99, 100 1 100 start ค่าเริ่มต้น I=1 ค่าสุดท้าย I=100 ค่าเพิ่ม I=I+1 Print I
I = 1 Memory … I no SUM while I<=100 Print SUM yes end ตัวอย่าง 1.9 • แสดงการออกแบบFlowchartเพื่อให้โปรแกรมคำนวณ การบวก 1+2+...+100 • กำหนดให้ I = 1, 2, 3, ..., 100 คำนวณ SUM = 1+2+3+...+100 start ค่าเริ่มต้น I=1 ค่าสุดท้าย I=100 SUM = 0 ค่าเพิ่ม I+1 ค่า SUMเริ่มต้น SUM=0 SUM = SUM+I ค่า SUMเพิ่ม SUM+I I = I+1
statement(s) check condition exit loop no yes ผังงาน-ทำซ้ำ 2.การทำซ้ำในขณะเงื่อนไขเป็นจริง ทำงาน (Statement) ก่อน จึงทำการตรวจเงื่อนไข และทำซ้ำถ้าเงื่อนไขเป็นจริง (จนเมื่อเป็นเท็จจึงออกจากทำงานซ้ำ)
for i=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 for I=1 to 100 Print SUM yes end ตัวอย่าง 1.10 • แสดงการออกแบบFlowchartเพื่อให้โปรแกรมคำนวณ การบวก 1+2+...+100 • กำหนดให้ I = 1, 2, 3, ..., 100 คำนวณ SUM = 1+2+3+...+100 start SUM = SUM+I
MUL = 1 Memory … I no MUL for I=1 to 10 Print MUL yes end ตัวอย่าง 1.11 • แสดงการออกแบบFlowchartเพื่อให้โปรแกรมคำนวณ การคูณ 1x2x...x10 • กำหนดให้ I = 1, 2, 3, ..., 10 คำนวณ MUL = 1x2x3x...x10 start MUL = MULxI
T = 2 Memory … T i i > 12 R i <=12 R = i x T Print i, T, R end ตัวอย่าง 1.12 • แสดงการออกแบบFlowchartเพื่อให้โปรแกรมคำนวณตาราง สูตรคูณแม่ 2 • กำหนดให้ T = 2, i=1, 2, …, 12, และ R = i x T start i x T = R 1 x 2 = 2 2 x 2 = 4 3 x 2 = 6 4 x 2 = 8 5 x 2 = 10 6 x 2 = 12 7 x 2 = 14 8 x 2 = 16 9 x 2 = 18 10 x 2 = 20 11 x 2 = 22 12 x 2 = 24 for i=1 to 12
sum = 0 Read X Read N Memory … N X i > N for i=1 to N sum=sum+X mean = sum/N mean sum i N Print mean end ตัวอย่าง 1.13 • แสดงการออกแบบFlowchartให้โปรแกรมรับ ค่า N (จำนวนข้อมูล) และข้อมูลแต่ละค่า X (X1, X2, ..., XN) คำนวณค่าเฉลี่ย (iN Xi/N) และแสดงค่าเฉลี่ย start sum = 0 N = _ 5 60 x1 = _ 60 x2 = _ 50 110 x3 = _ 25 135 x4 = _ 30 165 x5 = _ 80 245 mean = 49