Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore รวมเล่ม หนังสือคอมประยุกต์64

รวมเล่ม หนังสือคอมประยุกต์64

Published by comatts63, 2022-04-04 07:52:50

Description: รวมเล่ม หนังสือคอมประยุกต์64

Search

Read the Text Version

7. วธิ นี า URL ไปใชส้ ร้าง QR Code 7.1 กดปมุ่ น้ี เพอื่ สรา้ ง Url (ลิงค)์ 7.2 กดปมุ่ นี้ เพือ่ ทาให้ Url (ลงิ ค)์ สน้ั ลง 7.3 กดปุ่ม \"คัดลอก\" เพ่ือ Copy Url (ลิงค์) 8. สรา้ ง QR Code แบบสอบถามที่วัดผลได้ ลงทะเบียนใช้งาน กดลิงค์ https://yourqr.today/analytic/pages/register 8.1. Username: ดว้ ย Email 8.2. กาหนด Password 8.3. กด I AGREE TERMS AND CONDITIONS. 8.4. Submit รอยืนยันการลงทะเบยี นผ่าน Email คุณ การสร้างเวบ็ ไซตด์ ว้ ย Google Forms 95

9. Create QR Code แบบสอบถามดว้ ย QR Code Analytics 9.1 กดปุม่ \"Create QR Code\" เร่มิ ต้นการสร้าง 10. เพิ่มความแตกตา่ งใส่ข้อความบน QR Code ของคุณ 10.1 วาง URL (ลงิ ค)์ ที่ Copy ไว้ 10.2 ใสข่ อ้ ความ เพ่ือส่อื ถึง QR Code อะไร 10.3 กดปุ่ม \"Submit\" 10.4 กดปมุ่ \"Download\" 10.5 File จะถูก Save ลงในคอมพวิ เตอร์ของคุณ สามารถ Copyไฟล์ นาไปใชง้ าน 96 คอมพวิ เตอร์ประยุกต์

ติดตามวดั ผล QR ทส่ี รา้ ง เพื่อหาจานวนคนที่สแกน นอกจากการใช้งานด้วย QR Code สิ่งท่ีสาคัญอีกอย่างคือการวดั ผลการเขา้ ใช้ หากให้ดแี ล้วเราควรมี การวัดผลให้ชัดเจนวา่ มีคนมา scan QR code ของคุณก่ีคร้ัง scan จากช่องทางไหนบ้าง จะได้ทาการวดั ผลได้ อย่างชัดเจนว่าส่ือชนิดไหน หรือสถานท่ีไหน เมืองใด ประเทศใด มีประสิทธิภาพมากที่สุดเพ่ือที่จะได้นาข้อมูล เหล่านมี้ าพฒั นาการใชง้ านได้เพิ่มข้ึนในอนาคต การสร้างเว็บไซตด์ ้วย Google Forms 97

การเขียนโปรแกรมภาษาซีเบือ้ งตน้ ขัน้ ตอนวิธกี ารทางคอมพิวเตอร์ (Computer algorithms) โครงสรา้ งของโปรแกรมภาษา C  การแสดงผลข้อมลู (Output functions) ฟงั กช์ ันรบั ขอ้ มูล (Input functions) คาสงั่ ทดสอบเงอ่ื นไขเพ่อื การตัดสนิ ใจ (Decision statements)  การควบคุมการทางาน ผังงาน (Flowchart Diagram)

การเขียนโปรแกรมภาษาซเี บ้ืองต้น เนื้อหาในบทน้ีจะกล่าวถึงขั้นตอนวิธีการทางคอมพิวเตอร์ (computer algorithms) เพื่อเป็น การให้ความรู้พื้นฐานก่อนการเขียนโปรแกรมคอมพิวเตอร์ รวมถึงเนื้อหาเกี่ยวกับโครงสร้างภายใน โปรแกรมซ่ึงจะประกอบด้วยเนื้อหาเกี่ยวกับลักษณะของโปรแกรมแบบโครงสร้าง และรูปแบบ โครงสร้างภายในโปรแกรม เพื่อช่วยให้ผู้เขียนโปรแกรมสามารถเลือกใช้คาสั่งให้สอดคล้องกับ โครงสรา้ งภายในโปรแกรมได้ ซึ่งรายละเอียดของแตล่ ะเนื้อหามดี ังต่อไปน้ี  ขน้ั ตอนวิธีการทางคอมพิวเตอร์ (computer algorithms) ก่อนที่เราจะเขียนโปรแกรมคอมพิวเตอร์ภาษาใดภาษาหนึ่งเพื่อแก้ปัญหาทางคอมพิวเตอร์ เราควรศึกษาขั้นตอนวิธีการทางคอมพิวเตอร์ เพ่ือให้เกิดความรู้ความเข้าใจท่ีถูกต้องตามข้ันตอนวิธี ดงั นี้ 1. การวิเคราะห์งาน (job analysis) 2. การเขียนผงั งานโปรแกรม (program flowcharting) 3. การเขียนโปรแกรม (programming) 4. การทดสอบ และแกไ้ ขโปรแกรม (testing and editing program) 5. การจัดทาเอกสารประกอบ และการบารุงรักษาโปรแกรม (documentation and maintenance program) 1. การวิเคราะหง์ าน (Job analysis) ในการวิเคราะห์งานเราจะตอ้ งกาหนดจุดประสงค์ของการวิเคราะหง์ าน และข้นั ตอนวธิ ีการ วิเคราะห์งานแต่ละอยา่ งให้ได้ ซง่ึ งานแต่ละอย่างมรี ายละเอยี ดดังน้ี 1.1 จุดประสงค์ของการวิเคราะห์งาน ในการวิเคราะห์งานแต่ละอย่างมีจุดประสงค์ของ การวิเคราะห์งานท่ีสาคัญดังน้ี 1) เพอื่ หาวัตถุประสงคข์ องการเขียนโปรแกรม 2) เพ่อื หารูปแบบผลลัพธท์ ีต่ อ้ งการ 3) เพอ่ื หาข้อมลู นาเข้าทต่ี อ้ งใสเ่ ขา้ ไปในโปรแกรม 4) เพอ่ื หาตวั แปรท่จี าเปน็ ตอ้ งใช้ในโปรแกรม 5) เพอ่ื หาขั้นตอนวธิ ีการทางานของโปรแกรม 1.2 ขั้นตอนวิธีการวิเคราะห์งาน ในการวิเคราะห์งานแต่ละอย่างมีข้ันตอนวิธีการ วิเคราะหง์ านท่สี าคัญดงั น้ี การเขียนโปรแกรมภาษาซีเบื้องต้น 99

1. การหาวัตถุประสงค์ของการเขียนโปรแกรม ผู้เขียนโปรแกรมจะต้องหา วัตถุประสงค์จากงานที่จะเขียนโปรแกรมว่า ต้องการเขยี นโปรแกรมเพ่ือแก้ปัญหาอะไรบา้ งซึง่ จะทาให้ เขียนโปรแกรมไดต้ รงกับความต้องการหรอื วตั ถุประสงค์ของงานนัน้ 2. การหารูปแบบผลลัพธ์ที่ต้องการ เมื่อผู้เขียนโปรแกรมหาวัตถุประสงค์ของการ เขียนโปรแกรมได้แล้ว ข้ันตอนต่อมาคือการกาหนดรูปแบบผลลัพธ์ท่ีต้องการจากโปรแกรม ซ่ึง รูปแบบผลลัพธ์อาจอยู่ในลักษณะของข้อความหรือตัวเลข หรือตาราง หรือแผนภูมิ หรืออาจใช้ ผสมกันระหว่างตัวเลขกับข้อความ หรือข้อความกับตัวเลข และตารางก็ได้ ข้ึนอยู่กับผู้เขียน โปรแกรมเป็นผู้กาหนดเอง แต่โดยสว่ นมากนิยมแสดงผลลัพธข์ องโปรแกรมให้อยู่ในรูปแบบท่เี ข้าใจ งา่ ยมากกว่ารูปแบบท่ีซับซอ้ น 3. การหาข้อมูลนาเข้าที่ต้องใส่เข้าไปในโปรแกรม ผู้เขียนโปรแกรมจะต้องหาข้อมูล นาเข้าจากผลลัพธท์ ี่ไดจ้ ากโปรแกรม โดยคานึงถงึ ขนั้ ตอนวธิ กี ารคานวณ และขอ้ มูลที่จาเป็นตอ้ งใสเ่ ข้า ไปเพ่ือใหไ้ ดผ้ ลลพั ธท์ ตี่ ้องการ 4. การหาตวั แปรทจี่ าเป็นตอ้ งใชใ้ นโปรแกรม ตวั แปร หมายถงึ ชอ่ื ทีผ่ ู้เขียนโปรแกรม สามารถตั้งข้ึนเองตามหลักการต้ังช่ือตัวแปรของภาษาคอมพิวเตอร์ที่นามาเขียนโปรแกรม เพ่ือใช้ใน การอ้างอิงการเก็บข้อมูลและเรียกใช้ข้อมูลภายในตัวแปร ดังน้ันผู้เขียนโปรแกรมจะต้องต้ังชื่อตัว แปรที่ใช้ในการเก็บข้อมูลทั้งหมดภายในโปรแกรม รวมถึงตัวแปรบางตัวท่ีใช้ในการนับจานวนรอบ ของการทางานในโปรแกรมอกี ดว้ ย ตัวอย่างท่ี 1.1 ผลลัพธ์ที่ต้องการ คือ พื้นท่ีสามเหล่ียมมุมฉากข้อมูลนาเข้าท่ีต้องใส่เข้าไปใน โปรแกรม คอื สตู รคานวณพ้ืนทีส่ ามเหลีย่ มมมุ ฉาก 1. พ้ืนที่สามเหลย่ี มมมุ ฉาก = ? x ฐาน x สูง 2. ความยาวของฐานและความสูงของรปู สามเหล่ียม สามารถแสดงการวเิ คราะห์งานตั้งแตข่ ้ันตอนที่ 1 ถงึ 4 ไดด้ งั น้ี 1) วตั ถปุ ระสงค์ของการเขยี นโปรแกรม เพือ่ คานวณหาค่าพน้ื ที่สามเหลี่ยมมมุ ฉาก 2) รูปแบบผลลพั ธ์ทีต่ ้องการพมิ พ์ผลลพั ธ์ท่ตี ้องการออกทางภาพดงั น้ี ***output*** Base=5 High=4 Area=10 3) ขอ้ มูลนาเขา้ คือ ความยาวฐานและความสูง 4) ตวั แปรทใ่ี ช้ B = ตัวแปรทเ่ี ก็บความยาวของสามเหล่ียมมมุ ฉาก H = ตวั แปรท่ีเก็บความสงู ของสามเหลย่ี มมุมฉาก Area = ตัวแปรทเี่ กบ็ ผลลพั ธท์ ีไ่ ด้จากการคานวณตามสูตร Area = 1/2*B*H หรือ Area = 0.5*B*H 100 การเขียนโปรแกรมภาษาซีเบื้องต้น

5. การหาขั้นตอนวิธีการทางานของโปรแกรม การหาข้ันตอนวิธีการทางานของ โปรแกรมจะขึ้นอยู่กับลักษณะของการแก้ปัญหา ดังนั้นนักเขียนโปรแกรมที่มีความชานาญในระดับ หนึ่งแล้วจะสามารถหาข้ันตอนวิธีการทางานของโปรแกรมได้โดยไม่ยาก แต่สาหรับผู้ที่เริ่มต้นศึกษา การเขียนโปรแกรม ควรหาข้นั ตอนวธิ ีการทางานของโปรแกรมตามคาแนะนาโดยเรียงตามลาดบั ดงั น้ี ขัน้ ตอนวธิ กี ารทางานของโปรแกรมท่แี นะนา 5.1) เริ่มตน้ ทางาน 5.2) กาหนดค่าเริ่มต้นให้กับตัวแปร 5.3) พมิ พห์ วั รายงาน (ถ้ามีรายงาน) 5.4) รบั ข้อมูลเข้าทลี ะเรคคอร์ด 5.5) ตรวจสอบขอ้ มลู ว่าเปน็ ชุดสดุ ท้ายหรือไม่ 5.5.1 ถา้ เปน็ ข้อมลู ชดุ สุดทา้ ย ใหไ้ ปทางานข้อ 5.11 5.5.2 ถ้าไมใ่ ช่ข้อมลู ชดุ สุดท้าย ใหท้ างานข้อต่อมา (ข้อ 5.6) 5.6) คานวณผลลพั ธ์ 5.7) เปรียบเทียบผลลพั ธ์ (ถา้ ม)ี 5.8) เพ่ิมค่าตวั แปรสะสม (ถ้ามี) 5.9) พิมพ์ค่าผลลพั ธ์ทลี ะเรคอร์ด 5.10) ยอ้ นกลบั ไปทางานข้อ 5.4 5.11) พิมพ์สรุป (ถ้ามี) 5.12) จบการทางาน ท้ังน้ีการวิเคราะหง์ านเพ่ือแกป้ ญั หาแตล่ ะอยา่ งอาจมีบางขน้ั ตอนแตกต่างกันไป ดังนัน้ คาแนะนา ข้างต้นจึงเป็นเพียงแนวทางของการหาข้ันตอนวิธีการทางานของโปรแกรมเท่าน้ัน ซ่ึงเวลาใช้งาน จรงิ ผู้วเิ คราะหง์ านตอ้ งประยุกต์ใหเ้ ข้ากับปัญหาท่ตี ้องการแก้ไขต่อไป เพ่ือความเข้าใจเกี่ยวกับข้ันตอนวิธีการวิเคราะห์งานมากยิ่งขึ้น ให้ศึกษาจากตัวอย่างการ วิเคราะห์งานดงั ตอ่ ไปน้ี ตวั อย่างที่ 1.2 จงเขียนวิเคราะห์งาน เพ่ือเขียนโปรแกรมคานวณ พ้ืนท่ีส่ีเหล่ียมผืนผ้า จานวน 1 รูป โดยที่ผู้ใช้โปรแกรม จะต้องปอ้ นความกวา้ ง และความยาวของสี่เหล่ียมผนื ผ้า เขา้ ไปในโปรแกรม วิธที า ข้ันตอนการวิเคราะห์งานท้ัง 5 ข้นั ตอน สามารถแสดงไดด้ งั นี้ 1) วตั ถปุ ระสงคข์ องการเขยี นโปรแกรม เพ่อื คานวณพ้ืนทส่ี ี่เหล่ยี มผืนผา้ จานวน 1 รปู 2) รปู แบบผลลัพธ์ที่ต้องการ พิมพ์ผลลัพธอ์ อกทางจอภาพ ดังนี้ การเขยี นโปรแกรมภาษาซีเบ้ืองตน้ 101

3) ข้อมูลนาเขา้ 3.1 สตู รคานวณพื้นทส่ี ่ีเหลี่ยมผนื ผา้ Area = Width*Length 3.2 รบั คา่ ความกวา้ งและความยาวของส่เี หล่ียมผนื ผ้าผา่ นทางคยี ์บอร์ด 4) ตวั แปรทีต่ ั้งขึ้นเพือ่ ใชใ้ นโปรแกรม Width = ตวั แปรทใ่ี ชเ้ กบ็ ความกว้างของส่ีเหล่ียมผืนผา้ Length = ตัวแปรทใ่ี ช้เกบ็ ความยาวของส่เี หล่ียมผืนผา้ Area = ตวั แปรที่ใชเ้ กบ็ พน้ื ทข่ี องส่ีเหลยี่ มผนื ผ้า โดยคานวณไดจ้ ากสูตร Area = Width*Length 5) ข้นั ตอนวิธีการทางานของโปรแกรมมีดังนี้ 5.1 เริม่ ตน้ ทางาน 5.2 รับขอ้ มลู คา่ ความยาวและความกว้างของส่ีเหลี่ยมผืนผา้ ผา่ นทางคยี ์บอร์ด 5.3 คานวณพนื้ ทีส่ ่ีเหล่ยี มผนื ผ้าตามสตู ร Area = Width*Length 5.4 พิมพ์คา่ ความยาว ความกวา้ ง และพนื้ ทส่ี เ่ี หล่ียมผืนผ้าออกทางจอภาพ 5.5 จบการทางาน 2. ผงั งาน (Flowchart Diagram) ผังงาน (Flowchart) คือ รูปภาพ (Image) หรือสัญลักษณ์(Symbol) ท่ีใช้เขียนแทนขั้นตอน คาอธิบาย ข้อความ หรือคาพูด ทใ่ี ช้ในอลั กอริทึม (Algorithm) เพราะการนาเสนอข้ันตอนของงานให้ เขา้ ใจตรงกัน ระหว่างผเู้ ก่ียวขอ้ ง ด้วยคาพดู หรือข้อความทาไดย้ ากกวา่ ผงั งานแบง่ ได้ 2 ประเภท 1. ผังงานระบบ (System Flowchart) คือ ผังงานที่แสดงขั้นตอนการทางานในระบบ อยา่ งกว้าง ๆ แตไ่ ม่เจาะลงในระบบงานย่อย 2. ผังงานโปรแกรม (Program Flowchart) คือ ผังงานที่แสดงถึงขั้นตอนในการทางาน ของโปรแกรม ตง้ั แต่รับขอ้ มูล คานวณ จนถงึ แสดงผลลพั ธ์ 102 การเขยี นโปรแกรมภาษาซีเบ้ืองตน้

การเขยี นผงั งานในการทางาน ผงั งาน เปน็ เครือ่ งมอื สาหรบั วาดภาพ 2 มติ ิ นาเสนอขัน้ ตอนการดาเนนิ การ มกั ใชใ้ นการ แสดงแบบโปรแกรมที่ไมซ่ บั ซ้อนมากนัก ต่อมาก็มกี ารประยุกต์ใช้แสดงขั้นตอนการทางานของส่วน งานตา่ ง ๆ เพราะสญั ลกั ษณ์ในแผนภาพช่วยในการอธิบายการทางานแบบมีเงื่อนไขได้ดีกว่าการเขียน เชิงพรรณา ประโยชนข์ องการใช้ผังงาน 1. ทาให้เขา้ ใจ และแยกแยะปัญหาได้ง่าย (Problem Define) 2. แสดงลาดับการทางาน (Step Flowing) 3. หาข้อผดิ พลาดไดง้ า่ ย (Easy to Debug) 4. ทาความเขา้ ใจโปรแกรมได้งา่ ย (Easy to Read) 5. ไมข่ ้นึ กบั ภาษาใดภาษาหน่งึ (Flexible Language) การเขยี นโปรแกรมแบบมีโครงสร้าง หรอื การโปรแกรมโครงสร้างประกอบดว้ ยอะไรบา้ ง ภาษาต้องมีหลักการ 3 อย่างนี้คือ การทางานแบบตามลาดับ(Sequence) การเลือกกระทา ตามเงือ่ นไข(Decision) และ การทาซ้า(Loop) แม้ตาราหลาย ๆ เล่มจะบอกว่า decision แยกเป็น if กบั case หรือ loop นนั้ ยงั แยกเป็น while และ until ซง่ึ แตกตา่ งกัน 1. การทางานแบบตามลาดับ (Sequence) รูปแบบการเขียนโปรแกรมที่ง่ายท่ีสุดคือ เขียนให้ทางานจากบนลงล่าง เขียนคาส่ังเป็น บรรทัด และทาทีละบรรทัดจากบรรทัดบนสุดลงไปจนถึงบรรทัดล่างสุด สมมติให้มีการทางาน 3 กระบวนการคือ อา่ นข้อมลู คานวณ และพมิ พ์ การเขียนโปรแกรมภาษาซีเบ้ืองตน้ 103

2. การเลือกกระทาตามเงื่อนไข (Decision or Selection) การตัดสินใจ หรือเลือกเงื่อนไขคือ เขียนโปรแกรมเพื่อนาค่าไปเลือกกระทา โดยปกติจะมี เหตุการณ์ใหท้ า 2 กระบวนการ คอื เงอื่ นไขเปน็ จรงิ จะกระทากระบวนการหน่งึ และเป็นเท็จจะกระทา อกี กระบวนการหน่ึง แต่ถ้าซับซ้อนมากขึ้น จะต้องใช้เงื่อนไขหลายชั้น เช่นการตัดเกรดนักศึกษา เป็น ต้น ตัวอย่างผงั งานนี้ จะแสดงผลการเลือกอย่างงา่ ย เพ่อื กระทากระบวนการเพยี งกระบวนการเดยี ว 3. การทาซา้ (Repeation or Loop) การทากระบวนการหน่ึงหลายคร้ัง โดยมีเงื่อนไขในการควบคุม หมายถึงการทาซ้าเป็น หลักการท่ีทาความเข้าใจได้ยากกว่า 2 รูปแบบแรก เพราะการเขยี นโปรแกรมแต่ละภาษา จะไม่แสดง ภาพอยา่ งชดั เจนเหมือนการเขียนผังงาน ผู้เขยี นโปรแกรมต้องจินตนาการด้วยตนเอง 104 การเขียนโปรแกรมภาษาซเี บ้ืองตน้

ทาความเขา้ ใจกับผังงานกอ่ นลงมอื เขียน หน้าที่ของผังงาน คือ การนาเสนอกระบวนการ (Process) ในขอบเขตจากดั ให้เข้าใจว่าหาก รบั ข้อมูลเขา้ (Input) แลว้ จะประมวลผลอย่างไร จึงได้ออกมาเปน็ ผลลพั ธ์ (Output) ในอดีตการเขียน โปรแกรม หรือกระบวนการไม่ซับซ้อน การมองภาพว่า input - process - output สามารถอยู่ในผัง งานเดียวกันก็ทาได้ จึงนิยมใช้เป็นเคร่ืองมือสร้างทักษะให้กับผู้เริ่มต้นในการมองการประมวลผลของ ระบบทีละขั้นตอน ปัจจุบนั การประมวลผล จะรับข้อมูล แลว้ ประมวลผล ส่งผลไปเป็นข้อมูลของอีกกระบวนการ หน่ึง อาจทาอย่างนี้อีกหลายรอบ ด้วยกระบวนการ และข้อมูลท่ีต่างกัน การใช้ผังงานจึงได้รับความ นิยมลดลงในการใช้แสดงแบบซอฟท์แวร์ขนาดใหญ่ เนื่องจากการประมวลผลมีความซับซ้อนมากขึ้น ปัจจุบันมีการใช้ Data Flow Diagram หรือ UML มาแสดงแบบซอฟท์แวร์ท่ีมองได้กว้างและ ครอบคลุมกวา่ + Process = ประมวลผล + Procedure = กระบวนการ การเขียนโปรแกรมภาษาซีเบ้ืองต้น 105

การเขยี นผงั งาน ผงั งาน โจทย์ - พมิ พเ์ ลข 0 ถงึ 4 ทางจอภาพ - รับคา่ จากแป้นพมิ พ์เก็บลงตวั แปรอาร์เรย์ 5 ตวั - แลว้ ทาซ้าอกี ครัง้ เพื่อหาค่าสงู สุด 106 การเขยี นโปรแกรมภาษาซเี บ้ืองต้น

3. การเขียนผงั งานโปรแกรม (Program flowcharting) สาหรับหัวข้อการเขียนผังงานโปรแกรมจะประกอบด้วยเน้ือหาที่สาคัญดังนี้คือ ความหมาย ของผังงาน ประเภทของผังงาน สัญลักษณ์มาตรฐานท่ีใช้เขียนผังงานโปรแกรม หลักการเขียนผัง งานโปรแกรม และขัน้ ตอนการเขียนผงั งานโปรแกรม ดังรายละเอยี ดต่อไปน้ี 1.ความหมายของผังงาน “ผังงาน” (flowchart) ทางคอมพิวเตอร์ หมายถึง แผนภาพที่เขียนข้ึนโดยใช้ สญั ลักษณม์ าตรฐาน เพ่ือแสดงขน้ั ตอนวิธกี ารทางานของโปรแกรม หรอื ระบบงานทีต่ ้องการ 2.ประเภทของผงั งาน ผั ง ง า น ส า ม า ร ถ จ า แ น ก อ อ ก ไ ด้ 2 ป ร ะ เ ภ ท คื อ ผั ง ง า น ร ะ บ บ (system flowchart) หมายถึง ผงั งานทแี่ สดงถึงขน้ั ตอนวิธกี ารทางานของระบบงานใดระบบหนงึ่ ซึ่งในผังงาน ระบบจะแสดงให้เห็นถึงส่ือท่ีใช้รับข้อมูล บันทึกข้อมูล วิธีการประมวลผล ข้ันตอนการทางานและ ความสัมพนั ธ์ของส่วนต่าง ๆ ในระบบงานอย่างกว้าง ๆ เพื่อให้เห็นภาพรวมของระบบงานใดระบบงาน หนึ่ง เชน่ ผังงานโปรแกรม (program flowchart) หมายถึง ผังงานที่แสดงข้ันตอน วิธีการ ทางานของโปรแกรมที่ต้องการเขียนข้ึน ภายในผังงานโปรแกรมจะแสดงให้เห็นขั้นตอนวิธีการทางาน ของโปรแกรมอย่างละเอียด เพ่ือให้คอมพิวเตอร์ สามารถทางานตามท่ีเขียนไว้ในผังงานโปรแกรมได้ อย่างถูกต้อง โดยเราสามารถนาข้ันตอน วิธีการทางานของโปรแกรมในขั้นการวิเคราะห์งาน มาเขียน เป็นผังงานโปรแกรมได้ทันที จากน้ันก็สามารถนาผังงานโปรแกรมไปเขียนโปรแกรมตามท่ีต้องการได้ ดังน้ันในเรอื่ งของการเขียนผงั งาน ทจ่ี ะกลา่ วตอ่ ไปน้จี ะเกี่ยวข้องกบั ผังงานโปรแกรมทั้งส้นิ เช่น การเขียนโปรแกรมภาษาซีเบื้องตน้ 107

3.สัญลกั ษณม์ าตรฐานที่ใช้เขยี นผงั งานโปรแกรม สถาบันมาตรฐานแห่งชาติของสหรัฐอเมริกา(American National Standard Institute) และองค์การระหว่างประเทศว่าด้วยการมาตรฐาน (International Organization for Standardization) ได้รว่ มกนั กาหนดสัญลักษณ์มาตรฐานท่ีใชเ้ ขยี นผังงานโปรแกรม โดยในเอกสารเลม่ น้ี จะนาเสนอสัญลกั ษณท์ น่ี ยิ มนามาใชเ้ ขยี นผังงานโปรแกรม ดังต่อไปนี้ สญั ลกั ษณ์ Process Process ความหมายของ Process คอื การกาหนดคา่ หรอื การคานวณคา่ ตัวอยา่ งที่ 1 แสดงการกาหนดค่าให้ตัวแปร Total ตวั อยา่ งที่ 2 แสดงการคานวณคา่ ผลรวมของตวั แปร Total สญั ลกั ษณ์ Decision Decision ความหมายของ Decision คือ การทดสอบเง่ือนไขหรือเปรยี บเทียบเงอื่ นไข เพื่อ ตัดสนิ ใจทางานอย่างใดอยา่ งหนงึ่ ตามทต่ี อ้ งการ 108 การเขียนโปรแกรมภาษาซเี บื้องต้น

ตวั อย่างที่ 3 แสดงการเปรยี บเทียบเงื่อนไข 1 ทางเลอื ก แสดงการเปรียบเทียบเงื่อนไข 2 ทางเลือก สญั ลักษณ์ Start/ Stop program หรอื Terminal Interrupt Start/ Stop ความหมายของสัญลักษณ์ คือ การเร่ิมต้นโปรแกรม หรือการส้ินสุดการทางานของ โปรแกรม หรือหยุดการทางานช่ัวคราว การเขยี นโปรแกรมภาษาซีเบ้ืองต้น 109

