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 กฤติพงศ์ แบขุนทด, 2019-12-03 06:28:36

หนังสือ

หนังสือ

1. กาหนดรูปแบบการแสดงผล เช่น แสดงผลลัพธ์เป็นภาพกราฟฟิกส์ทางจอภาพ
หรอื พมิ พข์ อ้ มูลออกทางเครื่องพิมพ์ เป็นต้น

2. ตรวจสอบข้อผดิ พลาดและความถูกต้องของผลลัพธ์ เช่น ตรวจสอบข้อผิดพลาด
จากการคานวณ ตรวจสอบผลลัพธ์ว่าถกู ต้องตรงตามทต่ี ้องการหรอื ไม่

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

• วิธีการเก็บขอ้ มูลและเรยี กใช้ตัวแปร เช่นการประกาศตัวแปรอาเรยใ์ ห้สามารถเก็บ
ข้อมูลได้หลายตัว หรือเก็บขอ้ มลู เปน็ คลาส หรอื ตามโครงสรา้ งข้อมูลแบบต่างๆ เปน็ ตน้

5.2 การออกแบบโปรแกรม (Program Design) ประกอบด้วยวธิ กี ารดงั น้ี คอื
5.2.1 การออกแบบโปรแกรมโดยใช้ ข้ันตอนวิธี (Algorithm) เป็นการอธิบายถึงลาดับ

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

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

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

5.3 การเขยี นโปรแกรม (Program Coding)
เป็นขั้นตอนสาคัญหลังจากได้ผ่านการออกแบบโปรแกรมแล้ว โดยการนาแนวคิดจาก

ข้ันตอนวิธี หรือผังงานมาแปลงให้อยู่ในรูปคาสั่งคอมพิวเตอร์ โดยอาศัยความรู้และทักษะการเขียน
โปรแกรมและใช้ภาษาคอมพิวเตอรร์ วมท้ังเคร่ืองมอื ช่วยในการเขียนโปรแกรมต่างๆ เพ่ือใหเ้ กดิ ผลลพั ธ์

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

5.4 การทดสอบและแกไ้ ขโปรแกรม ( program testing & verification)
การทดสอบและแก้ไขโปรแกรม เปน็ ขัน้ ตอนการตรวจสอบโปรแกรมทเ่ี ขยี นได้ วา่

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

5.4.1 Syntax Error ความผิดพลาดทีเ่ กิดจากการใช้คาสัง่ ผดิ รปู แบบที่ภาษานัน้
กาหนด เช่น การลมื ประกาศตัวแปร การเขียนคาส่ังผิอด เช่น คาสงั่ while( ) เป็น WHILE( )

5.4.2 Logic Error ความผดิ พลาดทเี่ กิดจากการทีโ่ ปรแกรมทางานผิดไปจากขน้ั ตอน
ท่ีควรจะเปน็ เชน่ การตรวจสอบเงื่อนไขผดิ ไมต่ รงตามวัตถุประสงค์ คานวณคา่ ได้คาตอบไม่ถูกต้อง
หรอื ทางานผดิ ลาดบั ขนั้ ตอน เปน็ ตน้

5.4.3 System Design Error ความผดิ พลาดทีเ่ กดิ จากการที่โปรแกรมทางานได้ไม่
ตรงตามความตอ้ งการของลกู ค้า

ข้นั ตอนการทดสอบและแก้ไขโปรแกรม
1. Desk-Checking ผูเ้ ขยี นโปรแกรมตรวจสอบโปรแกรมด้วยตนเอง ถา้ ให้ผอู้ น่ื ชว่ ย

ดจู ะเรยี กว่า Structured-Walkthrough
2. Translating ตรวจสอบรูปแบบคาส่ังต่างๆทีใ่ ชใ้ นโปรแกรมโดยตัวแปลภาษา

( Translator) เป็นผูต้ รวจ
3. Debugging เป็นการทดลองใชโ้ ปรแกรมจริง เพอ่ื คน้ หาข้อบกพร่อง เช่น ผลลพั ธ์

ทไี่ มต่ รงตามความตอ้ งการ ซึง่ อาจมีสาเหตจุ าก Logic Errors และถ้าได้ทดสอบกับผูใ้ ช้จริงก็จะ
สามารถตรวจสอบ System Design Errors ได้

5.5. การจดั ทาเอกสารและคู่มอื การใชง้ าน (program documentation)
การจัดทาเอกสารและคู่มือการใช้งานจัดทาเอกสารต่างๆ ท่ีเก่ียวข้องกับระบบหรือการเขียน
โปรแกรม ไดแ้ ก่

1. คมู่ ือสาหรบั ผู้ใช้โปรแกรม (user's manual or user's guide) คือเอกสารที่
อธิบายวิธกี ารใช้ระบบหรือโปรแกรม เรียกว่า user manual ใช้สาหรับผ้ใู ช้งานโปรแกรม แนะนา
วธิ ีการใช้งานโปรแกรม แนะนาคณุ สมบตั ิ และองค์ประกอบของโปรแกรมตา่ งๆ วิธกี ารตดิ ตงั้ โปรแกรม
สามารถทาควบคไู่ ปกบั การเขียนโปรแกรม อาจทาเปน็ ค่มู ือเอกสารที่อยู่ในรูปแบบโปรแกรมออนไลนก์ ็
ได้ (online manual)

2. คู่มือสาหรับผเู้ ขียนโปรแกรม (programmer's manual or programmer's
guide) เปน็ คู่มอื ทจี่ ัดทาขน้ึ เพอ่ื ใหผ้ ู้พฒั นาโปรแกรม รวมทงั้ เทคนิคพิเศษต่างๆ ของโปรแกรม เพ่ือให้
สะดวกตอ่ การปรบั ปรุงแก้ไขโปรแกรมที่มีอยู่เดิม โดยท่วั ไปจะเป็นเอกสารแสดงการวิเคราะห์ และ
ออกแบบระบบ เรียกว่า system manual ใชส้ าหรบั ผูพ้ ฒั นาระบบหรือโปรแกรม เท่านั้น

5.6 การใชง้ านจริง (Program Implement)
การใช้งานจริง เป็นขั้นตอนสาคัญหลังจากทาการทดสอบและแก้ไขโปรแกรมให้มี

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

5.7 การปรับปรงุ และพัฒนาโปรแกรม (Program Maintenance)
การเขียนโปรแกรมที่ดีต้องมีข้ันตอนการปรับปรุงและพัฒนาโปรแกรมให้มีความ

ถูกต้อง ทันสมัย และตรงกับความต้องการของผู้ใช้มากท่ีสุด โดยทั่วไปโปรแกรมที่ใช้งานจะ
ประกอบด้วยหลายๆรุ่น เช่นรุ่นทดสอบ (Beta Version) และ รุ่นท่ีใช้งานจริง (Release Version)
และต้องมีการปรับเปลี่ยนโปรแกรมให้ดีข้ึน ดังตัวอย่างเช่นโปรแกรมเวอร์ชัน 1 มีการเพ่ิมเติม
ปรับปรุง แก้ไขโปรแกรมเป็นเวอร์ชัน 1.2 เป็นต้นการพัฒนาโปรแกรมให้ดีข้ึนมีประโยชน์ต่อผู้ใช้งาน
และผเู้ ขียนโปรแกรมต้องอาศัยค่มู ือการใช้งาน และเอกสารประกอบของโปรแกรม เพือ่ เปน็ แนวทางใน
การแก้ไข และใหผ้ ู้อื่นๆสามารถพฒั นาต่อได้

สรปุ

เนื้อหาหลักการเขียนโปรแกรมคอมพิวเตอร์ ประกอบด้วย องค์ประกอบของระบบ
คอมพิวเตอร์ซ่ึงกล่าวถึงโครงสร้างพ้ืนฐานของคอมพิวเตอร์ ได้แก่ หน่วยประมวลผล หน่วยรับข้อมูล
หน่วยแสดงผลข้อมูล หน่วยความจา หน่วยความคุม ซอฟท์แวร์ ภาษาคอมพิวเตอร์ ได้แก่
ภาษาเคร่ือง ภาษาระดับต่า ภาษาระดับสูง ภาษาระดับสูงมาก และภาษาธรรมชาติ การทางานของ
โปรแกรมแปลภาษา ได้แก่ คอมไพเลอร์ และอินเตอร์พรีตเตอร์ ขั้นตอนการเขียนโปรแกรม
คอมพิวเตอร์ ได้แก่ การวิเคราะห์งาน การเขียนผังงานโปรแกรม การเขียนโปรแกรม การทดสอบ
และแก้ไขและการจัดทาเอกสารประกอบ และข้ันตอนการเขียนโปรแกรมคอมพิวเตอร์ ในการเขียน
โปรแกรมเพ่ือแก้ปัญหาต่างๆจาเป็นต้องมีการวางแผน และออกแบบโปรแกรมไว้ลว่ งหน้า โดยกาหนด
ข้นั ตอนวิธีการทางานให้ชัดเจน ซึ่งกระบวนการวิเคราะห์ และออกแบบโปรแกรมเรียกว่า วัฏจักรการ
พัฒนาระบบงาน System Development Lift Cycle ( SDLC) ซ่ึงมีกระบวนการทางานเริ่มต้นจาก
การวิเคราะหป์ ญั หาไปจนถงึ การนาโปรแกรมไปใช้งาน และปรับปรุงพัฒนาระบบใหด้ ีขึ้น

แบบฝกึ หัด

1. ใหประกาศตวั แปรเพ่ือใชเก็บขอมูลตางๆ ตอไปนี้
(ก) เลขจานวนเตม็ 5 จานวน เกบ็ คาตวั เลขไมเกนิ 100,000
(ข) ความสงู มหี นวยเปนเซนตเิ มตร
(ค) นามสกลุ ความยาวไมเกิน 30 ตวั อกั ษร
(ง) เลขทบ่ี ัตรประจ าตัวประชาชนเปนตวั เลข 13 หลกั
(จ) จานวนพนักงานในบริษัทแหงหนึง่ มีพนักงานไมเกนิ 500 คน
(ฉ) คะแนนสอบของนกั ศึกษาในกระบวนวชิ าหน่ึง มคี าไมเกิน 100 คะแนน
(ช) เงินเดอื นทพ่ี นักงานบรษิ ัทแหงหนงึ่ ไดรบั

2. ให้วเิ คราะห์งานการเขียนโปรแกรมเพื่อคานวณหาพื้นที่ของวงกลม
3. ใหเขยี นโปรแกรม 2 โปรแกรมเพ่ือแสดงขอความตอไปน้ีออกทางจอภาพ

I love

C programming

very much.

โดยที่
(ก) เขียนโปรแกรมท่ี 1 โดยในฟงกชนั main( ) ประกอบดวยฟงกชนั printf( ) 3 คาส่งั
(ข) เขยี นโปรแกรมที่ 2 โดยใชฟงกชนั main( ) ประกอบดวยฟงกชนั printf( ) 1 คาส่ัง

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

Enter name : Somchai

Enter height (cm.) : 178
Output :

Name Height (cm.)

Somchai 178
5. เขียนข้นั ตอนการวเิ คราะห์งานของโปรแกรมรับขอมลู เลขจานวนจริงแบบ float 3 จานวน และ
แสดงผลลัพธเลขทง้ั 3 จานวนดังนี้

Enter number 1 : 5243.2
Enter number 2 : 13
Enter number 3 : 12.3548
Output :

5243.20

13.00
12.35

