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 หนังสือวิชาคอมพิวเตอร์ประยุกต์-63

หนังสือวิชาคอมพิวเตอร์ประยุกต์-63

Published by comatts63, 2020-11-16 10:43:10

Description: หนังสือวิชาคอมพิวเตอร์ประยุกต์-63

Keywords: คอม,คอมพิวเตอร์,ประยุกต์

Search

Read the Text Version

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

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

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

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

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

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 เป็นต้น ผู้ที่ต้องใช้ ภาษาแอสเซมบลสี ่วนมากจะเปน็ วศิ วกรคอมพวิ เตอร์ ดังน้ันภาษาแอสเซมบลีจงึ ไม่เหมาะกับผู้เริ่มต้น เขียนโปรแกรม 150 การเขียนโปรแกรมภาษาซเี บื้องตน้

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ.ตัวอย่างท่ี 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 โดยมีจดุ ประสงค์ เพ่ือใช้ในการสอนการเขียนโปรแกรมภาษาเชิงกระบวนการ ในมหาวิทยาลัย แต่เน่ืองจากภาษา ปาสคาลไม่มีคุณลักษณะท่ีจะสนับสนุนการพัฒนาโปรแกรมด้านธุรกิจและอุตสาหกรรมจึงไม่ได้รับ ความนยิ มมากนกั การเขียนโปรแกรมภาษาซีเบ้ืองต้น 151

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ. ภ า ษ า ซี ( 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 อย่างนี้เป็นต้น วิธีการตรวจหาความผิดพลาดแบบนี้ คือ ตรวจสอบการคานวณผลลัพธ์ของ โปรแกรมว่าตรงกับผลลัพธ์ที่คานวณด้วยมือหรือเคร่ืองคิดเลขหรือไม่ ถ้าไม่ตรงกันแสดงว่าเกิดความ ผิดพลาดทางตรรกะข้นึ วธิ ีการแกไ้ ขก็คอื การแกไ้ ขสตู รใหถ้ กู ตอ้ ง หรอื แก้ไขลาดบั การทางานให้ถกู ต้อง ดังนั้น จะเห็นได้ว่าผู้เขียนโปรแกรมจะต้องทาการทดสอบโปรแกรมและแก้ไข โปรแกรมใหส้ ามารถทางานไดต้ ามทีต่ อ้ งการ 152 การเขียนโปรแกรมภาษาซีเบ้ืองต้น

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ. 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) การเขียนโปรแกรมภาษาซีเบ้ืองต้น 153

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ. 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 154 การเขียนโปรแกรมภาษาซเี บื้องต้น

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ. 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 การเขยี นโปรแกรมภาษาซีเบื้องต้น 155

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ. 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) หรือชื่อฟังก์ชัน หรือชื่อ คาสัง่ ในภาษานน้ั ๆ 156 การเขียนโปรแกรมภาษาซีเบ้ืองตน้

คาสงวนในภาษา 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) คน่ั ระหวา่ งชื่อตัวแปรได้ การเขยี นโปรแกรมภาษาซีเบ้ืองต้น 157

ตาราง แสดงชนดิ ของตวั แปร จานวน 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( ) ซง่ึ แตล่ ะฟงั กช์ นั มรี ายละเอยี ดของการใชง้ านดังน้ี 158 การเขียนโปรแกรมภาษาซเี บื้องต้น

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 การเขยี นโปรแกรมภาษาซีเบื้องตน้ 159

ตาราง แสดงรหัสควบคมุ ขอ้ มลู ทสี่ ามารถใช้ในฟงั ก์ชัน 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( ); } 160 การเขยี นโปรแกรมภาษาซีเบื้องต้น