ตวั อย่างท่ี 4 แสดงการใชง้ านสญั ลกั ษณ์ Start/ Stop program หรอื Terminal Interrupt สญั ลกั ษณ์ Input / Output ความหมายของสัญลักษณ์ คือ การรับข้อมูล (input) หรือการแสดง ผลลัพธ์ (output) โดยไม่ไดร้ ะบสุ อื่ ท่ีใช้ ตัวอยา่ งท่ี 5 แสดงการใชง้ านสัญลักษณ์ Input/ Output สญั ลกั ษณ์ Display ความหมายของสัญลกั ษณ์ คือ การแสดงผลลัพธท์ างจอภาพ 110 การเขยี นโปรแกรมภาษาซีเบื้องต้น

ตัวอยา่ งท่ี 6 แสดงการใช้งานสัญลักษณ์ display สญั ลกั ษณ์ Document ความหมายของสัญลักษณ์ คอื การพิมพ์ผลลัพธ์ออกทางกระดาษพิมพ์ ตัวอยา่ งที่ 7 แสดงการใช้งานสัญลกั ษณ์ Document สญั ลกั ษณ์ Manual Input ความหมายของสัญลักษณ์ คือ การรับข้อมลู หรือคาส่ังผา่ นทางคยี บ์ อร์ด ตวั อยา่ งท่ี 8 แสดงการใชง้ านสญั ลักษณ์ Manual Input สัญลกั ษณ์ Manual Operation การเขียนโปรแกรมภาษาซีเบ้ืองตน้ 111

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

6. สัญลกั ษณ์ Off page Connector ความหมายของสญั ลกั ษณ์ คือ แสดงจุดเช่ือมตอ่ จากที่หนง่ึ ไปยังอีกท่ีหนึ่งของผัง งาน โดยที่จุดเชอื่ มต่อนอ้ี ย่ตู ่างหน้ากัน ตัวอย่างท่ี 11 แสดงการใช้งานสญั ลกั ษณ์ Off page Connector คานวณค่า Avg = Total + N เสร็จแล้ว ไปทางานตอ่ ไปทจ่ี ดุ B โดยทจ่ี ุด B อยู่ ต่างหนา้ กนั สญั ลกั ษณ์ flow line and arrowheads ความหมายของสัญลักษณ์ คือ แสดงทิศทาง การทางานของผังงาน โดยใช้ลูกศร เป็นตัวกาหนดทิศทาง การทางานของผงั งาน การเขยี นโปรแกรมภาษาซีเบื้องตน้ 113

ตัวอยา่ งที่ 12 แสดงการใช้งานสัญลกั ษณ์ flow line and arrowheads สัญลักษณ์ Punched Card ความหมายของสัญลกั ษณค์ อื การรับขอ้ มูลหรือแสดงผลลัพธ์บนบตั รเจาะรู ตัวอยา่ งที่ 13 แสดงการใชง้ านสญั ลกั ษณ์ Punched Card หลกั การเขยี นผังงานโปรแกรม การเขียนผังงานโปรแกรม มีหลักการเขียนดงั นี้ 1.เขยี นผังงานจากดา้ นบนลงด้านลา่ ง 2.ใชส้ ญั ลักษณ์ใหต้ รงกบั ความหมายของผังงาน 3.ใชเ้ ส้น flow line และ arrowheads แสดงทิศทางการทางานของผงั งาน 4.ใสค่ าอธิบายลงในสญั ลักษณ์ส้ัน ๆ แตเ่ ข้าใจงา่ ย จะใชภ้ าษาไทยหรอื อังกฤษกไ็ ด้ 5.หลีกเล่ียงการโยงเส้นทิศทางของผังงานให้ตัดกันเพราะจะทาให้สับสน ควรใช้จุดเชื่อมต่อ (connector) หนา้ เดียวกันแทน จะเข้าใจได้ง่ายและเปน็ ระเบยี บ 6.พยายามเขียนผังงานให้จบในหน้ากระดาษเดียวกัน แต่ถ้าไม่จบในหน้าเดียวกัน ควรใช้จุดเชื่อมต่อ ต่างหนา้ กระดาษ (off page connector) 114 การเขยี นโปรแกรมภาษาซเี บ้ืองตน้

ขัน้ ตอนการเขียนผงั งานโปรแกรม เพ่ือความเข้าใจเกี่ยวกับข้ันตอนการเขียนผังงานโปรแกรมได้ถูกต้องให้ศึกษาจาก ตวั อยา่ งดงั ต่อไปนี้ ตวั อย่างท่ี 14 จงเขยี นผังงานโปรแกรมที่ได้วิเคราะห์งานมาแล้วในตวั อย่างที่ 1.2 วิธที า จากการวเิ คราะห์งานในตัวอยา่ งที่ 1.2 จะไดว้ ่า ขัน้ ตอนวธิ กี ารทางานของโปรแกรม มีดงั นี้ 1) เริม่ ต้นทางาน 2) รับขอ้ มูลค่าความยาว และความกว้างของสเ่ี หลี่ยมผืนผา้ ผา่ นทางคีย์บอร์ด 3) คานวณพน้ื ที่ส่ีเหลยี่ มผนื ผา้ ตามสตู ร Area = Width * Length 4) พิมพ์ค่าความยาว ความกวา้ ง และพน้ื ท่สี ี่เหล่ยี มผนื ผา้ ออกทาง จอภาพ 5) จบการทางาน การเขียนผังงานโปรแกรม จะนาขั้นตอนวิธีการทางานของโปรแกรม ท่ีได้จากการ วเิ คราะหง์ าน มาเขียนผังงานได้ดังนี้ รปู แสดงผงั งานข้นั ตอนวธิ กี ารทางานของโปรแกรม ท่ีมา : สมชาย รตั นเลิศนุสรณ์, 2545 : 17. การเขียนโปรแกรมภาษาซีเบื้องตน้ 115

3. การเขียนโปรแกรม (Programming) ในหัวข้อเร่ืองการเขียนโปรแกรมจะกล่าวถึงเนื้อหา 2 ส่วน คือความหมายของโปรแกรม คอมพิวเตอร์ และภาษาคอมพวิ เตอรด์ งั มีรายละเอียดต่อไปน้ี 1. ความหมายของโปรแกรมคอมพิวเตอร์ โปรแกรมคอมพิวเตอร์ (computer program) หมายถึง ชุดของคาส่ังที่เขียนข้ึนเพ่ือ สั่งให้คอมพิวเตอร์ทางานตามที่ต้องการ ส่วนการเขียนโปรแกรม (programming) หมายถึง การเขียน ชดุ คาสั่งด้วยภาษาคอมพวิ เตอรภ์ าษาใดภาษาหน่ึง เพื่อใหค้ อมพิวเตอรท์ างานตามโปรแกรมท่ีเราเขียนขึ้น ดังน้ัน ผู้เขียนโปรแกรม (programmer) จึงจาเป็นต้องเรียนรู้ภาษาคอมพิวเตอร์ ภาษาใดภาษาหนึ่งหรือหลายภาษา แล้วฝึกฝนทักษะการเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ท่ี ต้องการใช้งานให้เกดิ ความชานาญจึงจะสามารถเขยี นโปรแกรมคอมพิวเตอร์ได้อยา่ งมีประสิทธิภาพ 2. ภาษาคอมพิวเตอร์ ภาษาคอมพิวเตอร์ (computer language) หมายถึง ภาษาที่สามารถนามาใชเ้ ขียน โปรแกรมคอมพวิ เตอรไ์ ด้ ซง่ึ แตล่ ะภาษามรี ายละเอยี ดดงั ตอ่ ไปนี้ 3. ภาษาเคร่ือง (machine language) ภ า ษ า เ ค รื่ อ ง จั ด เ ป็ น ภ า ษ า ค อ ม พิ ว เ ต อ ร์ ภ า ษ า เ ดี ย ว ท่ี ส า ม า ร ถ ติ ด ต่ อ กั บ คอมพิวเตอร์ได้โดยตรง เพราะว่าการเขียนคาสั่งและข้อมูลในภาษาเครื่องใช้ระบบเลขฐานสอง (binary number system) คือ ใช้ตัวเลข 0 และ 1 เท่าน้ัน ทาให้เครื่องคอมพิวเตอร์สามารถทางาน ได้รวดเร็ว ส่วนข้อเสียของภาษาเครื่อง คือ เคร่ืองคอมพิวเตอร์ต่างชนิดกันมีลักษณะการเขียน ภาษาเครื่องท่ีแตกต่างกันไป และเกิดความยุ่งยากในการปรับปรุงแก้ไข ทาให้เกิดความไม่สะดวกใน การใช้งาน ดงั นัน้ ภาษานีจ้ ึงไม่เหมาะกบั ผ้เู รมิ่ ตน้ เขยี นโปรแกรม ตวั อยา่ งที่ 15 แสดงคาสง่ั ของภาษาเครอ่ื งมีดังนี้ ถ้าเราตอ้ งการสั่งใหเ้ ครอื่ งทางานตามคาสั่ง 9 + 3 แสดงได้ดงั น้กี ารบวกแทนดว้ ยรหสั 10101010 เลข 9 เปล่ยี นเปน็ เลขฐานสอง 00001001 เลข 3 เปลี่ยนเปน็ เลขฐานสอง 00000011 ดังน้นั คาส่งั 9 + 3 เขยี นเปน็ ภาษาเครอื่ งไดด้ งั นี้ 1001 10101010 00000011 4. ภาษาแอสเซมบลี (assembly language) ภาษาแอสเซมบลีหรือจะเรียกชื่ออีกอย่างว่าภาษาระดับต่า ซ่ึงเป็น ภาษาคอมพิวเตอร์ท่พี ฒั นาขนึ้ มาเพื่อให้ผูเ้ ขยี นโปรแกรมสามารถเขียนโปรแกรมติดตอ่ กบั คอมพวิ เตอร์ ได้ง่ายกว่าภาษาเครื่อง ส่วนการเขียนคาสั่งในภาษาแอสเซมบลีจะใช้คาย่อของภาษาอังกฤษและอ้าง ถึงตาแหน่งท่ีอยู่ภายในคอมพิวเตอร์เป็นส่วนใหญ่ ได้แก่ MOVE, DC, DS, CL10 เป็นต้น ผู้ที่ต้องใช้ ภาษาแอสเซมบลสี ่วนมากจะเปน็ วศิ วกรคอมพวิ เตอร์ ดังน้ันภาษาแอสเซมบลีจงึ ไม่เหมาะกับผู้เริ่มต้น เขียนโปรแกรม 116 การเขียนโปรแกรมภาษาซเี บื้องตน้

