วันอังคารที่ 8 กุมภาพันธ์ พ.ศ. 2554

บทที่ 6 การเขียนผังงาน

ตามที่ได้กล่าวมาแล้วว่าก่อนที่จะลงมือเขียนโปรมแกรมจะต้องมีการวางแผนขั้นตอนการทำงานมาก่อนผังงาน(Flowchart) เป็นอีกวิธีหนึ่งที่สามารถนำมาช่วยในพัฒนาโปรแกรมคอมพิวเตอร์ได้ โดยจะเป็นการเขียนอธิบายขั้นตอนวิธีการทำงานในลักษณะของรูปภาพ ทำให้สามารถนำผังงานมาช่วยในลำดับขั้นตอนการแก้ปัญหาได้อย่างชัดเจน 
6.1 ความหมายของผังงาน 
                ผังงานหรือเรียกกันว่าโฟลวชาร์ตเป็นแผนภาพที่ใช้ออกแบบและอธิบายการทำงานของโปรแกรมโดยอาศัยรูปทรงต่างๆ รวมทิศทางการไหลของข้อมูลตั้งแต่เริ่มต้นจนได้ผลลัพธ์ตามที่ต้องการระบบงานทุกชนิดที่ผ่านการวิเคราะห์เป็นลำดับขั้นตอนแล้วจะสามารถเขียนเป็นผังงานได้ 
ประโยชน์ของผังงาน 
1.    ทำให้เข้าใจขั้นตอนและลำดับในการทำงานของโปรแกรมอย่างรวดเร็ว 
2.    เป็นสื่อกลางระหว่างผู้พัฒนาโปรแกรม ให้สามารถเข้าใจโปรแกรมได้ง่าย 
3.    ทำให้สามารถวิเคราะห์ความถูกต้องของโปรแกรมก่อนเขียนโปรแกรมจริงได้ง่ายและตรวจสอบข้อผิดพลาดไดง่าย 
4.    ทำให้ผู้อื่นสามารถศึกษาการทำงานของโปรแกรมและแก้ไขโปรแกรมได้ง่าย 
การเขียนผังงานที่ดี 
1.     เขียนตามสัญลักษณ์ที่กำหนด 
2.     ใช้ลูกศรแสดงทิศทางการทำงานจากบนลงล่าง 
3.     อธิบายสั้น ๆ ให้เข้าใจง่าย 
4.     ทุกแผนภาพต้องมีทิศทางเข้าออก 
5.     ไม่ควรโยงลูกศรไปที่ไกลมาก ๆ ถ้าต้องทำให้ใช้สัญลักษณ์การเชื่อมต่อแทน 
6.2 ประเภทของผังงาน 
                การเขียนผังงานในทางคอมพิวเตอร์สามารถแบ่งออกเป็นสองประเภทใหญ่ ๆ คือ 
1.ผังงานระบบ 
ใช้แสดงขั้นตอนการทำงานภายในระบบงานหนึ่ง ๆ โดยกล่าวถึงข้อมูลต่าง ๆ ที่เกี่ยวข้องทั้งหมด เช่น เอกสารเบื้องต้นคืออะไร วัสดุที่ใช้คืออะไร ใช้หน่วยความจำประเภทใด จะต้องส่งผ่านไปยังหน่วยงานใด
2. ผังงานโปรแกรม 
                ผังงานประเภทนี้จะแสดงถึงขั้นตอนของที่ใช้ในการทำงานของโปรแกรม โดยเริ่มตั้งแต่การรับข้อมูล การประมวลผล การแสดงข้อมูลที่เป็นผลลัพธ์ในการทำงาน บางครั้งจะเรียกว่าผังการเขียนโปรแกรม 
6.3 สัญลักษณ์ที่ใช้ในการเขียนผังงาน 
                การเขียนผังงานจะต้องใช้สัญลักษณ์ภาพต่าง ๆ นำมาเรียงต่อกันเพื่อแสดงลำดับการทำงาน สัญลักษณ์มาตรฐานนี้เรียกว่า สัญลักษณ์ ANSI
จุดเริ่มต้นและสิ้นสุดโปรแกรม 
                การกำหนดจุดเริ่มต้นของโปรแกรมจะเขียนคำอธิบายคำว่า Start หรือคำว่า Begin เข้าไปในสัญลักษณ์เริ่มต้น ของผังงานจากนั้นจะใช้ลูกศรชี้ออกไปยังจุดที่ต้องการประมวลผลต่อไป ถ้าหากเป็นจุดสิ้นสุดโปรแกรมจะเขียนว่า Stop หรือ End เข้าไปในสัญลักษณ์โดยมีลูกศรชี้เข้า และจะไม่มีลูกศรชี้ออก ในผังงานแต่ละผังงานจะมีจุดเริ่มต้นและสิ้นสุดเพียงอย่างละหนึ่งแห่งเท่านั้น
การประมวลผล 
                สัญลักษณ์รูปสี่เหลี่ยมผืนผ้าจะใช้สำหรับการประมวลผล  การกำหนดค่า และการคำนวณ โดยจะเขียนวิธีการประมวลผลเข้าไปในสัญลักษณ์ และใช้เครื่องหมายลูกศรหรือเท่ากับในการส่งค่าไปประมวลผลขั้นต่อไป 
การรับข้อมูลเข้าและแสดงข้อมูลออก  
                การรับข้อมูลเข้าและแสดงข้อมูลออกโดยไม่ระบุประเภทของอุปกรณ์ที่รับและส่งข้อมูล จะใช้สัญลักษณ์รูปสี่เหลี่ยมด้านขนาน โดยจะมีทิศทางข้อมูลเข้าออกได้อย่างละหนึ่งทิศทาง และเขียนคำอธิบายกำกับไว้ภายใน 
การแสดงข้อมูลออกทางเครื่องพิมพ์ 
                การแสดงข้อมูลออกทางเครื่องพิมพ์จะใช้สัญลักษณ์ Document ในการแสดงผลโดยข้อมูลที่แสดงผลจะเขียนอยู่ในสัญลักษณ์นี้จะแสดงข้อมูล Data ออกทางเครื่องพิมพ์ สัญลักษณ์นี้จะมีลูกศรเข้าออกได้อย่างละหนึ่งทิศทาง 
การตัดสินใจ 
                การตัดสินใจหรือการเลือกทำอย่างใดอย่างหนึ่งจะใช้สัญลักษณ์สี่เหลี่ยมขนมเปียกปูน ในการตรวจสอบเงื่อนไขเพื่อตัดสินใจการทำงาน โดยเงื่อนไขที่จะตรวจสอบจะเขียนอยู่ในสัญลักษณ์นี้ ในส่วนของลำดับการทำงานจะมีลูกศรชี้เข้า 1 ทาง และลูกศรชี้ออก 2 ทาง โดยถ้าเงื่อนไขเป็นจริง (Y) จะทำโปรแกรมทิศทางหนึ่ง ถ้าเป็นเท็จ (N) จะทำอีกทิศทางหนึ่ง ในการเขียนลูกศรจะเขียนคำอธิบายไว้ที่ลูกศรด้วย เป็นการตรวจสอบว่าตัวแปร age มากกว่าหรือเท่ากับ 50 จริงหรือไม่ ถ้าตัวแปร age มากกว่าหรือเท่ากับ 50 จะทำทิศทาง Y ถ้า age น้อยกว่า 50 จะทำทิศทาง N
การต่อกับอุปกรณ์เก็บข้อมูลแบบดิสก์
                ถ้าหากต้องการอ่านหรือเขียนข้อมูลกับอุปกรณ์เก็บข้อมูลแบบดรัมแม่เหล็ก หรืออุปกรณ์ที่เข้าถึงแบบโดยตรง จะใช้สัญลักษณ์ Magnetic drum เพื่อแสดงการรับหรือส่งข้อมูล สัญลักษณ์นี้จะมีลูกศรได้ทั้งแบบชี้เข้าและชี้ออก 
จุดต่อ 
                ผังงานที่มีความยาวนานมากหรือมีเส้นตัดกันมากนั้น เราสามารถลดความยุ่งยากในการเขียนได้โดยการนำจุดต่อมาใช้ ซึ่งจะทำให้เราเข้าใจผังงานได้ง่ายขึ้น ถ้าหากผังงานเขียนอยู่ภายในหน้าเดียวกัน สัญลักษณ์ที่ใช้แสดงจุดต่อจะใช้สัญลักษณ์วงกลม และเขียนหมายเลขจุดต่อที่เป็นจุดต่อถึงกันเอาไว้ภายใน 
จุดต่อระหว่างหน้า 
                ถ้าหากมีการสร้างจุดต่อเนื่องที่อยู่คนละหน้า หรือต้องการสร้างจุดต่อที่อยู่ระหว่างหน้า จะใช้สัญลักษณ์ Off-Page Connector ซึ่งเป็นรูปห้าเหลี่ยมแสดงจุดต่อสำหรับเชื่อมการทำงานถึงกัน โดยภายในสัญลักษณ์จะเขียนหมายเลขจุดที่ต้องการเชื่อมต่อเอาไว้ด้วย และใช้ลูกศรแสดงทิศทางการทำงานของโปรแกรม 
6.4 หลักเกณฑ์การเขียนผังงาน 
                การเขียนผังงานที่ดีสามารถสรุปเป็นหลักเกณฑ์ได้ดังต่อไปนี้ 
1.     ผังงานที่เขียนขึ้นต้องชัดเจน และดูง่าย 
2.     ต้องมีจุดเริ่มต้นและจุดสิ้นสุดเพียงจุดเดียว 
3.     กำหนดทิศทางการทำงานด้วยลูกศร 
4.     สัญลักษณ์แบบเลือกทำจะต้องมีคำตอบที่ถูกต้องที่ทำให้โปรแกรมสามารถดำเนินต่อไปได้ 
5.     ลูกศรที่ใช้บอกทิศทางการทำงานไม่ควรเขียนตัดกันหรือทับกัน 
6.     ผังงานที่มีความซับซ้อนมาก หรือมีขั้นตอนการทำงานอยู่ห่างกันมาก ควรนำสัญลักษณ์การเชื่อมต่อมาใช้ เพื่อเข้าใจง่าย 
7.     การเขียนส่วนประมวลผลที่มีการคำนวณควรใช้เครื่องหมายลูกศรหรือเครื่องหมายเท่ากับในการเขียน 
8.     เมื่อเขียนผังงานจบแล้วควรตรวจสอบความถูกต้องของผังงาน โดยการสร้างข้อมูลขึ้นมาหนึ่งชุดแล้วดูว่าผลลัพธ์เป็นไปตามที่ต้องการหรือไม่ 
6.5 ลักษณะโครงสร้างการเขียนผังงาน
                โครงสร้างโดยทั่วไปจะมีอยู่ 5 รูปแบบดังนี้ 
1.       โครงสร้างการทำงานแบบลำดับ 
จะแสดงขั้นตอนการทำงานที่เรียงลำดับกันไป ไม่มีการข้ามขั้น หรือย้อนกลับไปทำคำสั่งที่ได้ทำไปแล้ว 
2.       ผังโปรแกรมแบบมีทางเลือก 
เป็นโครงสร้างที่ตรวจสอบเงื่อนไข ให้โปรแกรมเลือกทำอย่างใดอย่างหนึ่ง ซึ่งมีอยู่ 3 กรณีดังนี้ 
2.1            การเลือกแบบหนึ่งเส้นทาง จะทำงานเฉพาะเมื่อเงื่อนไขเป็นจริงเท่านั้น 
2.2            การเลือกทำแบบสองเส้นทาง  จะพิจารณาเงื่อนไขที่เป็นจริงและเป็นเท็จ โดยถ้าเป็นจริงจะทำอย่างหนึ่ง  ถ้าเป็นเท็จจะทำอีกอย่างหนึ่ง 
2.3            การเลือกทำแบบหลายเส้นทาง จะพิจารณาเงื่อนไขต่าง ๆ ที่เกิดขึ้น ถ้าเท่ากับทางเลือกใดก็จะได้ไปทำงานตามทางเลือกนั้น 
3.       ผังโปรแกรมทำซ้ำแบบเงื่อนไขเป็นจริง 
จะใช้ในงานที่มีการตรวจสอบเงื่อนไข ถ้าเป็นจริงจะทำซ้ำ โดยจะตรวจสอบเงื่อนไขก่อนการทำงานทุกครั้ง
4.       ผังโปรแกรมแบบทำซ้ำจนเงื่อนไขเป็นจริง 
จะใช้ในระบบที่ต้องทำงานก่อนการตรวจสอบเงื่อนไข และทำงานซ้ำจนเงื่อนไขเป็นจริง 
5.       ผังโปรแกรมแบบทำซ้ำตามจำนวนที่ระบุ 
ใช้ในระบบที่ต้องการทำงานตามจำนวนรอบที่กำหนด โดยเริ่มจากรอบเริ่มต้นไปยังรอบสุดท้าย ตามปกติแล้วค่าการนับรอบจะเพิ่มขึ้นครั้งละหนึ่งค่า 
6.6 เครื่องมือสำหรับเขียนผังงาน 
                อุปกรณ์ที่ใช้ในการเขียนผังงานมีอยู่มากมาย สำหรับอุปกรณ์ที่เป็นเครื่องเขียน ได้แก่ ไม้บรรทัด แบบเทมเพลทพลาสติก ซึ่งจะมีสัญลักษณ์ของผังงานรูปแบบต่าง ๆ ให้เลือกใช้ ผู้ที่ต้องการเขียนผังงาน สามารถใช้ปากกาเขียนไปตามรูปแบบที่กำหนดได้ทันที 
สรุปท้ายบท 
                โดยสรุปแล้ว การเขียนผังงานเป็นวิธีการหนึ่งที่ช่วยในการจัดลำดับและอธิบายขั้นตอนการทำงานในรูปแบบของแผนภาพซึ่งประกอบด้วยสัญลักษณ์ของการทำงานแต่ละขั้นตอน การเขียนผังงานนี้จะทำให้เห็นทิศทางการประมวลผลของโปรแกรม และทำให้ง่ายต่อการทำความเข้าใจโปรแกรมในภายหลัง โดยทั่วไปผังงานจะแบ่งเป็น 2 ประเภทคือ ผังงานระบบ และผังงานโปรแกรม โครงสร้างในการเขียนผังงานนั้นมีอยู่ 5 รูปแบบ ได้แก่  โครงสร้างการทำงานแบบลำดับ  ผังโปรแกรมแบบมีทางเลือก  ผังโปรแกรมทำซ้ำแบบเงื่อนไขเป็นจริง  ผังโปรแกรมแบบทำซ้ำจนเงื่อนไขเป็นจริง  และผังโปรแกรมแบบทำซ้ำตามจำนวนที่ระบุ



บทที่ 1 - 5

บทที่ 7 การเขียนรหัสเทียม

7.1 ซูโดโค้ดคืออะไร 
                ซูโดโค้ดเป็นคำอธิบายขั้นตอนการทำงานของโปรแกรม โดยใช้ถ้อยคำผสมระหว่างภาษาอังกฤษและภาษาการเขียนโปรแกรมแบบโครงสร้างที่เข้าใจง่าย มาแสดงลำดับการทำงานของโปรแกรม หรืออาจใช้ภาษาไทยก็ได้ โดยช่วยให้ผู้เขียนโปรแกรมสามารถพัฒนาขั้นตอนต่าง ๆ ให้เป็นโปรแกรมได้ง่ายขึ้น
7.2 พื้นฐานการเขียนซูโดโค้ด 
                แม้ว่าการเขียนซูโดโค้ดจะไม่มีรูปแบบที่แน่นอนแต่โดยทั่วไปแล้วมักทำกันดังลักษณะต่อไปนี้ 
การรับข้อมูลเข้าและการแสดงผลข้อมูล 
                ในการรับข้อมูลจะนิยมใช้คำว่า READ หรือ INPUT ตามด้วยตัวแปรที่ต้องการใช้เก็บข้อมูลถ้าหากมีตัวแปรหลายตัวจะใช้เครื่องหมายคอมมา (“,”) คั่น ส่วนการแสดงผลมักใช้คำว่า PRINT หรือ WRITE สำหรับการรับข้อมูล
การคำนวณ 
                ในการประมวลผลแบบคำนวณจะขึ้นต้นด้วยคำว่า Compute หรือ Calculate แล้วตามด้วยตัวแปรที่ต้องการเก็บค่าจากการคำนวณเครื่องหมายเท่ากับและนิพจน์การคำนวณซึ่งประกอบไปด้วยเครื่องหมายการกระทำทางคณิตศาสตร์ 
การกำหนดค่า
                การกำหนดค่าเริ่มต้นให้กับตัวแปรจะใช้คำว่า INIT และ SET ถ้าหากเป็นการประกาศตัวแปรจะต้องระบุด้วยคำว่าตัวแปรประเภทใด และถ้าเป็นการประกาศค่าคงที่จะใช้เครื่องหมายเท่ากับในการกำหนดค่า 
7.3 การเขียนซูโดโค้ดสำหรับการตัดสินใจและทดสอบทางเลือก 
                ในการตัดสินใจจะต้องมีการเปรียบเทียบเงื่อนไขเกิดขึ้น โดยผลลัพธ์ที่จะเป็นจริงหรือเท็จอย่างใดอย่างหนึ่งเท่านั้น 
                การตัดสินใจเพื่อเลือกทำระหว่างทางสองทางจะใช้คำว่า IF หรือ IF-THEN-ELSE และENDIF โดยจะเปรียบเทียบเงื่อนไข ถ้าเงื่อนไขเป็นจริงจะทำกลุ่มคำสั่ง กลุ่มหนึ่ง ถ้าเป็นเท็จจะทำกลุ่มคำสั่งอีกกลุ่มหนึ่ง 
7.4 การเขียนซูโดโค้ดแบบวนซ้ำ 
                ในการทำซ้ำหมายความว่าให้ระบบทำงานซ้ำ ๆ ตามเงื่อนไขที่กำหนดโดยจะมีการเปรียบเทียบเงื่อนไขในการทำซ้ำ แบ่งออกได้ 3 รูปแบบดังนี้ 
1.     การทำซ้ำที่ทราบจำนวนครั้งในการทำซ้ำ 
2.     การทำซ้ำจนระบบมีเงื่อนไขอย่างหนึ่งจึงหยุดทำ 
3.     ถ้าเงื่อนไขเป็นจริงจะทำคำสั่งภายใน

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

บทที่ 8 การทำงานแบบลำดับ

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

บทที่ 9 การทำงานแบบมีทางเลือก

การทำงานแบบลำดับในบทที่ 8 นั้น ถือเป็นวิธีการทำงานที่ต้องมีในทุโปรแกรม เมื่อนำมาพัฒนาเป็นโปรแกรมก็จะเสมือนว่าเป็นการนำคำสั่งต่าง ๆ ของภาษาโปรแกรมที่ต้องการเขียนมาต่อเรียงกันไปทำให้คอมพิวเตอร์ทำคำสั่งแต่ละคำสั่งต่อเนื่องกันไป สำหรับโปรแกรมที่มีการทำงานที่ซับซ้อนขึ้นจะต้องมีการเปลี่ยนทิศทางการทำงานของโปรแกรมบ้าง เพื่อให้คอมพิวเตอร์สามารถเลือกได้ว่าคำสั่ง หรือชุดคำสั่งใด ๆ คอมพิวเตอร์จะต้องทำหรือไม่หรือต้องทำในเวลาใด 
9.1 ประเภทของการทำงานแบบมีทางเลือก 
                การทำงานแบบเลือกทำนั้นสามารถแบ่งทิศทางการทำงานของโปรแกรมได้ดังนี้ 
1.       การทำงานแบบมีทางเลือกทางเดียว 
2.       การทำงานแบบสองทางเลือก 
สำหรับการทำงานแบบมีทางเลือกเดียวและแบบสองทางเลือก จะต้องมีการตรวจสอบเงื่อนไขเพื่อเป็นตัวพิจารณาว่าจะทำโปรแกรมในทิศทางใดต่อไป การตรวจสอบเงื่อนไขนั้น ผลลัพธ์ที่ได้จะเป็นค่าทางบูลีน คือมีค่าเป็นไปได้ 2 กรณี คือเป็นจริง หรือเป็นเท็จ 
กรณีการเลือกทำแบบมีทางเลือกเดียว ถ้าเงื่อนไขเป็นจริง โปรแกรมจะทำชุดคำสั่งที่กำหนด แต่ถ้าหากเงื่อนไขเป็นเท็จโปรแกรมจะไม่ทำชุดคำสั่ง ส่วนการเลือกทำแบบสองทางเลือก ถ้าหากเงื่อนไขเป็นจริง โปรแกรมจะทำชุดคำสั่งที่ 1 แต่ถ้าหากเงื่อนไขเป็นเท็จโปรแกรมจะทำชุดคำสั่งที่ 2 
        ในส่วนของการตรวจสอบเงื่อนไขนั้น จะเป็นการเขียนนิพจน์ที่จะแสดงความสัมพันธ์ระหว่างตัวแปรกับตัวแปร หรือระหว่างตัวแปรกับค่าคงที่ โดยจะนำตัวดำเนินการมาใช้ซึ่งส่วนใหญ่แล้วจะเป็นตัวดำเนินการเปรียบเทียบและตัวดำเนินการทางลอจิกดังที่ได้ศึกษามาแล้วในบทที่ 3
