ชุดที่1 การพฒั นาโปรแกรมและการจาลองความคดิ บตั รเน้อื หาที่ 3 การเขียนโปรแกรม ในหวั ขอ้ เรื่องการเขยี นโปรแกรมจะกล่าวถงึ เนื้อหา 2 สว่ น คอื ความหมายของโปรแกรมคอมพิวเตอร์ และภาษาคอมพิวเตอรด์ งั มีรายละเอียดตอ่ ไปนี้ ความหมายของโปรแกรมคอมพิวเตอร์ โปรแกรมคอมพิวเตอร์ (computer program) หมายถึง ชุดของคาสั่งที่เขียนขึ้นเพื่อสั่งให้ คอมพวิ เตอรท์ างานตามที่ตอ้ งการ ส่วนการเขียนโปรแกรม (programming) หมายถงึ การเขียนชุดคาส่ังด้วย ภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่งเพื่อให้คอมพิวเตอร์ทางานตามโปรแกรมที่เราเขียนขึ้น ดังนั้นผู้เขียน โปรแกรม (programmer) จึงจาเป็นต้องเรียนรู้ภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่งหรือหลายภาษาแล้ว ฝกึ ฝนทักษะการเขียนโปรแกรมดว้ ยภาษาคอมพิวเตอร์ท่ีตอ้ งการใชง้ านใหเ้ กิดความชานาญจึงจะสามารถเขียน โปรแกรมคอมพวิ เตอรไ์ ดอ้ ยา่ งมปี ระสิทธภิ าพ ภาษาคอมพวิ เตอร์ ภาษาคอมพิวเตอร์ (computer language) หมายถึง ภาษาที่สามารถนามาใช้เขียนโปรแกรม 1 คอมพิวเตอรไ์ ด้ ซง่ึ แต่ละภาษามรี ายละเอียดดังตอ่ ไปน้ี 1. ภาษาเครอื่ ง (machine language) ภาษาเครอ่ื งจัดเป็นภาษาคอมพิวเตอร์ภาษาเดียวท่ีสามารถตดิ ต่อกับคอมพิวเตอร์ได้โดยตรงเพราะว่า การเขียนคาสงั่ และข้อมลู ในภาษาเครื่องใชร้ ะบบเลขฐานสอง (binary number system) คือใชต้ ัวเลข 0 และ 1 เท่านั้น ทาให้เครื่องคอมพิวเตอร์สามารถทางานได้รวดเร็วส่วนข้อเสียของภาษาเครื่อง คือ เครื่อง คอมพวิ เตอร์ตา่ งชนิดกันมีลักษณะการเขียนภาษาเคร่ืองที่แตกต่างกันไป และเกดิ ความยุง่ ยากในการปรับปรุง แกไ้ ข ทาให้เกดิ ความไม่สะดวกในการใชง้ าน ดงั นั้นภาษานจ้ี งึ ไมเ่ หมาะกบั ผู้เริ่มต้นเขียนโปรแกรม ชุดกิจกรรมการเรยี นรู้การเขยี นโปรแกรมภาษาคอมพวิ เตอร์ รายวชิ าภาษาซี ง30243 ช้นั มธั ยมศกึ ษาปีที่ 5
ชดุ ท่ี1 การพัฒนาโปรแกรมและการจาลองความคดิ ตัวอย่างท่ี 1.18 แสดงคาสง่ั ของภาษาเครือ่ งมดี ังนี้ ถ้าเราตอ้ งการสั่งใหเ้ ครอื่ งทางานตามคาสงั่ 9 + 3 แสดงได้ดงั น้ี การบวกแทนดว้ ยรหัส 10101010 เลข 9 เปลยี่ นเป็นเลขฐานสอง 00001001 เลข 3 เปลย่ี นเปน็ เลขฐานสอง 00000011 ดงั นั้น คาสั่ง 9 + 3 เขียนเป็นภาษาเครือ่ งได้ดงั นี้ 00001001 10101010 00000011 2. ภาษาแอสเซมบลี (assembly language) ภาษาแอสเซมบลีหรือจะเรียกชื่ออีกอย่างว่าภาษาระดับต่าซึ่งเป็นภาษาคอมพิวเตอร์ที่พัฒนาขึ้นมา เพอื่ ใหผ้ เู้ ขียนโปรแกรมสามารถเขยี นโปรแกรมติดตอ่ กบั คอมพวิ เตอรไ์ ด้งา่ ยกวา่ ภาษาเครือ่ งส่วนการเขยี นคาสั่ง ในภาษาแอสเซมบลีจะใช้คาย่อของภาษาอังกฤษและอ้างถึงตาแหน่งที่อยู่ภายในคอมพิวเตอร์เป็ นส่วนใหญ่ ไดแ้ ก่ MOVE, DC, DS, CL10 เปน็ ตน้ ผู้ท่ีตอ้ งใชภ้ าษาแอสเซมบลีส่วนมากจะเป็นวศิ วกรคอมพิวเตอร์ ดงั น้ัน ภาษาแอสเซมบลจี งึ ไม่เหมาะกับผเู้ ร่ิมตน้ เขียนโปรแกรม ตัวอย่างท่ี 1.19 แสดงคาสงั่ ของภาษาแอสเซมบลีมดี ังนี้ ถา้ เราต้องการส่งั ให้เครอื่ งทางานตามคาสงั่ 9 + 3 แสดงได้ดังนี้ MOV AX, 9 MOV BX, 3 ADD AX, BX 3. ภาษาระดบั สงู (high level language) 2 ภาษาระดับสูงเปน็ ภาษาทผ่ี ู้เขยี นโปรแกรมสามารถเขา้ ใจได้งา่ ยกว่าภาษาแอสเซมบลแี ละภาษาเครื่อง ทั้งนี้ก็เพราะการเขียนคาสั่งของภาษาระดับสูงมีลักษณะเป็นภาษาอังกฤษซึ่งอ่านแล้วเข้าใจได้ง่ายกว่า ภาษาแอสเซมบลี เชน่ ใชค้ าวา่ READ, WRITE, PRINT, COMPUTE เปน็ ตน้ ตัวอยา่ งของภาษาระดับสูงได้แก่ ภาษาฟอรแ์ ทรน (FORTRAN), ภาษาโคบอล (COBOL), ภาษาเบสกิ (BASIC), ภาษาปาสคาล (PASCAL) และ ภาษาซี (C) เป็นต้น ซ่ึงแตล่ ะภาษามปี ระวัตพิ อสงั เขปดังตอ่ ไปน้ี - ภ า ษ า ฟ อ ร ์ แ ท ร น ( FORTRAN ย ่ อ ม า จ า ก FORmula TRANslator) พ ั ฒ น า โ ด ย บริษัท IBM ระหว่างปี ค.ศ.1954 ถึง ค.ศ.1957 ภาษานี้ใช้สาหรับการพัฒนาโปรแกรมประยุกต์ด้าน ชุดกิจกรรมการเรียนรู้การเขยี นโปรแกรมภาษาคอมพวิ เตอร์ รายวชิ าภาษาซี ง30243 ชน้ั มธั ยมศึกษาปีที่ 5
ชุดที่1 การพัฒนาโปรแกรมและการจาลองความคดิ วิทยาศาสตร์และวิศวกรรมศาสตร์ ที่ต้องใช้ในการคานวณสมการคณิตศาสตร์ที่ซับซ้อนปัจจุบันภาษาฟอร์ แทรนยังเป็นท่นี ยิ มใช้ในการพฒั นาโปรแกรมด้านวิทยาศาสตรแ์ ละวิศวกรรมศาสตร์ - ภาษาโคบอล (COBOL ย่อมาจาก Common Business Oriented Language) พฒั นาขึ้นใน ปี ค.ศ.1959 เป็นภาษาทีพ่ ัฒนาข้ึนมาเพ่ือใช้ในการพัฒนาโปรแกรมประยกุ ต์ด้านธุรกิจและการคา้ ปัจจุบัน โปรแกรมทใี่ ชใ้ นดา้ นธุรกจิ จานวนมากยังเปน็ โปรแกรมท่พี ัฒนามาจากภาษาโคบอล - ภาษาเบสิก (BASIC ย่อมาจาก Beginners All- purpose Symbolic Instructional Code) เป็นภาษาที่พัฒนาขึ้นโดยมีจุดประสงค์เพื่อให้ผู้เริ่มต้นพัฒนาโปรแกรมสามารถเรียนรู้และเข้าใจการพัฒนา โปรแกรมอยา่ งง่าย ภาษาเบสิกเปน็ ภาษาคอมพวิ เตอร์ภาษาแรกท่ีใช้เคร่อื งไมโครคอมพวิ เตอร์ ภาษาคอมพวิ เตอร์ท่พี ฒั นาขึน้ ในยุคแรกยังมขี อ้ จากัดในการที่จะพัฒนาโปรแกรมขนาดใหญ่ท้ังน้ีเนื่องจาก ภาษาคอมพิวเตอร์เหล่านั้นขาดโครงสร้างที่ดีทาให้การพัฒนาโปรแกรมที่มีขนาดใหญ่และมีความซับซ้อน เป็นไปได้ยากในช่วงต้นปี ค.ศ.1970 จึงมีภาษาคอมพิวเตอร์ที่เป็นภาษาเชิงกระบวนก าร (Procedural หรือ Structural Language) เกิดขึ้นภาษาคอมพิวเตอร์ประเภทน้ีจะมีความยืดหยุ่นในการ พัฒนาโปรแกรมทาให้สามารถแก้ไขและบารุงรักษาได้ง่ายเนื่องจากโปรแกรมถูกแยกออกเป็นส่วน ๆ ภาษาคอมพิวเตอรท์ เี่ ป็นภาษาเชิงกระบวนการท่ีสาคญั คอื - ภาษาปาสคาล (Pascal) พฒั นาโดย Niclaus Wirth ในปี ค.ศ.1971 โดยมจี ดุ ประสงค์เพื่อใช้ในการ สอนการเขียนโปรแกรมภาษาเชิงกระบวนการ ในมหาวิทยาลยั แตเ่ น่อื งจากภาษาปาสคาลไม่มีคุณลกั ษณะท่ีจะ สนบั สนุนการพฒั นาโปรแกรมดา้ นธุรกจิ และอุตสาหกรรมจึงไมไ่ ดร้ บั ความนิยมมากนัก - ภาษาซี (C) พัฒนาขึ้นในช่วงเดียวกับภาษาปาสคาลโดยนักวิจัยทีห่ ้องปฏิบัติการ AT&T Bell ซึ่งได้ นาเอาจุดเด่นของภาษา BCPL และภาษา B มาใช้และได้เพิ่มคุณลักษณะและชนิดข้อมูลอื่นเข้ามาด้วยเดิม ภาษาซีถือว่าเป็นภาษาคอมพิวเตอร์ที่สาคัญในการพัฒนาโปรแกรมบนระบบปฏิบตั ิการยูนิกส์ (Unix) ซึ่งเป็น ภาษาคอมพิวเตอร์ที่สามารถสร้างโปรแกรมประยุกต์ที่ทางานได้รวดเร็วมากเมื่อเทียบกับภาษาคอมพิวเตอร์ อ่ืนๆ 4. ภาษาระดับสูงมาก (very high level language) ภาษาระดับสงู มาก บางครงั้ เรยี กวา่ Fourth Generation Languages (4GLs) เปน็ ภาษาท่ีมลี ักษณะ สาคัญคือผู้เขียนโปรแกรมไม่ต้องบอกวิธีการทางานโดยละเอียดเพียงแต่ระบุคาสั่งให้ทางานสั้น ๆ ให้ภาษา ระดับสูงมากเข้าใจก็เพียงพอส่วนวธิ ีการคานวณหรือการทางานภาษาระดับสูงมากจะเป็นผู้จัดการเองทั้งสิ้น บางครัง้ เรียกวา่ non-procedure language ตัวอย่างภาษาระดับสูงมาก ได้แก่ ภาษา SQL (Structured Query Language) ซึ่งนิยมใช้กันในซอร์ฟแวร์ พัฒนาระบบจัดการฐานข้อมูล เชน่ ORACLE เป็นต้น ชดุ กิจกรรมการเรียนรู้การเขยี นโปรแกรมภาษาคอมพิวเตอร์ 3 รายวชิ าภาษาซี ง30243 ช้นั มธั ยมศกึ ษาปีที่ 5
ชุดท่ี1 การพัฒนาโปรแกรมและการจาลองความคิด 5. ภาษาระดบั ธรรมชาติ (natural language) ภาษาธรรมชาติจะเกี่ยวข้องกับระบบฐานความรู้ (knowledge based system ) และกฎ อ้างอิง (inference rules) เพียงแต่ผู้ใช้ภาษาธรรมชาติป้อนคาถามผ่านเข้าไปในคอมพิวเตอร์ที่มี ภาษาธรรมชาติก็จะทาการวิเคราะห์คาถามแล้วไปค้นหาคาตอบจากระบบฐานความรู้ที่เก็บไว้ตัวอย่างของ ภาษาธรรมชาติ ไดแ้ ก่ ภาษา PROLOG และภาษา LISP (List Processing Language) การทดสอบและแก้ไขโปรแกรม หลังจากที่เราเขียนโปรแกรมเสร็จแล้วข้ันตอนต่อไป คือ การทดสอบโปรแกรมท่ีเขียนขึ้นซ่ึงอาจพบ ความผดิ พลาดได้ 2 ชนิดดงั นี้ 1. ความผิดพลาดทางไวยากรณ์ภาษา (syntax error) เป็นความผิดพลาดที่เกิดจากการเขียน คาสั่งของภาษาคอมพิวเตอร์ผิด ตัวอย่างเช่น คาสั่ง printf( ) ในภาษาซี ต้องเขียนด้วยตัวอักษรตัวเล็กแต่ เขียนเป็น PRINTF( ) เป็นต้น โดยส่วนมากความผิดพลาดทางไวยากรณ์จะถูกตรวจสอบพบเมื่อมีการแปล โปรแกรม (compile) ให้เป็นภาษาเครื่อง ซง่ึ เราสามารถแกไ้ ขโดยการเขยี นคาสง่ั ให้ถกู ต้องตามไวยากรณข์ อง ภาษานั้น ๆ 2. ความผิดพลาดทางตรรกะ (logical error) เป็นความผิดพลาดที่เกดิ จากการลาดบั การทางาน ผิดหรือป้อนสูตรคานวณผิด ตัวอย่างเช่น ต้องการหาค่า X = X + Y แต่ป้อนสูตรเป็น X = X * Y อย่าง น้ี เป็นต้น วิธีการตรวจหาความผิดพลาดแบบนี้คือตรวจสอบการคานวณผลลัพธ์ของโปรแกรมว่าตรงกับ ผลลพั ธท์ ่คี านวณดว้ ยมือหรอื เคร่อื งคิดเลขหรอื ไม่ถา้ ไม่ตรงกันแสดงว่าเกดิ ความผิดพลาดทางตรรกะขึ้นวิธีการ แก้ไขก็คือการแก้ไขสูตรให้ถูกต้อง หรือแก้ไขลาดับการทางานให้ถูกต้องดังนั้นจะเห็นได้ว่าผู้เขียนโปรแกรม จะต้องทาการทดสอบโปรแกรมและแกไ้ ขโปรแกรมให้สามารถทางานไดต้ ามทีต่ อ้ งการ ชดุ กิจกรรมการเรียนรกู้ ารเขยี นโปรแกรมภาษาคอมพวิ เตอร์ 4 รายวชิ าภาษาซี ง30243 ช้นั มัธยมศึกษาปีท่ี 5
ชุดท่ี1 การพัฒนาโปรแกรมและการจาลองความคดิ การจัดทาเอกสารประกอบ และการบารงุ รกั ษาโปรแกรม เมื่อผู้เขียนโปรแกรมได้ท าการทดสอบโปรแกรมและแก้ไขความ ผิดพลาดที่เกิดขึ้นเรียบร้อยแล้ว ขั้นตอนต่อไปก็ควรจัดทาคู่มือการใช้โปรแกรมเพราะจะทาให้ผู้ใชโ้ ปรแกรมสามารถใชง้ านไดถ้ ูกตอ้ ง โดยคู่มอื การใชโ้ ปรแกรมทดี่ คี วรจัดทาในลักษณะที่แสดงการทางานเปน็ ขน้ั ตอน ผ้ใู ช้โปรแกรมสามารถปฏิบตั ติ ามได้จริง ส่วนการบารุงรักษาโปรแกรมที่พัฒนาขึ้นก็ต้องมีคาแนะนาให้ผู้ใช้โปรแกรมปฏิบัติ ตัวอย่างเช่น การเก็บ โปรแกรมต้นฉบับ ควรเก็บไวใ้ นกลอ่ งที่มิดชิดป้องกนั ฝุน่ ได้ไม่ควรเก็บไวบ้ นโต๊ะทางานไมค่ วรเกบ็ ไว้ในรถยนต์ เพราะอาจถูกอากาศร้อนทาให้เสียได้ นอกจากน้ีตอ้ งมีการสาเนาโปรแกรมตน้ ฉบับเอาไวอ้ ยา่ งนอ้ ย 1 ชุด แล้ว นาชุดที่สาเนาไปใช้ไม่ควรใช้โปรแกรมต้นฉบับโดยตรงควรเก็บเอาไว้สาหรับกรณีท่ีโปรแกรมสาเนาเกดิ ปัญหา จะได้นาโปรแกรมต้นฉบบั มาทาสาเนาและใช้งานไดท้ ันที โครงสร้างภายในโปรแกรม เนื้อหาในหัวข้อนี้จะกล่าวถึงรูปแบบโครงสร้างภายในโปรแกรมที่ผู้เขียนโปรแกรมจาเป็นต้องทราบ 5 เพราะช่วยให้ผู้เขียนโปรแกรมสามารถเลือกใช้คาสั่งให้สอดคล้องกับโครงสร้างภายในโปรแกรมได้ ซึ่งมี เนื้อหา 2 ส่วนคือ ลักษณะของโปรแกรมแบบโครงสร้าง และรูปแบบโครงสร้างภายในโปรแกรม ดัง รายละเอยี ดต่อไปนี้ ลักษณะของโปรแกรมแบบโครงสรา้ ง การเขียนโปรแกรมแบบโครงสร้าง (structured programming) หมายถึงการเขียนโปรแกรมที่มี การนาโครงสร้างของคาสั่งหลาย ๆ รูปแบบมาใช้ในโปรแกรมเพื่อให้โปรแกรมที่เขียนขึ้นมีขัน้ ตอนที่แน่นอน และสะดวกต่อการแก้ไขโปรแกรมโดยหลีกเลี่ยงการใช้คาสงั่ goto หรอื ใช้ให้นอ้ ยทสี่ ุดเพราะคาสั่ง goto จะทา ให้โปรแกรมมีการย้ายการทางานจากจุดหน่ึงไปยังอีกจุดหนึ่งที่กาหนดไว้ ซึ่งอาจเกิดความสับสนในการ ตรวจสอบการทางานของโปรแกรมได้ โดยทั่วไปแล้วภาษาคอมพิวเตอร์ที่เหมาะสมสาหรับการนามาเขียน โปรแกรมแบบโครงสร้างมีหลายภาษาตัวอย่างเช่น ภาษาปาสคาล (PASCAL) ภาษาโคบอล (COBOL) และ ภาษาซี เปน็ ตน้ สาหรบั ในเอกสารนี้จะกลา่ วถึงลกั ษณะของโปรแกรมแบบโครงสร้างที่เขยี นดว้ ยภาษาซี เท่าน้ัน เพื่อความเข้าใจเกี่ยวกับลักษณะของโปรแกรมแบบโครงสร้างมากยิ่งขึ้นให้ศึกษาจากตัวอย่างโปรแกรม ภาษา C ดังตอ่ ไปน้ี ชุดกจิ กรรมการเรียนรู้การเขยี นโปรแกรมภาษาคอมพวิ เตอร์ รายวชิ าภาษาซี ง30243 ชนั้ มัธยมศกึ ษาปีท่ี 5
ชดุ ท่ี1 การพฒั นาโปรแกรมและการจาลองความคิด โปรแกรมตัวอย่างท่ี 1.1 แสดงตัวอยา่ งโปรแกรมภาษาซี ท่ีเป็นแบบโครงสรา้ งอยา่ งง่าย /* strucpro.c */ #include<stdio.h> void main(void) { /* สว่ นท่ี 1 ประกาศตวั แปรและกาหนดค่าเริ่มตน้ ใหต้ วั แปร */ int k= 1 ; float sum=0 , avg; /* สว่ นท่ี 2 คานวณค่าผลรวมของตวั เลข 1+2+3+…+10 */ while ( k<=10) { sum+=k; k++; } /* คานวณค่าเฉลีย่ ของตัวเลข */ avg = sum/10; /* ส่วนท่ี 3 พิมพ์ผลลัพธอ์ อกทางจอภาพ */ printf(“N=%d , SUM=%.2f , AVERAGE=%.2f\\n” , 10,sum,avg); } จากตัวอย่างโปรแกรมภาษาซี ข้างต้นจะเห็นว่าโปรแกรมนี้สามารถแบ่งส่วนของการทางาน 6 ออกเป็น 3 ส่วนท่สี าคญั ดงั นี้ ส่วนท่ี 1 คือ ส่วนของการประกาศตัวแปรและค่าเริ่มต้นของตัวแปรที่จาเป็นตอ้ งใช้ในโปรแกรม ซง่ึ ก็คอื คาส่งั int k=1; และคาสง่ั float = sum=0, avg; ส่วนที่ 2 คือ สว่ นของการคานวณค่าผลรวม และคา่ เฉลีย่ ของตัวเลข ซง่ึ กค็ ือ คาส่ัง while และ คาสง่ั avg = sum/10; สว่ นท่ี 3 คือ สว่ นของการแสดงผลลัพธ์ทางจอภาพ ซงึ่ ก็คือคาสง่ั printf( ); สาหรับการแก้ไขโปรแกรมข้างต้นสามารถทาได้ง่ายและสะดวกมากตัวอย่างเช่น ผู้เขียนโปรแกรม ต้องการแก้ไขส่วนของการแสดงผลลัพธ์ก็สามารถแก้ไขในส่วนที่ 3 คือแก้ไขคาสั่ง printf( ); เท่าน้ันส่วน ท่ี 1 และส่วนท่ี 2 ไม่ต้องแก้ไขหรือทานองเดียวกันถ้าต้องการแก้ไขค่าเริ่มต้นของตัวแปร k ให้มีค่าเป็น 10 ก็ สามารถทาไดง้ า่ ยมากโดยแกไ้ ขส่วนที่ 1 คอื คาสง่ั int k=1; แก้เปน็ int k=10; ชดุ กิจกรรมการเรียนรกู้ ารเขยี นโปรแกรมภาษาคอมพวิ เตอร์ รายวชิ าภาษาซี ง30243 ชั้นมธั ยมศึกษาปีท่ี 5
ชุดที่1 การพัฒนาโปรแกรมและการจาลองความคดิ ดังนั้นจะเห็นได้ว่าลักษณะของโปรแกรม แบบโครงสรา้ งจะมีการทางานเป็นขนั้ ตอนที่สามารถเข้าใจ การทางานของโปรแกรมไดง้ ่ายและสะดวกในการแก้ไขโปรแกรมภายหลัง 1.2.2 โรคูปรแงบสบรา้ โงคแรบงสบรเา้รงยี ภงลายาดในบั โปรแกรม รูปที่ 1.4 แสดงโครงสร้างแบบเรยี งลาดับ การทางานของโครงสรา้ งแบบเรยี งลาดับคอื จะทางานตามคาส่งั ที่ 1, คาส่ังท่ี 2, …, คาสั่งที่ n ตามลาดบั ชดุ กิจกรรมการเรยี นรกู้ ารเขยี นโปรแกรมภาษาคอมพวิ เตอร์ 7 รายวชิ าภาษาซี ง30243 ชัน้ มัธยมศึกษาปีท่ี 5
ชุดที่1 การพัฒนาโปรแกรมและการจาลองความคิด โครงสรา้ งแบบทดสอบเง่อื นไข โครงสรา้ งแบบทดสอบเงอื่ นไข หมายถงึ โครงสร้างของคาสั่ง ทม่ี กี ารทดสอบเงอื่ นไขกอ่ น ทจ่ี ะทางาน อยา่ งใดอย่างหนึ่ง ซ่ึงสามารถแบง่ ออกเป็น 3 ชนิด ดังน้ี โครงสรา้ งแบบทดสอบเง่ือนไข 1 ทาง รปู ท่ี 1.5 แสดงโครงสร้างแบบทดสอบเง่ือนไข 1 ทาง การทางานของโครงสรา้ งแบบทดสอบเงอ่ื นไข 1 ทาง คือทาการทดสอบเงื่อนไขวา่ เปน็ จริงหรอื เทจ็ ถา้ เง่ือนไขเป็นจริงใหท้ างานตามคาสงั่ ทีก่ าหนดไว้แล้วออกจากการทางานแต่ถา้ เง่ือนไขเป็นเท็จให้ออกจากการ ทางาน ชดุ กิจกรรมการเรยี นรูก้ ารเขยี นโปรแกรมภาษาคอมพิวเตอร์ 8 รายวชิ าภาษาซี ง30243 ชั้นมธั ยมศกึ ษาปที ่ี 5
ชดุ ท่ี1 การพัฒนาโปรแกรมและการจาลองความคิด โครงสร้างแบบทดสอบเง่อื นไข 2 ทาง รูปท่ี 1.6 แสดงโครงสรา้ งแบบทดสอบเง่ือนไข 2 ทาง การทางานของโครงสร้างแบบทดสอบเงื่อนไข 2 ทางคือทาการทดสอบเงื่อนไขว่าเป็นจรงิ หรือเท็จถ้าเงื่อนไข เป็นจริง ให้ทางานตามคาสั่ง A ที่กาหนดไว้แล้วออกจากการทางาน แต่ถ้าเงื่อนไขเป็นเท็จให้ทางานตาม คาสง่ั B ทีก่ าหนดไว้แลว้ ออกจากการทางาน ชุดกิจกรรมการเรยี นร้กู ารเขยี นโปรแกรมภาษาคอมพิวเตอร์ 9 รายวชิ าภาษาซี ง30243 ช้นั มธั ยมศกึ ษาปีที่ 5
ชุดท่ี1 การพฒั นาโปรแกรมและการจาลองความคิด โครงสรา้ งแบบทดสอบเงอ่ื นไขมากกว่า 2 ทางข้นึ ไป รปู ท่ี 1.7 แสดงโครงสร้างแบบทดสอบเง่ือนไขมากกว่า 2 ทางขน้ึ ไป การทางานของโครงสร้างแบบทดสอบเงือ่ นไขมากกว่า 2 ทางขึ้นไปมลี ักษณะดังต่อไปนีีี ้ 1. ทาการทดสอบเงื่อนไขท่ี 1 วา่ เปน็ จรงิ หรอื เทจ็ ถ้าเงอื่ นไขเปน็ จริง ให้ทางานตามคาส่ัง A ทีก่ าหนดไว้ แลว้ ออกจากการทางาน แต่ถา้ เงือ่ นไขเป็นเท็จ ใหท้ างานในข้อ 2. 2. ทาการทดสอบเงอ่ื นไขท่ี 2 วา่ เปน็ จรงิ หรอื เทจ็ ถ้าเง่ือนไขเป็นจรงิ ให้ทางานตามคาสัง่ B ทก่ี าหนดไวแ้ ล้วออกจากการทางาน แต่ถ้าเง่ือนไขเป็นเทจ็ ให้ทางานในขอ้ 3. 3. ทาการทดสอบเงอ่ื นไขใหม่อกี โดยทาซ้าเช่นนีไ้ ปเรื่อย ๆ จนกวา่ จะถึงเงอ่ื นไขสดุ ทา้ ย (เงอื่ นไขที่ n) ถา้ เง่ือนไขเปน็ จรงิ ให้ทางานตามคาสัง่ N ที่กาหนดไวแ้ ลว้ ออกจากการทางาน แตถ่ ้าเงอ่ื นไขเป็นเทจ็ ให้ออกจากการทางาน ชดุ กิจกรรมการเรยี นรู้การเขยี นโปรแกรมภาษาคอมพวิ เตอร์ 10 รายวชิ าภาษาซี ง30243 ชั้นมธั ยมศกึ ษาปีท่ี 5
ชุดท่ี1 การพัฒนาโปรแกรมและการจาลองความคดิ โครงสร้างแบบทางานวนลปู โครงสร้างแบบทางานวนลูป หมายถึง โครงสร้างของคาสง่ั ทีม่ กี ารทางานซ้า ๆ เป็นวงจรปดิ จน กวา่ เงอื่ นไขท่ีทดสอบจะตรงกับค่าจรงิ หรอื เทจ็ ตามโครงสร้างท่ใี ช้ จงึ สามารถออกจากการทางานได้ ซึง่ สามารถแบง่ ออกเป็น 2 ชนดิ ดังน้ี 1. โครงสรา้ งแบบ DO UNTIL รูปที่ 1.8 แสดงโครงสร้างแบบ DO UNTIL การทางานของโครงสร้างแบบ DO UNTIL คือเริ่มต้นด้วยการทางานตามคาสั่งที่ต้องการภายในลูปจนหมด คาส่ังไป 1 รอบ จากนั้นจงึ ทาการทดสอบเง่ือนไขว่าเป็นจรงิ หรือเท็จ ถ้าเงอ่ื นไขเปน็ เท็จให้กลับไปทางานตาม คาสั่งภายในลูปอีก ทางานซ้า ๆ เช่นนี้จนกว่าเงื่อนไขเป็นจริง จึงออกจากการทางานแบบนี้ได้ ลักษณะของ โครงสรา้ งแบบ DO UNTIL นี้จะตรงกับคาสง่ั REPEAT UNTIL ในภาษาปาสคาล ชดุ กจิ กรรมการเรียนร้กู ารเขยี นโปรแกรมภาษาคอมพิวเตอร์ 11 รายวชิ าภาษาซี ง30243 ชั้นมธั ยมศึกษาปที ่ี 5
ชดุ ที่1 การพฒั นาโปรแกรมและการจาลองความคดิ 2. โครงสร้างแบบ DO WHILE รูปที่ 1.9 แสดงโครงสร้างแบบ DO WHILE การทางานของโครงสรา้ งแบบ DO WHILE คือเริ่มตน้ ดว้ ยการทดสอบเงื่อนไขว่าเปน็ จรงิ หรอื เทจ็ ถ้าเงอื่ นไขเป็น จรงิ ให้ทางานตามคาส่งั ท่ีตอ้ งการภายในลปู จนหมดคาส่งั จากนน้ั จึงยอ้ นกลับไปทาการทดสอบเงอื่ นไขอีกคร้ัง วา่ เปน็ จริงหรือเท็จ ถา้ เงอ่ื นไขเปน็ จริง ให้ทางานตามคาส่งั ภายในลูปอกี ทางานซา้ ๆ เช่นนจ้ี นกวา่ เงอ่ื นไขเป็น เทจ็ จงึ ออกจากการทางานแบบนี้ได้ลกั ษณะของโครงสร้าง DO WHILE นี้จาตรงกบั คาสัง่ while ในภาษาซี ข้อควรระวงั ของโครงสรา้ งแบบทางานวนลูป การทาสอบเง่ือนไขจะต้องมที ง้ั 2 กรณี คือเป็นจริง และเปน็ เทจ็ ตวั อย่างเช่น โครงสร้างแบบ DO UNTIL ถ้าเงื่อนไขที่ทดสอบไม่มกี รณีท่ีเปน็ จรงิ จะทาใหก้ ารทางานของโปรแกรมทางานซา้ ๆแบบไม่มีทางออกได้ ใน ทานองเดียวกนั โครงสรา้ งแบบ DO WHILE ถ้าเงอ่ื นไขทท่ี ดสอบไม่มกี รณีทเี่ ป็นเทจ็ จะทาใหก้ ารทางานของ โปรแกรมวนทางานซ้า ๆ แบบไมม่ ีทางออกได้ ชุดกจิ กรรมการเรียนร้กู ารเขยี นโปรแกรมภาษาคอมพวิ เตอร์ 12 รายวชิ าภาษาซี ง30243 ชน้ั มัธยมศกึ ษาปที ี่ 5
Search
Read the Text Version
- 1 - 12
Pages: