Transcript Chapter2

Chapter 2
Concept of Programing
ขั้นตอนการพัฒนาโปรแกรม มี 5 ขั้นตอน
 วิเคราะห์ ปัญหา (Analysis)
 วางแผนและออกแบบ (Planning & Design)
 เขียนโปรแกรม (Coding)
 ทดสอบโปรแกรม (Testing)
 จัดทาคู่มอื (Documentation)
โจทย์ ที่ใช้ อธิบายขั้นตอนการพัฒนาโปรแกรม
 จงเขียนโปรแกรมรับค่ าเลขจานวนเต็ม 2 จานวน
และหาผลบวกของเลขทั้ง 2 จานวนนั้น
1
วิเคราะห์ ปัญหา (Analysis)
 ขั้นตอนนีเ้ ป็ นขั้นตอนทีส
่ าคัญทีส่ ุ ด
 ผู้เขียนโปรแกรมต้ องวิเคราะห์ ว่าจะเขียนโปรแกรม
แก้ ปัญหาอย่ างไร
 ผู้เขียนโปรแกรมต้ องวิเคราะห์ ด้วยว่ าต้ องนาข้อมูล
อะไรบ้ างเข้ าในโปรแกรม
1
วิเคราะห์ ปัญหา (Analysis)
1. ปัญหา คือ รับค่ าเลขจานวนเต็ม 2 จานวนและหาผลบวก
ผลรวม = เลขจานวนเต็มตัวที่ 1 + เลขจานวนเต็ม
ตัวที่ 2
2. ตัวแปรที่ใช้ คือ
X ใช้ เก็บเลขจานวนเต็มตัวที่ 1
Y ใช้ เก็บเลขจานวนเต็มตัวที่ 2
SUM ใช้ เก็บผลรวม
3. ข้ อมูลนาเข้ า คือ ค่ าของ X และ Y
4. ผลลัพธ์ คือ คานวณหาผลบวก จากสู ตร
SUM = X + Y
ขั้นตอนการทางาน
1. รับค่ า X และ Y เข้ ามาในโปรแกรม
2. คานวณหาผลบวก
จากสู ตร SUM = X + Y
2
วางแผนและออกแบบ (Planning & Design)
 ซูโดโค้ด (Pseudocode)
START
READ X
READ Y
COMPUTE SUM=x + Y
PRINT SUM
STOP
เขียนลาดับการทางานของ
โปรแกรม โดยใช้ ประโยค
ภาษาอังกฤษที่สื่อความหมาย
ง่ าย ๆ
 โฟลวชาร์ ต (Flowchart)
START
INPUT X,Y
SUM=X+Y
PRINT SUM
STOP
เขียนลาดับการทางานของการ
เขียนโปรแกรม โดยแทนด้ วย
สั ญลักษณ์ เป็ นตัวสื่ อความหมาย
สั ญลักษณ์ การเขียนอัลกอลิทึมแบบโฟลวชาร์ ต
สั ญลักษณ์ รูปภาพ
ความหมาย
จุดเริ่มต้ น (start) หรือ
จุดสิ้นสุ ด (End)
รับข้ อมูล (Input) หรือ
แสดงผลข้ อมูล (Output)
รับข้ อมูลนาเข้ าจากคีย์บอร์ ด
(Input from Keyboard)
สั ญลักษณ์ การเขียนอัลกอลิทึมแบบโฟลวชาร์ ต
สั ญลักษณ์ รูปภาพ
ความหมาย
การคานวณ (Process)
การตัดสิ นใจ (Dicision) หรือ
การเปรียบเทียบ (Compare)
แสดงผลข้ อมูลออกทางเครื่องพิมพ์
(Printer)
สั ญลักษณ์ การเขียนอัลกอลิทึมแบบโฟลวชาร์ ต
สั ญลักษณ์ รูปภาพ
ความหมาย
การทางานย่ อย (Sub Program)
จุดเชื่อมต่ อ (Connection)
ทิศทาง
(Flow)
สั ญลักษณ์ การเขียนอัลกอลิทึมแบบโฟลวชาร์ ต
สั ญลักษณ์ รูปภาพ
ความหมาย
แสดงผลทางจอภาพ
จุดเชื่อมต่ อคนละหน้ า
คาอธิบาย
ตัวอย่ างที่ 1
จงเขียนโฟลวชาร์ ตแสดงขั้นตอนการหาพืน้ ทีข่ องรูปสี่ เหลีย่ มคางหมู
 วิเคราะห์ ปัญหา
