1 รายงาน เร่ือง หลกั การเขียนโปรแกรม จัดทาโดย นางสาวพยิ ดา ใจตาง เสนอ อาจารย์ วราภรณ์ อ่อนทุม วทิ ยาลยั การอาชีพบาเหน็จณรงค์ อาชีวศึกษาจังหวดั ชัยภูมิ สานักงานคณะกรรมการการอาชีวศึกษา กระทรวงศึกษาธิการ
2 คานา รายงานเล่นนีเ้ ป็ นส่วนหน่ึงของวชิ าหลกั การเขยี นโปรแกรม มเี นือ้ หาเกย่ี วกบั หลกั การเขยี นโปรแกรมต่างๆ เพอ่ื เป็ นข้อมูลในการศึกษาและ สามารถนาประยุกต์ใช้ได้ท้ังในห้องเรียนและนอกห้องเรียน นามาอ่านทบทวน เพอื่ ใช้ในการสอบอกี ท้งั ยงั สามารถนาไปใช้เป็ นเอกสารอ้างองิ ได้อกี ด้วยหากมี ข้อผดิ พลาดประการใด ขออภยั มา ณ ที่นีด้ ้วย จดั ทาโดย พยิ ดา ใจตาง
3 สารบัญ เรื่อง หน้า หลกั การเขยี นโปรกรมและการวเิ คราะห์งาน............................................................................... ระบบคอมพวิ เตอร์........................................................................................................... หลกั การเขยี นโปรแกรม................................................................................................... ผงั งาน.............................................................................................................................. ความหมายของผงั งาน....................................................................................................... สัญลกั ษณ์สาหรับการเขยี นผงั งาน..................................................................................... หลกั การเขยี นผงั งาน.......................................................................................................... รูปแบบการเขยี นผงั งาน…………………………………………………………………… รหัสเทยี ม....................................................................................................................................... หลกั เกณฑ์ในการเขยี นรหัสเทยี ม....................................................................................... รูปแบบการเขยี นรหสั เทยี ม................................................................................................. การเขยี นรหสั เทยี มจากลาดบั ข้นั ตอนของวธิ ีการประมวลผล............................................. ข้นั ตอนการแก้ปัญหา(Algorithm).................................................................................................... ความหมายของข้นั ตอนการแก้ปัญหา.................................................................................. การเขยี นข้นั ตอนการแก้ปัญหา.............................................................................................
4 องค์ประกอบพนื้ ฐานของภาษาC...................................................................................................... โครงสร้างของโปรแกรมภาษาC.......................................................................................... ชนิดของข้อมูล...................................................................................................................... ตัวแปร.................................................................................................................................... การแสดงผลข้อมูล................................................................................................................. การรับข้อมูล........................................................................................................................... ค่าคงท.ี่ .................................................................................................................................... ตวั ดาเนินการ.......................................................................................................................... นิพจน์......................................................................................................................................... โครงสร้างควบคุมแบบเงอ่ื นไขกรณี………………………………………………………… โครงสร้างแบบทางเลอื กเดยี ว……………………………………………………………….
5 1.หลกั การเขยี นโปรแกรมและการวเิ คราะห์งาน 1.1ระบบคอมพวิ เตอร์ ระบบคอมพวิ เตอร์ ( Computer System ) คือ องค์ประกอบท่จี ะทาให้คอมพิวเตอร์สามารถทางานได้อยา่ งสมบรู ณ์ ถ้าขาดองค์ประกอบสว่ นใดสว่ นหนงึ่ แล้ว เคร่ืองคอมพวิ เตอร์ก็ไมส่ ามารถทางานได้ ระบบคอมพวิ เตอร์นปี ้ ระกอบไปด้วย องค์ประกอบหลกั ทส่ี าคญั 4 ประการคือ 1.ฮาร์ดแวร์ ( Hardware ) คอื อปุ กรณ์หรือชิน้ สว่ นของเครื่องคอมพวิ เตอร์ทีม่ ีวงจรไฟฟ้ าอยภู่ ายในเป็ นสว่ นใหญ่ สามารถจบั ต้องได้ เชน่ ตวั เคร่ืองคอมพวิ เตอร์ ตวั ซพี ยู ู จอภาพ เมาส์ แป้ นพิมพ์ ลาโพง สแกนเนอร์ เคร่ืองพมิ พ์ ฯลฯ เป็ นต้น 2.ซอฟต์แวร์ ( Software ) คือ โปรแกรมหรือชดุ คาสงั่ ทจี่ ะสง่ั และควบคมุ ให้ฮาร์ดแวร์คอมพวิ เตอร์ทางาน เราไมส่ ามารถจบั ต้องซอฟต์แวร์ ได้โดยตรงเหมือนกบั ตวั ฮาร์แวร์ เพราะซอฟต์แวร์หรือโปรแกรมนจี ้ ะถกู จดั เก็บอยู่ ในสอ่ื ท่ีใช้ในการบนั ทกึ ข้อมลู ทีใ่ ช้ในการบนั ทกึ ข้อมลู เช่น แผน่ ดิสก์ ฮาร์ดดิส ซีดรี อม ดวี ีดรี อม แฮนดีไร์ฟ เป็ นต้น ซอฟต์แวร์ที่มกั ติดตงั้ ไว้ในฮาร์ดดสิ ก์เพือ่ ทางานทนั ทีทเี่ ปิ ดเครื่องคือ ซอฟต์แวร์ระบบปฏิบตั ิการ 3.พีเพิลแวร์ ( Peopleware )คอื บคุ คลทีม่ สี ว่ นเก่ยี วข้องกบั การทางานของเครื่องคอมพวิ เตอร์ พีเพิลแวร์หรือบคุ คลากรด้าน คอมพวิ เตอร์นบั วา่ เป็ นองค์ประกอบทีส่ าคญั ที่สดุ เพราะบคุ คลกรจะเป็ นผ้จู ัดการหรือผ้ดู าเนนิ งานให้ระบบ คอมพวิ เตอร์ดาเนิน ตอ่ ไปได้
6 4.ข้อมลู ( Data) คอื รายละเอยี ดข้อเทจ็ จริงตา่ ง ๆ ทเ่ี ก่ียวข้องกบั บคุ คลสงิ่ ของ สถานท่ีหรือเหตกุ ารณ์ใด ๆ ทสี่ นใจศกึ ษา และ นาข้อมลู เข้าสรู่ ะบบ การประมวลผลของคอมพิวเตอร์ เพือ่ ให้อยู่ ในรูปแบบที่สามารถนาไปใช้ประโยชน์ตอ่ ไปได้ 1.2 หลกั การเขยี นโปรแกรม หลกั การพนื ้ ฐานในการเขยี นโปรแกรม การเขยี นโปรแกรมภาษาในทกุ โปรแกรมจาเป็ นต้องรู้จกั โครงสร้างของโปรแกรม คาสงั่ และการกาหนดคา่ ตวั แปรในแตล่ ะ โปรแกรมก่อน เนื่องจากแตล่ ะโปรแกรมจะมคี าสงั่ และการกาหนดคา่ ตวั แปรทแี่ ตกตา่ งกนั หากใช้งานผดิ โปรแกรมจะไม่ สามารถทางานตามคาสงั่ ได้ ความหมายของภาษาคอมพิวเตอร์ ภาษาคอมพวิ เตอร์ หมายถงึ สญั ลกั ษณ์ทผ่ี ้คู ดิ พฒั นาภาษา กาหนดขนึ ้ มา เพอ่ื ใช้แทนคาสงั่ สอื่ สารสงั่ งานระหวา่ งมนษุ ยก์ บั เครื่องคอมพวิ เตอร์และอปุ กรณ์ตอ่ พว่ งอื่นๆ โปรแกรมเมอร์คนแรกของโลก คอื เอดา ไบรอน เลฟิ เลซ (Lady Augusta Ada Byron, Countess of Lovelace) โปรแกรมเมอร์คนแรกของโลก[1] เป็ นบตุ รสาวของ ลอร์ด ไบรอน (Lord Byron) เกิดเมื่อปี พ.ศ. 2358 (ค.ศ. 1815) สามารถแบง่ ออกได้เป็ น 5 ยคุ คือ 1. ภาษาเครื่อง (Machine language) 2. ภาษาแอสเซมบลี (Assembly language) 3. ภาษาชนั ้ สงู (High-level language)หรือ ภาษารุ่นที่ 3 (3GL:Third Generation Language) 4. ภาษาชนั ้ สงู มาก (Very high-level language) หรือภาษารุ่นที่ 4 (4GL) 5. ภาษาธรรมชาติ (Natural language) หรือภาษารุ่นที่ 5 (5GL) 1. ภาษาเคร่ือง (Machine language) - เป็ นภาษาพนื ้ ฐานท่ีคอมพวิ เตอร์สามารถเข้าใจได้ - แตล่ ะคาสง่ั ประกอบขนึ ้ จากกลมุ่ ตวั เลข 0 และ 1 ซงึ่ เป็ นเลขฐานสอง
7 2. ภาษาแอสเซมบลี (Assembly language) - เป็ นภาษาทีใ่ ช้สญั ลกั ษณ์ข้อความ แทนกลมุ่ ของตวั เลขฐานสอง เพื่อให้งา่ ยตอ่ การเขียนและการจดจามากขนึ ้ - การทางานของโปรแกรมจะต้องทาการแปลภาษาแอสเซมบลใี ห้เป็ นภาษาเครื่อง โดยใช้ตวั แปลทเ่ี รียกวา่ แอสเซมเบลอร์ (Assembler) - มีขนั้ ตอนการทางานทเ่ี รียกวา่ วงจรพฒั นาโปรแกรม โดยใช้ผงั งานชว่ ยในการออกแบบโปรแกรม เพอื่ ให้โปรแกรมภาษาท่ี พฒั นานนั้ สามารถแก้ปัญหาหรือสง่ เสริมการทางานได้ตรงตามวตั ถปุ ระสงค์ท่ีต้องการ 3. ภาษาชนั ้ สงู (High-level language)หรือ ภาษารุ่นที่ 3 (3GL:Third Generation Language) - ถกู สร้างขนึ ้ มาเพอื่ ให้เขยี นโปรแกรมได้งา่ ยขนึ ้ - โดยมีลกั ษณะเหมอื นกบั ภาษาองั กฤษทวั่ ไป - ผ้เู ขยี นไมจ่ าเป็ นต้องมคี วามรู้เกี่ยวกบั ฮาร์ดแวร์แตอ่ ยา่ งใด ภาษานจี ้ าเป็ นต้องมตี วั แปลภาษาเคร่ืองเชน่ กนั เรียกตวั แปลนวี ้ า่ คอมไพเลอร์ (compiler) หรือ อินเตอร์พรีเตอร์ (Interpreter) อยา่ งใดอยา่ งหนึ่ง ตวั อยา่ งของภาษาชนั้ สงู เช่น ภาษา ปาสคาล ภาษาซี ภาษาโคบอล ภาษาเบสกิ ภาษาฟอร์แทรน 4. ภาษาชนั ้ สงู มาก (Very high-level language) หรือภาษารุ่นที่ 4 (4GL) - เป็ นภาษาทีม่ ีลกั ษณะคล้ายภาษาพดู ตามปกติของมนษุ ย์ ภาษานจี ้ ะชว่ ยให้การเขยี นโปรแกรมเร็วมากขนึ ้ กวา่ ภาษาในรุ่นท่ี 3 เนอ่ื งจากมเี ครื่องมอื ที่ชว่ ยในการสร้างแบบฟอร์มหน้าจอ เพื่อจดั การกบั ข้อมลู รวมไปถงึ การออกรายงาน เมนตู า่ ง ๆ - ตวั อยา่ งของภาษาชนั ้ สงู มากได้แก่ informix-4GL, MAGIC , Delphi , Power Builder ฯลฯ 5. ภาษาธรรมชาติ (Natural language) หรือภาษารุ่นท่ี 5 (5GL) - เป็ นภาษาท่สี ามารถสงั่ งานคอมพิวเตอร์โดยใช้รูปแบบของภาษามนษุ ย์ได้เลย - คาสงั่ อยใู่ นรูปแบบทไ่ี มแ่ นน่ อนตายตวั แตค่ อมพวิ เตอร์จะทาการแปลให้ออกมาในรูปทค่ี อมพิวเตอร์เข้าใจได้ - ภาษานถี ้ กู สร้างขนึ ้ มาจากเทคโนโลยที างด้านระบบผ้เู ชี่ยวชาญ (Expert system) - ตวั อยา่ งภาษาในรุ่นที่ 5 ได้แก่ ภาษา PROLOG เป็ นต้น
8 ขนั้ ตอนการเขียนโปรแกรมคอมพวิ เตอร์ 1. การวเิ คราะห์ปัญหา (Problem analysis) 2. การออกแบบโปรแกรม (Design) 3. การเขยี นโปรแกรมโดยใช้ภาษาใดภาษาหนงึ่ (Coding) 4. การตรวจสอบข้อผิดพลาดของโปรแกรม (Testing and Debugging ) 5. การทดสอบความถกู ต้องของโปรแกรม (Testing and validating) 6. การทาเอกสารประกอบโปรแกรม (Documentation) 7. การบารุงรักษาโปรแกรม (Program Maintenance) เคร่ืองมือทีใ่ ช้ในการออกแบบโปรแกรม - ผงั งาน (Flowchart) ขนั้ ตอนการแก้ปัญหาทีละขนั้ ตอนในลกั ษณะรูปภาพ - รหสั จาลอง (Pseudo) รูปแบบเป็ นภาษาพดู งา่ ย ๆ ภาษาองั กฤษ หรือภาษาไทยก็ได้ สญั ลกั ษณ์ในผงั งาน
9 โครงสร้ างของโปรแกรม หลกั การเขยี นโปรแกรมแบบมโี ครงสร้าง หรือโครงสร้างควบคมุ (Control structures) คอื การกาหนดขนั้ ตอนให้เคร่ือง คอมพวิ เตอร์ทางาน การเขยี นขนั้ ตอนในรายละเอียดของแตล่ ะอลั กอริธึม อาศยั โครงสร้างควบคมุ 3 หลกั การดงั นี ้ 1. โครงสร้างตามลาดบั (Sequence structure) 2. โครงสร้างแบบมีทางเลอื กหรือโครงสร้างตดั สนิ ใจ (Selection structure) 3. โครงสร้างแบบทาซา้ (Repetition structure) โครงสร้างตามลาดบั (Sequence Structure) หมายถงึ งานทตี่ ้องทาต้องมีลาดบั กอ่ นหลงั ทางานจากบนลงลา่ ง ยกตวั อยา่ ง เช่น อลั กอริทมึ กิจวตั รประจาตอนเช้า
10 โครงสร้างตดั สนิ ใจ (Selection structure) เป็นโครงสร้างท่ีมีเงื่อนไขให้ตดั สินใจวา่ จะใชว้ ธิ ีการใด โดยตอ้ งมีการตรวจสอบเง่ือนไขวา่ จริงหรือไม่ หากเป็น จริงตอ้ งไปทาคาสงั่ ชุดหน่ึง แต่ถา้ เป็นเทจ็ ตอ้ งไปทาคาสงั่ อีกชุดหน่ึง ตวั อยา่ ง อลั กอริทึมแสดงการตดั เกรด
11 โครงสร้างแบบทาซา้ (Repetition structure) เป็นโครงสร้างท่ีมีการวนการทางานซา้ ๆ ตามเงื่อนไข ยกตวั อยา่ ง อลั กอริทมึ การปั่นจกั รยานออกกาลงั กาย
12 2.ผงั งาน 2.1 ผงั งาน (Flowchart) คือ รูปภาพ (Image) หรือสัญลกั ษณ์(Symbol) ที่ใชเ้ ขียนแทนข้นั ตอน คาอธิบาย ขอ้ ความ หรือคาพดู ที่ใชใ้ นอลั กอริทึม (Algorithm) เพราะการนาเสนอข้นั ตอนของงานใหเ้ ขา้ ใจตรงกนั ระหวา่ ง ผเู้ ก่ียวขอ้ ง ดว้ ยคาพดู หรือ ขอ้ ความ ทาไดย้ ากกวา่ เมื่อใชร้ ูปภาพ หรือสัญลกั ษณ์ 2.2 สัญลกั ษณ์สาหรับการเขียนผงั งาน Symbol for Flowchart ผงั งาน (Flowchart) ผงั งาน (Flowchart) คือ การเขียนอธิบายข้นั ตอนวธิ ีการทางานในลกั ษณะของรูปภาพสัญลกั ษณ์ เน่ืองจากทาให้ สามารถมองเห็นลาดบั ข้นั ตอนการทางานไดช้ ดั เจนกวา่ การอธิบายในลกั ษณะของขอ้ ความ สญั ลกั ษณ์สาหรับการเขียนผงั งาน Symbol for Flowchart
13 ลกั ษณะการเขียนผงั งาน ลกั ษณะของผงั งานท่ีดี มีดงั น้ี 1.ทุกผงั งานตอ้ งมีจุดเร่ิมตน้ และจุดสิ้นสุดอยา่ งละหน่ึงแห่งเทา่ น้นั 2.ทุกสญั ลกั ษณ์ตอ้ งมีลูกศรช้ีทิศทางอยา่ งละ 1 ลูกศร ยกเวน้ สญั ลกั ษณ์ของการตดั สินใจ และสัญลกั ษณ์ของจุด เชื่อมต่อ 3.ทิศทางของลาดบั ข้นั ตอนการทางานนิยมเขียนจากบนลงล่าง จากซา้ ยไปขวา 4.ไม่ควรเขียนเส้นของลูกศรบอกทิศทางตดั กนั หรือทบั กนั หากจาเป็นควรใชจ้ ุดต่อแทน 2.3 การเขียนผงั งาน (Flowchart) Flowchart เป็นแผนภาพที่ใชอ้ อกแบบและอธิบายการทางานของโปรแกรมโดยอาศยั รูปทรงตา่ ง ๆ ควบคูไ่ ปกบั ลูกศร แตล่ ะรูปในแผนภาพที่หมายถึงการทางานหน่ึงข้ึนตอน ส่วนลูกศรจะแทนลาดบั การทางานข้นั ตอนต่าง ๆ รวมท้งั ทิศทางการไหลของขอ้ มลู ต้งั แต่เริ่มจนไดผ้ ลลพั ธ์ตามตอ้ งการระบบงานทุกชนิดที่ผา่ นการวเิ คราะห์เป็น ลาดบั ข้นั ตอนแลว้ จะสามารถเขียนเป็นผงั งานได้
14 ประโยชนข์ องผงั งาน 1. ช่วยอธิบายลาดบั ข้นั ตอนการทางานของโปรแกรม 2. ทาใหต้ รวจสอบขอ้ ผดิ พลาดของโปรแกรมไดง้ ่าย 3. ทาใหผ้ อู้ ื่นสามารถศึกษาการทางานของโปรแกรมและแกไ้ ขโปรแกรมไดง้ ่าย การเขียนผงั งานท่ีดี - เขียนตามสัญลกั ษณ์ที่กาหนด - ใชล้ ูกศรแสดงทิศทางการทางานจากบนลงล่าง - อธิบายส้นั ๆ ใหเ้ ขา้ ใจง่าย - ทุกแผนภาพตอ้ งมีทิศทางเขา้ ออก - ไมค่ วรโยงลูกศรไปที่ไกลมาก ๆ ถา้ ตอ้ งทาใหใ้ ชส้ ัญลกั ษณ์การเชื่อมต่อแทน ประเภทของผงั งาน ในการเขียนผงั งานน้นั สามารถจาแนกแบบของผงั งานออกเป็น 2 แบบใหญ่ ๆ คือ 1. ผงั งานระบบ (System Flowchart) หรือผงั งานในระดบั กวา้ ง ซ่ึงจะเป็นการแสดงข้นั ตอนการทางานของระบบ ท้งั หมด ผงั งานระบบมกั จะมีลกั ษณะยน่ ยอ่ รวบรัด และแสดงเฉพาะตวั งานที่จะตอ้ งทาในระบบเท่าน้นั ไม่ มุง่ เนน้ รายละเอียดในการปฏิบตั ิ ไมไ่ ดแ้ สดงวา่ งานน้นั จะทาอยา่ งไร ความสาคญั ของผงั งานระบบอยทู่ ี่การแสดง ความสัมพนั ธ์ระหวา่ งงานต่างๆ ในระบบวา่ มีความสมั พนั ธ์กนั อยา่ งไร ต้งั แต่เรื่องของวสั ดุอุปกรณ์ บุคลากร และหน่วยงานที่เก่ียวขอ้ ง
15 แสดงผงั ระบบ แสดงข้นั ตอนการลงทะเบียนเรียน 2. ผงั งานโปรแกรม (Program Flowchart) หรือผงั งานระดบั ละเอียด เป็นภาพแผนผงั ที่แสดงลาดบั ข้นั ตอนใน การทางานของโปรแกรม ซ่ึงจะแยกยอ่ ยมาจากผงั งานระบบ คือในแต่ละข้นั ตอนจะแสดงการทางานแต่ละคาสง่ั โดยละเอียด ใส่วธิ ีการ และจดั ลาดบั ข้นั ตอนของโปรแกรม สาหรับโปรแกรมน้นั ๆ ต้งั แตเ่ ร่ิมตน้ จากการรับ ขอ้ มูล การประมวลผล และไปจนถึงการแสดงผลลพั ธ์ท่ีไดจ้ ากการประมวลผลท่ีผเู้ ขียนโปรแกรมกาลงั ทางาน อยู่ ไม่ไดแ้ สดงความสมั พนั ธ์ระหวา่ งโปรแกรมน้นั กบั โปรแกรมอื่น ๆ
16 หลักเกณฑท์ ว่ั ไปในการเขยี นผงั งาน เพ่อื ใหเ้ ป็นมาตรฐานเดียวกนั การเขียนผงั งานควรมีลักษณะดังน้ี 1. จะต้องเขียนโดยใชส้ ญั ลกั ษณ์ต่าง ๆ ท่ถี ูกต้องตามมาตรฐานทีก่ าหนดไว้ 2. สัญลกั ษณห์ รือภาพหนงึ่ จะต้องแทนหน่งึ คาส่งั เท่านั้น 3. ควรเขียนผงั งานใหจ้ บภายในหนา้ เดียว ถ้าเขยี นมากกวา่ หนงึ่ หน้าตอ้ งใชส้ ญั ลักษณ์ในการเช่ือมต่อ จดุ ระหวา่ งหน้า 4. การใชส้ ญั ลักษณ์จุดเร่ิมตน้ และจุดสน้ิ สุด จะต้องมีเพียงอย่างละหนึง่ แหง่ เท่านน้ั ยกเวน้ การเขยี นใน ลักษณะเพ่ิมเตมิ ทีเ่ ป็นโมดูล (Module) หรือโปรแกรมยอ่ ย (Subprogram) ซึ่งเปน็ ส่วนหนงึ่ ของผังงานจึงจะ สามารถสร้างขึ้นมาใหม่เพื่อเปน็ จดุ บอกการเริ่มต้นและส้ินสดุ ของโมดูลหรือโปรแกรมย่อยนน้ั ๆ 5. ทุกสญั ลกั ษณท์ ี่เขยี นจะต้องมีทศิ ทางเข้าและออกเพียงหนึ่งแห่งเทา่ น้นั ยกเว้นสัญลักษณ์ จดุ เริ่มต้น จุด ต่อ จดุ ส้ินสดุ และทางเลือกในการตัดสนิ ใจ 6. การเขยี นอธิบายข้นั ตอนการทางานโดยเรยี งลาดบั ก่อนหลงั ดงั นี้ (1) กาหนดคา่ เรมิ่ ต้นใหก้ บั ตัวแปร (2) Input คือ การรบั ข้อมลู เข้า (3) Process คือ ขน้ั ตอนการประมวลผลหรอื คานวณ (4) Output คือ การแสดงผลลัพธห์ รอื คา่ ตัวแปรท่ไี ดจ้ ากการประมวลผล 7. ทศิ ทางการเขียนผงั งาน ควรเรยี งลาดับจากบนลงล่างหรือจากซา้ ยไปขวาเท่านั้น 8. ไมค่ วรเขียนข้นั ตอนการทางานแบบขา้ มลาดบั สลบั ไปมายงุ่ ยาก และไม่มีเส้นทิศทางโยงไปมาตัดกนั 9. ควรมีการทดสอบผังงานก่อนทีจ่ ะนาไปเขยี นโปรแกรม 10. ควรเขียนหวั ลกู ศรกากับทิศทางการไหลของข้อมูลเสมอ 11. ไมค่ วรปล่อยทงิ้ เส้นการไหลของข้อมูล (Floe Line) เอาไว้เฉย ๆ โดยไม่ได้มีการเชอื่ มตอ่ ระหวา่ ง ขน้ั ตอนหนงึ่ ไปสอู่ ีกข้ันตอนหนึง่ 12. คาอธิบายภายในผังงานควรเขียนดว้ ยข้อความท่ีส้ัน ๆ และเขา้ ใจงา่ ย 13. ในบางกรณีอาจใช้สัญลักษณห์ มายเหตุ (Remark) เพื่ออธิบายส่วนของผังงานเพม่ิ เตมิ เพ่ือความเขา้ ใจ และอธบิ ายกระบวนการต่าง ๆ ของอัลกอรทิ ึมทไ่ี ด้ออกแบบเอาไว้ 14. ควรเขียนช่อื ผังงาน ชอื่ ผ้เู ขียน วนั ที่เขียน และหมายเลขหนา้ รวมทงั้ เขยี นผังงานให้สะอาด เรียบร้อย ลักษณะการเขยี นผังงาน ลักษณะการเขียนผังงาน สามารถแบ่งออกได้ 1. การเขยี นผังงานกับโครงสร้างควบคุมแบบลาดับ
17 2. การเขียนผงั งานกบั โครงสรา้ งควบคุมแบบการตัดสนิ ใจ รปู แบบที่ 1 ทางเลอื กทางเดียว (Single Alternative IF) รูปแบบท่ี 2 ทางเลือกสองทาง (Double Alternative) รปู แบบท่ี 3 ทางเลือกหลายทาง (Multiple Alternative) 3. การเขยี นผงั งานกบั โครงสรา้ งควบคมุ แบบการทาซา้ - รปู แบบ WHILE Structure - รปู แบบ REPEAT...UNTIL Structure - รปู แบบ DO...ENDDO 2.4 รูปแบบเขียนผังงาน การเขยี นผงั งานของโปรแกรม (Flow Chart) ความหมายของผังงาน ผังงาน(Flow Chart) คือรปู ภาพหรือสัญลักษณ์ ท่ีใช้เขยี นแทนคาอธบิ าย ข้อความหรอื คาพดู ทีใ่ ชใ้ นอลั กอรธิ ึม เพราะการเข้าใจขนั้ ตอนท่งี ่ายและตรงกันน้นั การใชค้ าพูดหรือข้อความอาจทาไดย้ ากกวา่ การใช้รปู ภาพหรือ สญั ลกั ษณ์ ประเภทของผังงาน ผังงานสามารถแบ่งออกได้ 2ประเภทใหญๆ่ คือ 1. ผังงานระบบ (System Flowchart) เป็นผงั งานทีแ่ สดงข้นั ตอนการทางานระบบงานหนงึ่ ๆ ในลักษณะของภาพกว้างๆ และแสดงทิศการทางานงานใน ระบบ ตง้ั แตเ่ ร่ิมตน้ ว่าข้อมลู เกิดขน้ึ ครั้งแรกทใ่ี ด เกบ็ อยใู่ นรปู แบบใดและผา่ นข้นั ตอนการประมวลผลอยา่ งไร อะไรบ้าง (แตจ่ ะไม่เนน้ ถึงวิธกี ารประมวลผล) จนสุดทา้ ยผลลัพธท์ ี่ได้เกบ็ อยู่ในรปู แบบใด ตวั อยา่ งเชน่ ผงั งานระบบ บริหารโรงเรยี นแหง่ หนึง่ ขอ้ มูลทะเบียนประวตั ิของนักเรยี นเริ่มข้นึ คร้งั แรกเมื่อมีการรบั สมาชิกนักศึกษาใหม่ จาก แผนการรับสมคั ร และถือเป็นข้อมูลพน้ื ฐานไปยงั แผนก ต่างๆ ในโรงเรียน เช่น แผนกปกครอง แผนกวัดผล หรอื แผนกทะเบยี น ซึ่งในสว่ นของแผนกทะเบียนอาจจะมีการแก้ไขข้อมูลบางอยา่ ง เช่น มกี ารแก้ไขข้อ ที่อยู่ของ นกั ศกึ ษา ก็ได้
18 2. ผังงานโปรแกรม (Program Flowchat) เป็นผังงานท่แี สดงถึงข้ันตอนในการทางานของโปรแกรมซึ่งจะแสดงการทางานตั่งแต่เร่ิมต้น ในสว่ นของการรบั ข้อมูล การคานวณหรือการประมวลผล จนถงึ การแสดงผลลัพธ์ ผังงานน้อี าจสร้างจากผังงานระบบโดยผูเ้ ขียนผัง งานอาจดึงเอาแตล่ ะจดุ ที่เก่ยี วข้องกับการทางานคอมพิวเตอร์เพื่อมาวิเคราะห์วา่ ถา้ ใช่คอมพิวเตอรเ์ พ่อื ทางานตรง จุดนน้ั เพอื่ ให้ไดผ้ ลลพั ธ์ตามตรงการ ควรจะมีข้ันตอนในการเขียนผงั งานอย่างไร เพ่อื ให้คอมพวิ เตอร์ทางาน ซง่ึ การ เรยี นผงั งานนี่จะช่วยเพ่ิมความสะดวกในการเขียนโปรแกรมของผเู้ ขียนโปรแกรมไดม้ าก เพราะสามารถดูไดง้ า่ ยว่า แตล่ ะข้ันตอนการทางานควรใช้คาส่งั อยา่ งไร ประโยชนข์ องผังงาน 1. ช่วยให้เข้าใจขั้นตอนและลาดับในการทางานของโปรแกรมอย่างรวดเรว็ 2. เปน็ ผงั งานท่ชี ่วยสอ่ื กลางระหว่างผู้ออกแบบโปรแกรม นักวิเคราะห์โปรแกรม หรือ ผู้เขยี นโปรแกรมใหส้ ามารถ เขา้ ใจขั้นตอนทง้ั หมดได้ เพราะไม่ใช่ภาษาคอมพวิ เตอร์ 3. สามารถวเิ คราะห์ความถูกตอ้ งของโปรแกรมก่อนเขยี นโปรแกรมจรงิ เพือ่ ลดปัญหา ความผิดพลาดท่เี กดิ ข้ึน ระหวา่ งการเขียนโปรแกรม 4. ช่วยใหก้ ารกระจายงานใหโ้ ปรแกรมเมอร์หลายๆคน ชว่ ยเขยี นโปรแกรมเป็นส่วนๆได้ เพราะมีทิศทางการ ทางานของโปรแกรมทชี่ ัดเจน สามารถแบ่งสว่ นและประมาณการทางานงานอยา่ งต่อเน่ือง 5. สามารถนาผังลาดบั การทางานของโปรแกรมมาเป็นต้นแบบของการพฒั นาโปรแกรมอ่ืนๆท่ีมีลาดบั ขนั้ ตอนการ ทางานคลา้ ยๆ กันได้ ข้อจากดั ของผงั งาน ผ้เู ขียนโปรแกรมบางคนไมน่ ยิ มเขยี นผงั งานก่อนการเขียนโปรแกรม เพราะเหน็ ว่าเสียเวลา นอกจากน้ีแลว้ ยงั มี ข้อจากัดอืน่ ๆอีก คือ
19 1. ผังงานเปน็ การสอื่ ความหมายระหว่างบคุ คลกบั บคุ คลมากกว่าท่ีสือ่ ความหมายระหวา่ ง คนกบั เครื่อง เพราะผงั งานนีไ้ ม่ขนึ้ กับภาษาคอมพวิ เตอรภ์ าษาใดภาษาหนึง่ ทใ่ี ช้เครอ่ื งไมส่ ามารถรับและเขา้ ใจได้วา่ ในผงั งานนน้ั ต้องการ ใหท้ าอะไร 2. ในบางครัง้ เม่ือพิจารณาจากผังงาน จะไมส่ ามาถทราบได้ว่า ขนั้ ตอนการทางานใดสาคัญกว่ากัน เพราะทุกๆ ขนั้ ตอนการใชร้ ปู ภาพและสัญลกั ษณใ์ นลักษณะเดียวกนั 3. การเขยี นผงั เปน็ การส้ินเปลอื งจะต้องใชก้ ระดาและอุปกรณอ์ ่นื ๆเพอื่ ประกอบการเขยี นภาพ ซง่ึ ไม่สามารถเขยี น ด้วยเมอื อย่างเดียวได้การเขยี นผงั งานตอ้ งใชก้ ระดาษมากกว่า 1 แผ่น หรอื 1 หน้า ซึง่ เปน็ ขอ้ ความอธบิ ายการใช้ เพียง 2-3 บรรทดั เทา่ น้นั หลักการเขยี นผงั งาน การเขยี นผงั งานนัน้ ไม่มวี ิธที ่ีแนช่ ัดวา่ ต้องใชค้ าส่ังบ้างทงั้ นี้ขนึ้ อยกู่ ับลกั ษณะของงานที่ ซึ้งมีอยู่ 3 ขน้ั ตอย คือ การ รับข้อมลู การประมวลผล และการแสดงผลลพั ธ์ การศกึ ษาลาดบั ขัน้ ตอนงานทางานของผังงาน ใหส้ ังเกตจากลูกศร ท่แี สดงทศิ ทางของข้อมลู ผังงานหลักในการเขียนผังาน ทตี่ ้องคานึงถึงส่งิ ต่าง ต่อไปน้ี 1.ใช้สัญลักษณ์รปู แบบเปน็ มาตรฐาน 2. ขนาดของสญั ลกั ษณ์ข้ึนอยู่กบั ความเหมาะสม 3. ควรเขยี นทิศทางการไหลของข้อมูล เริม่ จากบนลงล่าง ซ้ายไปขวา และควรทาลูกศรกับทศิ ทางด้วย 4. การเขียนอธบิ ายให้เขยี นภายในสญั ลกั ษณ์ ใชข้ ้อความเข้าใจง่าย ส้นั และชดั เจน 5. พยาใหเ้ กดิ จดุ ตัดนอ้ ยสุด อาจใช้สญั ลักษณท์ ี่เรยี กวา่ “ตัวเชื่อม” (Con-nector) แทน เพื่อเลย่ี งข้อผิดพลาดทีจ่ ะ เกิดข้ึน 6.หากเปน็ ไปไดค้ วรเขียนผงั งานให้จบภานในหน้าเดียว 7.ผังงานท่ีดคี วรเป็นระเบยี บ เรีบรอ้ ย ละอาด จดั เจน เข้าใจขัน้ ตอนได้ง่าย 8. จดุ เรม่ิ ต้นและส้ินสุดของงาน ควรมเี พยี งจุดเดยี ว
20 สัญลักษณ์ทใี่ ชใ้ นการเขยี นผังงาน ภาพสญั ลกั ษณ์ทใี่ ชแ้ ทนการทางานขน้ั ตอนหน่งึ ในโปรแกรมน้นั ไดถ้ กู กาหนดข้นึ จาก ANSI (American National Standards Institute) และ ISO (Interntional Stan-daed Organization) โดยใช้ลักษณ์ต่างๆ ท่ีนามาใชม้ ีตังน้ี
21 ลกั ษณะของโครงสร้างในการเขยี นผงั งาน โครงสร้างทว่ั ไปในการเขียนผงั งานมี 3 รูปแบบ ดงั น้ี 1. โครงสร้างแบบเรียงลาดบั (Sequence Structure) 2. โครงสร้างแบบมีทางเลือก (Selection Structure) 3. โครงสร้างแบบทาซ้า (Iteration Structure) 1. โครงสร้างแบบเรียงลาดับ (Sequence Structure) เป็นการทางานแบบเรียงลาดบั ตง่ั แต่ตน้ จนจบ รูปแบบง่ายๆ ไม่มีการเปรียบเทียบ มีการไหลขอ้ มลู ทาง เดียว ซ่ึงอาจเป็นแบบบนลงล่าง หรือซา้ ยไปขวา เช่น การใหค้ านวณหาพ้ืนท่ีรูปสี่เหลี่ยมผนื ผา้ ตัวอย่างท่ี 1 การเขยี นผงั งานโครงสร้างแบบเรียงลาดบั ในการคานวณหาพนื้ ทรี่ ูปสามเหลยี่ ม กาหนดตัวแปร B = ความกวา้ งของฐาน H = ความสูง Total = พ้ืนท่ีท้งั หมด
22 2. โครงสร้างแบบมีทางเลือก (Selection Structure) เป็นโครงสร้างการทางานที่ซบั ซอ้ นมากกวา่ โครงสร้างแบบลาดบั โดยจะมีการเลือกเส้นทางในการทางาน มากกวา่ 1 เส้นทาง รูปแบบที่ง่ายที่สุด จะใชท้ างเลือก 2 เส้นทาง ใช่หรือไมใ่ ช่ แต่อาจมม่ ากถึง 3 ทาง ท่ีข้ึนอยุ่ กบั เงื่อนไข ตวั อยา่ งท่ี 2 การเขียนผงั งานโครงสร้างแบบมีทางเลือก โดยการคานวณหาเงินจากการขายสิ้นคา้ และเงินโบนสั ของพนกั งาน โดยมีเง่ือนไข คือ ถา้ หากยอดขาย < = 10000 ไดโ้ บนสั เพิม่ อีก 3% ถา้ ไมใ่ ช่ เพ่มิ อีก 5% เงินไดร้ วม = ยอดขาย + โบนสั วเิ คราะห์ ขอ้ มลู นาเขา้ ยอดขายสินคา้ ตวั แปรที่ใช้ ยอดขาย : Sales โบนสั : Bonus รายไดร้ วม : Netlncome ขอ้ มลู นาออก พมิ พ์ ขาย โบนสั รายไดร้ วม
23 3. โครงสรา้ งแบบทาซา้ (Iteration Struct) เป็นโครงสรา้ งที่ใชส้ าหรบั กาหนดเง่ือนไขการทางาน ถ้าผลลัพธไ์ มต่ รงกับเงอื่ นไขที่กาหนดไว้กจ็ ะวนกลบั ไปทางาน ในจดุ ทก่ี าหนดใหท้ าซา้ น้ันใหมเ่ ร่อื ยๆ จนผลลัพธต์ รงกับเง่ือนไขทีต่ ้องการจึงจะไปทางานลาดบั ต่อไป คะแนนรวม เกรด 0 - 49 0 50 - 59 1 60 – 69 2 70 – 79 3 80 ขึ้นไป 4 ขอ้ มูลนาเข้า เลขท่ี, คะแนนลกั ษณะนิสยั , ทดสอบ, กลางภาค, ปลายภาย ตวั แปรทใ่ี ช้ เลขที่ : StdlD$ กลางภาค : Mi ชอื่ นักศกึ ษา : StdName$ ปลายภาค : Final ลักษณะนสิ ัย : Hlp คะแนนรวม : TScore ทดสอบ : Test เกรด : Grade ข้อมลู ออก พมิ พ์ เลขที่, ช่อื นกั ศึกษา, คะแนนลักษณะนิสยั , ทดสอบ, กลางภาค, ปลายภาค
24 3.รหสั เทียม 3.1หลกั การเขียนรหสั เทยี ม (Pseudocode) หลกั การเขยี นรหัสเทียมไม่มีกฎหรอื มาตรฐานทต่ี ายตัว ผ้เู ขียนจงึ อยากให้ผอู้ ่านไดน้ าไปใชเ้ พอื่ เปน็ แนวทางในการ เขยี นรหสั เทยี ม ท่มี ปี ระสิทธิภาพย่งิ ขน้ึ โดยการรวบรวมหลักการตา่ ง ๆ ท่ีสาคัญเอาไว้ 1. กาหนดจุดเร่มิ ตน้ ด้วยคาวา่ “Begin”และจดุ สิน้ สุดด้วยคาวา่ “End” 2. ถอ้ ยคาตา่ ง ๆ ให้เขยี นเป็นภาษาอังกฤษอย่างง่าย 3. การเขียนรหัสเทียมแตล่ ะคาสง่ั ควรเขียนเปน็ บรรทัด ๆ 4. ควรมีการย่อหน้า เพอ่ื สะดวกตอ่ การอา่ นและการตรวจสอบ 5. การเขยี นรหัสเทยี มจะเขียนจากบนลงล่าง และมที างเขา้ หน่งึ ทาง ทางออกหน่งึ ทาง 6. การเขยี นรหัสเทียมจะไมเ่ ขยี นหมายเลขกากับในแต่ละขั้นตอน 7. ควรใช้การย่อหน้าใหเ้ ป็นประโยชน์ การแยกคาเฉพาะ ( Keywords ) ให้มีความชดั เจน นอกจากนี้ ควร จัดรูปแบบโครงสร้างควบคุมใหเ้ ปน็ สัดสว่ น เพื่อใหอ้ ่านง่าย 8. กลุ่มประโยคคาสง่ั ต่าง ๆ อาจถูกนามาจัดรวมกลุ่มเข้าด้วยกนั ในรูปแบบของโมดลู และทาการกาหนดช่ือโมดลู ขน้ึ มา เพื่อใหส้ ว่ นของโปรแกรมหลัก หรอื โมดลู ย่อยอน่ื ๆ เรียกใชง้ านได้ รหสั เทยี ม หรือ ซโู ดโค้ด (Pseudo Code) เปน็ คาสง่ั ทจี่ าลองความคิดเปน็ ลาดบั ข้ันตอนโดยใชส้ ญั ลักษณเ์ ปน็ ประโยคภาษาองั กฤษ ซ่ึงซโู ดโค้ดไม่ใช่ ภาษาโปรแกรมทางคอมพิวเตอร์จงึ ไม่
25 สามารถนาไปประมวลผลได้ คอื ไม่สามารถส่ังให้คอมพวิ เตอร์ทางานตามคาสัง่ แตเ่ ป็นการเขยี นจาลองคาสง่ั จริง แบบย่อๆ ตามอัลกอรทิ ึมของโปรแกรมระบบ เพ่อื นาไปพัฒนาเป็นการเขยี นโปรแกรมภาษาคอมพวิ เตอร์ได้ รหัสเทียม (Pseudocode) คือ การเขียนโปรแกรมในรปู แบบภาษาอังกฤษท่ีมีขั้นตอนและรูปแบบแนน่ อนกะทดั รดั และมองดคู ล้ายภาษาระดบั สูงทใ่ี ช้กับ เครือ่ งคอมพวิ เตอรซ์ ึง่ ไมเ่ จาะจงภาษาใดภาษาหน่งึ ประโยชนข์ องซูโดโค้ด • เป็นเคร่อื งมือในการกาหนดโครงรา่ งกระบวนการทางานของการเขียนโปรแกรมแต่ละโปรแกรม • เป็นต้นแบบในการทบทวน ปรับปรงุ แกไ้ ข และพฒั นาโปรแกรมของโปรแกรมเมอร์ และนกั วเิ คราะหร์ ะบบ • เป็นตัวกาหนดงานเขยี นโปรแกรม เพ่ือใหโ้ ปรแกรมเมอรน์ าไปพัฒนาเป็นโปรแกรมคอมพวิ เตอร์ เพ่ือสงั่ ให้ คอมพวิ เตอร์ทางานตามกระบวนการท่ไี ด้ จาลองกระบวนการจรงิ ไวใ้ นซูโดโค้ด วธิ ีการเขยี นซูโดโคด้ • ประโยคคาส่งั (Statement) จะอยใู นรปู แบบของภาษาองั กฤษอย่างง่าย • ในหน่งึ บรรทัด ใหเ้ ขยี นประโยคคาส่งั เพยี งคาส่ังเดียว • ควรใช้ย่อหน้า เพื่อแยกคาเฉพาะ (Keywords) ได้ชดั เจน รวมถงึ จัดโครงสรา้ งการควบคุมใหเ้ ป็นสดั ส่วน ซง่ึ ชว่ ยให้อ่านโค้ดได้งา่ ย • แต่ละประโยคคาส่งั ให้เขียนลาดับจากบนลงลาง โดยมีทางเข้าเพียงทางเดยี ว และมีทางออกทางเดยี วเทา่ นน้ั • กลมุ่ ของประโยคคาส่ังต่างๆ อาจจดั รวมกล่มุ เขา้ ด้วยกันในรปู แบบของโมดลู แตต่ ้องมีการกาหนดช่ือของโมดลู ดว้ ย เพือ่ ให้สามารถเรียกใช้งานโมดลู นน้ั ได้
26 ตวั อยา่ งการเขยี นรหสั เทยี ม Pseudo Code Algorithm Problem_1 Variables : mLoop, Sum, testScore, average Begin Input mLoop Sum = 0 For I = 1 to mLoop Input testScore Sum = Sum + testScore Next average = Sum / mLoop Print average End Problem_1 3.2 รปู แบบการเขยี นรหสั เทยี ม รูปแบบการเขยี นรหัสเทยี ม ประโยคคาสง่ั ตา่ งๆ ท่ีใช้ในการเขยี นรหัสเทยี มสามารถแบง่ ออกมาเป็นกลมุ่ ย่อยๆ โดยลกั ษณะการใชง้ านได้ ดังน้ี การอ่าน/รบั ข้อมลู (Input/Output) การอ่านข้อมูล สามารถใช้คาส่งั READ, INPUT หรอื GET ได้ โดยเขยี นดงั นี้
27 READ variable_1, variable_2. variable_n INPUT variable_1, variable_2. variable_n GET variable_1, variable_2. variable_n READ ใช้สาหรับการอ่านค่าที่มีอยู่แล้ว มาเก็บไว้ในตัวแปร เช่น การอา่ นข้อมลู จากไฟลโ์ ดยจะทางานร่วมกับ OPEN (การเปดิ ไฟล)์ INPUT และ GET ใช้สาหรบั การรบั คา่ ขอ้ มูลผา่ นทางแป้นพมิ พ์ Variable คือ ตวั แปรที่ใชเ้ ก็บข้อมูลท่ีอ่านหรือรับเขา้ มา ซึ่งสามารถกาหนดก่ีตัวก็ได้โดยใชเ้ ครื่องหมาย \",\" ค่ันนระหว่างชื่อตวั แปร การแสดงผลขอ้ มลู สามารถใช้คาสง่ั DISPLAY, PRINT, PROMPT หรอื WRITE ได้ โดยเขียนดงั นี้ DISPLAY variable_1 , variable_2 , variable_n WRITE variable_1 , variable_2 , variable_n PRINT variable_1 , variable_2 , variable_n PROMPT variable_1 , variable_2 , variable_n DISPLAY ใช้สาหรับการแสดงผลทางจอภาพ PRINT และ PROMPT ใช้สาหรับการพมิ พ์คา่ ข้อมูล หรือขอ้ ความ WRITE ใช้สาหรบั การบันทกึ ข้อมูลลงในแฟ้มข้อมูล การกาหนดเงื่อนไขหรอื การตัดสินใจ (Dicision) ใชค้ าสั่ง if...then โดยเขียนดังนี้ IF <condition> THEN activity1
28 ELSE activity2 ENDIF <condition> คอื เง่ือนไขในการตัดสนิ ใจ หากเง่ือนไขเปน็ จรงิ จะทากระบวนการหลัง THEN (activity1) แตถ่ ้า เงี่อนไขเป็นเท็จ จะข้ามไปทากระบวนการหลัง ELSE (activity2) การทางานแบบวนซา้ การทางานแบบวนซ้าดว้ ย REPEAT ... UNTIL REPEAT activity1 UNTIL <condition> การทางานแบบวนซ้าด้วย REPEAT ... UNTIL จะทา activity ภายในลูปก่อนแลว้ ค่อยทาการตรวจสอบเงื่อนไข ถา้ เงอื่ นไขเป็นจรงิ จะทาซา้ ไปเรื่อยๆ จนกระทั่งเง่ือนไขเปน็ เท็จจงึ จะออกจากลูป ดงั นน้ั จึงมีการทางานอย่างน้อย 1 รอบเสมอ ตวั อย่าง 5.3 รหสั เทยี ม REPEAT ... UNTIL N=0 REPEAT N=N+1 UNTIL N=10
29 จากตัวอยา่ ง ในตอนแรกค่าของ N เป็น 0 พอเร่ิมทางานในลูป N จะถูกบวกเพม่ิ ทีละ 1 จนกระทงั่ N = 10 จึงจบการทางาน คา่ ของ N จึงเทา่ กับ 10 การทางานแบบวนซา้ ดว้ ย WHILE ... ENDWHILE WHILE <condition> actibity1 ENDWHILE การทางานแบบวนซ้าดว้ ย WHILE จะมกี ารตรวจสอบเง่ือนไขก่อน โดยหากเง่ือนไขเป็นจริง จะทา activity ภายในลปู ซ้าไปเร่ือยๆ จนกระทงั่ เง่ือนไขเป็นเท็จ จงึ จะออกจากลปู แต่หากเงื่อนไขท่ีตรวจสอบคร้ังแรกเปน็ เทจ็ ก็ จะไม่มกี ารทางานเกิดขนึ้ เลย ตวั อย่าง 5.4 รหสั เทียม WHILE ... ENDWHILE N=0 WHILE N<10 N=N+1 UNTIL จากตวั อยา่ ง ในตอนแรกค่าของ N เปน็ 0 พอเริ่มทางานในลูป จะทาการตรวจสอบกอ่ นว่า N น้อวกว่า 10 หรือไม่ ถา้ ใช่ N จะถูกบวกเพิ่มทีละ 1 และกลบั มาตรวจสอบเงื่อนไขใหม่จนกระท่งั เง่ือนไขผดิ จงึ จบการทางาน ค่าของ N จงึ เทา่ กบั 10 การทางานแบบวนซา้ ด้วย FOR ... ENDFOR FOR <var> = <start> to <stop> actibity1
30 ENDFOR การทางานแบบวนซ้าดว้ ย FOR จะมจี านวนรอบการทางานทแ่ี น่นอน โดยกาหนดจาก < var > วา่ มีค่าเรม่ิ ตน้ เปน็ อะไรและค่าสุดท้ายเป็นอะไร เช่น I = 1 to 10 กจ็ ะทางาน 10 รอบ ดงั น้ันการใช้ FOR จงึ จาเป็นตอ้ งรู้จานวนรอบ ในการทางานทแ่ี นน่ อนจึงจะใช้ได้ ตวั อย่าง 5.5 รหสั เทียม FOR .. ENDFOR FOR I = 1 to 10 WRITE \"Hello World\" ENDFOR จากตัวอย่างกาหนด I ต้ังแต่ 0 ถึง 10 จงึ ทางาน 10 รอบ โปรแกรมกจ็ ะพมิ พค์ าวา่ \"Hello World\" ออกมา 10 คร้ัง การประมวลผล (Process) การประมวลผล คือ การกระทาใดๆ ทเี่ ป็นการคานวณ เชน่ บวก ลบ คณู หาร ซง่ึ จะใชค้ าศัพท์ง่ายๆ เชน่ ADD ใชบ้ วกเพิ่มค่าให้ตวั แปร SUBTRACT. ใช้ลบค่าออกจากตัวแปร SET ใช้กาหนดค่าใหต้ วั แปร แต่การใช้ คาศัพท์ไมค่ ่อยสะดวกนัก จึงนยิ มใชต้ วั ดาเนนิ การมากกว่า เช่น + , - , * , / , % ตวั อยา่ ง 5.6 การใช้ตวั ดาเนินการ SET 8 to n ADD2 to n n=8 n = n+2
31 จากตัวอยา่ ง 5.6 เป็นการกาหนดค่าใหก้ บั ตัวแปร n มีค่าเทา่ กับ 8 และบวกคา่ เพิ่มอีก 2 นอกจากดาเนินการแล้วแล้วยงั มีสญั ลกั ษณท์ ี่ใชใ้ นการเปรยี บดังนี้ สัญลกั ษณ์เทียบคา่ ซง่ึ เปน็ ความสมั พนั ธ์ ซง่ึ ประกอบด้วยสญั ลักษณ์ == , < , <= , > , >= , <> ตวั อยา่ ง 5.7 การใชส้ ัญลักษณก์ ารเปรียบเทียบความสมั พันธ์ IF A == B THEN PRINT A ENDIF WHILE N<=10 N=N+1 UNTIL จากตัวอย่าง 5.7 เปรยี บเทยี บวา่ คา่ ตวั แปร A เทา่ กับคา่ ตวั แปร B หรือไม่ ถา้ ใชใ่ หแ้ สดงค่า A และอกี ตัวอยา่ งเป็น การเปรยี บเทียบว่าค่าตวั แปร N มคี ่าน้อยกวา่ หรอื เทา่ กับ 10 หรอื ไม่ ถา้ ใช่ใหเ้ พม่ิ ค่า N ทลี ะ 1 สัญลกั ษณ์เทยี บคา่ ท่ีเป็นตรรกะ ซ่งึ ประกอบด้วยสัญลักษณ์ AND , OT , NOT ตวั อย่าง 5.8 การใชส้ ัญลักษณก์ ารเปรยี บเทียบตรรกะ IF (A ==2) OR (B==2) THEN PRINT A ENDIF IF NOT (A==2) THEN PRINT B
32 ENDIF จากตัวอย่าง 5.8 เปรยี บเทยี บว่าถ้าค่าตวั แปร A เทา่ กับ 2 หรอื คา่ ตวั แปร B เท่ากบั 2 ใหแ้ สดงค่า A และถ้าค่าตวั แปร A ไมเ่ ท่ากบั 2 ให้แสดงค่า A 3.3การเขยี นรหสั เทียมจากลาดบั ขน้ั ตอนของวธิ ีการประมวลผล ประโยชน์ของซูโดโค้ด • เป็นเคร่ืองมือในการกาหนดโครงรา่ งกระบวนการทางานของการเขยี นโปรแกรมแตล่ ะโปรแกรม • เปน็ ต้นแบบในการทบทวน ปรับปรุงแก้ไข และพฒั นาโปรแกรมของโปรแกรมเมอร์ และนกั วิเคราะห์ระบบ • เปน็ ตัวกาหนดงานเขยี นโปรแกรม เพื่อใหโ้ ปรแกรมเมอร์นาไปพัฒนาเป็นโปรแกรมคอมพิวเตอร์ เพ่ือสัง่ ให้ คอมพวิ เตอร์ทางานตามกระบวนการท่ไี ดจ้ าลองกระบวนการจริงไวใ้ นซูโดโคด้ วธิ กี ารเขียนซูโดโคด้ • ประโยคคาสง่ั (Statement) จะอยใู นรูปแบบของภาษาองั กฤษอยา่ งง่าย • ในหน่งึ บรรทัด ให้เขียนประโยคคาส่ังเพยี งคาส่ังเดียว • ควรใชย้ ่อหน้า เพื่อแยกคาเฉพาะ (Keywords) ไดช้ ดั เจน รวมถงึ จดั โครงสรา้ งการควบคุมใหเ้ ปน็ สัดสว่ น ซงึ่ ช่วยให้อ่านโคด้ ได้ง่าย • แตล่ ะประโยคคาสั่งใหเ้ ขียนลาดับจากบนลงลาง โดยมที างเข้าเพยี งทางเดียว และมีทางออกทางเดียว เท่านั้น • กล่มุ ของประโยคคาสัง่ ตา่ งๆ อาจจดั รวมกลุ่มเข้าดว้ ยกนั ในรปู แบบของโมดลู แต่ตอ้ งมกี ารกาหนด่ชอ่ื ของโมดูลด้วย เพ่ือให้สามารถเรียกใช้งานโมดลู นน้ั ได้ ตัวอยา่ งการเขียนรหัสเทียม Pseudo Code
33 Algorithm Problem_1 Variables : mLoop, Sum, testScore, average Begin Input mLoop Sum = 0 For I = 1 to mLoop Input testScore Sum = Sum + testScore Next average = Sum / mLoop Print average End Problem_1 รปู แบบการเขยี น Pseudo Code 1. การกาหนดคา่ และการคานวณ name = expression name คอื ชื่อตัวแปรท่ีใช้สาหรบั เกบ็ ค่า expression คอื คา่ ขอ้ มลู หรอื นิพจน์
34 ตวั อยา่ ง salary = 1000 overTime = 2500 tax = 125 Income = salary + overTime - tag 2. การอ่าน/รบั ขอ้ มูล การอา่ นขอ้ มลู สามารถใชค้ าส่ัง READ, INPUT หรอื GET ได้ โดย Read variables_1 ,variables_2, variables_3 Input variables_1 ,variables_2, variables_3 Get variables_1 ,variables_2, variables_3 READ ใช้สาหรับการอ่านค่าท่ีมอี ยูแ่ ลว้ มาเก็บไว้ในตัวแปร เช่น การอ่านข้อมลู จากไฟล์ โดยจะ ทางานรว่ มกบั OPEN (การเปิดไฟล์) INPUT และ GET ใช้ส่าหรับการรับค่าข้อมลู ผ่านทางแปน้ พมิ พ์ Variable คือ ตัวแปรทใี่ ชเ้ กบ็ ข้อมลู ที่อ่านหรือรบั เข้ามา ซ่ึงสามารถกาหนดได้ ตามจานวนตัวแปรที่ ตอ้ งการ โดยใชเ้ ครือ่ งหมาย “,” คั่นระหวา่ งชอื่ ตวั แปร ตัวอยา่ ง Input a, b, c Answer = a + b + c
35 Get current_date expire_date = current_date + 120 Open student_file Read Id, Name, Address, Sex 3. การแสดงผลข้อมลู การแสดงผลขอ้ มลู สามารถใช้คาส่ัง Print , Prompt, Write print variables_1 ,variables_2, variables_3 prompt variables_1 ,variables_2, variables_3 write variables_1 ,variables_2, variables_3 PRINT และ PROMPT ใช้สาหรบั การพิมพค์ ่าข้อมูล หรือข้อความ WRITE ใชส้ าหรบั การบนั ทกึ ขอ้ มูลลงในแฟ้มข้อมลู ตัวอย่าง Prompt \" Enter 3 Value ==> \" Input Value1 , Value2 , Value3 Sum = Value1 + Value2 + Value3 Print Sum Open Student _file Input Id, Name, Address, Sex Write Id, Name, Address, Sex
36 4. การกาหนดเง่อื นไข If < condition > Then Activity 1 Else Activity 2 Endif <condition> คือ เง่ือนไขท่ีกาหนด ซงึ่ หากเงือ่ นไขเปน็ จรงิ จะทากิจกรรมหลัง THEN (activity1) แตถ่ า้ เงื่อนไขเป็นเทจ็ กจ็ ะทากจิ กรรมหลัง ELSE (activity2) ตวั อยา่ ง IF sex = “M” THEN male = male + 1 ELSE female = female + 1 ENDIF IF score >= 80 grade = “A” ELSEIF score >= 70 grade = “B”
37 ELSEIF score >= 60 grade = “C” ELSEIF score >= 50 grade = “D” ELSE grade = “F” ENDIF 5. ในกรณีที่มีหลายเงื่อนไข การใช้ IF อาจทาใหต้ รวจสอบโปรแกรมได้ยาก สามารถใชค้ าส่งั CASE …. END CASE แทนได้ ตัวอยา่ ง CASE score OF >= 80 : grade = “A” >= 70 : grade = “B” >= 60 : grade = “C” < 60 : grade = “F” ENDCASE
38 6. การทางานเป็นรอบ (Loop) การทางานเปน็ รอบดว้ ยลูป WHILE … ENDWHILE WHILE<condition> activity1 activity2 activity3 ENDWHILE การทางานของลูป WHILE จะมีการตรวจสอบเง่ือนไขก่อน โดยหากเงื่อนไขเป็นจริง จะทากจิ กรรม ภายในลปู ซา้ ไปเร่ือยๆ จนกระท่งั เง่ือนไขเป็นเทจ็ กจ็ ะออกจากลปู แตห่ ากเงื่อนไขที่ตรวจสอบครั้งแรกเป็นเทจ็ กจ็ ะ ไม่มีการทากิจกรรมภายในลปู เลย ตัวอยา่ ง num = 1 WHILE num <= 20 PRINT num num = num + 1 ENDWHILE PRINT “STOP RUN”
39 7. การทางานเป็นรอบ (Loop) การทางานเป็นรอบด้วยลูป DO … UNTIL DO activity1 activity2 activity3 UNTIL <condition> การทางานของลปู DO … UNTIL จะทากิจกรรมภายในลปู กอ่ นหน่งึ รอบ จากน้ันจะทาการตรวจเง่ือนไข โดยจะวนซ้าไปเรื่อยๆ จนกวา่ เงอ่ื นไขจะเปน็ จริง จงึ หลดุ ออกจากลูป และถึงแมเ้ ง่อื นไขท่ีตรวจสอบเป็นจรงิ ตง้ั แต่ แรก แตล่ ปู DO…UNTIL ก็จะมีการทากจิ กรรมภายในลูปอย่างนอ้ ยหน่ึงรอบเสมอ ตัวอยา่ ง num = 0 DO PRINT “HELLO…” num = num + 1 UNTIL num > 20 8. การทางานเปน็ รอบ (Loop) การทางานเปน็ รอบดว้ ยลูป FOR … NEXT
40 FOR i=1 to n activity1 activity2 activity3 Next 4.ข้นั ตอนการแก้ปัญหา (Algorithm) 4.1 วามหมายของการแก้ปัญหา ในชวี ติ ประจาวันทกุ คนต้องเคยพบกับปญั หาต่างๆ ไม่วา่ จะเปน็ ปัญหาดา้ นการเรียน การงาน การเงิน หรือ แม้แต่การเล่นเกม เมอ่ื พบกบั ปัญหา แตล่ ะคนมวี ิธที ่จี ะจดั การหรอื แก้ปัญหาเหล่านัน้ แตกต่างกนั ไป ซึ่งแตล่ ะ วธิ กี ารอาจให้ผลลพั ธท์ ีเ่ หมือนหรอื แตกต่างกันเล็กน้อย ทั้งนข้ี ้ึนอยกู่ ับความรู้ ความสามารถ และประสบการณ์ ของบุคคลผูน้ ัน้ อย่างไรกต็ าม หากเรานาวิธีการแกป้ ญั หาตา่ งวิธีนัน้ มาวิเคราะหใ์ หด้ ี จะพบว่าสามารถสรปุ วธิ กี าร เหล่านนั้ เปน็ ทฤษฎีซึง่ มีรูปแบบท่แี นน่ อนได้ และบางครัง้ ต้องอาศยั การเรียนร้ใู นระดบั สูงเพือ่ แกป้ ัญหาบางอย่างให้ สมบรู ณแ์ บบ นอกจากวธิ ีการแก้ปัญหาทยี่ กตวั อย่างมาซ่งึ ได้แก่ วิธกี ารลองผิดลองถูก การใช้เหตุผล การใช้วธิ ีขจดั ยงั มวี ธิ ีการแกป้ ญั หาอีกมากมายทีผ่ ู้แกป้ ัญหาสามารถเลือกใช้ใหเ้ ขา้ กับตวั ปญั หาและประสบการณข์ องผ้แู ก้ปญั หา เอง แต่อย่างไรกต็ าม วิธกี ารเหลา่ นน้ั ล้วนมขี น้ั ตอนที่คลา้ ยคลึงกนั และจากการศกึ ษาพฤติกรรมในการเรียนรู้ และแก้ปัญหาของมนุษย์พบว่า โดยปกตมิ นษุ ย์มีกระบวนการในการแก้ปญั หา ซง่ึ ประกอบดว้ ย 4 ขน้ั ตอน ดงั นี้ 1การวิเคราะหแ์ ละกาหนดรายละเอียดของปัญหา การวิเคราะห์และกาหนดรายละเอียดของปญั หา (State the problem) ข้นั ตอนนเี้ ป็นขัน้ ตอนแรกสุด ก่อนที่จะลงมือแก้ปญั หา แต่ผู้แกป้ ัญหามักจะมองข้ามความสาคญั ของข้นั ตอนน้ีอยูเ่ สมอ จุดประสงค์ของข้นั ตอนนี้ คือการทาความเข้าใจกบั ปัญหาเพื่อแยกให้ออกว่าข้อมูลที่กาหนดมาในปัญหาหรือเง่อื นไขของปัญหาคืออะไร และ
41 สิ่งทตี่ ้องการคืออะไร อกี ท้ังวิธกี ารที่ใชป้ ระมวลผล ในการวิเคราะห์ปัญหาใด กลา่ วโดยสรปุ มอี งค์ประกอบในการ วิเคราะห์ ดงั นี้ 1.1 การระบุข้อมลู เข้า ได้แก่ การพจิ ารณาข้อมูลและเง่ือนไขที่กาหนดมาในปญั หา 1.2 การระบขุ ้อมูลออก ได้แก่ การพจิ ารณาเป้าหมายหรือสิ่งที่ต้องหาคาตอบ 1.3 การกาหนดวธิ ีประมวลผล ไดแ้ ก่ การพิจารณาขนั้ ตอนวธิ หี าคาตอบหรือข้อมลู ออก 2การเลือกเครื่องมือและออกแบบข้ันตอนวธิ ี การเลอื กเคร่ืองมือและออกแบบขัน้ ตอนวิธี (Tools and Algorithm development) ข้นั ตอนน้ีเปน็ ขน้ั ตอนของการวางแผนในการแก้ปัญหาอยา่ งละเอียดถ่ถี ้วน หลังจากทีเ่ ราทาความเขา้ ใจกบั ปญั หา พจิ ารณาข้อมลู และเง่ือนไขท่มี ีอยู่ และสงิ่ ท่ตี ้องการหาในขนั้ ตอนท่ี 1 แลว้ เราสามารถคาดคะเนวิธีการที่จะใชใ้ นการแก้ปญั หา ขน้ั ตอนนจี้ าเปน็ ต้องอาศยั ประสบการณ์ของผ้แู ก้ปญั หาเป็นหลัก หากผแู้ ก้ปัญหาเคยพบกับปัญหาทานองน้ีมาแล้ว ก็สามารถดาเนินการตามแนวทางท่ีเคยปฏิบตั มิ า ขั้นตอนนีจ้ ะเรม่ิ จากการเลือกเครอ่ื งมือท่ใี ชใ้ นการแก้ปญั หา โดยพิจารณาความเหมาะสมระหว่าง เคร่ืองมอื กบั เง่ือนไขตา่ งๆ ของปญั หาซึง่ หมายรวมถึงความสามารถของเคร่ืองมอื ในการแกป้ ัญหาดังกล่าว และสงิ่ ท่ี สาคัญคือความคุ้นเคยในการใช้งานเคร่อื งมือนั้นๆ ของผแู้ ก้ปัญหา อีกสิ่งหนง่ึ ท่ีสาคัญในการแก้ปัญหา คือยทุ ธวิธีท่ีใช้ในการแกป้ ัญหาหรอื ทเี่ ราเรียกว่า ขัน้ ตอนวิธี (algorithm) ในการแกป้ ญั หา หลงั จากทีเ่ ราได้เครื่องมือชว่ ยแกป้ ัญหาแล้ว ผแู้ ก้ปัญหาต้องวางแผนว่าจะใช้ เครือ่ งมอื ดงั กลา่ วเพื่อให้ได้ผลลพั ธ์ทถ่ี ูกต้องและดที ่ีสุด การออกแบบข้ันตอนวิธใี นการแก้ปัญหา ผู้แก้ปัญหาควรใช้ แผนภาพหรือเครื่องมือในการแสดงขน้ั ตอนการทางานเพ่อื ให้ง่ายตอ่ ความเขา้ ใน เช่น ผังงาน (flowchart) ทจ่ี าลอง ขั้นตอนวธิ ีการแกป้ ัญหาในรปู ของสัญลกั ษณ์ รหสั ลาลอง (pseudo code) ซึ่งเปน็ การจาลองขน้ั ตอนวธิ ีการ แก้ปัญหาในรปู ของคาบรรยาย การใชเ้ ครือ่ งมือช่วยออกแบบดงั กล่าวนอกจากแสดงกระบวนการท่ชี ัดเจนแลว้ ยงั ชว่ ยใหผ้ ู้แกป้ ัญหาสามารถหาข้อผดิ พลาดของวธิ ีการท่ใี ช้ได้ง่ายและแกไ้ ขได้อย่างรวดเรว็
42 3 การดาเนินการแก้ปัญหา การดาเนินการแก้ปัญหา (Implementation) หลงั จากท่ไี ด้ออกแบบขัน้ ตอนวธิ ีเรยี บรอ้ ยแล้ว ขนั้ ตอน น้เี ป็นขัน้ ตอนทต่ี อ้ งลงมือแก้ปัญหาโดยใช้เครื่องมือที่ได้เลือกไว้ หากการแกป้ ัญหาดงั กล่าวใชค้ อมพิวเตอร์เข้ามา ชว่ ยงา่ น ขน้ั ตอนน้ีก็เป็นการใช้โปรแกรมสาเรจ็ หรอื ใช้ภาษาคอมพวิ เตอรเ์ ขียนโปรแกรมแกป้ ญั หา ขนั้ ตอนน้ตี ้อง อาศยั ความรเู้ กีย่ วกบั เคร่ืองมือทเี่ ลอื กใชซ้ ึ่งผู้แกป้ ญั หาต้องศึกษาให้เขา้ ใจและเช่ยี วชาญ ในขณะทีด่ าเนินการหาก พบแนวทางทด่ี กี ว่าที่ออกแบบไว้ก็สามารถปรบั เปลยี่ นได้ 4การตรวจสอบและปรับปรุง การตรวจสอบและปรับปรงุ (Refinement) หลงั จากทีล่ งมือแกป้ ัญหาแล้ว ต้องตรวจสอบใหแ้ น่ใจวา่ วิธีการนใี้ ห้ผลลัพธท์ ีถ่ ูกต้อง โดยผู้แก้ปัญหาต้องตรวจสอบว่าขัน้ ตอนวิธีทส่ี รา้ งขน้ึ สอดคล้องกับรายละเอียดของ ปญั หา ซงึ่ ได้แก่ ข้อมลู เข้า และข้อมลู ออก เพอ่ื ให้มน่ั ใจวา่ สามารถรองรบั ข้อมเุ ข้าได้ในทกุ กรณีอย่างถูกตอ้ งและ สมบูรณ์ ในขณะเดยี วกันกต็ ้องปรับปรงุ วิธกี ารเพ่ือให้การแก้ปัญหานีไ้ ดผ้ ลลัพธท์ ่ีดีทสี่ ดุ ขัน้ ตอนท้ัง 4 ขน้ั ตอนดงั กล่าวขา้ งต้น เปน็ เสมือนข้ันบันได (stair) ท่ที าให้มนษุ ย์สามารถประสบ ความสาเร็จในการแก้ปญั หาต่างๆ ได้ รวมท้ังการเขยี นหรือพฒั นาโปรแกรมคอมพวิ เตอรเ์ พอ่ื แก้ปญั หากต็ ้องใช้ กระบวนการตามขนั้ ตอนทั้ง 4 นเ้ี ชน่ กนั 4.2 ขนั้ ตอนการแกป้ ัญหา วิธีการแกป้ ัญหาอยา่ งเปน็ ระบบ มีขนั้ ตอน คอื ข้ันตอนที่ 1 วิเคราะหป์ ัญหาและกาหนดรายละเอียดของปัญหา ข้ันตอนท่ี 2 วางแผนในการแก้ปัญหา ขน้ั ตอนท่ี 3 ดาเนนิ การแกป้ ัญหา ขน้ั ตอนที่ 4 การตรวจสอบและปรบั ปรงุ
43 จุดประสงคข์ องขนั้ ตอนนี้ คือการทาความเข้าใจกบั ปญั หาเพื่อแยกใหอ้ อกวา่ ข้อมูลที่กาหนดมาในปัญหาหรอื เงอื่ นไขของปัญหาคืออะไร และสิง่ ทตี่ ้องการคอื อะไร อีกท้ังวิธกี ารท่ีใช้ประมวลผล ในการวเิ คราะหป์ ัญหาใด กลา่ ว โดยสรุปมีองค์ประกอบในการวิเคราะห์ ดังนี้ 1. การระบขุ ้อมลู เข้า ไดแ้ ก่ การพจิ ารณาข้อมลู และเง่อื นไขทีก่ าหนดมาในปัญหา 2. การระบขุ ้อมูลออก ไดแ้ ก่ การพิจารณาเป้าหมายหรือส่ิงท่ตี อ้ งหาคาตอบ 3. การกาหนดวิธีประมวลผล ไดแ้ ก่ การพิจารณาขน้ั ตอนวิธีหาคาตอบหรือข้อมลู ออก ขัน้ ตอนน้ีจาเป็นต้องอาศยั ประสบการณ์ของผู้แก้ปญั หาเปน็ หลัก ข้ันตอนนจ้ี ะเร่มิ จากการเลือกเครื่องมือท่ี ใชใ้ นการแก้ปัญหา โดยพจิ ารณาความเหมาะสมระหว่างเครื่องมือกับเง่ือนไขตา่ งๆ ของปัญหาซึง่ หมายรวมถึง ความสามารถของเคร่ืองมือในการแกป้ ัญหาดังกล่าว และสงิ่ ท่สี าคัญคือความคุ้นเคยในการใชง้ านเครือ่ งมอื นั้นๆ ของผแู้ กป้ ญั หา ขนั้ ตอนนเี้ ป็นขัน้ ตอนทต่ี ้องลงมือแก้ปญั หาโดยใชเ้ คร่ืองมือท่ีไดเ้ ลือกไวข้ ้นั ตอนน้ีก็เป็นการใชโ้ ปรแกรมสาเร็จ หรือใชภ้ าษาคอมพิวเตอร์เขียนโปรแกรมแกป้ ัญหา ข้นั ตอนนต้ี ้องอาศยั ความรูเ้ กี่ยวกบั เครือ่ งมือที่เลอื กใช้ซงึ่ ผู้ แก้ปญั หาต้องศึกษาให้เข้าใจและเชย่ี วชาญ ในขณะทด่ี าเนินการหากพบแนวทางทดี่ กี ว่าท่ีออกแบบไวก้ ็สามารถ ปรบั เปล่ยี นได้ 1 การแกป้ ัญหาดว้ ยกระบวนการสารสนเทศ 2 หลักการแกป้ ัญหาตามวิธวี ทิ ยาศาสตร์ 3 หลักการแกป้ ัญหาตามวธิ ีการทางวิศวกรรม 4 วิธีการแกป้ ัญหาแบบสรา้ งสรรค์ หลงั จากที่ลงมือแกป้ ัญหาแล้ว ต้องตรวจสอบให้แนใ่ จวา่ วิธกี ารนใี้ ห้ผลลัพธท์ ่ถี ูกต้อง โดยผูแ้ ก้ปัญหาต้องตรวจสอบ วา่ ขั้นตอนวธิ ที ่สี รา้ งขึน้ สอดคล้องกับรายละเอียดของปญั หา ซ่ึงได้แก่ ข้อมลู เข้า และข้อมูลออก เพ่ือให้ม่ันใจวา่ สามารถรองรบั ข้อมลู เข้าได้ในทุกกรณีอย่างถูกตอ้ งและสมบูรณ์ แบ่งไดเ้ ป็น 2 ข้นั ตอน ได้แก่
44 5.องค์ประกอบพนื้ ฐานของภาษา C 5.1 โครงสรา้ งของโปรมแกรมภาษา C โครงสรา้ งของโปรแกรมภาษาซีแบง่ ออกเปน็ 3 สว่ น 1. ส่วนหัวของโปรแกรม สว่ นหัวของโปรแกรมนี้เรียกว่า Preprocessing Directive ใชร้ ะบุเพื่อบอกให้คอมไพเลอร์กระทาการ ใด ๆ ก่อน การแปลผลโปรแกรม ในที่นี่คาสงั่ #include <stdio.h> ใช้บอกกบั คอมไพเลอร์ให้นาเฮดเดอรไ์ ฟล์ทร่ี ะบุ คือ stdio.h เข้าร่วมในการแปลโปรแกรมดว้ ย โดยการกาหนด preprocessing directives นีจ้ ะต้องข้ึนต้นดว้ ย เคร่ืองหมาย # เสมอ คาสง่ั ท่ใี ชร้ ะบุใหค้ อมไพเลอร์นาเฮดเดอร์ไฟล์เขา้ ร่วมในการแปลโปรแกรม สามารถเขียนได้ 2 รูปแบบ คือ - #include <ชอื่ เฮดเดอร์ไฟล์> คอมไพเลอรจ์ ะทาการคน้ หาเฮดเดอร์ไฟลท์ ่รี ะบุจากไดเรกทอรีทใ่ี ช้สาหรบั เกบ็ เฮด เดอร์ไฟล์โดยเฉพาะ (ปกตคิ ือไดเรกทอรีชอื่ include)
45 #include “ชื่อเฮดเดอร์ไฟล์” คอมไพเลอร์จะทาการค้นหาเฮดเดอรไ์ ฟท่ีระบุ จากไดเร็คทอรเี ดยี วกนั กบั ไฟล์ source code นัน้ แต้ถ้าไม่พบกจ็ ะไปคน้ หาไดเร็คทอรที ี่ใช้เก็บเฮดเดอร์ไฟลโ์ ดยเฉพาะ 2. ส่วนของฟังกช์ ั่นหลัก ฟังกช์ ่ันหลักของภาษาซี คือ ฟงั กช์ ั่น main() ซ่งึ โปรแกรมภาษาซีทกุ โปรแกรมจะต้องมีฟังกช์ ่ันน้ีอย่ใู นโปรแกรม เสมอ จะเหน็ ไดจ้ ากช่ือฟังกช์ ั่นคอื main แปลว่า “หลัก” ดงั นัน้ การเขียนโปรแกรมภาษซีจึงขาดฟงั กช์ นั่ นี้ไปไมไ่ ด้ โดยขอบเขตของฟังกช์ ั่นจะถูกกาหนดดว้ ยเครือ่ งหมาย { และ } กลา่ วคือ การทางานของฟังกช์ นั่ จะเรมิ่ ต้นที่ เครื่องหมาย { และจะสนิ้ สุดท่ีเคร่อื งหมาย } ฟงั กช์ น่ั main() สามารถเขยี นในรูปแบบของ void main(void) ก็ได้ มีความหมายเหมอื นกนั คือ หมายความวา่ ฟังกช์ นั่ main() จะไม่มีอาร์กวิ เมนต์ (argument) คือไม่มีการรบั คา่ ใด ๆ เขา้ มาประมวลผลภายในฟังก์ช่นั และจะไม่มีการคืนคา่ ใด ๆ กลับออกไปจากฟังก์ชั่นด้วย 3. สว่ นรายละเอยี ดของโปรแกรม เป็นสว่ นของการเขียนคาสง่ั เพอื่ ให้โปรแกรมทางานตามที่ไดอ้ อกแบบไว้ คอมเมนต์ในภาษาซี คอมเมนต์ (comment) คือส่วนที่เปน็ หมายเหตุของโปรแกรม มีไวเ้ พื่อให้ผู้เขียนโปรแกรมใส่ข้อความอธบิ ายกากับ ลงไปใน source code ซงึ่ คอมไพเลอรจ์ ะข้ามาการแปลผลในสว่ นทีเ่ ป็นคอมเมนตน์ ี้ คอมเมนต์ในภาษาซมี ี 2 แบบ คอื คอมเมนต์แบบบรรทัดเดียว ใช้เครื่องหมาย //
46 ¨ คอมเมนต์แบบหลายบรรทดั ใช้เคร่อื งหมาย /* และ */ ตัวอย่าง การคอมเมนตใ์ นภาษาซี // Comment only one line #include <stdio.h> #include <conio.h> main void() { clrscr(); /*comment many line*/ } ข้อควรระวงั ในการใชค้ อมเมนต์ คอื ในกรณที ่ีใช้คอมเมนตแ์ บบหลายบรรทัด จะไมส่ ามารถใชค้ อมเมนต์ซ้อนคอม เมนตไ์ ด้ ดงั รูป มิฉะน้นั จะก่อให้เกดิ ข้อผดิ พลาดในการคอมไพล์ / / /*Comment1* /*Comment2*/ /*Comment3*/
47 /*Comment2*/ X /*Comment1 /*Comment3*/ การใชค้ อมเมนต์แบบหลายบรรทดั จะเห็นว่าในกรณีทตี่ ้องการใส่คอมเมนตห์ ลาย ๆ บรรทดั ตดิ กนั นั้น คอมเมนต์แบบหลายบรรทดั จะช่วย ประหยดั เวลาในการใส่คอมเมนต์ไดม้ ากกวา่ การใช้คอมเมนต์แบบบรรทัดเดียว แต่ก็ควรระมัดระวังในการใชง้ าน ดว้ ย ตัวอยา่ งที่ 1 โปรแกรมให้นักเรียนศกึ ษาโครงสรา้ งของโปรแกรมภาษาซี 1: #include <stdio.h> 2: void main() 3: { 4: clrscr(); 5: printf(\"My name is Kwanjit\")
48 6: } ผลลัพธข์ องโปรแกรม My name is Kwanjit อธบิ ายโปรแกรม บรรทัดที่ 1: เป็นการบอกให้คอมไพเลอรน์ าเฮดเดอร์ไฟลช์ ่ือ stdio.h เขา้ มารว่ มในการแปลผลดว้ ย โดย stdio ย่อ มาจาก standard input/output และ .h คอื นามสกุลของเฮดเดอรไ์ ฟลใ์ นภาษาซี (h ย่อมาจาก header) ซง่ึ stdio.h คอื เฮดเดอรไ์ ฟลท์ รี่ วมเอาการประกาศ (declaration) ของฟังกช์ ัน่ มาตรฐานของภาษาซที ่เี ก่ยี วกับการ จดั การด้านอนิ พุตและเอาตพ์ ุตเขา้ มาไว้ดว้ ยกนั โปรแกรมนี้มีการเรยี กใช้งานฟงั ก์ชัน่ printf() เพือ่ แสดงข้อมูลออก ทางจอภาพ และเนื่องจากส่วนของการประกาศฟังก์ชัน่ printf() ถกู บรรจุอยูใ่ นเฮดเดอร์ไฟล์ stdio.h ดังนน้ั จึง จาเป็นตอ้ งนาเฮดเดอร์ไฟล์ stdio.h เข้าร่วมในการแปลผลดว้ ย 5.2 ชนิดของข้อมูล ข้อมูลแบ่งเปน็ 2 ชนดิ 1. ชนิดของข้อมูลแบ่งตามแหล่งทีม่ าของขอ้ มลู 2. ชนิดของข้อมลู แบ่งตามรปู แบบการแทนข้อมลู ผลการคน้ หารูปภาพสาหรับ ข้อใดเป็นข้อมลู ปฐมภมู หิ รือทุตยิ ภมู ิ 1. ชนิดของข้อมูลแบง่ ตามแหล่งที่มาของข้อมลู ข้อมลู ทแี่ บ่งตามแหลง่ ที่มา มี 2 ชนิด คอื 1.1 ข้อมลู ปฐมภูมิ (Primay data) ข้อมลู ปฐมภมู ิ คอื ขอ้ มลู ที่เก็บรวบรวมมาจากแหลง่ ข้อมูลชน้ั ตน้ ท่ีไดม้ าจากแหล่งขอ้ มลู โดยตรง เช่น ข้อมูลนักเรยี นท่ีไดม้ าจากการตอบแบบสอบถาม การสารวจ การสมั ภาษณ์ การวดั การสังเกต การทดลอง ข้อมูล
49 สินคา้ ท่ีได้จากการใชเ้ คร่ืองอา่ นบาร์โค้ด ขอ้ มลู บัตรเอทีเอ็มท่ีได้จากเครื่องอ่านแถบแมเ่ หลก็ ข้อมูลท่ไี ดจ้ ะมี ความถูกต้อง ทนั สมยั และเป็นปัจจบุ นั มากกว่าขอ้ มูลทุติยภูมิ 1.2 ข้อมลู ทุตยิ ภูมิ (secondary data) ข้อมูลทตุ ิยภมู ิ คือ ขอ้ มลู ที่ได้จากแหล่งทร่ี วบรวมข้อมูลไวแ้ ลว้ โดยมีผหู้ นงึ่ ผู้ใด หรอื หน่วยงานได้ทาการ เก็บรวบรวมหรือเรียบเรียงไว้ ซ่งึ ขอ้ มูลเหล่าน้ันสามารถนามาใชอ้ ้างไดเ้ ลย เช่น ขอ้ มลู สามะโนประชากร สามารถ อา้ งองิ ไดจ้ ากสานกั งานสถิตแิ ห่งชาติ ขอ้ มูลปรมิ าณนา้ ฝนจากกรมชลประทาน ข้อมูลทางสถติ ติ า่ ง ๆ ท่มี ีการบันทึก ไวแ้ ล้ว ข้อมลู จากรายงานการวิจัยและบันทึกการนเิ ทศ การที่จะตัดสนิ ใจวา่ ข้อมลู ไหนเป็นขอ้ มลู ปฐมภูมิหรือข้อมลู ทตุ ยิ ภมู นิ ้นั มหี ลกั สงั เกต คอื ถ้าเป็นขอ้ มูลปบมภูมิ จะตอ้ งเป็นข้อมลู ท่ีผ้เู ขียนหรือผู้ประเมนิ ผลไดพ้ บเหตุการณ์ตา่ ง ๆ ลงมือสารวจศึกษาค้นคว้า หรือเปน็ การแสดง ความคดิ เห็นเรม่ิ แรกดว้ ยตนเอง มไิ ด้คดั ลอกจากผู้อ่ืน แต่ถา้ เป็นข้อมลู ท่ีไดค้ ดั ลอกมาจากบคุ คลอน่ื แลว้ นามา เรียบเรยี งใหม่ ถือว่าเป็นข้อมูลทุติยภมู ิ 2. ชนดิ ของข้อมูลแบ่งตามรปู แบบการแทนข้อมลู ข้อมูลมีรูปแบบท่ีแตกตา่ งกัน ตามลักษณะและแหลง่ กาเนิดของข้อมูลเพื่อให้สามารถใชค้ อมพิวเตอรเ์ ปน็ เครอ่ื งมอื ในการประมวลผลข้อมลู จาเป็นตอ้ งมีการแทนขอ้ มูลเหล่าน้ันให้อยใู่ นรปู แบบใดรูปแบบหนึง่ ขอ้ มลู ที่แบ่งตามรูปแบบการแทนขอ้ มลู มี 2 ชนิด คือรปู ภาพท่ีเก่ยี วข้อง 2.1 ขอ้ มลู ชนดิ จานวน (numeric data) หมายถึง ข้อมูลที่สามารถนาไปคานวณได้ ขอ้ มูลชนิดน้ีมี 2 รูปแบบ คือ - จานวนเต็ม หมายถึง ตวั เลขที่ไม่มีจุดทศนยิ ม เช่น 12, 9, 137, -46 - ทศนิยม หมายถึง ตัวเลขท่ีมจี ดุ ทศนยิ ม ซง่ึ อาจมีค่าเป็นจานวนเต็ม เช่น 12.0 หรอื เปน็ จานวนท่ีมีทศนิยม ก็ได้ เช่น 12.765 ทศนิยมนสี้ ามารถเขียนได้ 2 รปู แบบ คอื - แบบทใี่ ช้กันท่วั ไป เชน่ 9.0, 17.65, 119.3257, -17.05 - แบบที่ใชใ้ นงานทางวิทยาศาสตร์ เชน่ 123.0 x 10(ยกกาลงั 4) ซ่ึงหมายถงึ 1230000.0
50 ตวั อย่างขอ้ มลู ชนดิ จานวน เชน่ อายุของนักเรยี น น้าหนกั ส่วนสงู และคะแนนเฉลย่ี 2.2 ข้อมลู ชนิดอกั ขระ (character data) หมายถงึ ขอ้ มูลที่ไม่สามารถนาไปคานวณไดแ้ ต่อาจนาไป เรียงลาดบั ได้ ข้อมลู อาจเป็นตัวหนงั สอื ตวั เลข หรือเครื่องหมายใด ๆ เช่น COMPUTER, ON-LINE, 171101, &76 ตวั อยา่ งขอ้ มูลชนิดอักขระ เชน่ ชอ่ื ที่อยู่ และหมายเลขโทรศัพท์ 5.3 ตวั แปร ความหมายของตวั แปร \"ตวั แปร\" หมายถงึ สง่ิ ท่ีไดจ้ ากการส่ังเกต วัด สอบถาม จากหนว่ ยท่ีศกึ ษาท่ีมีค่าไดห้ ลากหลายค่าและ เปล่ยี นแปลงได้ ซ่งึ อาจเปน็ สิ่งท่ีมีชวี ิตหรือไม่มีชีวิตกไ็ ด้ เชน่ อายุ เพศ ระดับการศึกษา ตาแหนง่ คะแนนสอบ ปริมาณน้าในเขอื่ น ความเร็วของเครอ่ื งคอมพิวเตอร์ จานวนหน้าหนังสอื เปน็ ตน้ เมื่อหนว่ ยศกึ ษาแตกต่างกัน ข้อมลู ที่ได้จงึ แตกต่างกัน เช่น ตวั แปร คือ อายุ ข้อมลู ทีไ่ ด้จากหน่วยท่ศี ึกษาอาจเป็นระดบั ช้ันมธั ยมศึกษา ปรญิ ญา ตรี ปริญญาโท เป็นตน้ หากหนว่ ยที่ศึกษาใดกต็ ามให้ข้อมูลเหมอื นกนั หมดหรอื อย่างเดยี วจะไม่เรยี กวา่ หนว่ ยศกึ ษา นนั้ วา่ ตวั แปร เชน่ ความเร็วของเครื่องคอมพิวเตอร์ในห้องเรยี นเทา่ กันท้งั หมด ความเร็วของเครื่องคอมพวิ เตอรไ์ ม่ จเั ปน็ ตวั แปร เปน็ ต้น สาหรับตวั แปรทางด้านสงั คมและพฤติกรรมศาสตร์ สว่ นใหญ่เกย่ี วคุณลกั ษณะและพฤตกิ รรมของมนุษย์ เช่น ความคิดเหน็ ความพงึ พอใจ เป็นตน้ ประเภทของตัวแปรแบ่งเป็น 2 ประเภทได้แก่ 1. ตวั แปรเชิงปรมิ าณ คือ ตัวแปรทป่ี ระกอบดว้ ยข้อมูลทเ่ี ป็นตวั เลข ใช้แทนขนาดหรอื ปริมาณ เชน่ อายุ ประกอบคด้วยอายุต่าง ๆ หน่วยเป็นปี เป็นตน้ คือตวั แปรเชงิ คุณภาพ 2. ตวั แปรเชงิ กลุ่ม คือ ตวั แปรทป่ี ระกอบด้วยข้อมูลที่ไมส่ ามารถวดั ออกมาเปน็ ตวั เลขได้ เชน่ เพศ ประกอบด้วยเพศต่าง ๆ ไม่มีหน่วยวดั แตส่ ามารถแทนค่าเป็นตัวเลข ท่ไี ม่สามารถคานวณได้ แทนได้ เชน่ เพศชาย ให้แทนเปน็ ตัวเลข 1 เพศหญิง ให้แทนเปน็ ตัวเลข 2 เป็นต้น ลักษณะของตัวแปร
Search