6. ใหแสดงผลลพั ธของการทางานโปรแกรมตอไปน้ี
# include <stdio.h>
void main() {
char newline = '\n', tab = '\t'; int n=10;
float number=95.55;
char name[15]="Computer";
printf("Start Program");
printf("%c",newline);
printf("%cMy first Program",tab);
printf("\nDear %13.11s\n", "Dad and Mama");
printf("\n\tWonderful"); printf("\tI will get %x for this course!", n);
printf("100%%\n"); printf("\n\t%1.1f is my score", number);
printf("\t"); printf("\t\t\nLove you %d %%", n*10);
printf("\n%-8.6s -Ja", name);
}

เอกสารอ้างองิ

ไกรศร ต้ังโอภากลุ และกติ นิ นั ท์ พลสวัสด์ิ. (2556). คูม่ ือเรียนเขยี นโปรแกรมภาษา C ฉบบั
สมบูรณ์ พิมพ์คร้ังที่ 1 . นนทบรุ ี : ไอดีซีฯ.

ไกรศร ตง้ั โอภากลุ . (2554). คมู่ ือเรยี นเขยี นโปรแกรมภาษา C. พิมพค์ ร้งั ที่ 1. นนทบุรี: บรษิ ัทไอซีดี
พรเี มียรจ์ ากัด.

ธรี วัฒน์ ประกอบผล. คมู่ ือการเขยี นโปรแกรมภาษา C ฉบบั สมบูรณ.์ พิมพ์คร้ังที่ 1. กรงุ เทพฯ:
สานักพิมพ์ ซิมพลฟิ าย. 2556.

ฝา่ ยตาราทางวิชาการคอมพวิ เตอร.์ (2556). ค่มู อื เรยี นคอมพวิ เตอร์และการบารงุ รกั ษา กรงุ เทพฯ:
บรษิ ัท ซเี อ็ดยูเคช่นั จากดั (มหาชน).

ฝา่ ยตาราทางวชิ าการคอมพวิ เตอร์. (2555). คมู่ อื เรยี นตอมพิวเตอร์ภาษาC. กรุงเทพฯ:บริษัท ซีเอด็
ยเู คช่ัน จากัด(มหาชน).

วจิ ักษ์ ศรสี ัจจะเลศิ วาจา, ดษุ ฎี ประเสรฐิ ธติ ิพงษ์. (2545). การเขยี นโปรแกรมภาษาซ.ี ภาควิชา
วทิ ยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่.

โอภาส เอี่ยมสิริวงศ์. (2552) . การเขยี นโปรแกรมดว้ ยภาษา C (Programming with C).
กรุงเทพฯ: ซีเอ็ดยูเคชัน่ .

http:// app.emaze.com สบื คน้ วนั ที่ 2 กมุ ภาพนั ธ์ พ.ศ. 2557
https:// www.bankersguru.org สบื คน้ วันท่ี 7 มีนาคม พ.ศ. 2557
http:// www.radompon.com สืบค้นวนั ที่ 3 มีนาคม พ.ศ. 2557
http:// www.hitechreview.com สืบคน้ วันที่ 17 เมษายน พ.ศ. 2557

การเขียนโปรแกรมคอมพวิ เตอร์:35

แผนบริหารการสอนประจาบทที่ 2

รายวชิ า การเขยี นโปรแกรมคอมพิวเตอร์
Computer Programming

หัวข้อเนอ้ื หา

2.1 โครงสร้างแบบลาดับ
2.2 โครงสร้างแบบเงือ่ นไข
2.3 โครงสรา้ งแบบวนซา

วตั ถปุ ระสงคเ์ ชิงพฤติกรรม

1. เพ่ือให้ผู้เรยี นมีความเข้าใจและเขียนโปรแกรมแบบลาดับได้
2. เพอ่ื ให้ผเู้ รยี นมีความเขา้ ใจและเขยี นโปรแกรมแบบทางเลอื กได้
3. เพ่ือใหผ้ ้เู รียนมีความเขา้ ใจและเขียนโปรแกรมแบบเงื่อนไขได้
4. เพ่อื ใหผ้ ู้เรยี นมีความเขา้ ใจและเขียนโปรแกรมแบบวนซาได้
5. เพอ่ื ใหผ้ ู้เรยี นสามารถเขยี นโปรแกรมแบบรวมโครงสร้างหลาย ๆ แบบได้

วธิ สี อนและกจิ กรรมการเรยี นการสอนประจาบท

1. บรรยายเนือหาในแตล่ ะหวั ขอ้ พร้อมยกตัวอย่างประกอบ
2. ศกึ ษาจากเอกสารประกอบการสอน
3. ผู้สอนสรปุ เนือหา
4. ทาแบบฝกึ หดั เพอ่ื ทบทวนบทเรียน
5. ผเู้ รยี นถามข้อสงสยั
6. ผสู้ อนทาการซักถาม

การเขยี นโปรแกรมคอมพวิ เตอร์:36

สื่อการเรยี นการสอน

1. เอกสารประกอบการสอนวิชาการโปรแกรมคอมพวิ เตอร์
2. ภาพเล่อื น (Slide)
3. บทความจากหนังสือ หรือเว็บไซต์ต่างๆ
4. เครอื่ งคอมพิวเตอร์

การวดั ผลและการประเมนิ

1. ประเมนิ จากการซกั ถามในชนั เรียน
2. ประเมินจากความรว่ มมือและความรบั ผิดชอบต่อการเรียน
3. ประเมนิ จากการทาแบบฝึกหดั ทบทวนท้ายบทเรยี น
4. ประเมนิ จากการฝึกปฏบิ ัติการเขียนโปรแกรม

การเขียนโปรแกรมคอมพวิ เตอร์:37

บทท่ี 2
โครงสรา้ งการควบคุมโปรแกรมคอมพิวเตอร์

กอ่ นเขยี นโปรแกรม ผูพ้ ัฒนาโปรแกรมจะต้องเลือกภาษาคอมพิวเตอร์ ท่จี ะนามาช่วยงานโดย
พิจารณาจากปจั จัยตา่ งๆ ในการทางาน เช่น ความถนัดของผู้พฒั นาโปรแกรม อปุ กรณ์การทางานของ
โปรแกรม ลักษณะของโปรแกรมภาษาที่ใชแ้ กป้ ญั หา สภาพแวดล้อมของระบบคอมพวิ เตอร์ เปน็ ตน้
เน่อื งจากในปจั จบุ ันมีภาษาคอมพวิ เตอรใ์ ห้เลือกใช้ไดห้ ลายภาษา เชน่ ภาษาซี หรือ C++ ภาษาจาวา
และภาษาอ่ืน ๆ อีกมากมาย ถงึ แมแ้ ตล่ ะภาษาจะมรี ปู แบบและหลักการในการสรา้ งงานทแ่ี ตกต่างกัน
แต่ทกุ ภาษาจะต้องมโี ครงสร้างควบคมุ หลกั ทงั 4 แบบ ไดแ้ ก่ โครงสร้างแบบลาดับ (sequential
structure) โครงสรา้ งแบบทางเลอื ก (selection structure) โครงสรา้ งแบบวนซา (repetition
structure) และโครงสร้างแบบกระโดด

2.1 โครงสร้างแบบลาดบั (sequential structure)

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

โครงสร้างแบบลาดับเมื่อเขยี นเปน็ ผงั งาน มกี ระบวนการทางานพนื ฐานอยู่ 3 ชนิด ได้แก่
1. การรบั ข้อมลู เข้า เปน็ กระบวนการรบั ข้อมลู จากอปุ กรณ์ของหนว่ ยรบั ข้อมลู เข้าเพ่ือนาค่า
ไปกาหนดใหก้ บั ตัวแปร และเก็บไว้ในหนว่ ยความจา
2. การประมวลผล เปน็ กระบวนการท่คี อมพิวเตอร์ทาการคานวณและประมวลผล ซ่งึ จะรวม
ไปถงึ การกาหนดค่าให้กบั ตัวแปร เพอ่ื ให้สามารถนาค่าของตัวแปรนนั มาใชใ้ นภายหลังได้
3. การส่งข้อมูลออก เป็นกระบวนการนาค่าของข้อมูลไปแสดงผลยังอุปกรณ์ของหน่วย
ส่งออก เชน่ จอภาพหรอื เครอื่ งพมิ พ์ ข้อมูลทจี่ ะสง่ ออกโดยทั่วไปจะเป็นคา่ คงที่ หรอื คา่ ของตัวแปร
ในการดาเนินการเพื่อแก้ปัญหาด้วยคอมพิวเตอร์ กระบวนการเหล่านีต้องถูกแปลงให้อยู่รูปของคาสั่ง
หลายคาสั่งประกอบกันเพื่อให้ทางานตามขันตอนท่ีได้ออกแบบไว้ เช่น กระบวนการกาหนดค่า 0
ให้กับ sum จะใช้คาสั่ง “sum ← 0” กระบวนการคานวณในการเพิ่มค่าของตัวแปร n ขึนอีก
หนึ่ง จะใช้คาส่ัง “n ← n + 1” กระบวนการรับข้อมูลเข้าเพื่อเก็บไว้ในตัวแปร x จะใช้
คาส่ัง “input x” และกระบวนการส่งข้อมูลออกไปยังจอภาพเพื่อแสดงผลของตัวแปร sum จะใช้
คาสงั่ “print sum” เปน็ ต้น

การเขียนโปรแกรมคอมพวิ เตอร์:38

2.1.1 ขันตอนการเขยี นผงั งานแบบลาดบั
ขันตอนการทางานแบบลาดับ เป็นขันตอนวิธีการทางานพืนฐาน ขันตอนวิธีการทางาน

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

ตวั อยา่ งท่ี 2.1 รบั คา่ A B C คานวณหาผลรวม หารดว้ ย 3 และแสดงผลลัพธ์

การเขยี นโปรแกรมคอมพวิ เตอร์:39

ตวั อยา่ งท่ี 2.2 เขยี นผังงานคานวณดอกเบยี โดยรับคา่ เงินตน้ และอัตราดอกเบีย

2.1.2 ผังงานกบั การเขยี นขนั ตอนวิธี
หลังจากที่ทาการหากระบวนการทางานทงั หมดของผังงาน ขนั ตอนต่อไปคอื การเขียน

ข้อความที่ใชส้ าหรับอธิบายการทางานท่เี หมาะสมกับกระบวนการทางาน ข้อความท่ใี ชส้ าหรับอธบิ าย
การทางานของแตล่ ะสัญลักษณข์ องผงั งานสามารถเขียนได้ดังนี

ตารางที่ 2.1 สญั ลกั ษณแ์ ละความหมายของการทางานแบบลาดบั

สัญลกั ษณ์ของผังงาน การอธิบายขนั ตอนวธิ ี
เร่ิมต้นการทางาน

จบการทางาน

Read data รับคา่ ข้อมลู
Write data แสดงค่าข้อมูล

การเขียนโปรแกรมคอมพวิ เตอร์:40

ตารางท่ี 2.1 สัญลกั ษณแ์ ละความหมายของการทางานแบบลาดบั (ต่อ)

สญั ลกั ษณ์ของผังงาน การอธบิ ายขันตอนวิธี
กาหนดค่า sum มคี ่าเป็น 0
หSum <--- 0
คานวณคา่ A+B
หAns = A+B
แสดงผลลัพธ์ทางจอภาพ
Answer