ตัวอย่างท่ี 16 แสดงคาส่งั ของภาษาแอสเซมบลีมีดงั น้ี ถ้าเราต้องการสั่งให้เครอ่ื งทางานตามคาสง่ั 9 + 3 แสดงไดด้ ังน้ี MOV AX, 9 MOV BX, 3 ADD AX, BX 5.ภาษาระดับสูง (high level language) ภ า ษ า ร ะ ดั บ สู ง เ ป็ น ภ า ษ า ท่ี ผู้ เ ขี ย น โ ป ร แ ก ร ม ส า ม า ร ถ เ ข้ า ใ จ ไ ด้ ง่ า ย ก ว่ า ภาษาแอสเซมบลีและภาษาเครื่อง ทั้งน้ีก็เพราะการเขียนคาสั่งของภาษาระดับสูงมีลักษณะเป็น ภาษาองั กฤษ ซึง่ อ่านแลว้ เข้าใจได้ง่ายกว่าภาษาแอสเซมบลี เชน่ ใช้คาวา่ READ, WRITE, PRINT, COMPUTE เป็นต้น ตัวอย่างของภาษาระดับสูงได้แก่ ภาษาฟอร์แทรน (FORTRAN), ภาษาโค บอล (COBOL), ภาษาเบสิก (BASIC), ภาษาปาสคาล (PASCAL) และภาษาซี (C) เป็นต้น ซ่ึงแต่ ละภาษามปี ระวตั พิ อสงั เขปดงั ต่อไปนี้  ภ า ษ า ฟ อ ร์ แ ท ร น (FORTRAN ย่ อ ม า จ า ก Formula Translator) พั ฒ น า โ ด ย บริษัท IBM ระหว่างปี ค.ศ.1954 ถึง ค.ศ.1957 ภาษาน้ีใช้สาหรับการพัฒนาโปรแกรมประยุกต์ ด้านวิทยาศาสตรแ์ ละวิศวกรรมศาสตร์ ท่ตี ้องใชใ้ นการคานวณสมการคณิตศาสตรท์ ่ีซับซ้อน ปัจจุบัน ภาษาฟอรแ์ ทรนยังเปน็ ทน่ี ิยมใช้ ในการพัฒนาโปรแกรมดา้ นวทิ ยาศาสตร์และวศิ วกรรมศาสตร์  ภาษาโคบอล(COBOL ย่อมาจากCommon Business Oriented Language) พัฒนาขึ้น ในปี ค.ศ.1959 เป็นภาษาท่ีพัฒนาข้ึนมาเพ่ือใช้ในการพัฒนาโปรแกรมประยุกต์ด้านธุรกิจและ การค้า ปัจจุบันโปรแกรมทีใ่ ชใ้ นด้านธุรกจิ จานวนมากยงั เปน็ โปรแกรมท่ีพฒั นามาจากภาษาโคบอล  ภาษาเบสิก(BASIC ย่อมาจาก Beginners All-purpose Symbolic Instructional Code) เป็นภาษาท่ีพัฒนาขึ้นโดยมีจุดประสงค์เพ่ือให้ผู้เร่ิมต้นพัฒนาโปรแกรมสามารถเรียนรู้และ เข้าใจการพัฒนาโปรแกรมอย่างง่าย ภาษาเบสิกเป็นภาษาคอมพิวเตอร์ภาษาแรกท่ีใช้เคร่ือง ไมโครคอมพวิ เตอร์ ภาษาคอมพิวเตอร์ท่ีพัฒนาข้ึนในยุคแรก ยังมีข้อจากัดในการที่จะพัฒนาโปรแกรมขนาด ใหญ่ ท้ังนี้เนอื่ งจากภาษาคอมพวิ เตอร์เหลา่ น้ันขาดโครงสรา้ งที่ดี ทาให้การพัฒนาโปรแกรมที่มขี นาด ใหญ่และมีความซับซ้อนเป็นไปได้ยาก ในช่วงต้นปี ค.ศ.1970 จึงมีภาษาคอมพิวเตอร์ท่ีเป็นภาษา เชิงกระบวนการ (Procedural หรอื Structural Language) เกิดขน้ึ ภาษาคอมพวิ เตอรป์ ระเภทน้ีจะ มคี วามยืดหยุ่นในการพัฒนาโปรแกรม ทาให้สามารถแก้ไขและบารุงรักษาได้ง่าย เน่ืองจากโปรแกรม ถูกแยกออกเป็นส่วน ๆ ภาษาคอมพิวเตอร์ทเี่ ป็นภาษาเชงิ กระบวนการทีส่ าคญั คือ  ภาษาปาสคาล (Pascal) พัฒนาโดย Niclaus Wirth ในปี ค.ศ.1971 โดยมีจดุ ประสงค์ เพ่ือใช้ในการสอนการเขียนโปรแกรมภาษาเชิงกระบวนการ ในมหาวิทยาลัย แต่เน่ืองจากภาษา ปาสคาลไม่มีคุณลักษณะท่ีจะสนับสนุนการพัฒนาโปรแกรมด้านธุรกิจและอุตสาหกรรมจึงไม่ได้รับ ความนยิ มมากนกั การเขียนโปรแกรมภาษาซีเบ้ืองต้น 117

 ภ า ษ า ซี ( C) พั ฒ น า ข้ึ น ใ น ช่ ว ง เ ดี ย ว กั บ ภ า ษ า ป า ส ค า ล โ ด ย นั ก วิ จั ย ท่ี ห้องปฏิบัติการ AT&T Bell ซ่ึงได้นาเอาจุดเด่นของภาษา BCPL และภาษา B มาใช้และได้เพิ่ม คุณลักษณะและชนิดข้อมูลอ่ืนเข้ามาด้วย เดิมภาษาซีถือว่าเป็นภาษาคอมพิวเตอร์ที่สาคัญในการ พัฒนาโปรแกรมบนระบบปฏิบัติการยูนิกส์ (Unix) ซ่ึงเป็นภาษาคอมพิวเตอร์ที่สามารถสร้าง โปรแกรมประยุกต์ท่ีทางานได้รวดเร็วมาก เมอื่ เทยี บกบั ภาษาคอมพิวเตอร์อน่ื ๆ  ภาษาระดับสูงมาก (very high level language) ภาษาระดับสูงมาก บางคร้ัง เรียกว่า Fourth Gerneration Languages (4GLs) เป็นภาษาที่มีลักษณะสาคัญ คือ ผู้เขียน โปรแกรมไม่ต้องบอกวิธีการทางานโดยละเอียด เพยี งแตร่ ะบคุ าสงั่ ให้ทางานสั้นๆ ให้ภาษาระดับสูง มากเข้าใจก็เพียงพอ ส่วนวิธีการคานวณหรือการทางานภาษาระดับสูงมากจะเป็นผู้จัดการเองทั้งส้ิน บางครั้งเรียกว่าnon-procedure language ตัวอย่างภาษาระดับสูงมาก ได้แก่ ภาษา SQL (Structure Query Langauge) ซ่ึงนิยมใช้กันในซอร์ฟแวร์พัฒนาระบบจัดการฐานข้ อมูล เชน่ ORACLE เป็นตน้  ภาษาระดับธรรมชาติ (natural language) ภาษาธรรมชาติจะเก่ียวข้องกับระบบ ฐานความรู้ (knowledge based system ) และกฎอ้างอิง (inference rules) เพียงแต่ผู้ใช้ ภาษาธรรมชาติป้อนคาถามผ่านเข้าไปในคอมพิวเตอร์ท่ีมีภาษาธรรมชาติก็จะทาการวิเคราะห์คาถาม แล้วไปค้นหาคาตอบจากระบบฐานความรู้ท่ีเก็บไว้ ตัวอย่างภาษาธรรมชาติ ได้แก่ ภาษา PROLOG และภาษา LISP (List Processing Language) 6. การทดสอบ และแก้ไขโปรแกรม (testing and editing program) หลังจากที่เราเขยี นโปรแกรมเสร็จแล้ว ขนั้ ตอนต่อไป คอื การทดสอบโปรแกรมทเี่ ขียนข้ึน ซึง่ อาจพบความผดิ พลาดได้ 2 ชนิด ดังนี้ a. ความผดิ พลาดทางไวยากรณ์ภาษา (syntax error) เป็นความผิดพลาดที่เกดิ จาก การเขียนคาส่ังของภาษาคอมพิวเตอร์ผิด ตัวอย่างเช่น คาส่ัง printf( ) ในภาษา C ต้องเขียนด้วย ตัวอักษรตัวเล็ก แต่เขียนเป็น PRINTF( ) เป็นต้น โดยส่วนมากความผิดพลาดทางไวยากรณ์ จะ ถูกตรวจสอบพบเมื่อมีการแปลโปรแกรม (compile) ให้เป็นภาษาเครื่อง ซ่ึงเราสามารถแก้ไขโดยการ เขียนคาส่งั ใหถ้ กู ต้องตามไวยากรณ์ของภาษานน้ั ๆ b. ความผิดพลาดทางตรรกะ (logical error) เปน็ ความผดิ พลาดที่เกิดจากการลาดับ การทางานผิดหรือป้อนสูตรคานวณผิด ตัวอย่างเช่น ต้องการหาค่า X=X+Y แต่ป้อนสูตรเป็น X=X*Y อย่างนี้เป็นต้น วิธีการตรวจหาความผิดพลาดแบบนี้ คือ ตรวจสอบการคานวณผลลัพธ์ของ โปรแกรมว่าตรงกับผลลัพธ์ที่คานวณด้วยมือหรือเคร่ืองคิดเลขหรือไม่ ถ้าไม่ตรงกันแสดงว่าเกิดความ ผิดพลาดทางตรรกะข้นึ วธิ ีการแกไ้ ขก็คอื การแกไ้ ขสตู รใหถ้ กู ตอ้ ง หรอื แก้ไขลาดบั การทางานให้ถกู ต้อง ดังนั้น จะเห็นได้ว่าผู้เขียนโปรแกรมจะต้องทาการทดสอบโปรแกรมและแก้ไข โปรแกรมใหส้ ามารถทางานไดต้ ามทีต่ อ้ งการ 118 การเขียนโปรแกรมภาษาซีเบ้ืองต้น

7. การจดั ทาเอกสารประกอบและการบารุงรกั ษาโปรแกรม (Documentation and Maintenance Program) เมื่อผู้เขียนโปรแกรมได้ทาการทดสอบโปรแกรมและแก้ไขความผิดพลาดท่ีเกิดขึ้นเรียบร้อย แล้ว ขั้นตอนต่อไปก็ควรจัดทาคู่มือการใช้โปรแกรม เพราะจะทาให้ผู้ใช้โปรแกรมสามารถใช้งานได้ ถูกต้อง โดยคู่มอื การใช้โปรแกรมท่ีดีควรจัดทาในลักษณะทแ่ี สดงการทางานเปน็ ขน้ั ตอน ผู้ใช้โปรแกรม สามารถปฏบิ ัตติ ามไดจ้ ริง ส่วนการบารงุ รักษาโปรแกรมท่ีพฒั นาขึ้นก็ตอ้ งมีคาแนะนาให้ผู้ใช้โปรแกรม ปฏิบัติ ตัวอย่างเช่น การเก็บโปรแกรมต้นฉบับ ควรเก็บไว้ในกล่องที่มิดชิด ป้องกันฝุ่นได้ ไม่ควรเก็บ ไว้บนโต๊ะทางาน ไม่ควรเก็บไว้ในรถยนต์เพราะอาจถูกอากาศร้อนทาให้เสียได้ นอกจากน้ีต้องมการ สาเนาโปรแกรมต้นฉบับเอาไว้ อย่างน้อย 1 ชุด แล้วนาชุดที่สาเนาไปใช้ ไม่ควรใช้โปรแกรมต้นฉบับ โดยตรง ควรเก็บเอาไว้สาหรบั กรณีท่ีโปรแกรมสาเนาเกดิ ปญั หาจะได้นาโปรแกรมต้นฉบับมาทาสาเนา และใชง้ านไดท้ ันที  ประวัติความเป็นมาของภาษา C ภาษา C ถูกสร้างขึ้นคร้ังแรก โดย Dennis M.Ritchie ซึ่งทางานอยู่ Bell Telephone Laboratories, Inc. (ปัจจุบันน้ีคือ AT&T Bell Laboratories) ประมาณปี ค.ศ.1970 โดย Ritchie พัฒนาภาษา C มาจากภาษา BCPL และภาษา B ซ่ึงในระยะแรกน้ีภาษา C ถูก นามาใชภ้ ายใน Bell Laboratories เท่าน้ัน จนกระท่งั ปี ค.ศ.978 Brian W.Kerninghan และ Dennis M. Ritchie ได้กาหนดนิยาม ลักษณะ และรายละเอียดของภาษา C ข้ึน โดยเขียน หนังสือชื่อว่า “The C Programming Language” (สานักพิมพ์ Prentice Hall) ออกมาเป็น เล่มแรกต่อมาบริษัทคอมพิวเตอร์ตา่ ง ๆ ได้เริ่มสนใจ และค้นคว้าพัฒนาภาษา C โดยอ้างอิง ภาษา C ของ Kernighan และ Ritchie ทาให้มกี ารพัฒนา C compiler และ C interpreter ขึ้นมา เพื่อให้สามารถใช้กบั เครื่องคอมพิวเตอร์ได้หลาย ๆ ชนิด และสามารถใช้กับโปรแกรมต่าง ๆ ที่บริษัท ผลิตข้ึนเป็นการค้า จนกระทั่งปี ค.ศ.1985 ภาษา C ก็ได้รับความนิยมแพร่หลายไปทั่วโลก ซึ่ง ในช่วงน้ันภาษา C ท่ีใช้กันอยู่มีมากมายหลายชนิด แล้วแต่บริษัทต่าง ๆ จะสร้างขึ้นซ่ึงยังขาด มาตรฐานร่วมกัน ดังน้ันในปี ค.ศ.1988 Kernighan และ Ritchie จึงได้ร่วมกับสถาบัน ANSI (American National Standards Institute) ได้กาหนดนิยาม ลักษณะและกฎเกณฑ์ของภาษา C ที่เป็นมาตรฐานขึ้นเรียกว่า “ANSI C” ซ่ึงปัจจุบันน้ีบริษัทที่ผลิตภาษา C ไม่ว่าจะเป็นบริษัท Microsoft และบริษัท Borland ต่างก็ใช้มาตรฐานของ ANSI C เพ่ือผลิตภาษา C รุ่นต่าง ๆ ต่อไป 1. โครงสรา้ งอยา่ งง่ายของโปรแกรมภาษา C โปรแกรมภาษา C ที่สามารถ execute ได้ ทุกโปรแกรมจะมโี ครงสรา้ งอย่างงา่ ย ดงั นี้ 1.1 มีฟังก์ชันชื่อว่า main( ) อย่างน้อยหนึ่งฟังก์ชัน จึงจะสามารถทาการ execute program ได้ลักษณะของฟังก์ชัน main( ) จะต้องเป็นฟังก์ชันท่ีไม่มีการส่งค่าไปยังฟังก์ชันอ่ืน หรือไมม่ ี argument น่ันเองและจะต้องไม่มีการส่งค่ากลับมายังช่ือฟังก์ชัน โดยเราสามารถใช้คาว่า void นาหน้าฟังกช์ ัน ซงึ่ main( ) สามารถเขยี นไดด้ ังนี้ void main(void) การเขียนโปรแกรมภาษาซีเบ้ืองต้น 119