9.2 การเขียนคำอธิบายโปรแกรมจากผังงานแบบมีทางเลือก 
                ถ้าหากมีผังงานที่มีการเลือกทำ ไม่ว่าจะเป็นแบบทางเดียวหรือแบบสองทางแล้วต้องการเขียนคำอธิบายการทำงาน สิ่งแรกที่ต้องกระทำคือ พยายามแยกกระบวนการทำงานทั้งหมดออกจากผังงานเป็นส่วน ๆ ก่อน จากนั้นให้พิจารณาทิศทางการทำงานของโปรแกรมทีละขั้นตอน แล้วจึงเขียนคำอธิบายการทำงานออกมา  โดยคำอธิบายการทำงานควรมีหมายเลขบรรทัดด้วย และหมายเลขนี้ควรมีหมายเลขตามลำดับของสัญลักษณ์ของผังงาน               
9.3 การเขียนซูโดโค้ดสำหรับงานแบบมีทางเลือก 
                จากที่ได้ศึกษาการเขียนซูโดโค้ดมาแล้วในบทที่ 7 จะพบว่าซูโดโค้ดที่นำมาใช้การเขียนโปรแกรมแบบเลือกทำจะใช้ คำว่า IF หรือ IF-THEN-ELSE และ ENDIF ถ้าหากต้องการนำมาเขียนแทนคำอธิบายการทำงานของโปรแกรมจำใช้คำว่า “IF”แทนคำอธิบายว่า ถ้า ใช้คำว่า “THEN” แทนคำอธิบายว่า แล้วและใช้คำว่า “ELSE” แทนคำอธิบายว่า มิฉะนั้น และจบประโยคการเลือกทำด้วย ENDIF
9.4 การเขียนผังงานจากซูโดโค้ดแบบมีทางเลือก 
                ผังงานนอกจากจะเขียนขึ้นมาจากการวิเคราะห์ปัญหาแล้ว ยังเขียนขึ้นมาจากซูโดโค้ดได้เช่นกัน สำหรับกรณีที่โปรแกรมเป็นแบบมีทางเลือก ให้พยายามแยกประโยค IF ออกมาเป็นกลุ่ม ๆ แล้วพิจารณาว่าถ้าเงื่อนไขเป็นจริงจะทำทิศทางใด เงื่อนไขเป็นเท็จจะทำทิศทางใด 
9.5 การทำงานแบบมีทางเลือกหลายทาง 
                สำหรับการทำงานที่มีทางเลือกหลายทางนั้นสามารถเขียนประโยค IF..THEN..ELSE มาซ้อนกันได้ แต่ถ้าหากมีทางเลือกมากขึ้นจะทำให้การเขียนแบบ IF ดูแล้วซับซ้อนและไม่ค่อยสะดวก ดังนั้นจึงมีการนำคำว่า “CASE”, “OF” และ “ENDCASE” มาใช้
                เมื่อการทำงานของระบบเข้าสู่เงื่อนไขการเลือกทำ ระบบจะตรวจสอบว่าค่าคงที่ที่ได้จากการตรวจสอบเงื่อนไข ถ้าหากทราบว่ามีค่าเท่ากับค่าคงที่หรือ CASE ใด ก็จะกระโดดไปทำกิจกรรมที่อยู่ใน CASE นั้น แต่ถ้าหากไม่เท่ากับ CASE ใดเลยก็
จะตรวจสอบ CASE ใหม่ หรือก็ไม่ทำกิจกรรมใดเลย 

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