ตวั อย่างท่ี 2.3 การเปลีย่ นผังงานเปน็ การอธิบายขนั ตอนวิธกี ารทางานในลกั ษณะของข้อความของการ
คานวณหาพืนทสี่ ามเหลีย่ ม

จากรูป มีกระบวนการทางานทงั หมด 5 กระบวนการ สามารถเขียนการอธิบายขันตอนวิธีการ
ทางานในลักษณะขันตอนวิธี ไดด้ ังนี

1. เรม่ิ ตน้ การทางาน
2. รบั ค่า Base และ High
3. คานวณค่าของ Answer เท่ากบั 0.5*Base*High
4. แสดงค่าของ Answer
5. จบการทางาน

การเขียนโปรแกรมคอมพวิ เตอร์:41

ตัวอยา่ งที่ 2.4 การเปลี่ยนผังงานเป็นการอธิบายขันตอนวิธกี ารทางานการคานวณหาพืนทขี่ องวงกลม

จากรปู มกี ระบวนการทางานทงั หมด 5 กระบวนการ สามารถเขียนการอธิบายขนั ตอนวิธีการ
ทางานในลักษณะข้อความ ได้ดังนี

1. เรม่ิ ตน้ การทางาน
2. รับคา่ Radian
3. คานวณคา่ ของ Answer เท่ากับ 2*3.14*Radian
4. แสดงคา่ ของ Answer
5. จบการทางาน
2.1.3 รหสั เทยี มกับการทางานแบบลาดบั

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

การเขยี นโปรแกรมคอมพวิ เตอร์:42

ตารางท่ี 2.2 เปรียบเทียบขันตอนวิธีกับรหสั เทยี ม

การอธิบายขันตอนวิธี รหสั เทยี ม
เรมิ่ ต้นการทางาน Start , Begin
จบการทางาน Stop, End
รบั ค่าข้อมลู Read data
แสดงค่าข้อมูล Write data, Print data
กาหนดคา่ ให้ sum เท่ากบั 0 Sum 0
คานวณค่า Answer = A+B Answer  A+ B
แสดงคา่ Answer Write Answer, Print Answer

ตวั อยา่ งท่ี 2.5 การเปล่ยี นการอธบิ ายขนั ตอนวิธีเปน็ รหัสเทยี มโปรแกรมคานวณพนื ทส่ี ามเหลย่ี ม

จากการอธบิ ายขันตอนวิธกี ารทางานในลกั ษณะข้อความข้างตน้ สามารถเขียนเป็นรหัสเทียม ไดด้ งั นี

การอธิบายขนั ตอน รหัสเทยี ม

1. เริ่มต้นการทางาน Begin

2. รบั ค่า Base และ High Read Base , High

3. คานวณค่าของ Answer เทา่ กับ 0.5*Base*High Answer <- 0.5*Base*High

4. แสดงค่าของ Answer Write Answer

5. จบการทางาน End

การเขียนโปรแกรมคอมพวิ เตอร์:43

ตวั อยา่ งท่ี 2.6 การเปล่ียนจากการอธบิ ายขันตอนวิธเี ปน็ รหสั เทยี มคานวณพนื ท่ีวงกลม

จากการอธิบายขันตอนวิธกี ารทางานในลักษณะข้อความขา้ งต้น สามารถเขียนเปน็ รหสั เทียม ไดด้ งั นี

การอธิบายขนั ตอน รหสั เทียม

1. เริ่มตน้ การทางาน Begin

2. รบั ค่า Radian Read Radian

3. คานวณคา่ ของ Answer เทา่ กบั 2*3.14*Radian Answer <- 2*3.14*Radian

4. แสดงคา่ ของ Answer Write Answer

5. จบการทางาน End

2.2 โครงสร้างแบบทางเลอื ก (selection structure)

ในการเขียนโปรแกรมหรือผังงานเพ่ือแก้ปัญหา ผู้พัฒนาโปรแกรมอาจไม่ต้องการทางาน ๆ เม่ือ
ผลของเง่ือนไขเป็นเท็จก็ได้ ซ่ึงเรียกว่ามีโครงสร้างของการทางานแบบเลือกทาเพียงทางเดียว หรือ
แบบ if…then… หรอื อาจมีโครงสรา้ งการทางานแบบ if…then…else… ซ่ึงเป็นการเลือกทาแบบทาง
ใดทางหนึง่ เนื่องจากตอ้ งมกี ารเลือกทาชุดคาสั่งใดชุดคาส่ังหน่ึงตามผลของเง่ือนไข ถ้าเป็นจริงจะเลือก
ทาคาสง่ั ชุดหนง่ึ แตถ่ ้าเป็นเทจ็ จะเลือกทาคาส่ังอีกชดุ หนง่ึ
โครงสร้างแบบมีทางเลือก คือ โครงสร้างที่มีเง่ือนไขขันตอนการทางานบางขันตอนต้องมีการตัดสินใจ
เพอ่ื เลอื กวธิ ี การประมวลผลขันต่อไป และจะมบี างขันตอนที่ไมไ่ ด้รับการประมวลผล

การเขยี นโปรแกรมคอมพวิ เตอร์:44

การตัดสินใจอาจมีทางเลือกทางเดียวหรือโครงสร้างที่มีทางเลือก 2 ทาง ซ่ึงเรียกชื่อว่า
โครงสร้างแบบ if…then…else และโครงสร้างที่มีทางเลือกมากกว่า 2 ทาง เราเรียกชื่อว่า โครงสร้าง
แบบ case

/

รูปท่ี 2.1 โครงสรา้ งแบบทางเลือกเดียว if…then…
จากภาพที่ 2.1 เป็นการตรวจสอบเง่ือนไข โดยให้ทาคาส่ัง A คาสั่ง B แลว้ ตรวจสอบเงอ่ื นไข ถ้า
เง่อื นไขเป็นจรงิ ก็ทาคาส่งั A และคาส่งั B ใหม่ ถ้าเง่ือนไขเปน็ เท็จกท็ าคาสัง่ C

รูปท่ี 2.2 โครงสร้างแบบสองทางเลอื ก if…then…else
จากภาพที่ 2.2 เปน็ การตรวจสอบเงือ่ นไขภายในคาสงั่ if ถา้ เงื่อนไข เปน็ จรงิ ให้ทาคาสง่ั หลัง
then แต่ถ้าเง่ือนไขเปน็ เทจ็ ให้ทาคาสง่ั หลงั else การเขียนขนั ตอนวธิ ีสาหรับการทางานแบบเลือกทา

การเขียนโปรแกรมคอมพวิ เตอร์:45

การเขยี นอธิบายขันตอนวธิ ีการทางานสาหรบั การทางานแบบเลือกทา โดยใช้คาอธิบายคือ คาวา่ “ถา้ ”
“แลว้ ทา” และ “มฉิ ะนันแลว้ ” จากภาพท่ี 2.2 สามารถเขยี นอธบิ ายขนั ตอนวิธกี ารทางานไดด้ งั นี

1. ถ้า Condition แล้วทา
1.1 Process 1

มฉิ ะนันแล้ว
1.2 Process 2

การเขยี นอธิบายขนั ตอนวิธกี ารทางาน เร่มิ ตน้ ด้วยคาอธบิ าย “ถ้า” ตามดว้ ยเง่อื นไขท่ีใช้สาหรับ
การตัดสินใจที่อยูภ่ ายในสัญลักษณผ์ งั งานการตดั สินใจ ถดั จากนนั เปน็ คาอธิบาย “แลว้ ทา” จากนันเปน็
การอธบิ ายขนั ตอนวธิ กี ารทางานทกุ ขนั ตอนการทางานที่ต้องทา สาหรบั กรณีท่ีผลการตรวจสอบเงื่อนไข
เป็นจรงิ จากนนั ใชค้ าอธบิ ายวา่ “มิฉะนนั แล้ว” ตามด้วยขนั ตอนวิธกี ารทางานทุกขันตอนการทางานท่ี
ต้องการสาหรับกรณีท่เี ง่อื นไขเปน็ เทจ็

จบ

รปู ที่ 2.3 โครงสร้างแบบมากกว่าสองทางเลือก
จากภาพท่ี 2.3 เป็นการแสดงโครงสรา้ งการทางานแบบมากกวา่ สองทางเลือก โดยใชค้ าสงั่
if…else…if การทางานเร่ิมตน้ ตรวจสอบเงอื่ นไขท่ี 1 ถ้าเปน็ จรงิ ให้ทาตามเงอ่ื นไขที่ 1 ถา้ เป็นเท็จก็

การเขยี นโปรแกรมคอมพวิ เตอร์:46

ตรวจสอบเงอื่ นไขท่ี 2 ถา้ จริงกท็ าตามเง่ือนไขท่ี 2 ถ้าเปน็ เท็จก็ตรวจสอบเง่ือนไขที่ 3 ถา้ จรงิ กท็ าตาม
เงื่อนไขท่ี 3 ถ้าเป็นเทจ็ ก็ทา “หา้ มรบั ประทาน” ทุกเงือ่ นไขท่เี ป็นจริงเมื่อทางานแลว้ กจ็ บการทางาน

รปู ท่ี 2.4 แสดงผังงานแบบหลายทางเลือก
จากภาพท่ี 2.4 เปน็ การทางานแบบหลายทางเลือก เร่ิมจากตรวจสอบเงอ่ื นไขโดยเลือกเง่ือนไข
ไดเ้ พยี งเง่ือนไขเดียว ถา้ เงอ่ื นไขเป็นไปตามกรณีใดก็ใหท้ างานในกรณีนันและสนิ สดุ การทางาน การเขียน
โปรแกรมในโครงสรา้ งนจี ะใช้คาส่ัง case
การเขยี นอธิบายขนั ตอนวิธีการทางานจากผังงาน สง่ิ ท่ตี ้องทาเป็นลาดับแรกคือ การแยก
กระบวนการการทางานทงั หมดของผังงาน วธิ กี ารแยกกระบวนการหรือขันตอนการทางานแต่ละ
กระบวนการสามารถทาไดด้ ังนี คอื พจิ ารณาท่ที ิศทางเขา้ และทิศทางออกของขนั ตอนการทางาน โดย
ทาทลี ะขันตอนหรือกระบวนการทางานทม่ี ีทิศทางเขา้ และทศิ ทางออกเพยี งอย่างละหนงึ่ ทิศทางเทา่ นัน
เชน่ เดยี วกับการทางานแบบลาดบั
รหสั เทียมกับการทางานแบบเลือกทา รหัสเทียม “IF-THEN-ELSE” โดยใช้คารหัสเทยี มแทน
ข้อความอธิบาย ดังนี
รหัสเทียม “IF” แทนข้อความอธบิ ายว่า “ถ้า”
รหสั เทียม “THEN” แทนข้อความอธิบายวา่ “แล้วทา”
รหัสเทยี ม “ELSE” แทนข้อความอธบิ ายว่า “มิฉะนันแล้ว”
ตัวอยา่ งท่ี 2.7 การเปลีย่ นจากผังงานเปน็ การอธบิ ายขนั ตอนวิธีการทางานในลกั ษณะของข้อความ

การเขยี นโปรแกรมคอมพวิ เตอร์:47

จากผังงานในรูป การทางานสาหรบั กรณีท่ีผลการตรวจสอบเงือ่ นไขเปน็ จรงิ มีขนั ตอนการ
ทางานหรือกระบวนการทางานทตี่ ้องทาจานวน 2 กระบวนการทางาน คอื รบั ค่าของตวั แปร A และ B
อีกกระบวนการทางานหนึ่งคือ การคานวณคา่ ของ X เท่ากับ A + B สาหรบั กรณีท่ผี ลการตรวจสอบ
เงื่อนไขเปน็ เทจ็ มีขันตอนการทางานหรอื กระบวนการทางานทต่ี ้องทาจานวน 2 กระบวนการทางาน
เช่นกนั คือ การคานวณค่าของ X เท่ากับ X + 10 และแสดงคา่ ของตัวแปร X
จากส่วนของผังงานท่ีมโี ครงสร้างการทางานแบบเลือกทา สามารถทาการเขียนเป็นการอธิบายขนั ตอน
วธิ ีการทางานในลกั ษณะของข้อความ ไดด้ งั นี

1. ถ้า X > 5 แลว้ ทา
1.1 รับคา่ A , B
1.2 คานวณค่าของ X เท่ากบั A + B

มิฉะนันแลว้
1.3 คานวณคา่ ของ X เทา่ กบั X +10
1.4 แสดงคา่ ของ X

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

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

การเขียนโปรแกรมคอมพวิ เตอร์:48

ตัวอย่างท่ี 2.8 การเปลีย่ นจากสว่ นของผงั งานให้เปน็ การอธบิ ายขนั ตอนวธิ กี ารทางานในลกั ษณะของ
ขอ้ ความ

จากสว่ นของผงั งานในตวั อย่างท่ี 2.2 การทางานหลังจากการพจิ ารณาเง่ือนไขท่ีใช้สาหรบั การ
ตัดสนิ ใจ กรณที ีผ่ ลการตรวจสอบเง่ือนไขเป็นจริง มีขันตอนการทางานหรือกระบวนการทางานทีต่ ้องทา
จานวน 2 การทางาน คือ รับค่าของ A และ B ส่วนอีกการทางานหนึ่งคือ การคานวณคา่ โดยให้คา่ ของ
X มีคา่ เท่ากบั A2 + B2 สว่ นกรณีทผี่ ลการตรวจสอบเงอ่ื นไขเปน็ เท็จ ไมม่ ีขนั ตอนการทางานใดที่ต้องทา
สามารถทาการเขียนอธิบายขันตอนวธิ กี ารทางานได้ดงั นี

1. ถ้า N > 0 แล้วทา
1.1 รับค่าของ A และ B
1.2 คานวณคา่ ของ X เทา่ กับ A2 + B2

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

การเขียนโปรแกรมคอมพวิ เตอร์:49

2.3 โครงสรา้ งแบบทดสอบเงอ่ื นไข
การเขียนโปรแกรมในบางปัญหาต้องการทางเลือกในการตัดสินใจ เพ่ือว่าจะเลือกใช้วิธีการ

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

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

การเขียนโปรแกรมคอมพวิ เตอร์:50

รูปที่ 2.5 แสดงโครงสรา้ งแบบทดสอบเง่ือนไข 1 ทาง
ท่มี า : สมชาย รตั นเลิศนุสรณ์

2.3.2 โครงสรา้ งแบบทดสอบเงื่อนไข 2 ทาง
การทางานของโครงสรา้ งแบบทดสอบเงื่อนไข 2 ทาง คือทาการทดสอบเงื่อนไขว่าเปน็ จรงิ หรือ
เทจ็ ถ้าเงื่อนไขเป็นจริง ใหท้ างานตามคาสงั่ A ท่กี าหนดไว้แล้วออกจากการทางาน แตถ่ ้าเงือ่ นไขเปน็
เท็จ ใหท้ างานตามคาส่ัง B ที่กาหนดไวแ้ ลว้ ออกจากการทางาน

รูปท่ี 2.6 แสดงโครงสรา้ งแบบทดสอบเง่ือนไข 2 ทาง
ทีม่ า : สมชาย รตั นเลศิ นุสรณ์

การเขยี นโปรแกรมคอมพวิ เตอร์:51

2.3.3 โครงสร้างแบบทดสอบเงอื่ นไขมากกว่า 2 ทางขนึ้ ไป

ภาพที่ 2.7 แสดงโครงสร้างแบบทดสอบเงื่อนไขมากกว่า 2 ทางขนึ ไป
ทมี่ า : สมชาย รตั นเลิศนุสรณ์

การทางานของโครงสร้างแบบทดสอบเง่ือนไขมากกว่า 2 ทางข้ึนไป มลี ักษณะดงั ต่อไปนี้
1. ทาการทดสอบเงื่อนไขท่ี 1 วา่ เป็นจริงหรอื เทจ็ ถ้าเง่ือนไขเป็นจริง ใหท้ างานตามคาสั่ง A ที่

กาหนดไว้แล้วออกจากการทางาน แต่ถ้าเง่ือนไขเป็นเท็จ ใหท้ างานในข้อ 2.
2. ทาการทดสอบเงื่อนไขที่ 2 วา่ เป็นจรงิ หรอื เท็จ ถา้ เง่อื นไขเป็นจรงิ ให้ทางานตามคาส่งั B ท่ี

กาหนดไว้แล้วออกจากการทางาน แต่ถ้าเง่ือนไขเปน็ เท็จ ให้ทางานในข้อ 3.
3. ทาการทดสอบเงื่อนไขใหม่อีก โดยทาซาเชน่ นีไปเร่อื ย ๆ จนกว่าจะถึงเงอ่ื นไข

สุดทา้ ย (เงอื่ นไขที่ n) ถา้ เงือ่ นไขเป็นจรงิ ให้ทางานตามคาส่ัง N ที่กาหนดไว้แล้วออกจากการทางาน แต่
ถ้าเงือ่ นไขเป็นเท็จ ให้ออกจากการทางาน

การเขียนโปรแกรมคอมพวิ เตอร์:52

ตัวอย่างที่ 2.9 การเปล่ยี นจากสว่ นของผงั งานใหเ้ ป็นการอธบิ ายขนั ตอนวธิ ีการทางานในลักษณะของ
ข้อความ

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

1. เรม่ิ ต้นการทางาน
2. รับค่าของ A และ B
3. ถา้ A มากกว่า B แล้วทา

3.1 คานวณคา่ ของ Num เทา่ กบั A – B
มฉิ ะนันแล้ว

3.2 คานวณคา่ ของ Num เท่ากับ B – A
4. แสดงค่าของ Num
5. จบการทางาน

การเขยี นโปรแกรมคอมพวิ เตอร์:53

ตัวอย่างท่ี 2.9 จากผงั งานการหาขอ้ มลู ทมี่ ากท่สี ดุ ระหวา่ งขอ้ มลู จานวน 3 ข้อมูลทร่ี ับเข้ามา จากนัน
ทาการแสดงคา่ ที่มากที่สุด

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

1. เร่ิมต้น
2. รบั ค่า A , B , C
3. ถา้ A มากกวา่ B แลว้ ทา

3.1 ถ้า A มากกว่า C แลว้ ทา
3.1.1 กาหนดค่าของ Max เท่ากบั A

มฉิ ะนันแลว้
3.1.2 กาหนดค่าของ Max เท่ากับ C

มฉิ ะนนั แล้ว

การเขียนโปรแกรมคอมพวิ เตอร์:54

3.2 ถ้า B มากกวา่ C แลว้ ทา
3.2.1 กาหนดคา่ ของ Max เท่ากบั B

มฉิ ะนนั แล้ว
3.2.2 กาหนดค่าของ Max เท่ากบั C

4. แสดงค่าของ Max
5. จบการทางาน
ตวั อย่างท่ี 2.10 การเขยี นอธิบายขันตอนวธิ กี ารทางานในลักษณะของข้อความจากผังงาน

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

การเขียนโปรแกรมคอมพวิ เตอร์:55

1. เร่ิมต้นการทางาน
2. รบั คา่ A , B
3. ถา้ A มากกวา่ B แล้วทา

3.1 ถา้ B มากกว่า 20 แล้วทา
3.1.1 รับคา่ A
3.1.2 คานวณค่าของ B เท่ากับ B + 15

มิฉะนันแลว้
3.1.3 รับค่า B
3.1.4 คานวณค่าของ A เทา่ กับ A + 10

3.2 คานวณค่าของ A เท่ากับ A – B
มิฉะนันแลว้
3.3 คานวณค่าของ Num เทา่ กบั A + B
3.4 แสดงค่าของ Num
3.5 คานวณคา่ ของ A เท่ากบั A + 10
4. แสดงคา่ ของ A , B
5. จบการทางาน

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

2.4 โครงสร้างแบบวนซา้ (repetition structure)

การเขยี นโปรแกรมคอมพวิ เตอร์:56

ในการแกป้ ัญหาบางอยา่ งอาจต้องมีการทางานในบางคาสงั่ หรอื บางชดุ ของคาส่ังซากันมากกว่า
หน่ึงรอบขนึ ไป กระบวนการที่สาคัญในการออกแบบอลั กอริทึม ก็คือความสามารถในการวนลปู ของการ
ทางานของกลุ่มคาสงั่ ตามทีน่ ักพฒั นาต้องการ โครงสรา้ งแบบมกี ารวนซานีจะต้องมีการตดั สนิ ใจรว่ มกนั
อยู่ดว้ ยเสมอ เพอื่ เปน็ เง่อื นไขที่จะตัดสนิ ใจวา่ เมื่อใดจะวนซาหรือเมื่อใดจะถงึ เวลาหยุดการวนซา
สาหรับคาสง่ั ทสี่ ามารถใชใ้ นการเขยี นโปรแกรมแบบวนซาในภาษา C ได้แก่ While, do-while และ
For การวนซาแบบที่ต้องตรวจสอบเง่ือนไขท่จี ะใหว้ นซาก่อนท่จี ะทางานตามชุดคาส่ังในโครงสรา้ งแบบ
วนซา เรียกว่า การวนซาแบบ while ซ่งึ จะสังเกตได้วา่ ถา้ เง่ือนไขไมเ่ ปน็ จริงตงั แต่แรก คาสั่งใน
โครงสรา้ งแบบวนซาจะไม่ถูกเรยี กใหท้ างานเลย แตก่ ารวนซาแบบท่มี ีการตรวจสอบเง่ือนไขท่ีจะให้วน
ซาหลงั จากท่ีไดท้ างานตามชุดคาสั่ง ในโครงสร้างแบบวนซาไปรอบหนง่ึ แล้ว เรยี กวา่ การวนซาแบบ
do..while และการวนซาที่ร้จู านวนรอบของการวนซาใช้คาสง่ั for

ส่งิ ทีค่ วรระวังในการใช้งานขนั ตอนวิธีแบบมีการวนซาคอื ต้องตรวจสอบว่าได้กาหนดเงื่อนไข
อย่างรดั กุมและถูกต้อง มิเช่นนันแล้วอาจเกดิ กรณีของการวนซาไมร่ ้จู บ (infinite loop) หรือกรณีท่ี
วนซาไมไ่ ดต้ ามจานวนรอบทตี่ ้องการ

2.4.1 โครงสร้างแบบวนซาคาสั่ง while
โครงสร้างแบบวนซา คาส่ัง while เป็นโครงสร้างทข่ี ันตอนการทางานบางขนั ตอนได้รบั

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

รูปที่ 2.8 ผังงานการทางานวนซาคาส่ัง while

2.4.2 โครงสรา้ งแบบวนซาคาสั่ง do…while

การเขยี นโปรแกรมคอมพวิ เตอร์:57