1. ปัญหา คือ ต้ องการคานวณหาพืน้ ทีข่ องรูปสี่ เหลีย่ มคางหมู จากสู ตร
พืน้ ทีส่ ี่ เหลีย่ มคางหมู = ½ x ผลบวกของด้ านคู่ขนาน x สู ง
2. ตัวแปรทีใ่ ช้ คือ
w1 ใช้ เก็บความยาวของด้ านคู่ขนานด้ านที่ 1
w2 ใช้ เก็บความยาวของด้ านคู่ขนานด้ านที่ 2
h ใช้ เก็บความสู งของรูปสี่ เหลีย่ มคางหมู
Area ใช้ เก็บพืน้ ทีข่ องรูปสี่ เหลีย่ มคางหมู
3. ข้ อมูลนาเข้ า คือ ค่ าของ W1,W2 และh
4. ผลลัพธ์ คือ คานวณพืน้ ทีข่ องรู ปสี่ เหลีย่ มคางหมู จากสู ตร
Area= ½ x(w1+w2)xh
ขั้นตอนการทางาน
1. รับค่ า w1,w2,h เข้ ามาในโปรแกรม
2. คานวณหาพืน้ ทีข่ องรู ปสี่ เหลีย่ มคางหมู
จากสู ตร Area = ½ x (w1+w2) x h
Flowchart ตัวอย่ างที่ 1
START
INPUT w1,w2,h
Area =1/2 x(w1+w2)x h
STOP
START
INPUT w1,w2,h
START
INPUT w1,w2,h
Area =1/2 x(w1+w2)x h
Area =1/2 x(w1+w2)x h
Area
Area
STOP
STOP
3
เขียนโปรแกรม (Coding)
 เป็ นการนาอัลกอลิทม
ึ ในขั้นตอนที่ 2 มาเขียนโปรแกรม
ตามหลักไวยากรณ์ (Syntax)ภาษาซี
3
เขียนโปรแกรม (Coding)
#include <stdio.h>
viod main(viod)
{
int x,y,sum;
printf(“Value of x is : ”); scanf(“%d”,&x);
printf(“Value of y is : ”); scanf(“%d”,&y);
sum=x+y;
printf(“Sum of %d+%d is %d\n”,x,y,sum);
}
3
เขียนโปรแกรม (Coding)
#include <stdio.h>
viod main(viod)
{
int x,y,sum;
printf(“Value of x is : ”);
scanf(“%d”,&x);
printf(“Value of y is : ”);
scanf(“%d”,&y);
sum=x+y;
printf(“Sum of %d+%d is %d\n”,x,y,sum);
}
INPUT X
INPUT Y
SUM = X+Y
PRINT SUM
4
ทดสอบโปรแกรม (Testing)
 เป็ นการนาผลลัพธ์ จากขั้นตอนที่ 3 มาทาการ Run แล้ ว
ทดสอบโดยการป้อนค่ า x และ y เข้ าไปในโปรแกรม และ
ตรวจสอบผลลัพธ์ ทไี่ ด้ ว่าถูกต้ องหรือไม่ หากไม่ถูกต้ องก็
กลับไปทาการแก้ ไขโปรแกรมอีกครั้ง
5
จัดทาคู่มือ (Documentation)
จุดประสงค์ ทส
ี่ าคัญของการจัดทาคู่มือเพือ่ ช่ วยให้
ผู้อนื่ ศึกษาซอร์ สโค้ ดของโปรแกรมได้ ง่ายขึน้ จะเป็ น
ประโยชน์ สาหรับการพัฒนาเพิม่ เติมในอนาคต สิ่ งที่
สาคัญสาหรับการจัดทาคู่มือ คือ
“คู่มือมีรายละเอียดมากทีส่ ุ ด”
ลักษณะของการเขียนผังงาน
 ตามลาดับ (Sequence)
เป็ นส่ วนงานที่ต้องทาตามลาดับ ก่อน-หลัง
Command A
Set x to 0 คือ x=0
Input x หรือ Read x
Print x หรือ Show x
Compute x=x+y
Command B
Command C
Add 1 to x
Divide total by 3
(total / 3)
Divide total by 3 to s
(x=total/3)
 เลือกทา(Selection)

การเลือกทาแบบเลือกทาทางเดียว เรียกว่ า if-then
จริง
เท็จ
Condition
Command A
If condition then
Read x
End if
หรือ
If x<5 then
Read x
End if
 เลือกทา(Selection)

การเลือกทาแบบสองทางเลือก เรียกว่ า if-then-else
จริง
เท็จ
Condition
Command A
Command B
If condition then
Print ‘xxx’
Else
Print ‘yyy’
Print ‘zzz’
End if
 เลือกทา(Selection)

การเลือกจากกลุ่มรายการทีม่ ีจานวนมากกว่ าสองทาง เรียกว่ า CASE
Condition
Command A
Command B
Command C
Command D
case grade of
4 : write ‘A’
3 : write ‘B’
2 : write ‘C’
1 : write ‘D’
0 : write ‘F’
endcase
 การทาซ้า (Looping)

การทางานซ้าแบบตรวจสอบเงื่อนไขก่อนทา เรียกว่ า Do-While
(ทาในขณะที่ เช่ น X<=10)
จริง
Command A
Condition
เท็จ
Command B
DoWhile A<10
Read x
Compute x=x+5
Write x
End Do
 การทาซ้า (Looping)
การทางานซ้าแบบตรวจสอบเงื่อนไขหลังทา เรียกว่ า Repeat-Until
(ทาจนกระทั้ง เช่ น X=10)

Command A
เท็จ
Condition
จริง
Command B
ตัวอย่ างที่ 2
จงคานวณหาเกรดวิชาคอมพิวเตอร์ ของนักศึกษาชั้นปี ที่ 1 จากแฟ้มข้ อมูล
คะแนน พร้ อมทั้งแสดงเกรดของนักศึกษาแต่ ละคน โดยเกณฑ์ ที่ใช้
ในการตัดเกรด คือ
คะแนน
ตั้งแต่ 80 ขึน้ ไป
70 ถึง 79
60 ถึง 69
50 ถึง 59
น้ อยกว่ า 49
เกรด
A
B
C
D
F
ชื่อ
สมพร
สมชัย
สมศักดิ์
สมชาย
สมศรี
คะแนน
70
85
45
73
66
 วิเคราะห์ ปัญหา
1. ปัญหา คือ ต้ องการคานวณหาเกรดวิชาคอมพิวเตอร์ นักศึกษาชั้นปี ที่ 1
โดยอ่ านข้ อมูลชื่อและคะแนนจากไฟล์
2. ตัวแปรทีใ่ ช้ คือ
point ใช้ เก็บคะแนนนักศึกษา
grade ใช้ เก็บเกรดของนักศึกษา
3. ข้ อมูลนาเข้ า คือ ค่ าคะแนนของนักศึกษา โดยการอ่ านจากไฟล์
การพิจารณาว่ าอ่ านไฟล์ ข้อมูลว่ าจบหรือยัง
IF EOF THEN
STOP
ELSE
...
END IF
4. ผลลัพธ์ คือ เกรดของนักศึกษา ซึ่งได้ จากการนาคะแนนของนักศึกษา
คนนั้น ๆ มาพิจารณาตามเกณฑ์ ที่กาหนด
ตัวอย่ างผลลัพธ์ ที่ได้
ชื่อ
สมพร
สมชัย
สมศักดิ์
สมชาย
สมศรี
เกรด
B
A
F
B
C
 ขั้นตอนการทางาน
