บทที่ 1 - WordPress.com

Download Report

Transcript บทที่ 1 - WordPress.com

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