บทที่ 10 การทำงานแบบมีทำซ้ำ

10.1 ประเภทของการทำซ้ำ 
                การทำงานแบบวนซ้ำนั้น จะต้องมีการตรวจสอบเงื่อนไขอยู่ภายในลูปของกาทำซ้ำด้วย งานบางประเภทมีจำนวนครั้งในการทำซ้ำที่แน่นอน งานบางประเภทมีจำนวนครั้งในการทำซ้ำที่ไม่แน่นอน  ขึ้นอยู่กับเงื่อนไขที่เขียนในโปรแกรม ประเภทของการทำซ้ำแบ่งได้ 3 ประเภท ดังนี้ 
1.     การทำซ้ำแบบที่ทราบจำนวนครั้งในการทำซ้ำ 
2.     การทำซ้ำจนมีระบบเงื่อนไขอย่างหนึ่งจึงหยุด 
3.     การทำซ้ำแบบถ้าเงื่อนไขเป็นจริงจะทำชุดคำสั่ง 
การทำแบบแรกนั้น มักจะใช้กับงานที่ทราบจำนวนครั้งในการทำซ้ำที่แน่นอนโดยมีลูปจะมีตัวแปรสำหรับควบคุมการนับลูปอยู่ภายใน ส่วนการทำซ้ำแบบทำซ้ำจนระบบมีเงื่อนไขอย่างหนึ่งจึงหยุดเมื่อโปรแกรมเข้าสู่ลูปการทำซ้ำจะมีการตรวจสอบเงื่อนไขที่ด้านท้ายของลูป ถ้าหากเงื่อนไขเป็นจริงก็จะออจากลูปการทำซ้ำ ส่วนการทำซ้ำแบบถ้าเงื่อนไขเป็นจริงจะทำชุดคำสั่งจะมีการตรวจสอบเงื่อนไขก่อน การทำซ้ำถ้าเงื่อนไขเป็นจริงจะทำชุดคำสั่งภายในแต่ถ้าเงื่อนไขเป็นเท็จจะออกจากลูปการทำซ้ำ
10.2 การทำซ้ำแบบทราบจำนวนครั้งในการทำซ้ำ 
                การทำซ้ำในแบบนี้จะเริ่มต้นด้วยการกำหนดค่าเริ่มต้นให้กับตัวแปรที่ทำหน้าที่เป็นตัวควบคุมลูปจากนั้นจะตรวจสอบเงื่อนไขทว่าเป็นจริงหรือเท็จ ถ้าเป็นจริงจะทำกิจกรรมต่าง ๆ ที่อยู่ในลูป แต่ถ้าเป็นเท็จจะออกนอกลูป โดยภายในลูปนั้นจะมีการเพิ่มค่าหรือลดค่าตัวควบคุมลูปด้วย 
10.3 การทำซ้ำจนระบบมีเงื่อนไขอย่างหนึ่งจึงหยุด 
                การทำซ้ำในลักษณะนี้เป็นการทำซ้ำที่มีจำนวนครั้งในการทำที่ไม่แน่นอน เมื่อโปรแกรมเข้าสู่ลูปการทำซ้ำจะมีการตรวจสอบเงื่อนไขอยู่ด้านท้ายของลูปถ้าหากตรวจสอบเงื่อนไขแล้วเป็นเท็จโปรแกรมจะกลับไปทำกิจกรรมในลูปอีกครั้ง แต่ถ้าตรวจสอบเงื่อนไขแล้วเป็นจริงโปรแกรมจะออกนอกลูป ดังนั้นโปรแกรมจะต้องทำกิจกรรมต่าง ๆ ภายลูปหนึ่งครั้งเสมอ 
10.4 การทำซ้ำแบบถ้าเงื่อนไขเป็นจริงจะทำชุดคำสั่ง 
                การทำซ้ำแบบนี้จะมีการตรวจสอบเงื่อนไขก่อนเข้าสู่ลูปถ้าหากเงื่อนไขเป็นจริงจะทำในลูป แต่ถ้าหากเงื่อนไขเป็นเท็จจะออกจากการทำลูป ดังนั้นลูปแบบนี้อาจไม่มีการทำภายลูปเลยก็ได้  ถ้าหากเงื่อนไขเป็นเท็จสำหรับคำอธิบายการทำงานโดยระหว่างคำว่าขณะที่กับคำจะเป็นนิพจน์ที่ตรวจสอบเงื่อนไข สำหรับการเขียนซูโดโค้ด สำหรับการทำซ้ำแบบนี้ 