โครงสร้างแบบวนซาคาสั่ง do…while การทางานทท่ี ากิจกรรมซาเร่ือยๆ จนกระทั่ง
เงอื่ นไขท่ีกาหนดเป็นเท็จแล้วจงึ หยุดการทางาน โดยแตล่ ะครงั ท่ีเสรจ็ สินการดาเนนิ การแต่ละรอบ
จะต้องมีการตรวจสอบเงอ่ื นไข คาสั่ง do…while ต่างจากคาส่งั while ตรงทใ่ี นคาสั่งนีจะทางานกอ่ น
อย่างน้อย 1 รอบ แล้วตรวจสอบเงื่อนไข

คำส่งั

คำส่งั

งือ่เงน่อื ไนขไข จริง
เทจ็

ภาพที่ 2.9 ผงั งานการทางานวนซาคาสั่ง do…while

รูปแบบของการเขยี น code สาหรบั โปรแกรมแบบวนซาท่ีใช้ do-while สามารถเขียนให้อยู่ใน
รปู ทวั่ ไปไดด้ ังนี

do statement while ( เงอ่ื นไข ); ตัวอยา่ งของโครงสร้าง do-while สามารถเขียนได้ดังนี

sum = 0.0; เทจ็
scanf(“%f”, &x);

do {

sum += x;

scanf(“%f”, &x);

}

while (x > 0.0);

การเขยี นโปรแกรมคอมพวิ เตอร์:58

โปรแกรมข้างต้นจะทาการอา่ นค่าจะ keyboard เมอื่ User พิมพ์คา่ ที่มีค่ามากกวา่ ศนู ย์ ก็จะทา
การบวกค่าเหลา่ นีไปทตี่ ัวแปร sum จนกระทั่ง User พิมพ์ ตัวเลข 0 หรอื คา่ ทีน่ ้อยกว่า ศูนย์ ทาให้
เงอื่ นไขเปน็ เท็จ และโปรแกรมจงึ จะออกจากโครงสร้าง do-while
คราวนีเราลองมาเขียนโปรแกรมทีใ่ ช้โครงสรา้ ง do-while โดยโจทย์กาหนดใหว้ ่า ใหโ้ ปรแกรมสามารถ
รบั ค่าตัวเลขใดๆ (X) และ แสดงผลของตวั เลข ระหว่าง 0 ถึง X ทส่ี ามารถหารดว้ ย 4 ลงตวั

2.4.3 โครงสรา้ งการเขียนโปรแกรมแบบวนซาโดยใช้คาสัง่ For
โครงสร้างการวนซาแบบ for เม่ือเรม่ิ ตน้ กาหนดค่าตัวแปรเร่ิมต้นทตี่ อ้ งการ สว่ น

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

for ( count=0 ; count < 10 ; count++)
{
printf(“ count = %d ” ,count);
}

ใน code ขา้ งต้น ตัวแปร count จะเริม่ ตน้ จากค่า 0 ซงึ่ ค่า 0 มีคา่ นอ้ ยกวา่ 10 กจ็ ะทาคาสงั่
print ค่าของตวั แปร count จากนันค่า count กจ็ ะเพ่ิมคา่ เปน็ 1 เงอ่ื นไข count < 10 กย็ ังคงเปน็ จรงิ
กจ็ ะทาการพิมพ์ คา่ ของตวั แปร count วนซาเช่นนี จนกระทงั่ count มคี า่ เพ่ิมขึนจนเป็น 10 เงอ่ื นไขก็
จะเปน็ เท็จ และจบโครงสรา้ งของการวนซา

ตวั อย่างท่ี 2.11 การหาค่า ห.ร.ม (หารร่วมมาก) ของตวั เลข 2 ตัวใดๆ โดยอัลกอรทิ ึม Euclidean โดย
อัลกอริทมึ ดงั กล่าว จะทาการแปลงค่าตัวเลข 2 ตัวเลขบวกใดๆ (m, n) เปน็ คา่ (d, 0) โดยการนาตวั เลข
ท่มี ีคา่ มาก นามาหารดว้ ยตัวเลขท่มี ีค่าน้อยกวา่ นาคา่ เศษที่หารได้มาแทนตวั เลขที่มคี ่ามากกวา่ ทาเชน่ นี
จนกระท่ังได้คา่ เศษจากการหารมีค่าเปน็ 0 ตัวเลขอกี ตัวกจ็ ะเปน็ คา่ ห.ร.ม. เม่ือทาการ Run โปรแกรม
จะไดผ้ ลดงั นี

Enter two positive integers: 532 112
The g.c.d. of 532 and 112 is 28

การเขียนโปรแกรมคอมพวิ เตอร์:59

ตัวอยา่ งการเขยี นโปรแกรมเพื่อแก้ปัญหาดงั กล่าวขา้ งต้น สามารถเขยี นได้ดงั นี

#include
void main()
{
int A, B, start;
printf("Enter two positive intergers: ");
scanf("%d %d", &A, &B);
if(A < B) start = A;
else start = B;
while(((A%start) != 0)||((B%start) != 0))
{
start = start-1;
}
printf("The g.c.d of %d and %d is %d ", A, B, start);
}

การดาเนนิ การทางคณิตศาสตร์ สามารถเขียนให้อยู่ในรปู แบบสนั ๆ ได้
ความแตกตา่ งระหว่าง i++ และ ++i
i++ และ ++i จะมีความหมายใกลเ้ คียงกนั มาก จะแตกต่างเพียง การจัดลาดบั ในการคานวณ เมอื่ ต้อง
นาไปใชก้ ับตวั แปรตัวอ่นื
A = 10;
C = A++; // A= 11, C = 10
A = 10;
C = ++A; // A = 11, C = 11
A = 10;
C = A--; // A = 9, C = 10
A = 10;
C = --A; // A = 9, C = 9

ตัวอยา่ งท่ี 2.12 โครงสรา้ งการเขียนโปรแกรมแบบวนซาโดยใชค้ าสง่ั do-while

#include
void main()
{
int number, i;
printf("enter the number ");
scanf("%d", &number);
i = 0;
do
{
if((i % 4) == 0) printf("%d ", i);
i++;

การเขียนโปรแกรมคอมพวิ เตอร์:60

}
while(i <= number);
}

ตวั อย่างที่ 2.13 เขยี นโปรแกรม โดยให้โปรแกรม สามารถรับคา่ ตวั เลขใดๆ และแสดงค่าในรปู แบบดัง
ตัวอยา่ งต่อไปนี

Input the number > 4
0
01
012
0123
012
01
0

#include
void main()
{ int number, i, j;
printf("Enter number: ");
scanf("%d", &number);
for(j= 0; j< number; j++)
{
for(i=0; i<= j; i++)
{
printf("%d ", i);
}
printf(" ");
}
for(j= number-1; j>= 0; j--)
{
for(i=0; i< j; i++)
{
printf("%d ", i);
}
printf(" ");
}
}

เปรยี บเทียบการเขยี นโปรแกรมวนซาแบบ while for และแบบ do…while

While For การเขียนโปรแกรมคอมพวิ เตอร์:61

#include <stdio.h> #include <stdio.h> Do..while
main() main() #include <stdio.h>
{ { main()
int i; int i; {
i =; i =; int i;
while (i<7) for(i=0;i<7;i++) i =;
{ { do{
printf(“i= %d\n”,i); printf(“i= %d\n”,i); printf(“i= %d\n”,i);
i++; i++; i++;
} } } while (i<7)
} } }

บทสรปุ

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

การเขยี นโปรแกรมคอมพวิ เตอร์:62

แบบฝึกหัด

1. ให้เขียนผังงานจากโปรแกรมตอไปนี และให้หาผลลพั ธ์
(ก) # include <stdio.h> (ข) #include <stdio.h>
void main( ) { void main() {
char newline = '\n', tab = '\t'; int n=10;
float number=94.323;
printf("Start Program"); char name[15]="Mickey Mouse";
printf("%c",newline);
printf("%cMy first Program",tab); printf("\nDear %13.11s\n", "Dad and Mama");
printf("\n\tWonderful"); printf("\tI will get %x for this course!", n);
printf("100%%\n"); printf("\n\t%1.1f is my score", number);
printf("\t"); printf("\t\t\nLove you %d %%", n*10);
printf("%10","Hello"); printf("\n%-8.6s -Ja", name);
} }18

2. ใหเขยี นโปรแกรม 2 โปรแกรมเพ่ือแสดงขอความตอไปนีออกทางจอภาพ
I love
C programming
very much.

โดยที่

การเขียนโปรแกรมคอมพวิ เตอร์:63

(ก) เขียนโปรแกรมที่ 1 โดยในฟงกชัน main( ) ประกอบดวยฟงกชนั printf( ) 3 คาส่ัง
(ข) เขยี นโปรแกรมที่ 2 โดยใชฟงกชัน main( ) ประกอบดวยฟงกชนั printf( ) 1 คาสง่ั
3. ใหเขยี นโปรแกรมเพ่ือรบั ชื่อและความสงู ของคน ๆ หนง่ึ และแสดงช่อื และความสงู นันทางจอภาพ
โดยแสดงในรปู แบบดงั ตวั อยางตอไปนี
Enter name : Somchai

Enter height (cm.) : 178
Output :

Name Height (cm.)

Somchai 178
4. ใหเขยี นผังงานรับขอมูลเลขจานวนจรงิ แบบ float 3 จานวน และแสดงผลลพั ธเลขทัง 3 จานวนดัง
ตวั อยาง (ตวั เอนคือสงิ่ ท่ผี ูใชปอนสูระบบ)

Enter number 1 : 5243.2
Enter number 2 : 13
Enter number 3 : 12.3548
Output :

5243.20
13.00
12.35

การเขียนโปรแกรมคอมพวิ เตอร์:64

เอกสารอา้ งองิ

ไกรศร ตังโอภากลุ และกิตินนั ท์ พลสวัสด์.ิ (2556). คู่มอื เรียนเขียนโปรแกรมภาษา C ฉบับ
สมบรู ณ์ พิมพ์ครงั ที่ 1 . นนทบุรี : ไอดซี ีฯ.

ไกรศร ตงั โอภากลุ . (2554). คูม่ ือเรียนเขียนโปรแกรมภาษา C. พมิ พค์ รังที่ 1. นนทบุรี: บรษิ ทั ไอซดี ี
พรเี มียร์จากัด.

ธรี วัฒน์ ประกอบผล. คูม่ ือการเขียนโปรแกรมภาษา C ฉบับสมบรู ณ์. พิมพ์ครังที่ 1. กรุงเทพฯ.
สานักพมิ พ์ ซิมพลฟิ าย. 2556.

ฝ่ายตาราทางวชิ าการคอมพวิ เตอร์.คู่มือเรยี นตอมพิวเตอร์และการบารงุ รักษา,บรษิ ัท ซเี อ็ดยเู คชัน่ จากัด
(มหาชน),2556

ฝา่ ยตาราทางวชิ าการคอมพวิ เตอร.์ คมู่ ือเรียนตอมพิวเตอร์ภาษาC,บรษิ ทั ซเี อด็ ยูเคช่ัน จากดั (มหาชน),
2555

สมชาย รัตนเลิศนสุ รณ์. การเขียนโปรแกรมคอมพิวเตอร์ด้วยภาษาซี+DIS. กรงุ เทพฯ: สง่ เสริม
เทคโนโลย(ี ไทย-ญ่ปี ุน่ ). 2545.

