The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by kspiya, 2020-07-14 01:15:53

chapter 3 Flowchart

Arduino

บทที่ 3
การเขียนโปรแกรมภาษาซี

3.1 การเขียนผงั งาน

ผังงานหรือโฟลว์ชารต์ (Flowchart) คอื แผนภาพทใี่ ช้ออกแบบและอธบิ ายการทำงานของโปรแกรม
โดยอาศยั รูปทรงตา่ งๆ ควบคู่ไปกับลูกศร แต่ละรูปในแผนภาพจะหมายถึงการทำงานหนงึ่ ข้นั ตอน สว่ นลูกศร
จะแทนลำดบั การทำงานข้นั ตอนต่างๆ รวมท้ังทศิ ทางการไหลของข้อมูลต้งั แต่เรม่ิ ตน้ จนได้ผลลพั ธ์ตามต้องการ

3.1.1 ประโยชน์ของผังงาน
1) ช่วยแสดงลำดบั ข้นั ตอนการทำงาน ทำให้สามารถเขยี นโปรแกรมได้อย่างเป็นระบบไม่สับสน
2) ทำใหต้ รวจสอบขอ้ ผดิ พลาดของโปรแกรมได้งา่ ย
3) ช่วยให้การดดั แปลงหรือแก้ไขโปรแกรมทำได้อยา่ งสะดวกและรวดเรว็
4) ผูอ้ ืน่ สามารถศกึ ษาและทำความเขา้ ใจการทำงานของโปรแกรมไดง้ ่าย และรวดเรว็ ข้ึน
5) ผงั งานมคี วามเปน็ อิสระตอ่ ภาษาท่ใี ชใ้ นการเขียนโปรแกรม ผงั งานเดยี วกันสามารถนำไปเขยี น

โปรแกรมด้วยภาษาใดก็ได้

3.1.2 วธิ ีการเขียนผังงานทด่ี ี
1) ใชส้ ัญลักษณ์ตามท่ีกำหนดไว้
2) ใช้ลกู ศรแสดงทิศทางการไหลของข้อมูลจากบนลงลา่ ง หรอื จากซา้ ยไปขวา
3) คำอธบิ ายในภาพควรสน้ั กะทดั รดั และเขา้ ใจง่าย
4) ทุกแผนภาพต้องมีลกู ศรแสดงทศิ ทางเข้า - ออก
5) ไม่ควรโยงเสน้ เชือ่ มผังงานทอ่ี ยู่ไกลมากๆ ควรใชส้ ญั ลกั ษณจ์ ดุ เช่ือมต่อแทน
6) ผงั งานควรมีการทดสอบความถกู ต้องของการทำงานก่อนนำไปเขียนโปรแกรม

3.1.3 ประเภทของผังงาน
การเขยี นผงั งานสามารถแบ่งออกเป็น 2 ประเภท คือ ผังงานระบบ และผงั งานโปรแกรม
1) ผงั งานระบบ (System Flowchart) หมายถงึ ผงั งานที่แสดงขน้ั ตอนการทำงานของระบบทง้ั หมด

แสดงถงึ อุปกรณใ์ นการรบั ข้อมลู เอกสารเบื้องต้น ส่อื บนั ทึกข้อมูล วธิ ีการประมวลผล สูตรท่ใี ชใ้ นการคำนวณ
การแสดงผลลพั ธ์และอปุ กรณ์ท่ีใชแ้ สดงผลลัพธ์ในแต่ละจุดของผังงาน เป็นแสดงการทำงานทั้งระบบอยา่ ง
กวา้ งๆ ไมล่ ะเอียด จึงไม่สามารถเขียนโปรแกรมจากผังงานระบบได้

2) ผงั งานโปรแกรม (Program Flowchart) หมายถึง ผังงานทแ่ี สดงขั้นตอนของคำสัง่ การทำงาน
อย่างละเอยี ด โดยใชส้ ญั ลักษณ์ในการเขียนผงั งานเชน่ เดยี วกับการเขียนผงั งานระบบ เปน็ การวางแผนการ
เขยี นโปรแกรม โดยผงั งานโปรแกรมจะแสดงลำดบั คำสง่ั เป็นขนั้ ตอนในการปฏบิ ตั ิงานอย่างละเอียด การเขียน

36 การเขียนโปรแกรมภาษาซี

ผังงานโปรแกรมก่อนแล้วจึงเขียนโปรแกรมตามผงั งาน จะชว่ ยลดขอ้ ผิดพลาดในการเขียนโปรแกรมลง ทำให้
การเขยี นโปรแกรมทำไดง้ ่ายและถูกต้องกว่าการเขียนโปรแกรมโดยไม่มีผงั งาน

3.1.4 สัญลกั ษณท์ ่ใี ช้ในการเขียนผงั งาน
การเขยี นผงั งานจะมีการใช้ภาพสญั ลกั ษณ์ตา่ งๆ นำมาเรยี งต่อกนั เพื่อแสดงลำดบั ข้ันตอนการทำงาน

โดยมีสัญลกั ษณต์ ามมาตรฐาน ANSI (American National Standard Institute) ทีน่ ยิ มใช้กนั ดงั ตารางที่ 3.1

ตารางที่ 3.1 สัญลกั ษณ์ของผงั งาน

สญั ลักษณ์ ความหมาย

จดุ เริม่ ต้น / สนิ้ สุดของโปรแกรม

ใชแ้ สดงคำสัง่ ในการประมวลผล/การกำหนดค่าข้อมลู ใหก้ ับตวั แปร

โปรแกรมย่อย

การรบั หรอื แสดงข้อมลู โดยไม่ระบอุ ุปกรณ์

ลูกศรแสดงทิศทางการทำงานของโปรแกรมและการไหลของข้อมูล

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

จุดเชื่อมตอ่ ของผังงานภายในหน้าเดยี วกนั หรอื เป็นที่บรรจบของเส้น
หลายเส้นท่มี าจากหลายทิศทาง เพอื่ จะไปสู่การทำงานอย่างใดอย่าง
หนงึ่ ท่ีเหมอื นกนั
จดุ เชื่อมตอ่ ผังงานที่อยู่ตา่ งหน้ากนั ในกรณีทผี่ งั งานมคี วามยาวเกนิ
หนา้ กระดาษ

การเขยี นโปรแกรมภาษาซี 37

3.1.5 ลักษณะโครงสร้างของผงั งาน
ผงั งานทว่ั ไปจะประกอบด้วยโครงสรา้ งพื้นฐาน 3 รูปแบบดังตอ่ ไปน้ี
1. โครงสร้างแบบเป็นลำดบั (Sequence Structure) เปน็ โครงสรา้ งพื้นฐานของผังงาน และเป็น

ลกั ษณะขั้นตอนการทำงานท่ีพบมากทส่ี ดุ คือ ทำงานทลี ะขั้นตอนเรียงกันไปตามลำดบั ไม่มีการขา้ มข้นั ไม่มี
การวนซำ้ ดงั รูปท่ี 3.1

1

2

3

รูปที่ 3.1 โครงสร้างแบบเปน็ ลำดบั
2. โครงสร้างแบบมีตัวเลือก (Selection Structure) มรี ปู แบบที่ซับซ้อนกว่าโครงสรา้ งแบบเปน็
ลำดับ จะเป็นลักษณะการทำงานทม่ี ที างเลือก โดยมกี ารตรวจสอบเงอื่ นไขและให้โปรแกรมเลือกทำอย่างใด
อย่างหนง่ึ รูปแบบทงี่ ่ายที่สุดของโครงสร้างแบบนี้ คือ การเลอื กแบบมที างออก 2 ทาง ถ้าเง่อื นไขเปน็ จรงิ จะทำ
อยา่ งหน่งึ และถ้าเงื่อนไขเป็นเท็จจะทำอีกอยา่ งหน่ึง ดงั รปู ที่ 3.2

1 2

รูปท่ี 3.2 โครงสร้างแบบมีตัวเลอื ก

38 การเขยี นโปรแกรมภาษาซี
3. โครงสร้างแบบทำซ้ำ (Iteration Structure) จะทำงานแบบเดียวกันซ้ำไปเร่ือยๆ จนครบตาม

จำนวนทต่ี ้องการหรอื ทำซำ้ ตามเงอื่ นไขที่เป็นจรงิ จนกระทั้งเงอื่ นไขเป็นเท็จจงึ ทำงานอนื่ ต่อไป ดงั รปู ท่ี 3.3

1

2

รูปท่ี 3.3 โครงสร้างแบบทำซ้ำ

ผงั งานโปรแกรมสามารถนำมาใช้เขยี นโปรแกรม โดยในการเขียนโปรแกรมสามารถเลือกใชภ้ าษาได้
หลายภาษา ซึ่งแต่ละภาษาจะมีรูปแบบไวยากรณข์ องภาษาท่ใี ช้แตกต่างกันออกไป แตโ่ ดยท่ัวไปแลว้ จะมี
รูปแบบหรือโครงสร้างของคำสัง่ ท่คี ลา้ ยกัน โดยมีคำสัง่ พนื้ ฐาน ได้แก่ คำสงั่ การรับข้อมูลเขา้ และการแสดงผล
คำสัง่ การกำหนดคา่ คำสงั่ การเลือกทำตามเง่ือนไข และคำส่ังการทำซ้ำหรือการวนลปู ซงึ่ ค่าส่งั พื้นฐานเหล่าน้ี
สามารถรองรับข้นั ตอนการทำงานแต่ละขัน้ ตอนในผงั งานโปรแกรมไดเ้ ป็นอย่างดี ดังนั้นหลงั การออกแบบ
ขัน้ ตอนการทำงานในโปรแกรมโดยใช้ผังานแล้ว สามารถนำผงั งานน้ันมาใชใ้ นการเขยี นโปรแกรมได้ โดยเขียน
โปรแกรมเป็นลำดบั ตามขนั้ ตอนต่างๆ ตามที่ระบไุ วใ้ นผงั งานโปรแกรม

3.2 คำสง่ั การเลอื กทำตามเงอ่ื นไข

