การทางานแบบลาดับ
การทางานแบบลาดับ
ในการเขียนโปรแกรมนั้น หลังจากที่ผ่านขั้นตอนการวิเคราะห์ปัญหา
มาแล้ ว ขั้ น ตอนต่ อ ไปคื อ การเขี ย นผั ง งานและซู โ ดโค้ ด อธิ บ าย
หลักการแก้ไขปัญหา ผู้ที่เขียนโปรแกรมจะต้องเปลี่ยนผังงานให้เป็น
การอธิบายขั้นตอนการทางานในลักษณะข้อความก่อน จากนั้นจึง
เปลี่ ย นข้ อ ความนั้ น ๆ ให้ เ ป็ น ซู โ ดโค้ ด แล้ ว จึ ง เขี ย นเป็ น โปรแกรม
คอมพิวเตอร์ลาดับต่อไป รูปแบบของโปรแกรมนั้นมีหลายรูปแบบ
สาหรับหัวข้อนี้จะกล่าวถึงรายละเอียดและตัวอย่างการทางานแบบ
ลาดับซึ่งถือว่าเป็นพื้นฐานในการเขียนโปรแกรมทั่ว ๆ ไป ลักษณะ
การทางานของโปรแกรมแบบลาดับนี้จะกระทาตามลาดับกิจกรรม
ก่อนหลัง โดยไม่มีการเปลี่ยนแปลงทิศทางไปในลักษณะอื่น
START
READ Base, HIGH

ANS = 0.5*Base*high

WRITE ANS

END

รูปแสดงตัวอย่างผังงานการหาพื้นทีสามเหลียม
่
่
จากผังงานในรูปเป็นการทางานแบบลาดับ ถ้าหากเขียนเป็นคาอธิบาย
โปรแกรมในลักษณะของข้อความภาษาไทยจะเขียนได้ดังนี้
2006

2008

2007

หาพื้นที่สามเหลี่ยม
เริ่มต้น
1. รับค่าฐาน Base, รับค่าส่วนสูง High
2. คานวณหาพื้นที่โดยใช้ตัวแปร ANS เท่ากับ 0.5*Base*High
3. แสดงค่าพื้นที่ ANS
จบ

2009
ซึ่งจะเห็นว่าการทางานจะทางานเป็นลาดับต่อเนื่องกันไป ถ้าหากต้องการให้ค่า
ฐานของสามเหลี่ยมและส่วนสูงเป็นเลขจานวนเต็ม จะเขียนเป็นซูโดโค้ดที่ใช้คา
ภาษาอังกฤษได้ดังนี้
START
INT Base, High : INTEGER
INT ANS : REAL
READ Base, High
ANS = 0.5*Base*High
WRITE ANS
END

และจากซูโดโค้ดที่ได้นี้จะทาให้สามารถเขียนเป็นโปรแกรมคอมพิวเตอร์ได้ง่าย โดย
เปลี่ยนซูโดโค้ดแต่ละบรรทัดให้เป็นไปตามหลักการเขียนโปนแกรมภาษานั้น ๆ ตาม
ตัวอย่างต่อไป
#include<stdio.h>
#<conio.h>
main()
{
int Base, High;
float ANS;
printf(“Input Base”);
scanf(“%d”,&Base);
printf(“Input Base”);
scanf(“%d”,&Base);
ANS = 0.5*Base*High;
printf(“ANS : %.2fn”,ANS);
getch ();
return 0;
}

/*ประกาศตัวแปร Base และ High เป็นเลขจานวนเต็ม*/
/*ประกาศตัวแปร ANS เป็นเลขทศนิยม*/
/*รับค่าความยาวฐาน*/
/*รับค่าความสูง*/
/*คานวณหาพื้นที่สามเหลี่ยม*/
/*แสดงผลออกทางจอภาพเป็นทศนิยมสองตาแหน่ง*/
เมื่อคีย์โปรแกรมลงในโปรแกรม DEV – C++ แล้วทดลองแล้วรันโปรแกรมผลลัพธ์ที่
ได้จะเป็นดังรูป โดยคอมพิวเตอร์จะให้ป้อนค่าฐานและความสูงของสามเหลี่ยมเข้าไปทางอินพุต
จากนั้นจะแสดงผลเป็นพื้นที่ของสามเหลี่ยมออกมา โดยในตัวอย่างจะป้อนความยาวฐานเท่ากับ
17 และส่วนสูงเท่ากับ 12