1.2 ขอบเขตฟังก์ชัน main (delimiters) ในโปรแกรมภาษา C ใช้เคร่อื งหมาย { แทน การเร่ิมต้นฟังก์ชัน และใช้เครื่องหมาย } แทนการสิ้นสุดฟังก์ชัน ดังนั้นเมื่อเขียนฟังก์ชัน main( ) ทุกครง้ั จะต้องมีเครือ่ งหมาย { และ } อยู่ดว้ ยเสมอ 1.3 การปิดท้ายคาส่ังในภาษา C จะต้องใช้เครื่องหมาย ; (semicolon) เป็นการบ่งชี้ให้ C compiler ทราบวา่ จบคาส่ัง (statement) แต่ละคาสงั่ แล้ว 1.4 ชื่อฟังก์ชันและคาส่ังในภาษา C จะต้องเขียนด้วยตัวอักษรตัวเล็ก (lowercase letter) ท้ังหมดทั้งนี้เพราะ C compiler จะคิดว่าตัวอักษรตัวใหญ่ (uppercase letter) กับ ตัวอักษรตวั เลก็ แตกตา่ งกนั เชน่ main( ) ไม่เหมือนกบั Main( ) หรอื MAIN( ) เปน็ ตน้ 1.5 ช่ือตัวแปร (variable name) สามารถต้ังช่ือโดยใช้ ตัวอักษรตัวเล็กหรือตัวอักษรตัว ใหญ่ก็ได้หรือใช้ตัวอักษรตัวเล็กกับตัวอักษรตัวใหญ่ผสมกันก็ได้ อาทิเช่น ช่ือตัวแปร name ไม่ เหมือนกับ Name หรือ NAME เป็นต้น เพราะว่าลักษณะของภาษา C จะสามารถจาแนกความ แตกต่างของตัวอักษรตัวเล็กและตัวใหญ่ได้ ดังนั้นเราสามารถใช้ตัวอักษรตัวเล็ก a ถึง z และ ตวั อกั ษรตัวใหญ่ A ถึง Z มาตั้งชอื่ ตัวแปรได้ หรือจะตงั้ ชื่อตัวแปรเหมอื นกัน ทุกประการได้ เช่นชื่อ ตัวแปร a กับ a ก็ได้ แต่ตัวแปรท้ัง 2 ตัวนี้จะต้องอยู่ต่างฟังก์ชันกันเท่านั้น ถ้าอยู่ในฟังก์ชัน เดยี วกนั compiler จะบอกขอ้ ผิดพลาดออกมา 2. ข้นั ตอนการพัฒนาโปรแกรมภาษา C การพฒั นาโปรแกรมภาษา C มขี ัน้ ตอนดงั นี้ 2.1 เขียนโปรแกรมต้นฉบับ (source program) ด้วยภาษา C โปรแกรม Turbo C/ C++ เพื่อเขยี นโปรแกรมตน้ ฉบับด้วยภาษา C จากนั้นบนั ทกึ โปรแกรมพร้อมกับตัง้ ชือ่ แฟ้มไว้ แฟ้มที่ ได้จะมีนามสกุล *.c หรือ *.cpp เช่น simple.c หรือ simple.cpp เป็นต้น นอกจากน้ียัง สามารถใช้โปรแกรม Turbo C/C++ เขียนโปรแกรมภาษา C++ ได้อีกดว้ ย 2.2 แปลโปรแกรมภาษา C ไปเป็นโปรแกรมภาษาเครื่อง (object program) ใช้คาสั่ง compile เพื่อแปลโปรแกรมภาษา C ไปเป็นโปรแกรมภาษาเครื่อง แฟ้มท่ีได้จะมีนามสกุล *.obj ซ่ึงในข้ันตอนน้ีโปรแกรมต้นฉบับอาจเกิดความผิดพลาดทางไวยกรณ์ภาษา (syntax error) ขึ้นได้ จงึ ต้องยอ้ นกลับไปแกไ้ ขโปรแกรมตน้ ฉบับในข้อ 1. ให้ถูกตอ้ งเสียก่อน 2.3 เช่ือมโยง (link) โปรแกรมภาษาเครอ่ื งเข้ากบั library function ของภาษา C จะ ไดเ้ ป็น execute program โดยใช้คาสั่ง link แฟ้มท่ีไดจ้ ะมนี ามสกุล *.exe 2.4 ส่งั ให้ execute program แสดงผลลพั ธ์ออกมา โดยใช้คาสัง่ run 3. ขอ้ มูลของภาษา C สาหรับเร่ืองข้อมูลของภาษา C จะกล่าวถึงเรื่องตัวอักขระ ค่าคงที่ และตัวแปร ดังรายละเอยี ดต่อไปนี้ 3.1 ตวั อกั ขระ(characters) ตวั อักขระในภาษาC สามารถจาแนกออกเปน็ 3 ประเภท คอื 1) ตัวเลข (digits) คือ ตัวเลข 0, 1, 2, …., 9 และตัวเลขฐานสิบหก A, B, C, D, E และ F 120 การเขียนโปรแกรมภาษาซเี บื้องต้น

2) ตัวอักษร (letters) สามารถใช้ตัวอักษรพิมพ์ใหญ่ (uppercase letter) คือ A, B, C, …, Z และตัวอักษรพิมพ์เล็ก (lowercase letter) คือ a, b, c, …., z รวมท้ังส้ิน 52 ตวั อกั ษร 3) ตวั อกั ขระพิเศษ (special character) ซ่ึงไดแ้ ก่ ! *+“< #(=|> %) ~ ; / ^ - [ : ,(comma) ?&_ ] ‘ .(dot) b (blank หรือ space) 3.2 ค่าคงที่ (constants) คา่ คงที่ คอื ตวั อกั ขระที่นามาประกอบกันตั้งแต่ 1 ตัวอักขระขน้ึ ไป เพื่อบอกลักษณะ อย่างใดอย่างหน่งึ ของข้อมูล บางครั้งเราอาจเรียกค่าคงที่ว่า “ข้อมูล” (data) ก็ได้ ค่าคงที่พ้ืนฐาน ท่ีสาคญั ในภาษา C มีดังนี้ 1) ค่าคงท่ีชนิดตัวเลขจานวนเต็ม (integer constant) ค่าคงท่ีชนิดน้ีจะเป็น ตวั เลขจานวนเต็มซง่ึ อาจมเี คร่ืองหมายบวกหรือลบกไ็ ด้ เช่น 0, 9, 85, -698, 1832, -2080 เป็นต้น โดยตวั เลขจานวนเตม็ ท่ีจะสามารถเก็บได้ปรกติจะอยู่ในชว่ ง -32768 ถึง 32767 เท่าน้ัน บางครั้ง เรานิยมเรยี กคา่ คงทช่ี นิดนว้ี า่ คา่ คงท่ี int (integer) สาหรบั การเกบ็ ค่าคงที่ชนิด int นี้ภายในหน่วยความจา จะใชเ้ น้อื ท่ี 2 bytes นอกจากน้ียังสามารถเขียนค่าคงที่ชนิดน้ีให้อยู่ในรูปแบบตัวเลขฐานแปดและฐานสิบหกได้ โดยใช้ ตัวเลขศูนย์ (0) นาหน้าแล้วตามด้วยเลขฐานแปดที่ต้องการหรือจะใช้ตัวเลขศูนย์เอ็กซ์ (0x หรือ 0X) นาหน้าแลว้ ตามดว้ ยเลขฐานสิบหกทต่ี ้องการ เชน่ 046, 027, 0xBD, 0X1BCF เปน็ ต้น 2) ค่าคงที่ชนิดตัวเลขทศนิยม (floating point constant) ค่าคงที่ชนิดน้จี ะเป็น ตัวเลขจานวนทศนิยม ซ่ึงอาจจะมเี คร่ืองหมายบวก หรือลบก็ได้ หรือเป็นตัวเลขทสี่ ามารถเขียนอยู่ ในรปู E ยกกาลงั ได้ เช่น 3.0, 0.234, -0.54, 4E-06, 1.675E+10 เป็นต้น โดยตวั เลขทศนิยม น้จี ะสามารถเกบ็ ได้ปรกตจิ ะอยู่ในชว่ ง 1.2E-38 ถงึ 3.4E+38 เท่านนั้ สาหรับการเก็บค่าคงท่ีชนิด float น้จี ะใชเ้ นือ้ ทีภ่ ายในหน่วยความจา 4 bytes โดยที่ 3 bytes แรกจะเกบ็ คา่ ตัวเลขทศนยิ ม สว่ นอกี 1 bytes สดุ ทา้ ยจะเก็บคา่ ยกกาลงั เอาไว้ 3) ค่าคงท่ีตัวเลขทศนิยมท่ีมีความละเอียดสองเท่า (double floating point) ค่าคงท่ีชนิดนี้นิยมเรียกว่า ค่าคงท่ีแบบ double ซึ่งจะสามารถเก็บตัวเลขทศนิยมท่ีมีค่าอยู่ในช่วง 2.2E-308 ถึง 1.8E+308 เท่าน้ันสาหรับการเก็บค่าคงท่ีชนิด double น้ี จะใช้เนื้อท่ีภายใน หนว่ ยความจา 8 bytes โดยใช้ 7 bytes แรกเกบ็ คา่ ตัวเลขทศนยิ ม สว่ นอีก 1 bytes สดุ ทา้ ย จะเก็บคา่ ยกกาลังเอาไว้ เช่นเดียวกบั ค่าคงทชี่ นิด float การเขยี นโปรแกรมภาษาซีเบื้องต้น 121

4) ค่าคงที่ชนิดตัวอักขระตัวเดียว (single character constant) ค่าคงที่ชนิดน้ี จะสามารถเก็บตัวอักขระได้เพียง 1 ตัวอักขระ โดยอยู่ภายในเคร่ืองหมาย ‘’ (single quotation) เชน่ ‘5’, ‘X’, ‘c’ เป็นต้น สาหรับการเก็บค่าคงที่ชนิด single character constant จะใช้เน้ือท่ีภายใน หนว่ ยความจา 1 bytes 5) ค่าคงท่ีชนิดข้อความ (strings constant) ค่าคงที่ชนิดนี้จะเก็บตัวอักขระที่มี ความยาวต้ังแต่ 1 ตัวข้ึนไป โดยจะเก็บอยู่ในรูปของข้อมูลอาเรย์ (arrays) ซ่ึงในแต่ละตัวอักขระ จะใช้เนื้อท่ีในการเก็บ 1 bytes เรียงติดต่อกันไปจนกระทั้งจบข้อความ และใน byte สุดท้ายจะ เก็บ \\0 (null character) เอาไว้เพ่ือเป็นการบอกว่า จบข้อความแล้ว การเขียนค่าคงท่ีชนิด ข้อความจะต้องเขียนอยู่ภายในเครื่องหมาย “……” (double quotation) เช่น “X”, ”computer”, “4567”, “c” เปน็ ตน้ 3.3 ตวั แปร (variables) ตัวแปร คือ ช่ือที่ผู้เขียนโปรแกรมต้ังข้ึนเพ่ือใช้เป็นข้อมูล หรือใช้เก็บข้อมูล ดังน้ัน เราต้องกาหนดตัวแปรให้สอดคล้องกับชนิดข้อมลู เสมอ เพอื่ ให้ระบบเตรียมเนื้อท่ีในหนว่ ยความจาให้ สอดคล้องกับตัวแปรชนิดน้ัน ๆ ซึ่งเน้อื หาท่กี ล่าวถึงเก่ียวกับตัวแปรประกอบด้วย หลักเกณฑ์การต้ัง ช่อื ตวั แปร การประกาศตวั แปร และการกาหนดคา่ เริ่มต้นให้กับตวั แปร หลักเกณฑก์ ารตั้งชือ่ ตวั แปร ในภาษา C มหี ลักเกณฑก์ ารตง้ั ชอ่ื ตวั แปรดงั นี้ 1) ช่ือตัวแปรจะต้องข้ึนต้นด้วยตัวอักษรเท่าน้ัน ตัวถัดมาเป็นได้ทั้งตัวอักษร ตวั เลข แต่ตอ้ งไมม่ ีเครื่องหมายคานวณ บวก (+), ลบ (-), คณู (*), หาร (/), หารเอาเศษ (%) และ เครื่องหมายเว้นวรรค (blank) ค่ันระหว่างชื่อตัวแปร แต่ถ้าต้องการตั้งชื่อตัวแปรเว้นวรรคให้ใช้ เครือ่ งหมาย _ (underscore) ค่ันแทนการเวน้ วรรค เชน่ sum_1, sum_2 เปน็ ตน้ 2) ความยาวของชื่อตัวแปร ขึ้นอยู่กับคอมไพเลอร์และระบบเครื่องคอมพิวเตอร์ ซ่ึงภาษา C สามารถตงั้ ช่อื ตวั แปรได้ยาวถึง 32 ตัว แต่โดยปกติเราไม่นิยมตัง้ ช่ือตัวแปรยาว ๆ 3) ช่ือตัวแปรตัวอักษรพิมพ์ใหญ่และตัวอักษรพิมพ์เล็ก แม้จะเขียนคาเดียวกัน หรอื ตวั อกั ษรพิมพใ์ หญป่ นตัวอักษรพมิ พ์เล็กที่สลับตาแหน่งกัน ระบบถือว่าเป็นคนละตัวแปรกนั เช่น ตัวแปร MAX, max, Max, mAx, maX จะถือว่าตวั แปรทง้ั 5 ตัวนเี้ ป็นคนละตวั กนั 4) ห้ามตั้งช่ือตัวแปรซ้ากับคาสงวน (reserved word) หรือชื่อฟังก์ชัน หรือชื่อ คาสัง่ ในภาษานน้ั ๆ 122 การเขียนโปรแกรมภาษาซีเบ้ืองตน้

คาสงวนในภาษา C ตามมาตรฐาน ANSI (American National Standards Institute) มี 33 keywords ดังนี้ asm, auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while 5) ชื่อตัวแปรควรตั้งให้สัมพันธ์กับข้อมูลท่ีต้องการเก็บ เพื่อป้องกันความสับสน เนื่องจากโปรแกรมที่มีขนาดใหญ่จะมีตัวแปรจานวนมาก ถ้าเราต้ังชื่อตวั แปรโดยไม่มรี ะบบระเบยี บท่ี ดีพอจะทาให้ผอู้ ่านโปรแกรมเกดิ ความสับสนและในกรณีทโ่ี ปรแกรมเกิดข้อผิดพลาดขึ้นจะเสยี เวลาใน การแกไ้ ขโปรแกรมมากขึ้น เชน่ ตวั แปร name ใชเ้ ก็บชอ่ื ตวั แปร age ใชเ้ กบ็ อายุ ตวั แปร salary ใชเ้ กบ็ เงนิ เดือน ตวั แปร vat ใชเ้ กบ็ ภาษี 3.4 การประกาศตัวแปร (declaration of variables) ตัวแปรทุกตัวต้องมีการประกาศ ช่ือตัวแปร (variable name) และชนิดของตัวแปร (variable type) เอาไวก้ อ่ น จึงจะสามารถนาตัว แปรทปี่ ระกาศไว้มาใชง้ านได้ รูปแบบการประกาศตัวแปร vtype vname ; โดยท่ี vtype คอื ชนขิ องตัวแปรพ้ืนฐานที่นิยมใช้กนั มีอยู่ 4 ชนิด คือ char, int, float, และ double ซ่งึ ในความเปน็ จริงแล้ว การประกาศชนิดของตัวแปรจะต้องใหค้ วามสัมพันธ์กับค่าข้อมูลที่ ตอ้ งการเก็บดว้ ย vname คือ ชื่อของตัวแปร ถ้ามีตัวแปรหลายตัวที่ต้องการให้มีชนิดตัวแปรเหมือนกัน สามารถใช้เครอื่ งหมาย , (comma) คน่ั ระหวา่ งชื่อตวั แปรได้ การเขยี นโปรแกรมภาษาซีเบ้ืองต้น 123