ในการเขียนโปรแกรมบางคร้งั จะต้องมกี ารสั่งใหโ้ ปรแกรมเลือกทำงานอย่างใดอย่างหนึ่ง โดยการ
ตรวจสอบเงอื่ นไขก่อน ถา้ เงื่อนไขเปน็ จริงจะทำ ถา้ เงื่อนไขเป็นเท็จจะไม่ทำ สำหรับภาษาซีมคี ำส่ังที่ใชใ้ นการ
เลอื กทำอย่หู ลายคำสง่ั ไดแ้ ก่ คำสงั่ เลือกทำแบบทางเดยี ว (คำสง่ั if) คำส่งั เลือกทำแบบสองทางเลือก (คำสั่ง
if-else) คำสง่ั เลอื กทำแบบหลายทางเลือก (คำสัง่ if–else–if) และ (คำสัง่ switch-case) แตล่ ะคำส่ังมีรปู แบบ
ในการทำงานดังต่อไปนี้

การเขียนโปรแกรมภาษาซี 39

3.2.1 คำสั่ง if
คำส่งั if เป็นคำสง่ั เลือกทำแบบทางเดียวใช้ตรวจสอบเงื่อนไข (ภายในวงเล็บ) ก่อน ถ้าเง่ือนไขเปน็ จรงิ

จะทำคำสง่ั ที่ตามหลงั หรือคำส่ังทอ่ี ยู่ในเครอ่ื งหมายปีกกา { } แต่ถา้ เง่ือนไขเป็นเทจ็ จะทำคำส่งั ตอ่ ไป ลักษณะ
การทำงานของคำส่งั if แสดงดังรูปที่ 3.4 รปู แบบของคำสั่งเป็นดงั น้ี

รูปแบบท่ี 1
if (เง่อื นไข) คำสัง่ เมื่อเงื่อนไขเป็นจริง;

รปู แบบที่ 2
if (เงอ่ื นไข)
{
คำสั่งเม่อื เงอื่ นไขเปน็ จรงิ 1;
คำส่งั เมื่อเงอ่ื นไขเปน็ จริง 2;
:
คำสง่ั เมื่อเง่ือนไขเปน็ จริง n;
}

รปู ท่ี 3.4 ผงั งานของคำส่ัง if

ตวั อย่าง // ถ้า sw เท่ากับ 1 ให้ var1 มีค่า 0xFF
if (sw==1) var1 = 0xFF; // Var1 มคี ่า 0x00
var1 = 0x00;

จากตัวอย่างจะตรวจสอบเง่ือนไขโดยตรวจสอบวา่ ค่าในตัวแปร sw มคี ่าเทา่ กับ 1 หรอื ไม่ ถ้า sw มีค่า
เท่ากับ 1 แสดงว่าเงื่อนไขเป็นจริง จะทำคำสงั่ var1 = 0xFF ก่อนและทำคำสง่ั ต่อไป แตถ่ า้ เง่อื นไขเป็นเท็จ
(sw ไม่เทา่ กบั 1) จะกระโดดไปทำคำสัง่ ต่อไป คือ var1 = 0x00 ทันที

40 การเขียนโปรแกรมภาษาซี

ตัวอย่าง // ตรวจสอบว่า sw = 2 หรอื ไม่
if (sw==2)
{ // ถา้ เงอื่ นไขเปน็ จรงิ ให้ var1 มีคา่ 0x00
var1 = 0x00; // ให้ var2 มคี ่า 0xFF
var2 = 0xFF;
}

จากตวั อย่างจะตรวจสอบเง่ือนไขโดยการตรวจสอบคา่ ในตัวแปร sw ว่าเท่ากบั 2 หรือไม่ ถ้ามีค่า
เท่ากบั 2 แสดงวา่ เง่อื นไขเป็นจริง จะทำคำสัง่ ภายในเครอ่ื งหมายปกี กา คอื ให้ตวั แปร Var1 มีค่า 0x00 และ
ให้ตวั แปร var2 มคี า่ 0xFF ตามลำดบั แต่ถ้าเงอ่ื นไขเป็นเทจ็ จะไม่ทำคำสั่งในเครื่องหมายปกี กา จะขา้ มไปทำ
คำส่ังต่อไปทนั ที

3.2.2 คำสัง่ if-else
คำส่ัง if-else เปน็ คำสงั่ เลือกทำแบบสองทางเลอื ก คือ ถ้าเงอื่ นไขเป็นจริงให้ทำตามคำส่ังอย่างหน่งึ

และถ้าเง่ือนไขเป็นเทจ็ ใหท้ ำคำสง่ั อกี อยา่ งหนง่ึ ลักษณะการทำงานของคำสงั่ if-else แสดงดังรูปที่ 3.5
รูปแบบของคำสงั่ เป็นดังน้ี

รปู แบบที่ 1
if (เง่อื นไข)
คำสั่งเมอื่ เงือ่ นไขเป็นจริง;
else
คำส่ังเมื่อเงอื่ นไขเปน็ เท็จ;

รปู แบบท่ี 2
if (เง่ือนไข)
{
คำสั่งเมือ่ เงอ่ื นไขเป็นจริง 1;
คำสั่งเมอ่ื เงื่อนไขเป็นจรงิ 2;
}
else
{
คำสั่งเมื่อเงื่อนไขเป็นเท็จ 1;
คำสั่งเมอ่ื เงื่อนไขเปน็ เทจ็ 2;
}

การเขียนโปรแกรมภาษาซี 41

รปู ท่ี 3.5 ผังงานของคำสั่ง if-else

ตัวอย่าง // ถ้า sw เทา่ กับ 1 ให้ var1 มคี ่า 0xFF
if (sw==1) // ถ้า sw ไมเ่ ท่ากับ 1 var1 มคี า่ 0x00
var1 = 0xFF;
else
var1 = 0x00;

จากตัวอยา่ งจะตรวจสอบเง่ือนไขโดยตรวจสอบค่าในตวั แปร sw มคี า่ เท่ากับ 1 หรือไม่ ถา้ sw มคี า่

เทา่ กบั 1 แสดงว่าเงื่อนไขเป็นจรงิ จะทำคำสง่ั var1 = 0xFF และออกจากคำส่ัง if ชุดน้ีข้ามไปทำคำสงั่ ต่อไป

แตถ่ ้าเง่ือนไขเป็นเท็จ (sw ไม่เท่ากบั 1) จะไปทำคำสงั่ หลัง else คอื คำส่ัง var1 = 0x00 และออกจากคำสั่ง if

ไปทำคำสงั่ ตอ่ ไป

ตวั อย่าง

if (sw==1) // ถา้ sw เท่ากับ 1 (เงื่อนไขเป็นจรงิ )

{ var1 = 0xFF; // ให้ var1 มีคา่ 0xFF

var2 = 0x00; // ให้ var2 มคี ่า 0x00

}

else // ถา้ sw ไม่เทา่ กับ 1 (เง่ือนไขเป็นเท็จ)

{ var1 = 0x00; // ให้ var1 มคี า่ 0x00

var2 = 0xFF; // ให้ var2 มคี า่ 0xFF

}

42 การเขียนโปรแกรมภาษาซี

จากตวั อยา่ งจะตรวจสอบเงื่อนไขโดยตรวจสอบค่าในตวั แปร sw มีค่าเท่ากับ 1 หรอื ไม่ ถา้ sw มคี า่
เท่ากบั 1 แสดงว่าเงือ่ นไขเป็นจรงิ จะทำคำสงั่ var1 = 0xFF และคำส่ัง var2 = 0x00 และออกจากคำสงั่ if
ชุดนเ้ี พือ่ ข้ามไปทำคำสง่ั ต่อไป แตถ่ ้าเงื่อนไขเปน็ เท็จ (sw ไมเ่ ทา่ กับ 1) จะไปทำคำสง่ั หลัง else คอื คำสง่ั var1
= 0x00 และคำสัง่ var2 = 0xFF และออกจากคำส่งั if ทำคำส่งั ต่อไป

3.2.3 คำสัง่ if-else-if
คำสัง่ if-else-if เปน็ คำสั่งเลือกทำแบบหลายทางเลอื ก ใชใ้ นกรณีต้องการตรวจสอบเงอื่ นไขมากกวา่ 2

เงอื่ นไข โปรแกรมจะทำการตรวจสอบทลี ะเง่ือนไข โดยเร่ิมจากเงื่อนไขท่ี 1 ก่อน ถ้าเป็นจรงิ จะทำตามคำส่ัง
เม่ือเงื่อนไขท่ี 1 เปน็ จรงิ เม่ือทำเสร็จจะกระโดดออกจากคำสัง่ if ชุดนี้เพื่อทำคำสง่ั ถดั ไป แต่ถ้าเงื่อนไขที่ 1
เป็นเทจ็ โปรแกรมจะตรวจสอบเงื่อนไขที่ 2 ต่อไปวา่ เงอื่ นไขเปน็ จรงิ หรือไม่ ถา้ เป็นจรงิ จะทำงานตามคำสงั่ เมื่อ
เงอื่ นไขที่ 2 เป็นจริง ถ้าเปน็ เทจ็ จะตรวจสอบเง่ือนไขถัดไปเรือ่ ยๆ เมอ่ื ถงึ เง่ือนไขสุดทา้ ยแลว้ ยงั เปน็ เท็จจะ
กระโดดไปทำคำสั่งเม่ือเงื่อนไขทงั้ หมดเปน็ เท็จหลงั คำส่ัง else อันสุดท้าย และจบการทำงาน ลักษณะการ
ทำงานของคำสัง่ if-else-if แสดงดังรูปท่ี 3.6 รปู แบบของคำส่งั เป็นดงั น้ี

รูปแบบ
if (เงอื่ นไขที่ 1)
{
คำส่งั เมือ่ เงื่อนไขท่ี 1 เป็นจริง;
}
else if (เงอ่ื นไขที่ 2)
{
คำสงั่ เม่ือเงอ่ื นไขที่ 2 เป็นจรงิ ;

}

else if (เง่ือนไขท่ี 3)
{

คำส่ังเม่ือเงื่อนไขท่ี 3 เปน็ จริง;

}

else
{

คำส่งั เม่ือเงอ่ื นไขท้งั หมดเปน็ เทจ็ ;
}

การเขยี นโปรแกรมภาษาซี 43

รูปท่ี 3.6 ผงั งานของคำสั่ง if-else-if

ตวั อย่าง // ถา้ sw เทา่ กบั 1 (เงือ่ นไขที่ 1 เป็นจริง)
if (sw==1) { // ให้ var1 มคี ่า 0xFF
var1 = 0xFF; // ให้ var2 มคี า่ 0x00
var2 = 0x00; // ถา้ sw เท่ากับ 2 (เงอ่ื นไขท่ี 2 เปน็ จริง)
} else if (sw==2) { // ให้ var1 มคี ่า 0x00
var1 = 0x00; // ให้ var2 มคี า่ 0xFF
var2 = 0xFF; // เงือ่ นไขทัง้ หมดเปน็ เทจ็
} else { // ให้ var1 มีค่า 0x00
var1 = 0x00; // ให้ var2 มีคา่ 0x00
var2 = 0x00;
}

จากตัวอยา่ งจะตรวจสอบเงื่อนไขท่ี 1 โดยตรวจสอบค่าในตัวแปร sw มีคา่ เท่ากับ 1 หรือไม่ ถ้า sw มี
ค่าเทา่ กบั 1 แสดงว่าเงื่อนไขท่ี 1 เปน็ จรงิ จะทำคำส่ัง var1 = 0xFF และคำสงั่ var2 = 0x00 เม่ือทำเสรจ็ จะ
ออกจากคำสัง่ if ชุดนเ้ี พ่อื ข้ามไปทำคำสง่ั ต่อไป แตถ่ ้าเง่ือนไขท่ี 1 เปน็ เทจ็ (sw ไมเ่ ท่ากับ 1) จะไปตรวจสอบ
เงื่อนไขที่ 2 ถ้า sw มีค่าเท่ากับ 2 แสดงว่าเงื่อนไขที่ 2 เป็นจรงิ จะทำคำสงั่ var1 = 0x00 และคำสงั่ var2 =
0xFF เมอ่ื ทำเสร็จจะออกจากคำสั่ง if ชุดน้เี พื่อข้ามไปทำคำสงั่ ตอ่ ไป แต่ถา้ เงื่อนไขท่ี 2 เป็นเทจ็ จะไปทำคำสงั่

44 การเขียนโปรแกรมภาษาซี

หลัง else คอื คำสง่ั var1 = 0x00 และคำสง่ั var2 = 0x00 เม่ือทำเสรจ็ จะออกจากคำสั่ง if ชุดนเี้ พือ่ ทำ
คำสั่งต่อไป

3.2.4 คำสงั่ switch-case
คำสงั่ switch-case เป็นคำส่งั เลือกทำแบบหลายทางเลือก เหมาะสำหรบั โปรแกรมท่มี ีเงอ่ื นไขหลาย

เง่ือนไขขึน้ กับตัวแปรตวั เดยี ว แต่คำสัง่ switch-case ตา่ งจากคำสง่ั if–else-if ทีก่ ารกำหนดเงือ่ นไขในการ
ตรวจสอบต้องเปน็ ข้อมูลชนดิ จำนวนเตม็ หรือตัวอักขระเทา่ นั้น เช่น char, short int เปน็ ต้น ในการทำงาน
คำส่งั switch-case จะทำการเปรียบเทยี บคา่ ของตวั แปร switch ที่อยภู่ ายในเครอ่ื งหมายวงเล็บ ( ) กบั
คา่ คงทห่ี รืออกั ขระหลงั case ตา่ งๆ ว่ามคี ่าตรงกับค่าใน case ใด ซง่ึ ถา้ ตรงกับ case ใดก็จะทำคำส่ังภายใน
case นนั้ และออกจากการทำงานของคำส่งั switch เมื่อพบคำส่ัง break และหากไมต่ รงกบั case ใดเลยจะมา
ทำคำสง่ั ภายใน default ก่อน เมอื่ ทำเสรจ็ ก็จะออกจากการทำงานของคำส่งั switch ทนั ที หากไมต่ อ้ งการให้
ทำคำส่ังใดๆ เมือ่ คา่ ทเ่ี ปรียบเทยี บไมต่ รงกบั case ใดๆ เลย ให้ตัดสว่ นของ default ออกได้ ลกั ษณะการ
ทำงานของคำส่งั switch-case แสดงดงั รูปที่ 3.7 รูปแบบของคำส่งั เป็นดงั น้ี

รูปแบบ
switch (ตวั แปรหรือเงื่อนไข)
{
case คา่ กรณที ่ี 1 :
คำส่ังกรณีที่ 1;
break ;
case ค่ากรณที ่ี 2 :
คำส่ังกรณีที่ 2;
break ;
case ค่ากรณีท่ี 3 :
คำสง่ั กรณีท่ี 3;
break ;
case ค่ากรณีที่ n :
คำสั่งกรณที ี่ n;
break ;
default :
คำส่งั ท่ไี ม่เข้ากรณีใด;
}

การเขียนโปรแกรมภาษาซี 45

1 1
2 2
3 3
default

รปู ท่ี 3.7 ผังงานของคำส่ัง switch-case

ตวั อยา่ ง
switch (sw)
{
case 1 : var1 = 0xFF;
break ;
case 2 : var2 = 0xFF;
break ;
case 3 : var3 = 0xFF;
break ;
default : var1 = 0x00;
var2 = 0x00;
var3 = 0x00;
}

46 การเขยี นโปรแกรมภาษาซี

จากตวั อย่างจะทำการเปรียบคา่ ของตวั แปร sw วา่ ตรงกบั case ใด ถา้ ค่าในตัวแปร sw ตรงกับ case
1 โปรแกรมจะทำคำสง่ั var1 = 0xFF จากนัน้ ทำคำสง่ั break เพ่ือออกจากชดุ คำส่งั switch ในกรณที ี่คา่ ในตวั
แปร sw ตรงกบั case 2 โปรแกรมจะทำคำสั่ง var2 = 0xFF จากน้ันทำคำสง่ั break เพอ่ื ออกจากชุดคำสง่ั
switch ในกรณีที่ค่าในตวั แปร sw ตรงกับ case 3 โปรแกรมจะทำคำสั่ง var3 = 0xFF จากน้นั ทำคำส่งั
break เพ่อื ออกจากชดุ คำสั่ง switch และในกรณีท่คี า่ ในตัวแปรไม่ตรงกับ case ใดๆ โปรแกรมจะไปทำคำสง่ั
ใน default คือ var1 = 0x00 จากนัน้ ให้ var2 = 0x00 และ var3 = 0x00 และออกจากชดุ คำส่งั switch ไป
ทำคำส่ังต่อไป

3.3 คำสง่ั การทำซำ้

โดยปกตโิ ปรแกรมจะทำงานตามคำสงั่ ทเี่ รยี งตามลำดบั กันไปต้งั แต่คำส่งั แรกจนถึงคำส่งั สุดทา้ ย แตใ่ น
บางครัง้ ต้องการให้ทำชุดคำสั่งใดชุดคำสัง่ หนง่ึ ซำ้ ๆ สามารถทำไดโ้ ดยใชค้ ำส่ังควบคุมให้ทำงานซ้ำ ในภาษาซีมี
คำส่งั สำหรบั การทำซำ้ หรอื เรียกว่าคำสั่งลูป (Loop) เปน็ คำส่ังท่ีใช้เขียนโปรแกรมให้ทำชดุ คำสง่ั เดมิ ซำ้ ๆ จน
ครบตามจำนวนรอบท่กี ำหนดหรอื ตามเง่ือนไขที่กำหนด คำสงั่ การทำซ้ำมอี ยดู่ ว้ ยกนั 3 รูปแบบ ไดแ้ ก่ คำส่งั
for, คำสั่ง while และคำสงั่ do–while
3.3.1 คำส่ัง for

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

รปู แบบ
for (กำหนดคา่ เร่ิมตน้ ตัวแปร ; เง่อื นไข ; คำสั่งปรบั ค่าตัวแปรเพ่ิมหรือลด)
{
คำสง่ั ที่ต้องการให้ทำซ้ำ ;
}
จากรปู แบบของคำสั่ง for จะมสี ว่ นควบคุมอยู่ 3 สว่ น สว่ นแรกเป็นส่วนกำหนดค่าเร่ิมตน้ ตัวแปร ส่วน

ท่ี 2 กำหนดเง่อื นไข และส่วนสดุ ท้ายเป็นคำสง่ั ปรบั คา่ ตวั แปรเพมิ่ หรือลด ในแต่ละสว่ นจะคั่นด้วยเคร่ืองหมาย ;
ตัวอย่าง

for (m=1; m <=5; m++)
{

printf(“Microcontroller\n”) ;
}

การเขียนโปรแกรมภาษาซี 47

จากตัวอย่างโปรแกรมจะกำหนดคา่ ตัวแปร m = 1 กำหนดเงือ่ นไขของการทำซ้ำ m <= 5 และ
กำหนดใหเ้ พ่ิมค่าตัวแปร m ทลี ะ 1 ค่าจากคำสัง่ ปรบั คา่ ตวั แปร m++ ในการทำงานรอบแรก m จะมีค่า
เท่ากับ 1 เมื่อคำสงั่ for ตรวจสอบเงอื่ นไข m ซึง่ มีค่าน้อยกวา่ หรือเท่ากบั 5 จึงทำงานตามคำสงั่ ทใ่ี หท้ ำซ้ำ
printf(“Microcontroller/n”); เสร็จแล้วก็เพ่ิมคา่ ตัวแปร m ขึน้ 1 ค่า จากนั้นโปรแกรมจะวนกลบั ไป
ตรวจสอบเงอื่ นไขของ m วา่ ยังมีค่าน้อยกวา่ หรอื เท่ากับ 5 หรือไม่ ถา้ คา่ m ยงั นอ้ ยกวา่ 5 กจ็ ะทำคำส่ังทใี่ ห้
ทำซำ้ อีก แลว้ กเ็ พิม่ ค่าตวั แปร m ข้ึนอีก 1 ค่า โปรแกรมก็จะวนกลับไปตรวจสอบเง่อื นไขอีก จะทำเชน่ นจี้ นตวั
แปร m มีค่าเท่ากบั 6 จึงหยุดการทำงาน เนอ่ื งจากเม่ือตรวจสอบเงื่อนไขแลว้ m มคี ่ามากกวา่ 5 ทำให้เง่ือนไข
เป็นเท็จ คำสัง่ for จึงหยุดทำงาน