ป้อนความยาวฐาน
และความสูง
จงเขี ย นโปรแกรมหา
ค่ า ผลรวมของตั ว เลข
จานวนเต็ม 4 ค่า

วิธทา
ี

จากที่โจทย์กาหนดสามารถวิเคราะห์ปัญหาได้หลายแบบ เช่น

ข้อมูลอินพุต
ข้อมูลเอาต์พต
ุ
วิธีการประมวลผล

กาหนดค่าข้อมูลโดยตรงหรือรับจากคีย์บอร์ด
ต้องเป็นเลขจานวนเต็มเนื่องจากข้อมูลทั้งสี่ค่าเป็นจานวนเต็ม
ประกาศตัวแปรขึ้นมา 4 ตัว สาหรับเก็บจานวนเต็ม
เก็บตัวเลขในตัวแปร
นาตัวเลขทั้งสี่ค่ามารวมกันแล้วเก็บไว้ในตัวแปร

จากโจทย์ถ้าหากมีการรับข้อมูลก็ต้องประกาศตัวแปรสาหรับเก็บข้อมูล
และโจทย์บอกว่าหาผลรวมของเลขจานวนเต็ม ดังนั้นตัวแปรควรเป็นตัวแปรที่
เก็บเลขจานวนเต็ม
วิธีที่ 1 ถ้าหากเป็นการกาหนดค่าข้อมูลโดยตรงจะเขียนผังงานและโปรแกรมภาษาซีได้ดังนี้

START
x1 = 32
x2 = 14
x3 = 25
x4 = 10
SUM = x1 + x2 + x3 + x4
สัญลักษณ์ของผัง
งานแสดงข้อมูล
ทางจอภาพ

WRITE SUM

#include<stdio.h>
ประกาศตัวแปร
#include<conio.h>
เก็บจานวนเต็ม
main()
และผลรวม
{
int x1, x2, x3, x4, SUM;
x1 = 32;
x2 = 14;
x3 = 25;
x4 = 10;
SUM = x1 + x2 + x3 + x4;
printf(“SUM = %dn”,SUM);
getch ();
return 0;
}

END
รูปแสดงเปรียบเทียบผังงานและโปรแกรมภาษาซี
วิธีที่ 2 ถ้าหากต้องการให้กาหนดข้อมูลเพื่อหาผลรวมทันทีก็ทาได้โดยไม่ต้องประกาศตัวแปร สามารถ
เขียนผังงานและโปรแกรมได้ดังรูปด้านล่าง วิธีนี้จะทาให้โปรแกรมใช้หน่วยความจาของคอมพิวเตอร์
น้อยลงด้วย เนื่องจากการประกาศตัวแปรหนึ่งตัวสาหรับเก็บเลขจานวนเต็มคอมพิวเตอร์ต้องจอง
หน่วยความจาให้กับตัวแปรนั้นจานวน 4 ไบต์ (สาหรับ DEV-C++)

START
SUM = x1 + x2 + x3 + x4
WRITE SUM

END

#include<stdio.h>
#include<conio.h>
main()
{
int SUM;
SUM = x1 + x2 + x3 + x4;
printf(“SUM = %dn”,SUM);
getch ();
return 0;
}

รูปแสดงการประมวลผลข้อมูลโดยตรงโดยไม่ตองมีตวแปรทุกตัว
้
ั
วิธีที่ 3 ถ้าหากต้องการรับข้อมูลทางแป้นพิมพ์ทีละตัวก็ทาได้ โดยจะต้องประกาศตัวแปรสาหรับรับข้อมูล
ทางแป้นพิมพ์ด้วย และการรับข้อมูลตัวเลขแต่ละตัวจะต้องใช้ฟังก์ชัน scanf() ดังผังงานและโปรแกรม
ในรูป START
#include<stdio.h>
#include<conio.h>
main()
READ x1
{
int x1, x2, x3, x4, SUM;
สัญลักษณ์การรับ
READ x2
ข้อมูลทางคีย์บอร์ด
scanf(“%d”&x1);
scanf(“%d”&x1);
READ x3
scanf(“%d”&x1);
scanf(“%d”&x1);
READ x4
SUM = x1 + x2 + x3 + x4;
printf(“SUM = %dn”,SUM);
SUM = x1 + x2 + x3 + x4
getch ();
WRITE SUM
return 0;
}

END

รูปแสดงผังงานและโปรแกรมสาหรับรับข้อมูลเข้าไปทีละค่า
การแสดงลาดับการประมวลผลทางคณิตศาสตร์ของนิพจน์ต่างๆ