โอภาส เอีย่ มสิรวิ งศ์ . การเขียนโปรแกรมดว้ ยภาษา C (Programming with C).--กรุงเทพฯ: ซีเอ็ด
ยเู คชน่ั , 2552 . 504 หน้า

65

แผนบริหารการสอนประจาบทท่ี 3

รายวชิ า การเขียนโปรแกรมคอมพิวเตอร์
Computer Programming

หัวข้อเนอ้ื หา
3.1 รปู แบบโปรแกรมภาษาซี
3.2 ชนิดของข้อมูล
3.3 ตัวแปร

วตั ถปุ ระสงค์เชงิ พฤติกรรม

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

วธิ สี อนและกจิ กรรมการเรยี นการสอนประจาบท

1. บรรยายเน้ือหาในแต่ละหวั ขอ้ พร้อมยกตวั อย่างประกอบ
2. ศกึ ษาจากเอกสารประกอบการสอน
3. ผู้สอนสรปุ เนื้อหา
4. ทาแบบฝกึ หดั เพ่อื ทบทวนบทเรยี น
5. ผู้เรยี นถามขอ้ สงสัย
6. ผสู้ อนทาการซักถาม

สือ่ การเรยี นการสอน
1. เอกสารประกอบการสอนวิชาการโปรแกรมคอมพิวเตอร์
2. ภาพเล่ือน (Slide)
3. บทความจากหนงั สือ หรอื เวบ็ ไซตต์ า่ งๆ
4. เครอื่ งคอมพิวเตอร์

66

การวดั ผลและการประเมิน

1. ประเมนิ จากการซกั ถามในช้ันเรียน
2. ประเมนิ จากความร่วมมือและความรับผดิ ชอบต่อการเรยี น
3. ประเมนิ จากการทาแบบฝึกหดั ทบทวนทา้ ยบทเรยี น
4. ประเมนิ จากการฝึกปฏบิ ัตใิ นชั้นเรียน

67

บทที่ 3
ตัวแปรและชนดิ ของขอ้ มูล

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

3.1 รูปแบบโปรแกรมภาษาซี

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

รปู ที่ 3.1 โครงสรา้ งของภาษาซี

68

จากรูปท่ี 3.1 อธิบายในแตล่ ะสว่ นได้ดงั นี้

1. เฮดเดอรไ์ ฟล์ (Header Files)
เปน็ สว่ นทเี่ กบ็ ไลบราร่มี าตรฐานของภาษา C ซง่ึ จะถกู ดึงเข้ามารวมกบั โปรแกรมใน

ขณะท่กี าลงั ทาการคอมไพล์ โดยใช้คาสง่ั

#include<ชอื่ เฮดเดอรไ์ ฟล์> หรอื
#include “ชือ่ เฮดเดอรไ์ ฟล์”

2. สว่ นตวั แปรแบบ Global (Global Variables)
เปน็ ส่วนทใี่ ชป้ ระกาศตัวแปรหรือคา่ ตา่ ง ๆ ท่ีให้ใชไ้ ด้ทงั้ โปรแกรม ซึง่ ในส่วนของตัวแปรแบบ

global ไมจ่ าเป็นต้องมีกไ็ ด้ สว่ นใหญ่จะใช้ในกรณีการเขียนโปรแกรมแบบฟังก์ชัน

3. ฟังกช์ นั (Functions)
เปน็ ส่วนท่ีเก็บคาสั่งตา่ ง ๆ ไว้ ซง่ึ ในภาษา C จะบังคับให้มีฟังกช์ นั อยา่ งน้อย 1 ฟงั ก์ชันนนั่ คอื

ฟังกช์ ่นั main() และในโปรแกรม 1 โปรแกรมสามารถมีฟงั ก์ชนั ไดม้ ากกวา่ 1 ฟังก์ชัน

4. สว่ นตวั แปรแบบ Local (Local Variables)
เปน็ สว่ นท่ีใช้สาหรับประกาศตวั แปรท่ีจะใชใ้ นเฉพาะฟังก์ชันของตนเอง ฟงั กช์ นั อ่นื ไม่สามารถ

เข้าถึงหรือใช้ได้ ซ่งึ จะต้องทาการประกาศตัวแปรกอ่ นการใช้งานเสมอ และจะตอ้ งประกาศไวใ้ นสว่ นนี้
เทา่ น้ัน ตวั แปร(Variable)

5. ตวั โปรแกรม (Statements)
เป็นส่วนท่ีอยู่ถดั ลงมาจากสว่ นตวั แปรภายใน ซึ่งประกอบไปด้วยคาสั่งตา่ ง ๆ ของภาษา C

และคาสั่งต่าง ๆ จะใช้เครื่องหมาย ; เพอ่ื เปน็ การบอกให้รู้ว่าจบคาสั่งหนึ่ง ๆ แล้ว ส่วนใหญ่ คาส่ังต่าง ๆ
ของภาษา C เขียนด้วยตัวพิมพ์เล็ก เน่ืองจากภาษา C จะแยกความแตกต่างชองตัวพิมพ์เล็กและพิมพ์
ใหญ่หรือ Case Sensitive นั่นเอง ยกตัวอย่างใช้ Test, test หรือจะถือว่าเป็นตัวแปรคนละตัวกัน
นอกจากนี้ภาษา C ยังไม่สนใจกับการข้ึนบรรทัดใหม่ เพราะฉะนั้นผู้ใช้สามารถพิมพ์คาส่ังหลายคาส่ังใน
บรรทดั เดียวกนั ได้ โดยไม่เคร่อื งหมาย ; เป็นตวั จบคาสั่ง

6. ค่าส่งกลับ (Return Value)
เปน็ สว่ นทบี่ อกใหร้ ู้ว่า ฟังก์ชนั นีจ้ ะส่งคา่ อะไรกลับไปใหก้ บั ฟังกช์ ันทีเ่ รียกใช้

69

3.2 ชนดิ ของขอ้ มูล

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

1. ตัวเลขจานวนเต็ม (integer) ตวั เลขจานวนเตม็ ทว่ั ๆ ไป
2. ตวั เลขจานวนทศนิยม (float point) คือ ตัวเลขท่ไี ม่ใชจ่ านวนเต็ม
3. ชนดิ ข้อมูลอักขระ (character) คือ ตวั อักษรหรือสัญลกั ษณ์อื่นๆ ท่ีมคี วามหมายมคี วามยาว 1
อกั ขระหรือมากกวา่ หรอื ชนดิ ขอ้ มลู ข้อความ (string) อักขระทีม่ ีความยาวมากกวา่ 1 ตัว เรียงตอ่ กนั เป็น
ข้อความ
4. ชนดิ ข้อมูลตรรกะ (logical data) ขอ้ มลู ทมี่ ีความจริงเปน็ จรงิ หรอื เท็จได้เพยี ง 1 คา่
5. ชนดิ ขอ้ มูล void ข้อมูลไม่มีการสง่ ค่าใดๆกลบั มา

3.2.1 ตัวเลขจานวนเต็ม
ชนิดขอ้ มูลจานวนเต็มประกอบด้วย 4 ชนิดไดแ้ ก่ long, int, short และ byte เปน็ ชนดิ ข้อมลู
ท่ีใชเ้ ก็บข้อมลู ตวั เลขจานวนเตม็ ในทางคณิตศาสตร์ ชว่ งของขอ้ มูลขึน้ อยู่ขนาดของตวั แปรทป่ี ระกาศ
ตวั อย่างเช่น ตัวแปร int จะมีขนาด 32 บติ เกบ็ ขอ้ มูลได้ -2,147,483,648 ถึง 2,147,483,647 การ
กาหนดคา่ ข้อมลู ใหก้ บั ตัวแปรชนิดข้อมลู จานวนเต็ม มีดังนี้
1. เลขฐานสิบคือการเขยี นค่าของขอ้ มูลจานวนเตม็ ท่วั ไป เชน่ 1200 150 -250 เปน็ ต้น โดย
การเขยี นจะไม่มเี ครื่องหมาย , (Comma) เช่น 25,000 จะตอ้ งเขยี นเปน็ 25000
2. เลขฐานแปดคอื การเขียนค่าของข้อมูลจานวนเตม็ โดยใชเ้ ลขฐานแปด โดยการขึ้นตน้ ข้อมูล
ด้วยเลข 0 แล้วตามดว้ ยเลข 0 ถงึ 7 ตวั อยา่ งเช่น 036 เป็นเลขฐานแปด มีคา่ เทา่ กับ 30 ในเลขฐานสบิ
3. เลขฐานสิบหกคือการเขียนค่าของข้อมลู จานวนเตม็ โดยใช้เลขฐานสบิ หก โดยการขน้ึ ต้น
ขอ้ มลู ดว้ ยเลข 0x หรือ 0X แลว้ ตามดว้ ยเลข 0 ถึง 9 และ ตัวอกั ษร A ถงึ F ตวั อย่างเชน่ 0XB2 เป็น
เลขฐานแปด มีค่าเทา่ กบั 178 ในเลขฐานสิบ
การประกาศตัวแปรใดๆ ให้เป็นข้อมูลจานวนเต็มตอ้ งคานงึ ถึงขอบเขตของช่วงข้อมูลทีเ่ ก็บได้
และต้องกาหนดคา่ ชนิดข้อมลู ในเหมาะสมตรงกับชนิดขอ้ มูลทป่ี ระกาศตัวแปร

70

ตารางท่ี 3.1 ตัวแปรชนดิ จานวนเตม็

ชนิด(Type) ขนาด(Size) พิสยั (Range)
Int 16 บิต -32768 ถึง 32767
16 บิต
Unsingned int* 8บิต 0 ถึง65535
Short int 8บิต -128ถึง 127
32บิต 0 ถงึ 255
Unsingned Short int -2147483648 ถึง
Long int 2147483647

Unsingned Long int 32บิต 0ถึง4294967295

*หมายถงึ : Unsingned หมายถึง จานวนท่ีไม่มีค่าติดลบ

ตัวอยา่ งการประกาศตัวแปรและกาหนดค่าข้อมูลของตัวแปร ดงั นี้
long x1 = 100000000000L;

เปน็ การประกาศตวั แปรชนดิ long ช่ือ x1 มคี า่ ข้อมูลเทา่ กบั แสนล้าน
(100,000,000,000) การประกาศตวั แปร long ต้องต่อท้ายขอ้ มลู ดว้ ยตวั อักษร L หรอื l เสมอ

int x2 = 1000000000;

เป็นการประกาศตัวแปรชนดิ long ชอ่ื x1 มคี ่าข้อมูลเท่ากับพนั ลา้ น (1000,000,000)
short x31 = 32767;

เป็นการประกาศตวั แปรชนดิ short ช่อื x31 เก็บข้อมูลเปน็ ตวั เลขฐานสบิ มคี ่าข้อมลู
เท่ากับ 32,767

short x32 = 0X7FFF;

เป็นการประกาศตัวแปรชนิด short ชื่อ x32 เก็บข้อมลู เป็นตัวเลขฐานสิบหกมีค่า
ข้อมูลเท่ากับ 32,767

byte x41 = 127;

เปน็ การประกาศตวั แปรชนิด byte ชือ่ x41 เกบ็ ข้อมูลเปน็ ตัวเลขฐานสิบมีคา่ ข้อมลู
เท่ากบั 127

byte x42 = 0177;

เป็นการประกาศตัวแปรชนดิ byte ช่อื x42 เกบ็ ข้อมูลเป็นตวั เลขฐานสิบแปดมคี า่
ข้อมลู เทา่ กับ 127