รปู ที่ 3.8 ผังงานของคำสั่ง for

3.3.2 คำส่งั while
คำส่ัง while เป็นคำสั่งทำซ้ำท่ีจะทำการตรวจสอบเงื่อนไขก่อน หากเง่ือนไขเป็นจริงจะทำซ้ำ และ

ทำซ้ำต่อไปจนกระท่ังเง่ือนไขท่ีกำหนดไว้เป็นเท็จจึงหยุดทำงาน การทำซ้ำแบบนี้จำนวนครั้งที่ทำซ้ำจะไม่
แน่นอนข้นึ กบั เง่ือนไข ลักษณะการทำงานของคำส่ัง while แสดงดังรูปท่ี 3.9 รูปแบบของคำสัง่ เป็นดังน้ี

รูปแบบ
while ( เงอ่ื นไข)
{
คำส่งั ที่ต้องการใหท้ ำซำ้ ;
}

48 การเขียนโปรแกรมภาษาซี

รูปที่ 3.9 ผงั งานของคำส่ัง while

จากผังงานของคำสัง่ while จะเหน็ ได้วา่ ในการทำซำ้ โดยใช้คำสั่ง while จะไมม่ ตี วั แปรสำหรับนับ
รอบ ถา้ หากตอ้ งการนบั รอบจะต้องสร้างตัวแปรขึน้ มาเอง และกำหนดการเพิ่มค่าหรือลดค่าเอง

ตวั อย่าง
while ( k > 0 )
{
printf(“Arduino UNO R3/n”);
}

จากตวั อย่างโปรแกรมจะทำการตรวจสอบเงื่อนไขว่าตวั แปร k มคี า่ มากกว่า 0 หรือไม่ ถ้ามคี า่ มากกวา่
เง่ือนไขจะเปน็ จริงจะทำงานตามคำสง่ั ที่ให้ทำซำ้ printf(“Arduino UNO R3/n”); เสรจ็ แล้วกจ็ ะวนกลบั ไป
ตรวจสอบเง่อื นไขของ k ว่ายงั มากกวา่ 0 หรือไม่ ถ้ามากกว่าก็จะทำคำสั่งที่ให้ทำซำ้ และวนกลับไปตรวจสอบ
เงื่อนไขอีกจะทำเชน่ นจ้ี นตัวแปร k มคี ่าเท่ากบั 0 เงอ่ื นไขเปน็ เท็จ คำสั่ง while จงึ หยดุ ทำงาน จากโปรแกรม
ในตัวอย่างจะเห็นได้ว่าไม่มีคำสงั่ ในการเพิ่มค่าหรือลดคา่ จะทำให้โปรแกรมน้ีทำงานซำ้ ตลอดเวลาหรือทำซำ้ ไมร่ ู้
จบ ในการใช้คำส่ัง while ผู้เขียนโปรแกรมจะต้องกำหนดตวั แปรในการนับรอบและเขียนคำสง่ั เพ่ิมค่าหรือลด
คา่ ในโปรแกรมเองจงึ จะทำงานไดส้ มบูรณ์ สามารถเพิ่มเติมโปรแกรมไดด้ ังนี้

ตัวอยา่ ง

k = 10 ; // กำหนดคา่ เริ่มตน้ ให้กบั ตวั แปรนับรอบ

while ( k > 0 )

{

printf (“Arduino UNO R3/n”);

k-- ; // ลดคา่ ตวั แปรนบั รอบทลี ะ 1 คา่

}

การเขยี นโปรแกรมภาษาซี 49

3.3.3 คำสัง่ do-while
คำส่ัง do-while เป็นคำสงั่ ทำซำ้ ที่คล้ายกบั คำสง่ั while ต่างกนั ที่คำสัง่ do-while จะทำคำสงั่ ที่ให้

ทำซ้ำก่อนอย่างนอ้ ย 1 ครั้ง แล้วจงึ ทำการตรวจสอบเง่ือนไข หากเงื่อนไขเปน็ จรงิ จะทำซำ้ และทำซ้ำต่อไป
จนกระทง่ั เง่อื นไขทกี่ ำหนดไวเ้ ปน็ เท็จจงึ หยดุ ทำงาน ลกั ษณะการทำงานของคำสง่ั do-while แสดงดงั รปู ท่ี
3.10 รปู แบบของคำสั่งเป็นดังนี้

รูปแบบ
do
{
คำสงั่ ทีต่ ้องการให้ทำซำ้ ;
} while ( เงือ่ นไข);

รปู ท่ี 3.10 ผังงานของคำสัง่ do-while

ตัวอยา่ ง
do
{
printf (“Microcontroller is Easy/n”);
} while ( p > 0 );

จากตัวอย่างโปรแกรมจะทำคำสั่งท่ใี ห้ทำซำ้ printf(“Microcontroller is Easy/n”); จากน้ันจะทำ
การตรวจสอบเง่ือนไขวา่ ตัวแปร p มคี ่ามากกว่า 0 หรอื ไม่ ถ้ามีค่ามากกวา่ เง่อื นไขจะเปน็ จริงจะวนกลับไป
ทำงานตามคำสง่ั ที่ให้ทำซำ้ และจะตรวจสอบเง่ือนไขของ p วา่ ยังมากกวา่ 0 หรือไม่ ถ้ามากกว่ากจ็ ะวนกลับไป
ทำคำสัง่ ที่ให้ทำซ้ำ และตรวจสอบเง่อื นไขอกี จะทำเชน่ นจี้ นตัวแปร p มคี า่ เท่ากบั 0 เงื่อนไขเปน็ เทจ็ คำสง่ั do-
while จึงหยดุ ทำงาน จากโปรแกรมในตัวอย่างจะเห็นได้วา่ ไมม่ ีคำส่งั ในการเพิม่ ค่าหรอื ลดค่าตวั แปรนับรอบ
จะทำใหโ้ ปรแกรมนท้ี ำงานซำ้ ตลอดเวลา ในการใชค้ ำสั่ง do-while ผเู้ ขียนโปรแกรมจะตอ้ งกำหนดตวั แปรใน

50 การเขียนโปรแกรมภาษาซี

การนับรอบและเขียนคำส่งั เพิ่มคา่ หรอื ลดค่าในโปรแกรมขนึ้ เอง จงึ จะทำงานได้ถูกต้อง สามารถเพิ่มเติม
โปรแกรมไดด้ ังน้ี

ตวั อย่าง

p=9; // กำหนดคา่ เรม่ิ ตน้ ใหก้ บั ตวั แปรนบั รอบ

do

{

print f (“Microcontroller is Easy/n”);

p-- ; //ลดค่าตัวแปรนบั รอบทีละ 1 ค่า

} while ( p > 0 )

สรุป
ในบทน้ีได้กล่าวถึงการเขียนผังงาน ประโยชน์ของการเขียนผงั งาน รปู แบบของผังงาน สญั ลักษณ์ใน

การเขยี นผังงาน โดยทัว่ ไปการเขยี นผงั งานจะแบง่ ออกเป็นลกั ษณะตามโครงสรา้ งของผังงานได้ 3 แบบ คือ
โครงสรา้ งแบบลำดับ โครงสร้างแบบมตี ัวเลือกและโครงสร้างแบบทำซ้ำ อกี ทัง้ ยังได้อธบิ ายถงึ ลกั ษณะรูบแบบ
การเขยี นโปรแกรมภาษาซใี นคำสั่งการเลือกทำตามเง่ือนไข ไดแ้ ก่ คำสั่ง if, if-else, if-else-if และ switch-
case ตามลำดับ และคำสั่งทำซำ้ ไดแ้ ก่ คำส่งั for, while และ do-while ตามลำดับ ซง่ึ ในการเขียน
โปรแกรมผู้เขยี นโปรแกรมจะต้องนำลกั ษณะโครงสรา้ งดังกล่าวไปปรบั ใช้กับการเขยี นโปรแกรมตามความ
เหมาะสม

การเขยี นโปรแกรมภาษาซี 51

แบบฝึกหัด

1) ผังงาน คือ อะไร มีประโยชน์อย่างไร
2) สัญลักษณ์ทสี่ ำคญั ของการเขียนผงั งานมีอะไรบ้าง
3) ลกั ษณะโครงสร้างผงั งานมีกีแ่ บบ อะไรบ้าง
4) คำสั่งการทำซำ้ มีอะไรบ้าง
5) คำสั่งเลอื กทำตามเง่ือนไขมีอะไรบา้ ง
6) คำสง่ั if มีการทำงานอย่างไร
7) คำสง่ั if และคำสัง่ if-else แตกต่างกันอย่างไร
8) คำสั่ง switch-case มีการทำงานอย่างไร
9) คำสง่ั break และ default คอื อะไร
10) คำสัง่ for มีการทำงานอย่างไร
11) คำส่งั while และคำสั่ง do-while มีการทำงานอย่างไร และทัง้ สองคำสงั่ แตกตา่ งกันอยา่ งไร
12) จากคำส่ังต่อไปน้ี จะทำซ้ำจำนวนก่ีรอบ

12.1)
int a=0;
while(a<15)
{
printf(“C language/n”);
a++;
}

12.2)
for(z=10; z<=0;z--)
{
printf(“C language/n”);
}

12.3)
for(z=0; z>=100;z++)
{
printf(“C language/n”);
z++;
}

52 การเขียนโปรแกรมภาษาซี

13) จงเขยี นความหมายจากสัญลักษณห์ รือวาดรปู ทต่ี รงกับความหมายต่อไปน้ี

สญั ลกั ษณ์ ความหมาย

ใช้แสดงคำสั่งในการประมวลผล/การกำหนดคา่ ขอ้ มลู ให้กับตวั แปร

การรับหรอื แสดงขอ้ มูลโดยไม่ระบุอปุ กรณ์

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


Click to View FlipBook Version