#include<stdio.h>
#include<conio.h>
int main ()
{
int a, b, c, d, e;
a = (3+4)*5;
b = 3 + 4 *5;
c = (2 + 7)*4%10;
d = 2 + 7*4%10;
e = 10 + 2 *8/4*3-5;
printf(“3+4)*5=%dn”,a);
printf(“3 + 4 *5 =%dn”,b);
ผลลัพธ์ที่ได้
โปรแกรมคานวณหาผลลัพธ์จากการหาร
#include<stdio.h>
#include<conio.h>
int main ()
{
int a, b;
float c;
a = 20;
b = 6;
c = 6;
printf(“20/6 = %dn”,a/b);
printf(“20%6 = %dn”,a%b);

/*หารเอาเฉพาะส่วน*/
/*หารเอาเฉพาะเศษ*/
printf(“20/6 = %fn”,a/c);
printf(“20%6 = %15fn”,a%c);
printf(“20%6 = %.2fn”,a%c);
getch ();
return 0;

}

/*หารเอาทั้งเศษและส่วน*/
/*แสดงผลโดยจองพื้นที่ 15 ช่อง*/
/*แสดงผลทศนิยม 2 ตาแหน่ง*/
ผลลัพธ์ที่ได้
ร้านขายผลไม้แห่งหนึง หากยอดซื้อเกิน 200 บาทจะลดราคาให้ 5% และถ้ายอดขายเกิน 400
่
บาท จะลดราคาให้ 10 % จงเขียนโปรแกรมให้ผู้ใช้ป้อนน้าหนักของผลไม้ที่ซื้อเป็นกิโลกรัม
จากนั้นให้โปรแกรมแจ้งราคาที่ต้องชาระออกมา
#include<stdio.h>
#include<conio.h>
int main ()
{
int Price;
int Sale;
printf("Enter Price= ");
scanf("%d",&Price);
if(Price <= 200)
{
Sale = Price;
printf ("nnSale = %d", Sale);
}
else
if(Price <= 400)
{
Sale = (Price * 95)/100;
printf ("nnSale = %d", Sale);
}
else
if (Price > 400)
{
Sale = (Price * 90)/100;
printf ("nnSale = %d", Sale);
}
getch ();
return 0;
}
ผลลัพธ์ที่ได้
เมื่อซือสินค้า 200 บาท
้
เมื่อซือสินค้าเกิน 200 บาท จะลดราคาให้ 5%
้
เมื่อซือสินค้าเกิน 400 บาท จะลดราคาให้ 10%
้

ตั้งใจ

กัน
เรียน

หน่อย
โปรแกรมคานวณค่าโทรศัพท์
ถ้าคิดค่าโทรศัพท์ดังนี้

นาทีแรก 3 บาท
นาทีที่ 2 – 2.50 บาท
นาทีที่ 3 – 1.50 บาท
นาทีที่ 4 – 1 บาท
นาทีที่ 5 เป็นต้นไป – 0.25 บาท
ถ้าโทรศัพท์ 7 นาทีจะเสียค่าโทรเป็นเงินกี่บาท
#include<stdio.h>
#include<conio.h>
int main ()
{
float Price;
int Minute;
printf("Enter Minute= ");
scanf("%d",&Minute);
if(Minute <= 1)
{
Price = 3;
printf ("nnPrice = %f", Price);
}
else
if(Minute <= 2)
{
Price = 5.50;
printf ("nnPrice = %f", Price);
}
else
if(Minute <= 3)
{
Price = 7;
printf ("nnPrice = %f", Price);
}
else
if(Minute <= 4)
{
Price = 8;
printf ("nnPrice = %f", Price);
}
else
if(Minute > 5)
{
Price = ((Minute - 4) * 0.25) + 8;
printf ("nnPrice = %f", Price);
}
getch ();
return 0;
}
ผลลัพธ์ที่ได้ เมื่อโทรศัพท์เป็นเวลา 7 นาที
ที่มา : คู่มืออบรมครูวิทยาศาสตร์ คณิตศาสตร์ คอมพิวเตอร์ โลก ดาราศาสตร์ และอวกาศ ระดับมัธยมศึกษาตอนปลาย
หนังสือเรียนรายวิชาเพิ่มเติม การเขียนโปรแกรมเบื้องต้นด้วยภาษา C บริษทซัคเซสมีเดีย
คู่มือเรียนเขียนโปรแกรมภาษา สานักพิมพ์ IDC PREMIER

3.8 การทำงานแบบลำดับ