Upload
-
View
47
Download
3
Embed Size (px)
Citation preview
การท างานแบบล าดับ
การท างานแบบล าดับ
ในการเขียนโปรแกรมนั้น หลังจากที่ผ่านขั้นตอนการวิเคราะห์ปัญหา
มาแล้ว ขั้นตอนต่อไปคือการเขียนผังงานและซูโดโค้ดอธิบาย
หลักการแก้ไขปัญหา ผู้ที่เขียนโปรแกรมจะต้องเปลี่ยนผังงานให้เป็น
การอธิบายขั้นตอนการท างานในลักษณะข้อความก่อน จากนั้นจึง
เปลี่ยนข้อความนั้น ๆ ให้เป็นซูโดโค้ดแล้วจึงเขียนเป็นโปรแกรม
คอมพิวเตอร์ล าดับต่อไป รูปแบบของโปรแกรมนั้นมีหลายรูปแบบ
ส าหรับหัวข้อนี้จะกล่าวถึงรายละเอียดและตัวอย่างการท างานแบบ
ล าดับซึ่งถือว่าเป็นพื้นฐานในการเขียนโปรแกรมทั่ว ๆ ไป ลักษณะ
การท างานของโปรแกรมแบบล าดับนี้จะกระท าตามล าดับกิจกรรม
ก่อนหลัง โดยไม่มีการเปลี่ยนแปลงทิศทางไปในลักษณะอื่น
START
READ Base, HIGH
ANS = 0.5*Base*high
WRITE ANS
END
รูปแสดงตัวอยา่งผังงานการหาพื้นทีส่ามเหลีย่ม
2006
2007
2008
2009
จากผังงานในรูปเป็นการท างานแบบล าดับ ถ้าหากเขียนเป็นค าอธิบาย
โปรแกรมในลักษณะของข้อความภาษาไทยจะเขียนได้ดังนี้
หาพื้นที่สามเหลี่ยม
เริ่มต้น
1. รบัค่าฐาน Base, รบัค่าส่วนสูง High
2. ค านวณหาพื้นที่โดยใช้ตัวแปร ANS เท่ากับ 0.5*Base*High
3. แสดงค่าพื้นที่ ANS
จบ
ซึ่งจะเห็นว่าการท างานจะท างานเป็นล าดับต่อเนื่องกันไป ถ้าหากต้องการให้ค่า
ฐานของสามเหลี่ยมและส่วนสูงเป็นเลขจ านวนเต็ม จะเขียนเป็นซูโดโค้ดที่ใช้ค า
ภาษาองักฤษได้ดังนี้
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; /*ประกาศตัวแปร Base และ High เป็นเลขจ านวนเต็ม*/
float ANS; /*ประกาศตัวแปร ANS เป็นเลขทศนิยม*/
printf(“Input Base”);
scanf(“%d”,&Base); /*รับค่าความยาวฐาน*/
printf(“Input Base”);
scanf(“%d”,&Base); /*รับค่าความสูง*/
ANS = 0.5*Base*High; /*ค านวณหาพื้นที่สามเหลี่ยม*/
printf(“ANS : %.2f\n”,ANS); /*แสดงผลออกทางจอภาพเป็นทศนิยมสองต าแหน่ง*/
getch ();
return 0;
}
เมื่อคีย์โปรแกรมลงในโปรแกรม DEV – C++ แล้วทดลองแล้วรันโปรแกรมผลลัพธ์ที่
ได้จะเป็นดังรูป โดยคอมพิวเตอร์จะให้ป้อนค่าฐานและความสูงของสามเหลี่ยมเข้าไปทางอินพุต
จากนั้นจะแสดงผลเป็นพื้นที่ของสามเหลี่ยมออกมา โดยในตัวอย่างจะป้อนความยาวฐานเท่ากับ
17 และส่วนสูงเท่ากับ 12
ป้อนความยาวฐาน
และความสูง
วิธที า จากที่โจทย์ก าหนดสามารถวิเคราะห์ปัญหาได้หลายแบบ เช่น
ข้อมูลอินพุต ก าหนดค่าข้อมูลโดยตรงหรือรบัจากคีย์บอร์ด
ข้อมูลเอาต์พตุ ต้องเป็นเลขจ านวนเต็มเนื่องจากข้อมูลทั้งสี่ค่าเป็นจ านวนเต็ม
วิธีการประมวลผล ประกาศตวัแปรข้ึนมา 4 ตวั ส าหรับเก็บจ านวนเต็ม
เก็บตวัเลขในตวัแปร
น าตัวเลขทั้งสี่ค่ามารวมกันแล้วเก็บไว้ในตัวแปร
จากโจทย์ถ้าหากมีการรับข้อมูลก็ต้องประกาศตัวแปรส าหรับเก็บข้อมูล
และโจทย์บอกว่าหาผลรวมของเลขจ านวนเต็ม ดังนั้นตัวแปรควรเป็นตัวแปรที่
เก็บเลขจ านวนเต็ม
จงเขียนโปรแกรมหา
ค่าผลรวมของตัวเลข
จ านวนเต็ม 4 ค่า
วิธีที่ 1 ถ้าหากเป็นการก าหนดค่าข้อมูลโดยตรงจะเขยีนผงังานและโปรแกรมภาษาซีได้ดังนี้
#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 = %d\n”,SUM);
getch ();
return 0;
}
รูปแสดงเปรียบเทยีบผงังานและโปรแกรมภาษาซี
START
x1 = 32
x2 = 14
x3 = 25
x4 = 10
SUM = x1 + x2 + x3 + x4
WRITE SUM
END
ประกาศตวัแปร
เก็บจ านวนเต็ม
และผลรวม
สญัลักษณ์ของผัง
งานแสดงข้อมูล
ทางจอภาพ
วิธีที่ 2 ถ้าหากต้องการให้ก าหนดข้อมูลเพื่อหาผลรวมทันทีก็ท าได้โดยไม่ต้องประกาศตัวแปร สามารถ
เขียนผังงานและโปรแกรมได้ดังรูปด้านล่าง วิธีนี้จะท าให้โปรแกรมใช้หน่วยความจ าของคอมพิวเตอร์
น้อยลงด้วย เนื่องจากการประกาศตัวแปรหนึ่งตัวส าหรับเก็บเลขจ านวนเต็มคอมพิวเตอร์ต้องจอง
หน่วยความจ าให้กับตัวแปรนั้นจ านวน 4 ไบต์ (ส าหรบั DEV-C++)
#include<stdio.h>
#include<conio.h>
main()
{
int SUM;
SUM = x1 + x2 + x3 + x4;
printf(“SUM = %d\n”,SUM);
getch ();
return 0;
}
รูปแสดงการประมวลผลข้อมูลโดยตรงโดยไม่ตอ้งมีตวัแปรทุกตัว
START
SUM = x1 + x2 + x3 + x4
END
WRITE SUM
วิธีที่ 3 ถ้าหากต้องการรับข้อมูลทางแป้นพิมพ์ทีละตวัก็ท าได้ โดยจะต้องประกาศตวัแปรส าหรับรับข้อมูล
ทางแป้นพิมพ์ด้วย และการรับข้อมูลตัวเลขแต่ละตัวจะต้องใช้ฟังก์ชัน scanf() ดังผังงานและโปรแกรม
ในรูป #include<stdio.h>
#include<conio.h>
main()
{
int x1, x2, x3, x4, SUM;
scanf(“%d”&x1);
scanf(“%d”&x1);
scanf(“%d”&x1);
scanf(“%d”&x1);
SUM = x1 + x2 + x3 + x4;
printf(“SUM = %d\n”,SUM);
getch ();
return 0;
}
รูปแสดงผงังานและโปรแกรมส าหรับรับข้อมลูเข้าไปทลีะคา่
WRITE SUM
START
SUM = x1 + x2 + x3 + x4
END
READ x1
READ x2
READ x3
READ x4
สญัลักษณ์การรบั
ข้อมูลทางคีย์บอรด์
การแสดงล าดับการประมวลผลทางคณิตศาสตร์ของนิพจน์ต่างๆ
#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=%d\n”,a);
printf(“3 + 4 *5 =%d\n”,b);
ผลลัพธ์ที่ได้
โปรแกรมค านวณหาผลลัพธ์จากการหาร
#include<stdio.h>
#include<conio.h>
int main ()
{
int a, b;
float c;
a = 20;
b = 6;
c = 6;
printf(“20/6 = %d\n”,a/b); /*หารเอาเฉพาะส่วน*/
printf(“20%6 = %d\n”,a%b); /*หารเอาเฉพาะเศษ*/
printf(“20/6 = %f\n”,a/c); /*หารเอาทั้งเศษและส่วน*/
printf(“20%6 = %15f\n”,a%c); /*แสดงผลโดยจองพื้นที่ 15 ช่อง*/
printf(“20%6 = %.2f\n”,a%c); /*แสดงผลทศนิยม 2 ต าแหน่ง*/
getch ();
return 0;
}
ผลลัพธ์ที่ได้
ร้านขายผลไมแ้ห่งหนึง่ หากยอดซื้อเกิน 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 ("\n\nSale = %d", Sale);
}
else
if(Price <= 400)
{
Sale = (Price * 95)/100;
printf ("\n\nSale = %d", Sale);
}
else
if (Price > 400)
{
Sale = (Price * 90)/100;
printf ("\n\nSale = %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 ("\n\nPrice = %f", Price);
}
else
if(Minute <= 2)
{
Price = 5.50;
printf ("\n\nPrice = %f", Price);
}
else
if(Minute <= 3)
{
Price = 7;
printf ("\n\nPrice = %f", Price);
}
else
if(Minute <= 4)
{
Price = 8;
printf ("\n\nPrice = %f", Price);
}
else
if(Minute > 5)
{
Price = ((Minute - 4) * 0.25) + 8;
printf ("\n\nPrice = %f", Price);
}
getch ();
return 0;
}
ผลลัพธ์ที่ได้ เมื่อโทรศัพท์เป็นเวลา 7 นาที
ที่มา : คู่มืออบรมครูวิทยาศาสตร์ คณิตศาสตร์ คอมพิวเตอร์ โลก ดาราศาสตร์ และอวกาศ ระดับมัธยมศึกษาตอนปลาย
หนังสือเรียนรายวิชาเพิ่มเติม การเขียนโปรแกรมเบื้องต้นด้วยภาษา C บริษทซัคเซสมีเดีย
คู่มือเรียนเขียนโปรแกรมภาษา ส านักพิมพ์ IDC PREMIER