โปรแกรมตัวอย่าง แสดงโปรแกรมการใช้ฟังกช์ ัน 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) การเขียนโปรแกรมภาษาซีเบื้องตน้ 161

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ.รูปแบบการใช้งานฟังกช์ นั 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( ); } 162 การเขยี นโปรแกรมภาษาซีเบื้องต้น

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( ) เป็นฟังก์ชันท่ีใช้ในการรับข้อมูล จากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปรท่ีกาหนดไว้ โดย สามารถรบั ขอ้ มลู ทเ่ี ปน็ ตัวเลขจานวนเต็ม ตวั เลขทศนยิ ม ตัวอกั ขระตัวเดียว หรือข้อความก็ได้ การเขียนโปรแกรมภาษาซีเบื้องตน้ 163

รูปแบบการใช้งานฟังก์ชนั 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); } 164 การเขียนโปรแกรมภาษาซเี บื้องตน้

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ.ผลลพั ธท์ ี่ไดจ้ ากโปรแกรม หน้าจอว่างๆ มีเคอร์เซอร์กระพริบเพื่อรอรับข้อมูลจากคีย์บอร์ด (ข้อมูลท่ีต้องการนั้นเป็น จานวนเต็ม เพ่ือนาไปเก็บไว้ทต่ี ัวแปร 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); การเขยี นโปรแกรมภาษาซีเบื้องตน้ 165

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ. 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 ตาม 166 การเขียนโปรแกรมภาษาซเี บื้องต้น

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ.รปู แบบการใชง้ านฟงั กช์ นั 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 ตวั อักขระที่ปอ้ นผา่ นทางคียบ์ อร์ด การเขียนโปรแกรมภาษาซีเบ้ืองต้น 167

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ.โปรแกรมตวั อยา่ ง แสดงโปรแกรมการใชฟ้ งั กช์ ัน 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( ); } 168 การเขยี นโปรแกรมภาษาซีเบ้ืองต้น

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ.สรุปข้อแนะนาการใช้ฟังกช์ นั รบั ขอ้ มูล (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 */ การเขยี นโปรแกรมภาษาซีเบ้ืองตน้ 169

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ. 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(); } 170 การเขียนโปรแกรมภาษาซเี บ้ืองตน้

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ. 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); } การเขียนโปรแกรมภาษาซีเบื้องตน้ 171

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ.ผลลัพธ์ทไี่ ด้จากโปรแกรม  กรณที เ่ี ติมตัวอกั ษรพิมพ์เล็ก  กรณีที่เตมิ ตวั อกั ษรพมิ พ์ใหญ่ โปรแกรมตัวอย่าง แสดงการใชค้ าส่ัง 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 172 การเขียนโปรแกรมภาษาซีเบื้องต้น

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ.รปู แบบการใช้โครงสรา้ ง 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'; การเขียนโปรแกรมภาษาซีเบื้องต้น 173

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ. 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(); } 174 การเขียนโปรแกรมภาษาซีเบื้องตน้

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ. 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 ตา่ ง ๆ ควรใชเ้ ป็นคา่ คงท่ี การเขียนโปรแกรมภาษาซีเบ้ืองตน้ 175

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ.โปรแกรมตวั อย่าง แสดงการใช้คาส่ัง 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 */ 176 การเขียนโปรแกรมภาษาซเี บื้องตน้

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ.  การควบคมุ การทางาน สาหรับบทน้ีจะอธิบายถึงคาสั่งควบคุมการทางานของโปรแกรม ซ่ึงแบ่งกลุ่มตามลักษณะการ ทางานตามข้อกาหนดมาตรฐานของสถาบัน 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 คาสั่ง จะต้องเขียนอยู่ภายในเคร่ืองหมาย {….} การเขียนโปรแกรมภาษาซีเบ้ืองตน้ 177

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ.โปรแกรมตัวอยา่ ง แสดงการใชค้ าสงั่ 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(); } 178 การเขยี นโปรแกรมภาษาซีเบ้ืองต้น

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ.โปรแกรมตวั อย่าง แสดงการใชค้ าสง่ั for เพ่ือวนคานวณค่าสะสมตัวเลข 1 ถึง 10 และแสดงผล ออกจอภาพ /*for3.c */ #include<stdio.h> #include<conio.h> void main(void) { int i, sum; clrscr( ); for( i=1, sum=0; i<=10; i++ ) { sum+=i; printf(\"I = %d, SUM = %d\\n\", i, sum); } /*end for*/ printf(\"\\n\\nI = %d, SUM = %d\",i,sum); printf(\"\\n\\nPress any key back to program...\"); getch(); } โปรแกรมตัวอย่าง แสดงการใช้คาส่ัง for เพ่ือวนแสดงตัวเลขแต่ละแถว ซึ่งแสดงแถวละ 10 ตัว ออกแสดงท่จี อภาพ /*for4.c*/ #include<stdio.h> #include<conio.h> void main(void) { int row, col; clrscr( ); for (row=1; row<=5; row++) { for( col=1; col<=10 ; col++ ) printf(\"%2d\",row ); printf(\"\\n\"); } /* end for(row) */ printf(\"\\n\\nPress any key back to program...\"); getch(); } การเขยี นโปรแกรมภาษาซีเบ้ืองตน้ 179

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ. 5.2 คาส่ัง while เป็นคาสั่งที่มีการทางานซ้า ๆ เป็นลูป และมีลักษณะการทางานของ คาส่ังคล้ายกับคาส่ัง for แตกต่างกนั ตรงท่ี การใช้ while ไมต่ ้องทราบจานวนรอบของการทางาน ทแี่ น่นอน แต่ตอ้ งมเี ง่อื นไขท่เี ป็นเทจ็ จงึ จะออกจากคาส่ัง while ได้ รปู แบบการใช้คาสงั่ while while (expression) statement; หรือ while (expression) { statement(s); } โดยท่ี expression คอื นพิ จนท์ ่ใี ช้ทดสอบเงอ่ื นไข ถ้านพิ จนน์ ้ีใหผ้ ลลัพธเ์ ปน็ จริงจะทาตามคาส่งั ท่ี อยภู่ ายในคาสั่ง while จนกว่าเง่ือนไขเปน็ เทจ็ จึงออกจากคาส่ัง while ได้ โปรแกรมตัวอยา่ ง แสดงการใชค้ าสัง่ while เพอื่ วนคานวณค่าสะสมตัวเลข 1 ถึง 10 และหา คา่ เฉลย่ี แลว้ แสดงผลออกจอภาพ /* while1.c*/ #include<stdio.h> #include<conio.h> void main(void) { int n=1; float sum =0 , avg; clrscr( ); while ( n < 11 ) { sum+=n; n++; } /* end while */ n--; avg = sum/n; printf(\"N = %d, Sum = %.2f\\n\",n, sum); printf(\"Average = %.2f\", avg); printf(\"\\n\\nPress any key back to program...\"); getch(); } 180 การเขยี นโปรแกรมภาษาซีเบ้ืองต้น

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ. โปรแกรมตัวอย่าง แสดงการใช้คาสั่ง while เพื่อวนทางานให้ผู้ใช้เติมตัวอักษร และ แสดงผลออกจอภาพไปเรอื่ ย ๆ จนกว่าจะกด enter ถงึ หยุดการทางาน /* while2.c*/ #include<stdio.h> #include<conio.h> void main(void) { char ch='A'; while (ch != '\\r') { clrscr(); printf(\"Enter a character : \"); ch=getche(); printf(\"\\nYour type a character is...%c\", ch); getch(); } /* end while */ } โปรแกรมตัวอย่าง แสดงการใช้คาสั่ง while เพ่ือวนการทางานให้ผใู้ ชเ้ ติมตัวเลข เต็มบวก หรอื เตม็ ลบ หรอื ศนู ย์ และมกี ารนับจานวนตัวเลขแต่ละชนิดดว้ ย แล้วแสดงผลทีไ่ ด้ออกจอภาพ /*while3.c*/ #include <stdio.h> #include <conio.h> void main(void) { float in_key; int p=0,z=0,n=0, c=1; clrscr(); while (c<=10) { printf(\"Enter a value %d : \", c); scanf(\"%f\", &in_key); if (in_key<0.0) n++; else if (in_key==0.0) z++; การเขยี นโปรแกรมภาษาซีเบื้องตน้ 181

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ. else p++; c++; } printf(\"Negative = %d\\n\", n); printf(\"Positive = %d\\n\", p); printf(\"Zero = %d\\n\", z); getch(); } 5.3 คาส่ัง do while เป็นคาส่ังท่ีมีการทางานซ้า ๆ วนลูป คล้ายกับคาสั่ง while มาก แตกตางกันตรงที่คาส่ัง do while จะทดสอบเงื่อนไขหลังจากท่ีได้ทางานตามคาสั่งภายในลูปไป แล้ว 1 รอบ จากน้ันจึงค่อยย้อนกลับมาทดสอบเง่อื นไขอีกครั้งหน่ึง ถ้าเง่ือนไขเป็นจริงก็จะทางาน ตามคาสัง่ ภายในลูป แตถ่ ้าเงอื่ นไขเป็นเทจ็ จะออกจากคาสง่ั do while ทันที รูปแบบการใช้คาส่ัง do while do { statement(s); } while (expression); ขอ้ ควรระวังในการใชค้ าส่ัง do while ควรระวังเง่ือนไขของคาส่ัง do while ต้องพิจารณาให้ดีว่ามีทั้งกรณีท่ีเป็นจริงและเท็จอยู่ หรือไม่ ถ้ามีอยู่ท้ัง 2 กรณี แสดงวา่ ใช้คาสั่งนี้ได้ถูกต้องตามไวยากรณข์ องคาสั่งนี้ ถ้ามีเฉพาะกรณี ท่ีเงื่อนไขเป็นจริงเท่านั้นแสดงว่าเกิดลักษณะการทางานวนลูป (looping) ไม่มีทางออกจากคาส่ังน้ี ในทานองกลับกนั ถา้ เงอ่ื นไขเปน็ เทจ็ อยา่ งเดียว จะทาคาสั่ง do while เพยี งครัง้ เดยี ว โปรแกรมตัวอย่าง แสดงการใชค้ าส่ัง do while เพือ่ วนลูปแสดง main menu ให้ผู้ใช้ เลอื กเมนู ไปเรื่อย ๆ จนกว่าเลอื กเมนทู ี่ 5 ถงึ จะออกจากโปรแกรม /* dowhile1.c*/ #include<stdio.h> #include<conio.h> void main(void) { char choice; clrscr(); do { 182 การเขยี นโปรแกรมภาษาซีเบ้ืองตน้

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ. printf(\"\\n\\n******* MAIN MENU *******\\n\"); printf(\"*************************\\n\\n\"); printf(\"1. Create New File\\n\"); printf(\"2. Use an Old File\\n\"); printf(\"3. Edit data record in File \\n\"); printf(\"4. Append data record in File\\n\"); printf(\"5. Exit Program\\n\"); printf(\"Enter your choice(1,2,3,4,5): \"); choice=getche(); }while(choice != '5'); } โปรแกรมตวั อย่าง แสดงการใชค้ าสั่ง do while เพือ่ วนลปู คานวณค่าผลบวกตวั เลข 1 ถงึ 100 /*dowhile2.c*/ #include <stdio.h> #include <conio.h> void main(void) { int i=1, sum=0; clrscr(); do { sum = sum+i; i++; } while (i<=100); printf(\"Sum = %d\", sum); printf(\"\\n\\nPress any key back to program...\"); getch(); } 5.4 คาส่ัง break เป็นคาสั่งที่สั่งให้ออกจากคาสั่ง for หรือ while หรือ do while หรอื คาสง่ั switch รูปแบบการใช้คาส่งั break break; การเขยี นโปรแกรมภาษาซีเบื้องตน้ 183

ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ.โปรแกรมตัวอยา่ งทแี่ สดงการใช้คาสั่ง break ควบคู่กบั คาส่งั for /*break.c*/ #include<stdio.h> #include<conio.h> void main(void) { int j; clrscr(); for (j=1; j<=20; j++) { printf(\"%d\\t\",j); if (j==10) break; /*break when j==10 */ } /*end for*/ printf(\"\\n\\nPress any key back to program...\"); getch(); } 5.5 คาสั่ง continue เปน็ คาส่ังที่สั่งใหก้ ลับไปทางานท่ีคาส่งั แรกของลูปคาสัง่ for หรอื while หรอื do while ทาให้มีการทางานในรอบตอ่ ไป รปู แบบการใชค้ าสงั่ continue continue; โปรแกรมตัวอยา่ ง แสดงการใช้คาสงั่ continue ควบค่กู ับคาสั่ง for /*continue.c*/ #include<stdio.h> #include<conio.h> void main(void) { int j; clrscr(); for( j=1; j<=20; j++ ){ printf(\"%d\\t\",j); if (j==5) { j=j+10; continue; } } printf(\"\\n\\nPress any key back to program...\"); getch(); } 184 การเขยี นโปรแกรมภาษาซเี บ้ืองต้น

บรรณานกุ รม “คมู่ ือการใช้งาน Adobe Photoshop CC.” [ออนไลน]์ . เขา้ ถงึ ได้จาก : http://www.slideshare.net/surachet179/photoshop-cs-4672544. (วันที่สบื ค้น 10 พฤษภาคม 2562). ทัศยาภรณ์ เกื้อนุ่น,พรพรรณ แพฝึกฝน. (2555). คู่มือ Adobe Photoshop CC +CD. (พมิ พ์คร้งั ที่ 1). นนทบรุ ี : บรษิ ทั โปรวิช่นั จากดั . “การใช้งานโปรแกรม Photoshop”. เขา้ ถงึ ไดจ้ าก : www.bangkudee.ac.th/elearning/Web%20Design/การใชโ้ ปรแกรม20Photoshop.pdf (วนั ท่สี บื ค้น 10 พฤษภาคม 2562). คู่มือการสร้างเว็บไซต์ด้วย Google Sites .ศูนย์บริการคอมพิวเตอร์ คณะเศรษฐศาสตร์ จุฬาลงกรณ์ มหาวทิ ยาลัย : Econ Chula “การตดั ต่อวดิ โี อสาหรับผเู้ ริม่ ต้น เพอ่ื กา้ วเขา้ สู่มืออาชพี ด้วยโปรแกรม Adobe Premiere CC 2014” [ออนไลน]์ . เข้าถึงได้จาก: https://tinyurl.com/y37gw8bs. (วนั ที่สบื ค้น 12 พฤษภาคม 2562). “Ca351 คมู่ อื adobe premiere pro cs6” [ออนไลน์]. เขา้ ถึงไดจ้ าก: https://tinyurl.com/yyf3hbbf (วันทส่ี ืบคน้ 12 พฤษภาคม 2562). “อบรมการใชโ้ ปรแกรม adobe premiere pro cs6” [ออนไลน์]. เข้าถงึ ได้จาก: https://tinyurl.com/y4jmmguo (วนั ทีส่ บื ค้น 12 พฤษภาคม 2562). “ภาษาซีเบื้องต้น” [ออนไลน]์ . เข้าถึงไดจ้ าก: https://sites.google.com/a/banraiwitthaya.ac.th /kruwattana/kar-kheiyn-porkaerm/bth-thi-1-phasa-si-beuxng-tn (วนั ทีส่ ืบคน้ 12 พฤษภาคม 2562). ห ันงสือประกอบการเรียน แผนกวิชา ผวสม.กกศ.รร.จอ.ยศ.ทอ.


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