71

3.2.2 ตัวเลขจานวนทศนยิ ม
ชนิดข้อมูลจานวนทศนิยม ประกอบด้วยข้อมูลทเ่ี ป็นตัวเลขทศนยิ ม เชน่ 1200.578 การเขียน
โปรแกรมด้วยภาษา Java จะประกาศตวั แปรดว้ ยคาว่า float และ double โดยชนดิ ขอ้ มูล float จะ
เก็บข้อมลู 32 บติ ตามมาตรฐาน single precision คือมีส่วนละเอยี ดของตวั เลขจานวน 24 บิต และ
สว่ นเลขยกกาลัง 8 บติ และชนิดขอ้ มลู double จะเกบ็ ข้อมลู 64 บิตตามมาตรฐาน double
precision คอื มสี ่วนละเอยี ดของตัวเลขจานวน 53 บิต และส่วนเลขยกกาลัง 11 บติ รูปแบบการตัวเลข
ทศนิยมมี 2 แบบ ดงั นี้
1. ตวั เลขทศนยิ ม เป็นการเขียนตวั เลขทศนิยมท่ีมเี ครอ่ื งหมายจุดทศนิยม เช่น 3.141
2. ตัวเลขยกกาลงั สบิ เป็นการเขียนตัวเลขทศนิยมอยู่ในรปู เลขยกกาลงั สิบ (Exponential
Form) โดยใชต้ ัวอักษร E หรือ e ระบุจานวนท่ีเปน็ เลขยกกาลัง เชน่ 6.12E12 หรือ 125.03E-5 เป็นตน้
ขอ้ มลู ประเภทน้ี หมายถึง ข้อมลู ประเภทตวั เลขท่ีมจี ุดทศนิยม แบง่ เปน็ ชนดิ ตารางที่ 3.2

ตารางที่ 3.2 ข้อมลู ชนดิ ทศนิยม

ชนิด(Type) ขนาด(Size) พิสัย(Range)
Float 32บติ 3.4 e-38 ถงึ 3.4e+38
64บติ 1.7e-308 ถึง 1.7e+308
Double 80บติ 3.4e-4932 ถึง 3.4e+4932

Long Double

ตัวอยา่ งการประกาศชนิดข้อมูลจานวนทศนยิ ม เชน่
float f1 = 1234.157f;

เป็นการประกาศตวั แปรชนดิ float ชอ่ื f1 เก็บขอ้ มูลตัวเลขทศนิมขนาด 32 บติ และ
ตอ้ งใสต่ วั อักษร F หรอื f ต่อทา้ ยเพื่อระบวุ า่ เป็นชนิดข้อมูลแบบ float

double f2 = 2.18E6;

double f3 = 1234.157D;

เปน็ การประกาศตวั แปรชนดิ double ช่ือ f2, f3 เกบ็ ข้อมูลเปน้ เลขทศนยิ มแบบ 64
บติ โดยใส่ตวั อกั ษร D หรอื d ตอ่ ทา้ ย แต่โดยทว่ั ไปจะไมน่ ิยมใส่ตวั อักษรตอ่ ท้ายเพราะการเขยี นตวั เลข

ทศนยิ มท่ัวไปเป็นชนิดข้อมูลแบบ double อยแู่ ลว้
ตัวอย่างข้อมูลจานวนทศนยิ มที่ถกู ต้อง ได้แก่

123. 456E3 12.5e2 617.0e2F -3.14F 512.0E-12

ตวั อย่างข้อมูลจานวนทศนิยมทไี่ ม่ถูกต้อง ได้แก่

1,234.567 ไม่ถกู ต้องเพราะมเี ครื่องหมาย ,

1.2E50F ไม่ถูกต้องเพราะ ค่าข้อมูลเกนิ ขอบเขตของชนดิ ข้อมูลแบบ float

72

3.2.3 ชนดิ ข้อมลู อักขระ

ชนิดข้อมลู อักขระ จะต้องประกาศตัวแปรดว้ ยคาว่า char ในภาษาซี ข้อมูลประเภทนี้
หมายถงึ การเก็บข้อมลู เปน็ ตวั อกั ษร หรืออักขระบนแปน้ พิมพไ์ ดเ้ พียง 1 ตวั อกั ขระเท่านั้น การ
กาหนดคา่ ข้อมลู อกั ขระจะอยู่ในเครอื่ งหมาย ‘ ’ โดยจะขึ้นตน้ ดว้ ยสัญลกั ษณ์ \u และตามดว้ ย
เลขฐานสบิ หก (Hexadecimal Number) โดยมคี ่าตั้งแต่ ‘\u0000’ ถงึ ‘\uFFFF’

ตารางท่ี 3.3 ตัวแปรชนิดอักขระ

ชนดิ (Type) ขนาด(Size) พิสยั (Range)
Char 8บิต -128ถงึ 127
8บิต 0 ถงึ 255
Unsingned Char

ตวั อยา่ งการประกาศชนดิ ข้อมูลอักขระ เช่น

char grade= ‘A’;
char grade= ‘\u0041’;
เปน็ การประกาศตวั แปรท่มี ชี ่ือวา่ grade เป็นชนิดข้อมลู อักขระ มีการกาหนดค่าเร่มิ ต้นเป็น
ตวั อักษร A ซึง่ มีคา่ เปน็ เลขฐานสบิ หก คือ 0041
ตัวอักขระพิเศษ หรอื Escape Sequence เป็นการแสดงข้อมลู อกั ขระบนแป้นพมิ พท์ ่ใี ช้แทน
การขนึ้ บรรทดั ใหม่ หรอื ตวั อักขระพเิ ศษในการเขยี นโปรแกรม

ตารางท่ี 3.4 ตัวอักขระพเิ ศษทใี่ ชก้ ับชนดิ ข้อมลู อักขระ

ตัวอกั ขระพิเศษ รหัส Unicode ความหมาย
\b \u000B Backspace ลบอกั ขระตาแหน่งเคอรเ์ ซอร์
Tab การเวน้ ชอ่ งว่างตามระยะ
\t \u0009 New Line การข้นึ บรรทดั ใหม่
Return การขน้ึ บรรทดั ใหม่
\n \u000A Backslash แสดงตัวอกั ขระ \
Single Quote แสดงตัวอักขระ ‘
\r \u000D Double Quote แสดงตวั อกั ขระ “

\\ \u005C
\‘ \u0027
\“ \u0022

3.2.4 ข้อมูลชนิดตรรกะ

73

ชนดิ ข้อมลู ตรรกะจะตอ้ งประกาศตัวแปรด้วยคาวา่ boolean ซง่ึ เป็นขอ้ มลู ทีม่ คี วามจรงิ เป็นจรงิ
(true) หรือเทจ็ (false) ไดเ้ พียง 1 ค่าเท่าน้นั ใช้ในการตดั สินใจในเงือ่ นไขของคาสั่งควบคุม หรือคาสงั่
เก่ียวกับตรรกะของโปรแกรม ตัวอยา่ งการประกาศชนิดข้อมลู ตรรกะ เช่น

boolean flag = false;

เป็นการประกาศตัวแปรท่ีมีช่ือวา่ flag เป็นชนิดขอ้ มลู ตรรกะ มีการกาหนดค่าเร่ิมต้น
เป็น false

ตารางท่ี 3.5 ตัวแปรชนิดบูลีนและขนาดการจัดเกบ็

ชนิดข้อมลู รายละเอียดการจัดเก็บ

INT, INTEGER จดั เกบ็ ข้อมูลทเ่ี ป็นตัวเลขทม่ี ีคา่ ตง้ั แต่ -2,147,483,648 ถึง

2,147,483,647 ประเภทข้อมูลน้ีนยิ มใช้ในการคานวณ

SMALLINT จัดเกบ็ ข้อมูลทีเ่ ป็นตวั เลขทมี่ ีค่าตง้ั แต่ -32,768 ถงึ 32,767

TINYINT จัดเก็บข้อมูลท่เี ป็นตัวเลขทีม่ ีคา่ ตัง้ แต่ -128 ถึง 127

DECIMAL(L,D) จัดเก็บข้อมูลทีเ่ ปน็ ตัวเลขทก่ี าหนดเปน็ จานวนหลักและจานวนจุดทศนยิ ม

ได้ เชน่ DECIMAL(5,2) หมายถงึ สามารถเกบ็ ข้อมลู ได้ 3 หลักและ

ทศนิยม2 ตาแหน่งในระบบเลขฐานสิบ

FLOAT(m) จดั เกบ็ ข้อมลู ชนิดตัวเลขท่มี ีทศนยิ ม กาหนดให้ m มีค่าน้อยกว่า 24

CHAR(n) จัดเก็บตัวอักขระทปี่ ระกาศได้จานวน n ตัวอกั ษร เปน็ ความกว้างคงที่

เช่นCHAR(10) ถ้ามีข้อมลู เพียง 5 ตัวอักษรจะถูกใช้ตาม

จานวน 10 ตัวอกั ษรตามท่ีกาหนดเอาไว้ สามารถเกบ็ ตวั เลขไดแ้ ต่ไม่

สามารถนามาคานวณได้

VARCHAR(n) จัดเกบ็ ข้อมลู ประเภทอักขระเช่นเดียวกบั CHAR แตจ่ ะเก็บขอ้ มลู ตามทีม่ ี

ข้อมลู อย่จู รงิ สามารถจัดเกบ็ ตวั อักขระได้ถึง 255 อกั ขระ

TEXT เหมาะสาหรบั จดั เก็บอักขระท่ีมากกวา่ 255 อกั ขระ สามารถจดั เก็บ

อกั ขระไดส้ ูงสุด 65,535 อกั ขระ

DATE จดั เก็บข้อมลู ทเี่ ป็นวนั เดือนปี มรี ปู แบบ YYYY-MM-DD คา่ ตั้งแต่ 1000-

01-01 ถงึ 9999-12-31

DATETIME จัดเกบ็ ข้อมลู ท่เี ปน็ วนั เดือนปีเวลา มีรปู แบบ YYYY-MM-DD HH:MM:SS

คา่ ตง้ั แต่ 1000-01-01 00:00:00ถึง9999-12-31 23:59:59

3.2.5 ข้อมลู ประเภท Void

74

ข้อมูลประเภท Void หมายถึง ไมม่ ีคา่ ใดๆ ใช้สาหรับกาหนดประเภทฟังกช์ นั เพ่ือบอกว่า
ฟังก์ชนั ที่ถูกกาหนดให้เป็นประเภท Void หมายถึง ไมม่ ีการส่งค่าใดๆกลบั มา

ตารางที่ 3.6 พสิ ัยข้อมลู ที่คิดเคร่ืองหมายและไม่คิดเครื่องหมาย

ชนดิ ขอ้ มลู ความหมาย ไบต์ (bytes) พสิ ัย (range)
Char คดิ เครื่องหมาย 1 -128 ถึง 127
Int คดิ เครื่องหมาย 2 -32,768 ถงึ 32,767
Short คดิ เครื่องหมาย 2 -32,768 ถึง 32,767
short int คดิ เคร่ืองหมาย 2 -32,768 ถึง 32,767
-2,147,483,648 ถึง
Long คิดเครื่องหมาย 4 2,147,483,647

long int คดิ เคร่ืองหมาย 4 -2,147,483,648 ถึง
2,147,483,647
unsigned char ไมค่ ิดเคร่อื งหมาย 1
Unsigned ไม่คดิ เครอ่ื งหมาย 2 0 ถงึ 255
unsigned int ไมค่ ิดเคร่อื งหมาย 2 0 ถึง 65,535
unsigned short ไมค่ ดิ เคร่ืองหมาย 2 0 ถึง 65,535
unsigned short ไม่คิดเครอ่ื งหมาย 4 0 ถึง 65,535
signed char คิดเคร่ืองหมาย 1 0 ถึง 4,294,967,295
Signed คดิ เครื่องหมาย 2 0 ถึง 4,294,967,295
signed int คิดเคร่ืองหมาย 2 -32,768 ถึง 32,767
signed short คิดเครื่องหมาย 2 -32,768 ถึง 32,767
-32,768 ถึง 32,767

3.3 ตวั แปร (Variables)

การเขียนโปรแกรมภาษาคอมพวิ เตอร์ เม่ือมีการกาหนดตวั แปร ตวั แปรทุกตวั จะต้องถูก

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

3.3.1 ความหมายของตวั แปร

75

ตวั แปร (Variables) คือสว่ นท่วี างในหน่วยความจาของคอมพิวเตอร์ใชเ้ กบ็ ข้อมูลชนิดตา่ ง ๆ ที่
ถูกจองไว้ช่ัวคราวเพ่ือใชเ้ กบ็ ข้อมูลในขณะโปรแกรมกาลงั ทางาน เม่ือปดิ เครื่องหรอื ออกจากโปรแกรม
คา่ ตวั แปรนั้นจะหายไปทันที ตวั แปรในภาษาซี เชน่ จานวน (numbers) อกั ขระ (characters) และ
สตริงหรอื ข้อความ (string) เป็นต้น ตวั แปรในภาษาซี เป็นช่อื เรยี กแทนพืน้ ที่เกบ็ ข้อมูลในหนว่ ยความจา
มชี นิดของข้อมูลหรือแบบของตัวแปรคอื char, int, long, float, double, unsigned int, unsigned
long int

กฎในการตง้ั ช่ือ มดี ังน้ี
1. ประกอบดว้ ยตัวอกั ษร ตวั อักษรปนตวั เลข หรือปนเครื่องหมาย underscore ( _ ) ได้
2. ตวั แรกจะต้องเป็นตวั อักษรหรือเครอื่ งหมาย underscore ( _ ) เทา่ น้ัน
3. สามารถใช้ underscore เปน็ สว่ นของชอื่ ท่ีอยูร่ ะหวา่ งตัวอักษรหรือตวั เลขได้
3. ไมม่ ีการเว้นวรรคในชื่อตัวแปร
4. ไมใ่ ช้เครื่องหมายทางคณิตศาสตร์ สญั ลกั ษณ์”#” และ“^” ต้ังชือ่ ตัวแปร
5. เมือ่ ประกาศช่อื ตัวแปรเป็นประเภทใดแลว้ จะไม่สามารถประกาศตัวแปรเดิมเปน็ ประเภท
อน่ื ได้อกี
6. มีความยาวไดต้ ้ังแต่ 1 ตัวอกั ขระ ไปจนถงึ 32 ตวั อักขระ (เฉพาะเทอร์โบซแี ตบ่ างเคร่ือง
อาจได้น้อยหรือมากกกว่าน้ี )
7. หา้ มต้งั ชอื่ ซ้ากับคาสงวน (Reserved word) ซึ่งเป็นคือคาทีภ่ าษาซีกาหนดไวก้ ่อนแลว้
เพื่อใชง้ าน ไดแ้ ก่

Auto default float register struct
Volatile break do far return
Switch while case double goto
Short typedef char else if
Signed union const enum int
Sizeof unsigned continue extern long
Static void

8. คาท่ีผู้ใชต้ ้ังขึ้นใหม่ (User Defines words) คอื ชื่อท่ตี ัง้ ขนึ้ แลว้ เขยี นเปน็ ตวั เล็ก ตวั ใหญ่
หรอื ตวั ใหญ่ปนตัวเล็กจะถือว่าเป็นคนละช่อื กนั หมด เชน่ grade GRADE Grade จะถือเป็น 3 ชอ่ื ตัว
แปรทแี่ ตกต่างกันคอมไพเลอรใ์ นภาษาซสี ามารถเห็นความแตกต่างของช่ือตวั แปรไดย้ าว ไมเ่ กิน 8
ตัวอักษร และช่ือตัวแปรจะแตกต่างกนั ถ้าใช้รูปแบบของตวั อกั ษร ต่างกัน

76

ชอ่ื ตัวแปรที่ถูก ชอื่ ตวั แปรทผี่ ิด
Count 1count

Num1 3Num

Num2 m-num

การกาหนดตวั แปร ทาได้ 2 แบบ คอื
1. กาหนดไว้ นอกกลุ่มคาสั่ง หรือฟงั ก์ชนั เรยี กตัวแปรนวี้ า่ Global Variable กาหนดไวน้ อก

ฟงั ก์ชนั ใชง้ านได้ท้ังโปรแกรม มคี ่าเริม่ ต้นเปน็ 0 ( กรณีไม่ได้กาหนดค่าเร่ิมต้น )
2. กาหนดไว้ ในกลุ่มคาสัง่ หรือฟังกช์ นั เรยี กตวั แปรนี้วา่ Local Variable กาหนดไว้ ภายใน

ฟงั ก์ชัน ใช้งานได้ภายในฟังก์ชนั น้นั และไมถ่ ูกกาหนดคา่ เร่ิมตน้ โดยอัตโนมตั ิ

3.3.2 ชนิดของตัวแปรในภาษาซี
1. ตัวแปรแบบ char เปน็ ตวั แปรทีใ่ ช้สาหรบั เกบ็ ข้อมลู ท่เี ป็นตวั อักษรขนาด 1 ตัว โดยใช้

เนอื้ ท่ีในการเก็บ 1 ไบต์ ตวั อยา่ ง ตัวแปรชนดิ นี้ เชน่ 'A' , 'b' , '1' , '?'
2. ตัวแปรแบบ integer เปน็ ตัวแปรทใ่ี ช้สาหรับการเกบ็ คา่ ตวั เลขท่เี ปน็ จานวนเตม็ ที่มคี ่า

ระหว่าง - 32768 ถึง 32767 ใช้เน้ือทใี่ นการเกบ็ 2 ไบต์ ตวั อยา่ ง ตัวแปรชนดิ นี้ เช่น 5 , -10 , 2534
3. ตัวแปรแบบ long เปน็ ตัวแปรที่เกบ็ ค่าเป็นจานวนเตม็ ท่ีมีจานวนไบต์เปน็ 2 เท่าของ

จานวนเดมิ ( มกั จะใช้เปน็ คานาหน้าตวั แปร เชน่ long int )
4. ตัวแปรแบบ float เปน็ ตัวแปรท่ใี ชเ้ ก็บข้อมูลทีเ่ ปน็ เลขทศนิยม โดยจะเกบ็ อยใู่ นรปู
a.b

x 10 e ใช้พืน้ ท่ใี นการเก็บ 4 ไบต์ มคี ่าระหวา่ ง 3.4E-38 ถงึ 3.4E+38 หรือ แสดงเป็น เลขทศนยิ มไดไ้ ม่
เกิน 6 ตาแหน่ง ตัวอยา่ ง ตวั แปรชนดิ น้ี เช่น 10.625 -6.67

5. ตัวแปรแบบ double เปน็ ตวั แปรทเ่ี กบ็ ขอ้ มูลท่เี ป็นเลขทศนิยมเหมือนกบั float แตจ่ ะ
ใช้พน้ื ทีใ่ นการเก็บมากกวา่ เดิม 2 เท่า คือมขี นาด 8 ไบต์ มีค่าระหว่าง 1.7E-308 ถึง 1.7E+308

6. ตวั แปรแบบ unsigned แสดงว่าเป็นตวั แปรทเ่ี กบ็ ค่าเป็นจานวนเตม็ แบบไม่คดิ
เครื่องหมาย ( เป็นบวกเทา่ นั้น ) มักจะใชเ้ ปน็ คานาหน้าตัวแปร ตวั อยา่ งการใชง้ าน เชน่ unsigned int
การตัง้ ชอื่ ตวั แปรหา้ มใชช้ ื่อสงวนในการตง้ั ชอื่ ตวั แปร เชน่ int float

ตารางท่ี 3.7 ชนิดของตวั แปรและขนาดของตัวแปรในหน่วยความจา

77

ชนิดข้อมลู ความหมาย ไบต์(bytes) พิสัย (range)
char อักษรหรืออักขระ 1 -128 ถึง 127
Unsigned char อกั ษรหรืออักขระ 1
int จานวนเต็ม 2 0 ถึง 255
Long int จานวนเต็ม 4 -32,768 ถงึ 32,767
-2147483648 ถึง
Float จานวนจริง 4 2147483649
Double จานวนจริงละเอยี ด 2 เทา่ 8 3.4E + 38 (7 ตาแหนง่ )
Unsigned int จานวนเต็ม 2 1.7E + 308 (15 ตาแหนง่ )
Unsigned long int จานวนเต็ม 4 0 ถงึ 65535
Void ไมใ่ ห้ค่าใด ๆ 0 0 ถึง 4294967296
ไมใ่ ห้ค่า

ชนดิ ข้อมูลจากทไี่ ดก้ ล่าวมาแล้วในตารางที่ 3.6 ตัวแปรจะมี 4 ประเภทเท่าน้นั ทส่ี ามารถเกบ็
ข้อมูลเหลา่ นเี้ พ่อื ความคล่องตัว และสามารถเก็บข้อมูลนอกเหนอื จากนี้ได้ ในภาษาซจี ึงได้สร้างตัวแปร
ชนดิ ขอ้ มลู แบบ คดิ เคร่ืองหมาย (signed) ไมค่ ดิ เคร่ืองหมาย (unsigned), ยาว (long) และสัน้ (short)

ข้อสงั เกต
การกาหนดชนดิ ของตวั แปร มสี ่ิงท่ีควรพจิ ารณาอยู่ 2 ประการคือ ตัวแปรนั้น จะต้องสามารถ

รบั ค่าได้ทุกค่าโดยไมเ่ กินขอบเขตของข้อมลู ชนิดน้ัน และตัวแปรจะต้องไมใ่ ช่หนว่ ยความจามากเกนิ
ความจาเปน็ เช่น ถ้าข้อมูลไม่เกินขอบเขตของ int กไ็ ม่ควรกาหนดตัวแปรใหเ้ ปน็ float

3.3.3 การประกาศตัวแปร
การประกาศตัวแปร เป็นขนั้ ตอนสาคญั ในการเขยี นโปรแกรมภาษาคอมพวิ เตอร์

ภาษาคอมพวิ เตอร์บางภาษาสามารถใชง้ านตวั แปรไดเ้ ลยโดยไมต่ ้องประกาศ แต่ภาษาซเี ปน็ ภาษาที่

จะต้องประกาศตัวแปรก่อนจึงจะสามารถเรยี กใช้ตัวแปรนั้นได้ การประกาศตวั แปร (variable

declaration) คอื การจองเนื้อทใี่ นหน่วยความจาสาหรบั เก็บคา่ บางอยา่ งพร้อมทั้งกาหนดชอื่ เรียกแทน

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

หนว่ ยความจาดังกลา่ ว

รูปแบบการประกาศตวั แปร


Click to View FlipBook Version