ตาราง แสดงชนดิ ของตวั แปร จานวน bytes และพิสัยของคา่ ข้อมูลในภาษา C ชนดิ ของตัวแปร จานวน พสิ ยั ในการเกบ็ ข้อมูล (range) (variable types) Bytes ทีใ่ ช้ -128 to 127 char 1 -32,768 to 32,767 int 2 -32,768 to 32,767 short 2 -2,147,483,648 to 2,147,483,647 long 4 0 to 255 unsigned char 1 0 to 65,535 unsigned int 2 0 to 65,535 unsigned short 2 0 to 4,294,967,295 unsigned long 4 0 to 65,535 enum 2 1.2E-38 to 3.4E+38 float 4 2.2E-308 to 1.8E+308 double 8 3.5 การกาหนดค่าเร่ิมต้นใหก้ บั ตัวแปร (initializing variables) หลังจากที่เราได้ประกาศ ตวั แปรไว้ ถา้ เราต้องการกาหนดคา่ เริม่ ตน้ ใหก้ บั ตัวแปรใดเราสามารถทาไดด้ ังนี้ รูปแบบกาหนดค่าเรมิ่ ต้นให้กบั ตัวแปร vname = value; โดยที่ vname คือ ชือ่ ตวั แปรทไี่ ดป้ ระกาศแลว้ value คือ ค่าข้อมลู ทจ่ี ะนาไปเก็บไวใ้ นตัวแปร ซึ่งอาจเปน็ ค่าตัวเลขหรอื ข้อความกไ็ ด้ ถา้ เป็น ข้อความจะต้องเขยี นอยูใ่ นเครอื่ งหมาย “……” ตวั อยา่ ง แสดงการประกาศคา่ ตัวแปรและกาหนดคา่ เรมิ่ ตน้ ให้กบั ตัวแปร int a, b, c=7; /* เป็นการประกาศตวั แปร a, b และ c เป็น int และกาหนดค่าตัวแปร c มคี ่า 7 */ a=b=c; /*เป็นการกาหนดค่าตัวแปร a และ b ให้มีค่าเท่ากับตัวแปร c (คือมีค่าเท่ากับ 7)*/  การแสดงผลข้อมูล (output functions) ในเนือ้ หาฟงั กช์ นั การแสดงผลข้อมูลของภาษา C มีฟังกช์ ันทีใ่ ช้ในการแสดงผลลัพธ์ออกทาง จอภาพอยหู่ ลายฟงั ก์ชันทีจ่ ะกลา่ วถึง ดังน้คี อื ฟงั ก์ชนั printf( ), ฟงั ก์ชนั putchar( ) และฟังก์ชัน puts( ) ซง่ึ แตล่ ะฟงั กช์ นั มรี ายละเอยี ดของการใชง้ านดังน้ี 124 การเขียนโปรแกรมภาษาซเี บื้องต้น

1. ฟงั กช์ นั printf() เป็นฟังก์ชันท่ีใช้ในการแสดงผลลัพธ์ออกทางจอภาพ โดยสามารถกาหนดรหัสรูปแบบ ข้อมูล (format code) และรหัสควบคุม (control code) ให้เหมาะสมกับข้อมูลและรูปแบบ ผลลัพธ์ท่ตี ้องการ รปู แบบการใชง้ านฟังกช์ นั printf(control string, argument list); โดยที่ control string คอื รหัสรูปแบบข้อมูลที่ใชใ้ นการพิมพ์ผลลัพธใ์ ชร้ หสั เหมือนฟังกช์ นั scanf() และในฟังก์ชัน printf() นี้ยังสามารถใช้รหัสควบคมุ เพอ่ื ช่วยจัดรูปแบบการพิมพ์ผลลัพธใ์ ห้สวยงามขึ้น โ ด ยที่ control string จะ ต้อ งเ ขีย นอ ยู่ ภ า ยใ ต้เ คร่ื อง หม าย “………” (double quotation) เช่นเดียวกับฟังก์ชัน scanf()argument list คือ ค่าคงที่ หรอื ตัวแปร หรือนิพจน์ ในกรณีที่มีค่าคงที่ ตัวแปร หรือนิพจน์หลายๆ ค่าให้ใช้เครื่องหมาย, (comma) ค่ันระหว่างค่าคงที่ ตัวแปร หรือนิพจน์ แต่ละคา่ ตาราง แสดงรหสั รปู แบบขอ้ มูลทสี่ ามารถใชใ้ นฟงั ก์ชัน printf() รหัสรูปแบบ ความหมาย (format code) ใช้กบั ข้อมูลชนดิ ตวั อักขระตวั เดียว (single character : char) %c ใช้กับข้อมูลชนิดตัวเลขจานวนเต็ม (integer : int) โดยสามารถใช้กับ %d ตัวเลขฐาน 10 เท่านั้น ใชก้ บั ขอ้ มลู ชนิดตวั เลขจุดทศนยิ ม (floating point : float) %e ใชก้ ับข้อมูลชนดิ float และ double ตามลาดับ %f, %lf ใชก้ ับขอ้ มูลชนิด float ใช้กับข้อมลู ชนดิ short integer %g ใชก้ ับขอ้ มลู ชนิด int โดยใช้กับตวั เลขฐาน 8, ฐาน 10 และฐาน 16 %h ใชก้ บั ขอ้ มูลชนิด int โดยสามารถใชก้ ับตวั เลขฐาน 8 เทา่ นนั้ %l ใชก้ ับขอ้ มลู ชนิด unsigned int โดยใชก้ ับตวั เลขฐาน 10 เทา่ นัน้ %o ใชก้ ับข้อมลู ชนดิ int โดยสามารถใช้กบั ตวั เลขฐาน 16 เทา่ น้ัน %u ใชแ้ สดงข้อมลู ชนดิ string %x ใชแ้ สดงค่า address ของตวั แปรพอย์นเตอร์ %s %p การเขยี นโปรแกรมภาษาซีเบื้องตน้ 125

ตาราง แสดงรหัสควบคมุ ขอ้ มลู ทสี่ ามารถใช้ในฟงั ก์ชัน printf() รหสั ควบคุม ความหมาย คา่ ASCII (control code) Bell 007 \\a Backspace 008 \\b Horizontal tab 009 \\t Newline (line feed) 010 \\n Vertical tab 011 \\v From feed 012 \\f Carriage return 013 \\r Quotation mark (“) 034 \\” Apostrophe (‘) 039 \\’ Question mark (?) 063 \\? Backslash (\\) 092 \\\\ Null (ศูนย์) 000 \\0 Octal number (o) - \\ooo Hexadecimal number (h) - \\xhh โปรแกรมตวั อยา่ ง แสดงโปรแกรมการใชฟ้ ังกช์ นั printf( ) พมิ พข์ ้อความออกแสดงทจี่ อภาพ /* printf1.c */ #include<stdio.h> #include<conio.h> void main(void) { clrscr( ); printf(\"Welcome to Thailand !!!\"); getch( ); } 126 การเขยี นโปรแกรมภาษาซีเบื้องต้น

โปรแกรมตัวอย่าง แสดงโปรแกรมการใช้ฟังกช์ ัน printf( ) ควบคู่กับ รหสั รูปแบบ %c และ %s เพือ่ แสดงข้อมูลทีจ่ อภาพ /* printf2.c */ #include<stdio.h> #include<conio.h> void main(void) { char ch='A'; char str[]=\"Computer\"; clrscr( ); printf(\"%5c \\t\\tCHARACTER %s\", ch, str); getch( ); } โปรแกรมตัวอย่าง แสดงโปรแกรมการใช้ฟังก์ชัน printf() ควบคู่กับรหัสรูปแบบ %d, %c, %s และ %f เพ่อื แสดงขอ้ มูลทีจ่ อภาพ /* printf3.c */ #include<stdio.h> #include<conio.h> void main(void) { int a=5, b=2; char c='D', d='F'; char e[20]=\"Thailand\"; float f = 9.5 , g; clrscr( ); b+=a; d+=5; g = f + 2.5; printf(\"%5d \\t%-5d\\n\",a, b); printf(\"%3c \\t%-3c\\n\",c--, ++d); printf(\"%s\\n\",e); printf(\"%.3f \\t%-.3f\\n\", f+2, g); getch( ); } 2. ฟงั ก์ชัน putchar( ) เปน็ ฟงั กช์ ันที่ใช้ในการแสดงผลลพั ธอ์ อกจอภาพทลี ะ 1 ตัวอักขระ โดยลักษณะของ ฟังกช์ ันน้เี ปน็ ฟังกช์ นั ท่ีตอ้ งการ argument 1 คา่ ทีเ่ ป็นข้อมูลชนิด single character (char) การเขียนโปรแกรมภาษาซีเบื้องตน้ 127

รูปแบบการใช้งานฟังกช์ นั putchar(char_argument); โดยท่ี putchar( ) คือ ฟังก์ชันที่ใช้แสดงผลลัพธ์ทีละ 1 ตัวอักขระออกทางจอภาพ char_argument คอื ตวั แปรชนดิ single character (char) โปรแกรมตวั อย่าง แสดงโปรแกรมการใชฟ้ งั กช์ นั putchar( ) เพือ่ แสดงขอ้ มลู ออกจอภาพ /* putchar1.c */ #include<stdio.h> #include<conio.h> void main(void) { char p; clrscr( ); printf(\"Enter a single character :\"); p=getche( ); printf(\"\\nYour character is ...%c\"); putchar(p); getch( ); } โปรแกรมตัวอย่าง แสดงโปรแกรมการใช้ฟังก์ชัน putchar( ) เพ่ือแสดงข้อมูลออกจอภาพ และ แทรกดว้ ยการใชฟ้ ังก์ชนั printf( ) ก่อนนาขอ้ มลู ออกแสดงผล /* putchar2.c */ #include<stdio.h> #include<conio.h> void main(void) { char p; clrscr( ); printf(\"Enter a single character : \"); p=getche( ); printf(\"\\nThank you !!!\"); printf(\"\\nYour character is ...%c\"); putchar(p); getch( ); } 128 การเขยี นโปรแกรมภาษาซีเบื้องต้น

3. ฟังกช์ ัน puts( ) เป็นฟังก์ชันท่ีพิมพ์ข้อความออกแสดงทางจอภาพ โดยลักษณะของฟังก์ชันนี้เป็นฟังก์ชันท่ี ตอ้ งการ argument 1 คา่ ท่เี ป็นชนดิ ขอ้ ความ (string constant) รูปแบบการใช้งานฟังกช์ ัน puts(string_argument); โดยท่ี puts( ) คือ ฟังก์ชันท่ีใช้พิมพ์ข้อความออกทางจอภาพ string_argument คือ ค่าคงที่ ชนิดสตริง (string constant) ซึ่งค่าคงท่ีสตริงนี้จะถูกพิมพ์ออกแสดงทางจอภาพผ่านฟังก์ชัน puts( ) เพื่อให้เกิดความเข้าใจการใช้งานฟังก์ชัน puts( ) ได้ดียิ่งข้ึนควรศึกษาโปรแกรมตัวอย่าง ดังตอ่ ไปนี้ โปรแกรมตวั อยา่ ง แสดงโปรแกรมการใชฟ้ ังก์ชัน puts( ) /* puts1.c / #include<stdio.h> #include<conio.h> void main(void) { clrscr( ); printf(\"Computer Programming Language 1\"); puts(\" is your course.\" ); getch( ); }  ฟงั ก์ชนั รับขอ้ มูล (input functions) ในเนื้อหาฟังก์ชันการับข้อมูลของภาษา C มีฟังก์ชันท่ีใช้ในการรับข้อมูลจากคีย์บอร์ดอยู่หลาย ฟังก์ชันที่จะกล่าวถึง ดังนี้คือ ฟังก์ชัน scanf( ), ฟังก์ชัน getchar( ), ฟังก์ชัน getch( ), ฟังก์ชัน getche( ) และฟงั ก์ชนั gets( ) ซง่ึ แตล่ ะฟงั กช์ นั มรี ายละเอยี ดของการใชง้ านดังน้ี 1. scanf( ) เป็นฟังก์ชันท่ีใช้ในการรับข้อมูล จากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปรท่ีกาหนดไว้ โดย สามารถรบั ขอ้ มลู ทเ่ี ปน็ ตัวเลขจานวนเต็ม ตวั เลขทศนยิ ม ตัวอกั ขระตัวเดียว หรือข้อความก็ได้ การเขียนโปรแกรมภาษาซีเบื้องตน้ 129

รูปแบบการใช้งานฟังก์ชนั scanf(control string, argument list); โดยท่ี control string คือ รหัสรูปแบบข้อมูล (format code) โดยจะต้องเขียนอยู่ภายใต้ เคร่ืองหมาย “……..” (double quotation) argument list คือ ช่ือตัวแปรที่ใช้เก็บข้อมูลโดยจะต้องใช้เครื่องหมาย & (ampersand) นาหน้าช่ือตัวแปร ยกเว้นตัวแปรชนิด string ไม่ต้องมีเครื่องหมาย & นาหน้าชื่อ ถ้ามีตัวแปร มากกวา่ 1 ตวั แปร ใหใ้ ช้เครอ่ื งหมาย , (comma) คน่ั ระหว่างตวั แปรแตล่ ะตวั ตาราง แสดงรหสั แบบข้อมูล ทส่ี ามารถใช้ในฟงั ก์ชัน scanf( ) รหัสรปู แบบ ความหมาย (format code) ใช้กับข้อมลู ชนิดตัวอักขระตัวเดยี ว (single character : char) %c ใช้กับข้อมูลชนิดตัวเลขจานวนเต็ม (integer : int) โดยสามารถใช้กับ %d ตวั เลขฐาน 10 เทา่ นัน้ ใชก้ ับข้อมลู ชนดิ ตวั เลขจุดทศนยิ ม (floating point : float) %e ใช้กบั ขอ้ มูลชนดิ float และ double ตามลาดับ %f, %lf ใช้กับขอ้ มลู ชนิด float ใช้กบั ขอ้ มลู ชนดิ short integer %g ใชก้ ับขอ้ มูลชนดิ int โดยใชก้ บั ตวั เลขฐาน 8, ฐาน 10 และฐาน 16 %h ใชก้ บั ข้อมูลชนดิ int โดยสามารถใชก้ บั ตัวเลขฐาน 8 เทา่ น้ัน %l ใชก้ บั ข้อมูลชนิด unsigned int โดยใช้กบั ตัวเลขฐาน 10 เท่านั้น %o ใช้กบั ขอ้ มลู ชนดิ int โดยสามารถใชก้ บั ตวั เลขฐาน 16 เท่านนั้ %u ใชก้ บั ขอ้ มูลชนิด string %x %s โปรแกรมตัวอย่าง แสดงโปรแกรมการใช้ฟังก์ชัน scanf( ) ในการรับข้อมูลจากคีย์บอร์ดเข้าไปเก็บ ไว้ในตัวแปรชนดิ จานวนเตม็ /*scanf1.c*/ #include<stdio.h> void main(void) { int a; scanf(\"%d\",&a); } 130 การเขียนโปรแกรมภาษาซเี บื้องตน้