1. อ่านชื่อนักศึกษาและคะแนนจากแฟ้มข้ อมูล
2. ตรวจสอบค่ าคะแนนของนักศึกษาว่ าอยู่ในช่ วงใด และได้ เกรดเท่ าไร
3. แสดงชื่อและเกรดของนักศึกษาแต่ ละคน
4. ทารายการของนักศึกษาคนต่ อไป โดยวนกลับไปทาขั้นตอนที่ 1
ตัวอย่ างที่ 3
จงเขียนโฟลวชาร์ ตแสดงการหาผลบวกของเลขคู่ทมี่ ีค่าอยู่ในช่ วง 1 ถึง 100

วิเคราะห์ ปัญหา
1. ปัญหา คือ ต้ องทาการคานวณหาผลบวกของเลขคู่ในช่ วง 1 – 100
2+4+6+…+100=?
2. ตัวแปรทีใ่ ช้ คือ
Count ใช้ เก็บค่ าตัวบวก
Sum ใช้ เก็บผลบวก
3. ข้ อมูลนาเข้ า ไม่ มี
4. ผลลัพธ์ คือ ผลบวกของเลขคู่ท้งั หมดทีอ่ ยู่ในช่ วง 1 - 100

ขั้นตอนการทางาน




กาหนดค่ าเริ่มต้ นให้ Count และ Sum เป็ น 0
เพิม่ ค่ าตัวบวกเพือ่ เป็ นตัวบวกตัวถัดไป คือ Count=Count+2
ตรวจสอบตัวแปร Count ว่ ามีค่ามากกว่ า 100 หรือไม่
หากมากกว่ า 100 ให้ จบการทางาน
หากไม่ มากกว่ า 100 ให้ ทาขั้นตอนต่ อไป
คานวณ Sum=Sum+Count แล้วกลับไปทาขั้นตอนที่ 2 อีกครั้ง
โฟลวชาร์ ตแสดงการหาผลบวกของเลขคู่จาก 1 - 100
START
Count = 0
Sum = 0
Count = Count + 2
Count > 100
Sum = Sum + Count
STOP
ตัวอย่ างที่ 4
จงเขียนโฟลวชาร์ ตแสดงการแปลงค่าจากคริสตศักราชไปเป็ นพุทธศักราช
พร้ อมทั้งแสดงผลลัพธ์ โดยแยกส่ วนของการรับค่าข้ อมูล ค.ศ. ออกจากส่ วนของ
การแปลงค่ าจาก ค.ศ. ไปเป็ น พ.ศ. (Sub Program)
วิเคราะห์ ปัญหา
ปัญหา คือ ต้ องการแปลงค่ าข้ อมูลจาก ค.ศ. ไปเป็ น พ.ศ.
จากสู ตร พ.ศ. = ค.ศ. + 543
 ตัวแปรที่ใช้ คือ
BE ใช้ เก็บค่ าปี ค.ศ.
CE ใช้ เก็บค่ าปี พ.ศ.

 ข้ อมูลนาเข้ า คือ ค่ าปี
ค.ศ. โดยรับค่ ามาเก็บไว้ ในตัวแปร
CE
 ผลลัพธ์ คือ ค่ าปี พ.ศ. ซึ่งได้ จากการแปลงค่ าปี ค.ศ. โดย
ใช้ สูตร BE = CE + 543

ขั้นตอนการทางาน
1. รับค่ า CE
2. ทาการเรียกโปรแกรมย่ อยขึน้ มาทางาน
3. โปรแกรมย่ อยทาการแปลงค่ าจาก ค.ศ. ไปเป็ น พ.ศ.
BE = CE + 543
4. กลับสู่ การทางานทีโ่ ปรแกรมหลักอีกครั้ง และแสดงผลลัพธ์
โฟลวชาร์ ตแสดงการแปลง ค.ศ. ไปเป็ น พ.ศ.
START
CONVERTION
INPUT CE
BE = CE + 543
CONVERTION
RETURN
PRINT BE
END