สรุปท้ายบท 
                โดยสรุปแล้ว การทำงานแบบทำซ้ำเป็นลักษณะการทำงานแบบหนึ่งที่จำเป็นในการเขียนโปรแกรม ถ้าหากต้องการให้โปรแกรมทำงานชุดคำสั่งใดหลาย ๆ ครั้ง โดยทั่วไปจะพบการทำซ้ำใน 3 ลักษณะ ได้แก่ การทำซ้ำแบบที่ทราบจำนวนครั้งในการทำซ้ำ การทำซ้ำจนระบบมีเงื่อนไขอย่าง

แบบทดสอบ

1. ข้อใดคือความหมายของเซต
ก. การกำหนดค่าเริ่มต้นให้กับสิ่งที่ต้องการ
ข. การแสดงถึงสิ่งต่าง ๆ ที่ต้องการศึกษา
ค. ข้อมูลเลขจำนวนเต็ม
ง. ถูกทุกข้อ


2. ถ้าหากมีเซตต่อไปนี้ A = { 1, 2, 3, 4 } B = { 1, {2, 3}, 4 } ข้อใดถูกต้อง
ก. เซต A เท่ากับเซต B
ข. ทั้งสองเซตมีสมาชิก 4 ตัว
ค. 4 เป็นสมาชิกของเซต A และเซต B
ง. ถูกทุกข้อ


3. ต่อไปนี้ข้อใดคือประพจน์
ก. เชียงใหม่คือจังหวัดในภาคใต้ของประเทศไทย
ข. คุณทานข้าวหรือยัง
ค. ไม่ควรโทรศัพท์ขณะขับรถ
ง. y = x + z


4. นิเสธของประพจน์ Q จะเป็นจริงเมื่อประพจน์ Q มีค่าเท่ากับข้อใด
ก. เป็นเท็จ
ข. เป็นจริง
ค. หาค่าไม่ได้
ง. ถูกทุกข้อ

5. ข้อมูลขนาด 8 บิต หรือ 1 ไบต์สามารถเก็บข้อมูลได้กี่ค่า
ก. 8ค่า
ข. 256ค่า
ค. 16ค่า
ง. 255ค่า

6. ถ้าหากมีตัวดำเนินการหลายตัวอยู่ในนิพจน์ ตัวดำเนินการใดมีความสำคัญสูงสุด
ก. วงเล็บ
ข. MOD
ค. DIV
ง. *

7. ภาษาคอมพิวเตอร์ภาษาใดที่ต้องใช้ตัวอินเทอร์พรีเตอร์เป็นตัวแปลภาษา
ก. ภาษา Basic
ข. ภาษาปาสคาล
ค. ภาษาซี
ง. ภาษาฟอร์แทน

8. โปรแกรมแอสเซมเบอร์คืออะไร
ก. ตัวแปลภาษา Basic
ข. ตัวแปลภาษาซี
ค. ตัวแปลภาษาแอสเซมบลี
ง. ถูกทุกข้อ

9. ขั้นตอนการวิเคราะห์ปัญหาขั้นตอนใด ที่ผู้พัฒนาโปรแกรมต้องศึกษาถึงวิธีการประมวลผลมากที่สุด
ก. สิ่งที่ต้องการ
ข. รูปแบบการแสดงผลทางเอาต์พุต
ค. การประมวลผล
ง. ลักษณะของข้อมูล

10. ถ้าหากต้องการให้คอมพิวเตอร์คำนวณหาพื้นที่ของสามเหลี่ยม ท่านคิดว่าข้อมูลใดคือข้อมูลอินพุต
ก. พื้นที่ , ความสูง
ข. พื้นที่ , ความยาวฐาน
ค. ความยาวฐาน , ความสูง
ง. พื้นที่ , ความยาวฐาน และความสูง

เฉลยแบบทดสอบ

     เฉลย
1.            
2.            
3.            
4.            
5.            
6.            
7.            
8.            
9.            
10.