ผลลพั ธท์ ี่ไดจ้ ากโปรแกรม หน้าจอว่างๆ มีเคอร์เซอร์กระพริบเพื่อรอรับข้อมูลจากคีย์บอร์ด (ข้อมูลท่ีต้องการนั้นเป็น จานวนเต็ม เพ่ือนาไปเก็บไว้ทต่ี ัวแปร a ซ่งึ ผู้ใช้ควรเตมิ ข้อมูลตวั เลขจานวนเต็มเพื่อให้สมั พันธ์กับชนิด ของตัวแปร โปรแกรมตวั อย่าง แสดงโปรแกรมการใช้ฟังก์ชนั scanf( ) ในการรับข้อมูลจากคียบ์ อร์ดเข้า ไปเก็บไว้ในตวั แปรชนดิ จานวนเตม็ และนาคา่ ของตวั แปรออกแสดงผลที่จอภาพ /* scanf2.c*/ #include<stdio.h> Void main(void) { int a; scanf(\"%d\",&a); printf(\"Your enter is ...%d\", a); } โปรแกรมตัวอย่าง แสดงโปรแกรมการใช้ฟังก์ชนั scanf( ) ในการรับข้อมลู จากคีย์บอร์ดเข้า ไปเก็บไว้ในตัวแปรชนิดตัวอักษร เลขจานวนเต็ม และเลขทศนิยม และนาค่าของตัวแปรออก แสดงผลทีจ่ อภาพ /*scanf3.c*/ #include<stdio.h> #include<conio.h> void main(void) { char name[50]; int age; float weight, height; clrscr( ); printf(\"Enter your Name and Age: \"); scanf(\"%s %d\", name, &age); printf(\"Enter your Weight and Height : \"); scanf(\"%f %f\", &weight, &height); การเขยี นโปรแกรมภาษาซีเบื้องตน้ 131

2. ฟังก์ชัน getchar( ) เป็นฟังก์ชันท่ีใช้รับข้อมูลจากคีย์บอร์ดเพียง 1 ตัวอักขระ โดยการรับข้อมูลของฟังก์ชันน้ี จะต้องกดแป้น enter ทุกคร้ังที่ป้อนข้อมูลเสร็จ จึงทาให้เห็นข้อมูลที่ป้อนปรากฏบนจอภาพด้วย ถ้า ต้องการนาข้อมูลท่ีป้อนผ่านทางคีย์บอร์ดไปใช้งาน จะต้องกาหนดตัวแปรชนิด single character (char) ขึ้นมา 1 ตวั เพื่อเก็บคา่ ข้อมูลที่รับผ่านทางคยี ์บอร์ด ในทางตรงกันข้ามถ้าไมต่ อ้ งการใช้ข้อมูลท่ี ปอ้ นผ่านทางคยี ์บอรด์ ก็ไม่ตอ้ งกาหนดตวั แปรชนิด char ขึ้นมา รปู แบบการใชง้ านฟังก์ชัน getchar( ); หรือ char_var = getchar( ); โดยท่ี getchar( ) คือ ฟังก์ชนั ท่ใี ช้รับข้อมูลเพยี ง 1 ตัวอักขระจากคีย์บอรด์ โดยฟังก์ชนั น้ีจะไม่ มี argument ซ่ึงอาจจะใช้ getchar(void) แทนคาว่า getchar( ) ก็ได้ แต่นิยมใช้ getchar( ) มากกวา่ char_var คือ ตัวแปรชนิด char ซึง่ จะเกบ็ ข้อมลู 1 ตัวอกั ขระท่ีป้อนผา่ นทางคียบ์ อร์ด โปรแกรมตวั อย่าง แสดงโปรแกรมการใช้ฟงั ก์ชนั getchar( ) /*getchar1.c*/ #include<stdio.h> #include<conio.h> void main(void) { char cha; clrscr( ); printf(\"Enter a single character : \"); cha = getchar( ); printf(\"You type a character is ...%c \\n\",cha); } 3. ฟงั กช์ นั getch( ) เป็นฟังก์ชันที่ใช้รับข้อมูลเพียง 1 ตัวอักขระเหมือนกับฟังก์ชัน getchar( ) แตกต่างกัน ตรงท่ีเม่ือใช้ฟังก์ชันนี้รับข้อมูล ข้อมูลท่ีป้อนเข้าไปจะไม่ปรากฏให้เห็นบนจอภาพและไม่ต้องกด แปน้ enter ตาม 132 การเขียนโปรแกรมภาษาซเี บื้องต้น

รปู แบบการใชง้ านฟงั กช์ นั getch( ); หรอื char_var = getch( ); โดยท่ี getch( ) คือ ฟังก์ชันท่ีใช้รับข้อมูลเพียง 1 ตัวอักขระจากคีย์บอร์ด โดยฟังก์ชันน้ีจะไม่มี argument ดงั นน้ั อาจจะใช้ getch(void) แทนคาวา่ getch( ) กไ็ ด้ แตน่ ยิ มใช้ getch() มากกว่า char_var คอื ตวั แปรชนิด char ซง่ึ จะเกบ็ ขอ้ มลู 1 ตัวอกั ขระทีป่ อ้ นผ่านทางคยี บ์ อรด์ โปรแกรมตวั อยา่ ง แสดงโปรแกรมการใชฟ้ งั กช์ นั getch( ) /*getch1.c*/ #include<stdio.h> #include<conio.h> void main(void) { char ch; clrscr( ); printf(\"Enter a single character : \"); ch = getch( ); printf(\"\\nYou type a character is ...%c \\n\",ch); getch( ); } 4. ฟังกช์ นั getche() เป็นฟังก์ชนั ทีใ่ ชร้ ับข้อมูลจากคีย์บอรด์ เพียง 1 ตวั อักขระ เหมือนฟังก์ชัน getch() แตกตา่ ง กนั ตรงที่ขอ้ มลู ทปี่ ้อนเขา้ ไป จะปรากฏให้เหน็ บนจอภาพดว้ ย นอกนั้นมีการทางานและลักษณะการใช้ งานเหมอื นฟังกช์ นั getch() ทกุ ประการ รูปแบบการใช้งานฟังก์ชนั getche( ); หรอื char_var = getche( ); โดยที่ getche( ) คือ ฟังก์ชันท่ีใช้รับข้อมูลเพียง 1 ตัวอักขระจากคีย์บอร์ด โดยฟังก์ชันนี้จะไม่ มี argument ดงั นัน้ อาจจะใช้ getche(void) แทนคาวา่ getche() กไ็ ดแ้ ตน่ ยิ มใช้ getche() มากกว่า char_var คอื ตวั แปรชนิด char ซ่งึ จะเกบ็ ข้อมลู 1 ตวั อักขระที่ปอ้ นผา่ นทางคียบ์ อร์ด การเขียนโปรแกรมภาษาซีเบ้ืองต้น 133

โปรแกรมตวั อยา่ ง แสดงโปรแกรมการใชฟ้ งั กช์ ัน getche( ) /*getche1.c*/ #include<stdio.h> #include<conio.h> void main(void) { char e; clrscr( ); printf(\"Enter a single character : \"); e = getche( ); printf(\"\\nYou type a character is ...%c \\n\",e); getch( ); } 5. ฟงั ก์ชัน gets( ) เปน็ ฟังก์ชันท่ีใช้รับข้อมูลชนดิ ขอ้ ความ (string) จากคยี ์บอร์ด จากนั้นนาข้อมลู ทร่ี บั เข้าไป เกบ็ ไวใ้ นตัวแปรสตริง (string variables) ทีก่ าหนดไว้ รูปแบบการใชง้ านฟงั ก์ชนั gets(string_var); โดย string_var คือ ตัวแปรสตริง ซ่ึงจะใช้เก็บข้อมูลชนิดข้อความ (string constant) gets( ) คือ ฟงั กช์ ันท่ีใช้รบั ขอ้ ความจากคยี ์บอรด์ แล้วไปเกบ็ ไวใ้ นตัวแปรสตรงิ โปรแกรมตัวอย่าง แสดงโปรแกรมการใชฟ้ งั กช์ นั gets( ) /*gets1.c*/ #include<stdio.h> #include<conio.h> void main(void) { char pro[50]; clrscr( ); printf(\"Enter your province : \"); gets(pro); printf(\"Your province is ...%s\\n\", pro); getch( ); } 134 การเขยี นโปรแกรมภาษาซีเบ้ืองต้น

สรุปข้อแนะนาการใช้ฟังกช์ นั รบั ขอ้ มูล (input functions)  เมอ่ื ตอ้ งการรบั ค่าขอ้ มูล string ควรใชฟ้ ังก์ชนั gets( ) หรอื scanf( )  เมื่อต้องการรับตัวเลขหรือตัวอักษรเพียง 1 ตัว ที่ไม่ต้องการเห็นบนจอภาพ และไม่ต้อง กดแป้น enter ควรใช้ฟังกช์ ัน getch() แตถ่ ้าตอ้ งการเหน็ บนจอภาพดว้ ยควรใช้ฟังกช์ นั getche()  เม่ือต้องการรับข้อมูลตัวเลขท่ีมากกว่า 1 ตัว เช่นตัวเลขจานวนเต็มหรือตัวเลข ทศนยิ ม ควรใช้ฟังก์ชัน scanf()  กรณีท่ีใช้ฟังก์ชัน scanf( ) รับข้อมูลติดต่อกันมากกว่า 2 คร้ัง อาจเกิดความผิดพลาด ในการรับขอ้ มลู ดังนัน้ จึงควรใช้คาส่ัง ch = getchar( ); คน่ั ก่อนที่จะรับข้อมลู คร้ังท่ี 3 โดยจะตอ้ งมี คาสง่ั ประกาศตัวแปร char ch; ไวด้ ว้ ย  คาส่งั ทดสอบเง่อื นไขเพอื่ การตดั สินใจ (decision statements) คาส่ังทดสอบเง่ือนไขเพื่อการตัดสินใจ เป็นคาส่ังที่มีการทดสอบเง่ือนไขก่อนที่จะทางานตาม คาส่ังที่กาหนดไว้ ซง่ึ ไดแ้ ก่คาสัง่ if, if else โครงสรา้ ง else if (หรอื nested if) และคาสงั่ switch 1. คาส่ัง if if เป็นคาสงั่ ท่สี ัง่ ให้มกี ารทดสอบเง่ือนไขก่อนท่ีจะไปทางานตามคาส่ังที่กาหนดไว้ รปู แบบการใช้คาสัง่ if if (expression) statement; หรอื if (expression) { statement(s); } โดยท่ี expression คือ นิพจน์เง่ือนไข ซ่ึงจะมีค่าจริงหรือเท็จอย่างใดอย่างหนึ่งเท่านั้น ถ้า เง่ือนไขเป็นจริง จะทางานตามคาสั่งท่ีอยู่ใน if จากน้ันก็ออกจากคาส่ัง if ไปทาคาส่ังถัดไป ถ้า เง่อื นไขเปน็ เทจ็ จะออกจากคาส่ัง if ทันที โปรแกรมตัวอย่าง แสดงการใช้คาสง่ั if เพอ่ื ตรวจสอบคา่ ทร่ี บั จากคยี ์บอร์ด /*if1.C */ #include <stdio.h> #include <conio.h> #include <ctype.h> /*Capitalize Keys read from The Keyboard */ การเขยี นโปรแกรมภาษาซีเบ้ืองตน้ 135

main() { char any_char; clrscr(); printf(\"Please type a lowercase letter : \"); scanf(\"%c\", &any_char); if(any_char >= 'a') printf(\"In uppercase: %c \\n\", toupper(any_char)); getch(); return(0); } โปรแกรมตัวอย่าง แสดงการใช้คาสั่ง if เพื่อช่วยในการนับตัวอักขระและนับคาในประโยคที่ผู้ใช้ พมิ พ์ /*if2.c*/ #include<stdio.h> #include<conio.h> void main(void) { int charcnt = 0, wordcnt = 0; char ch; clrscr(); printf(\"Type your sentense or a phrase : \"); while( (ch=getche( ) ) != '\\r' ) { charcnt++; if( ch==' ' ) wordcnt++; } /* end while */ printf(\"\\n\\nCharacter count is %d\", charcnt); printf(\"\\nWord count is %d\", wordcnt+1); printf(\"\\n\\nPress any key back to program...\"); getch(); } 136 การเขียนโปรแกรมภาษาซเี บ้ืองตน้

2. คาสง่ั if else if else เป็นคาสั่งท่ีสัง่ ให้มกี ารทดสอบเง่ือนไข โดยมกี ารตดั สนิ ใจแบบ 2 ทางเลือก รูปแบบการใช้คาส่ัง if else if (expression) { statementA(s); } else { statementB(s); } จากรูปแบบการใช้คาส่ัง if else หมายความวา่ ถา้ นพิ จน์เง่ือนไข (expression) มีค่าเป็น จริ งจ ะ ทา ต าม ค าสั่ งชุ ด A (statementA(s);) ถ้ ามี ค่ าเ ป็น เ ท็จ จ ะท า ตา มค า ส่ัง ชุ ด B (statementB(s);) เม่อื ทาเสร็จก็ออกจากคาส่ังนี้ โปรแกรมตัวอยา่ ง แสดงการใช้คาสง่ั if else เพ่อื ตรวจสอบค่าที่รับจากคีย์บอรด์ /* if_else1.c */ #include <stdio.h> #include <conio.h> #include <ctype.h> /*Capitalize Keys read from The Keyboard */ main() { char any_char; clrscr(); printf(\"Please type a lowercase letter : \"); scanf(\"%c\",&any_char); if(any_char < 'a') printf(\"Sorry, I can not capitalize that.\\n\"); else printf(\"Thank you. In uppercase : %c.\",toupper (any_char)); printf(\"\\n\\nPress any key back to program...\"); getch(); return(0); } การเขียนโปรแกรมภาษาซีเบื้องตน้ 137

ผลลัพธ์ทไี่ ด้จากโปรแกรม  กรณที เ่ี ติมตัวอกั ษรพิมพ์เล็ก  กรณีที่เตมิ ตวั อกั ษรพมิ พ์ใหญ่ โปรแกรมตัวอย่าง แสดงการใชค้ าส่ัง if else เพอ่ื เปรยี บเทยี บคา่ ตวั เลขท่ีผ้ใู ช้เตมิ /* if_else2.c */ #include<stdio.h> #include<conio.h> void main(void) { int x, y; char ch; clrscr( ); printf(\"Enter an integer of X : \"); scanf(\"%d\",&x); printf(\"Enter an integer of Y : \"); scanf(\"%d\",&y); ch=getchar( ); if ( x==y ) printf(\"\\nX equal to Y = %d\\n\",x); else printf(\"\\nX = %d not equal to Y= %d\\n\",x,y); printf(\"\\n\\nPress any key back to program...\"); getch(); } ผลลัพธท์ ไ่ี ดจ้ ากโปรแกรม  กรณีท่เี ตมิ ตวั เลข 2 ตัวเทา่ กนั  กรณีที่เติมตัวเลข 2 ตัวไมเ่ ทา่ กนั 3. คาสง่ั โครงสรา้ ง else if (คาสัง่ nested if) else if เป็นโครงสร้างท่ีทาให้เราสามารถใช้คาส่ัง if else ซ้อนกันได้เรื่อย ๆ ส่วนมาก จะใช้ในการตดั สนิ ใจทม่ี ากกวา่ 2 ทางเลือกข้ึนไป บางคร้งั อาจเรียกโครงสร้างนวี้ า่ nested if 138 การเขียนโปรแกรมภาษาซีเบื้องต้น

รปู แบบการใช้โครงสรา้ ง nested if หรือ else if else if (expression) { statementA(s); } else if (expression){ statementB(s); } else if (expression){ **ข้อควรระวงั ในการใช้ nested if การเขียนคาสั่ง nested if ค่อนข้างยุ่งยาก อาจเกิดความสับสนได้ ควรเขียนคาส่ัง nested if ใหเ้ ย้ืองกนั เพอ่ื ความสะดวกในการแก้ไขคาสั่งในภายหลงั โปรแกรมตัวอย่าง แสดงการใช้คาสั่ง nested if เพ่ือตรวจสอบคะแนนท่ีผู้ใช้เติม แล้วให้ เกรดตามเงื่อนไขทก่ี าหนดในโปรแกรม /*nestif1.c*/ #include<stdio.h> #include<conio.h> #include<stdlib.h> void main(void) { int score, n, i; char grade; numstr[20]; clrscr( ); printf(\"Enter Number of Students : \"); n = atoi(gets(numstr)); for ( i=1; i<=n; i++ ){ printf(\"\\nEnter score of student #%d : \", i); score = atoi(gets(numstr)); if ( score >= 80 ) grade = 'A'; else if ( score >= 70 ) grade = 'B'; else if ( score >= 60 ) grade = 'C'; else if ( score >= 50 ) grade = 'D'; การเขียนโปรแกรมภาษาซีเบื้องต้น 139

else grade = 'F'; printf(\"Score = %d, Grade of std #%d is %c\\n\",score,i,grade); } /* end for */ printf(\"\\n\\nPress any key back to program...\"); getch(); } โปรแกรมตัวอย่าง แสดงการใช้คาส่งั nested if เพือ่ เขียนเสน้ ทแยงมุมในกรอบสเ่ี หลี่ยมพืน้ สีเทา /*nestif2.c */ #include <stdio.h> #include <conio.h> #include <dos.h> void main(void) { int x, y; clrscr(); printf(\"\\n\"); for (y=1; y<24; y++) { for (x=1; x<24; x++) if ( x == y ) printf(\"\\xDB\"); else if ( x == 24 - y ) printf(\"\\xDB\"); else printf(\"\\xB0\"); printf(\"\\n\"); delay(200); } printf(\"\\n\\nPress any key back to program...\"); getche(); } 140 การเขียนโปรแกรมภาษาซีเบื้องตน้

4. คาสัง่ switch switch เป็นคาสงั่ ที่ใชท้ ดสอบเงื่อนไขในกรณที ่ีมีทางเลือกสาหรับตัดสินใจมากกว่า 2 ทาง ขึ้นไปเช่นเดียวกันกับ nested if โดยมากนิยมใช้คาสั่ง switch แทนคาสั่ง nested if เพราะมี รปู แบบการใช้คาสงั่ ท่ีง่ายและสะดวกในการแกไ้ ขคาสงั่ เมอ่ื มขี ้อผิดพลาดเกิดข้ึน รูปแบบการใชค้ าส่งั switch switch (expression) { case expression1: statement(s); break; case expression2: statement(s); break; ….. case expressionN: statement(s); break; default: statement(s); } โดยท่ี expression คือ นิพจน์ หรือตัวแปรท่ีจะใช้เปรียบเทียบกับนิพจน์ expression1, expression2, …, expressionN วา่ มีคา่ ตรงกบั นพิ จนใ์ ด expression1, expression2, …, expressionN คอื นพิ จน์ หรือคา่ คงทใ่ี นเงื่อนไขท่ี 1, 2, 3, …, N ตามลาดับ break คือ คาสั่งทจ่ี ะตอ้ งใส่ไวใ้ นแต่ละ case เพื่อเป็นการบอกให้ออกจากคาสั่ง switch หลงั จากทาคาสั่งท่ีอยู่ใน case น้ัน ๆ แล้ว ถ้าหากไม่มคี าสง่ั break ใน case ใด เมื่อทางานจบ case น้ันแล้ว จะทางานใน case ถัดไปจนกว่าจะเจอคาสั่ง break ซึ่งทาให้เกิดการทางาน ผิดพลาดได้ default คอื กรณีที่ expression ไมต่ รงกับเง่ือนไขใด ๆ เลย ใหท้ างานตามคาสั่งท่เี ขยี น ไว้ใน default โดย default น้ีไม่จาเป็นต้องใส่คาสั่ง break เอาไว้ เพราะ default เป็นกรณี สดุ ท้ายของคาส่งั switch ข้อควรระวังในการใชค้ าสง่ั switch 1) ถา้ ใช้คาสงั่ switch ในแต่ละกรณี (case) จะต้องใส่คาสัง่ break เอาไวด้ ว้ ยมฉิ ะนั้น จะเกิดการทางานซ้าใน case ต่อมาจนกว่าจะเจอคาสั่ง break ยกเว้นกรณี default ไม่ต้องใส่ คาส่ัง break 2) expression ที่อยู่หลังคาสั่ง switch ควรใช้เป็นตัวแปร เพ่ือจะได้สะดวกในการนาไป เปรียบเทียบกับกรณีต่าง ๆ ส่วน expression1, expression2, …, expressionN ที่อยู่หลัง case ตา่ ง ๆ ควรใชเ้ ป็นคา่ คงท่ี การเขียนโปรแกรมภาษาซีเบ้ืองตน้ 141

โปรแกรมตวั อย่าง แสดงการใช้คาส่ัง switch เพื่อตรวจสอบเกรดท่ีผ้ใู ชเ้ ตมิ วา่ ตรงกบั กรณีใด แล้ว แสดงเกรดที่เป็นตวั เลขออกจอภาพ /*switch.c*/ #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<ctype.h> void main(void) { int n, i; float gradepoint; char grade; char numstr[20]; clrscr(); printf(\"Enter Number of Students : \"); n = atoi(gets(numstr)) ; for ( i=1; i<=n; i++ ) { printf(\"\\nEnter grade of student #%d: \", i); grade = getche( ); switch(toupper(grade)) { case 'A': gradepoint = 4.0; break; case 'B': gradepoint = 3.0; break; case 'C': gradepoint = 2.0; break; case 'D': gradepoint = 1.0; break; default: gradepoint = 0.0; } /*end switch*/ printf(\"\\nGrade Point of Student#%d is %.2f\\n\",i,gradepoint); } /* end for */ printf(\"\\n\\nPress any key back to program...\"); getch(); } /* end main */ 142 การเขียนโปรแกรมภาษาซเี บื้องตน้

 การควบคมุ การทางาน สาหรับบทน้ีจะอธิบายถึงคาสั่งควบคุมการทางานของโปรแกรม ซ่ึงแบ่งกลุ่มตามลักษณะการ ทางานตามข้อกาหนดมาตรฐานของสถาบัน ANSI (American National Standards Institute) กาหนดใหภ้ าษา C มคี าสัง่ ทีใ่ ชค้ วบคมุ การทางานของโปรแกรมดงั น้ี 1) คาส่ังวนลูปหรือทางานซ้า ๆ เป็นลูป (loop statements) ได้แก่ คาส่ัง for, while, do while และมคี าสงั่ ออกจากลปู คือคาสง่ั break หรอื ทางานในรอบตอ่ ไป คือคาส่ัง continue 2) คาสั่งทดสอบเง่ือนไขในการตัดสินใจ (decision statements) ได้แก่ คาส่ัง if, if else, โครงสร้าง else if (หรอื nested if) และคาสงั่ switch 3) คาส่ังท่ีสั่งให้ไปทางานตามจุดที่กาหนดให้ (goto statements) ได้แก่ คาส่ัง goto และ label ซง่ึ แตล่ ะคาส่ังมรี ายละเอยี ดดงั ตอ่ ไปนี้ 5. คาส่งั วนลปู หรือทางานซา้ ๆ เปน็ ลปู (loop statements) คาสั่งวนลูปเปน็ คาสั่งท่ีสามารถควบคุมโปรแกรมให้ทางานเป็นจานวนรอบตามที่เรากาหนด ไว้ หรือทางานจนกวา่ เง่ือนไขที่กาหนดไว้เป็นเทจ็ จงึ จะออกจากคาส่ังวนลปู ได้ 5.1 คาส่ัง for เป็นคาส่ังที่ส่งั ใหโ้ ปแกรมมีการทางานซา้ ๆ วนลูปจนกว่าเงอ่ื นไขท่กี าหนด ไว้เป็นเท็จ จึงออกจากคาสั่ง for ไปทาคาส่ังถัดไป ควรใช้คาสั่ง for ในกรณีที่ทราบจานวนรอบ ของการทางาน รปู แบบการใชค้ าสั่ง for for (expression1; expression2; expression3) statement; หรอื for (expression1; expression2; expression3) { statement(s); } โดยท่ี Expression 1 คือ นิพจน์ที่ใช้กาหนดค่าเริ่มต้นใหก้ ับตวั แปรท่ีจะใชว้ นลูป Expression 2 คือ นิพจน์ท่ีใช้ทดสอบเง่ือนไข ซ่ึงจะมีค่าจริงหรือเท็จอย่างใดอย่างหนึ่ง เท่าน้นั Expression 3 คอื นพิ จน์ทใ่ี ช้เพมิ่ หรอื ลดคา่ ตวั แปรทจ่ี ะใช้วนลูป statement(s) คือ คาสั่งต่าง ๆ ถ้ามีมากกว่า 1 คาสั่ง จะต้องเขียนอยู่ภายในเคร่ืองหมาย {….} การเขียนโปรแกรมภาษาซีเบ้ืองตน้ 143

โปรแกรมตัวอยา่ ง แสดงการใชค้ าสงั่ for เพือ่ วนแสดงตัวเลข 1 ถงึ 10 ออกแสดงทจ่ี อภาพ /*for1.c*/ #include<stdio.h> #include<conio.h> void main(void) { int num; clrscr( ); for (num=1; num<=10; num++) printf( \"%3d\\n\", num); /*end for*/ printf(\"\\n\\nPress any key back to program...\"); getch(); } โปรแกรมตัวอย่าง แสดงการใช้คาส่ัง for เพอื่ วนคานวณแม่สูตรคณู แม่ตา่ ง ๆ ตามผู้ใช้เตมิ และ แสดงผลท่จี อภาพ /*for2.c*/ #include<stdio.h> #include<conio.h> void main(void) { int k,i; clrscr(); printf(\"input number >>> \"); scanf(\"%d\",&k); for (i=1; i<=12; i++) rintf(\"%d x %d = %d\\n\",k,i,i*k); printf(\"\\n\\nPress any key back to program...\"); getch(); } 144 การเขยี นโปรแกรมภาษาซีเบ้ืองต้น


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook