ยินดีต้อนรับนักเรียนรุ่นเยาว์ วันนี้เราจะมาเรียนรู้เกี่ยวกับ โครงสร้างควบคุม ในการเขียนโปรแกรมคอมพิวเตอร์ โครงสร้างควบคุมเปรียบเสมือนป้ายบอกทางสำหรับโปรแกรมคอมพิวเตอร์ โดยจะบอกว่าจะต้องไปทางไหนและต้องทำอะไรต่อไป เช่นเดียวกับที่เราปฏิบัติตามกฎที่บ้านหรือที่โรงเรียน คอมพิวเตอร์ก็จะปฏิบัติตามโครงสร้างควบคุมเมื่อรันโปรแกรม
โครงสร้างการควบคุมคือชุดคำสั่งที่บอกคอมพิวเตอร์ว่าจะเลือกขั้นตอนต่างๆ อย่างไรเมื่อดำเนินการโปรแกรม โครงสร้างนี้จะตัดสินใจว่าคอมพิวเตอร์ควรดำเนินการตามลำดับเดิมหรือตัดสินใจทำอย่างอื่น
ลองนึกภาพว่าคุณกำลังทำตามสูตรอาหาร สูตรอาหารจะบอกคุณทีละขั้นตอน ขั้นแรก ผสมแป้งกับน้ำ จากนั้นใส่ไข่ คนให้เข้ากัน และสุดท้าย อบส่วนผสม ในคอมพิวเตอร์ โครงสร้างควบคุมจะทำงานในลักษณะเดียวกัน โดยช่วยให้คอมพิวเตอร์ทราบว่าคำสั่งใดจะตามมาและต้องตัดสินใจอย่างไรเมื่อมีตัวเลือกให้เลือก
โครงสร้างการควบคุมมีอยู่ 3 ประเภทหลักที่คุณจะได้เรียนรู้ในวันนี้ ได้แก่:
โครงสร้างการควบคุมแบบต่อเนื่องจะสั่งให้คอมพิวเตอร์ปฏิบัติตามคำสั่งทีละคำสั่งในลำดับที่แน่นอน การควบคุมแบบต่อเนื่องจะไม่มีการตัดสินใจ ขั้นตอนต่างๆ จะเกิดขึ้นตามลำดับ เช่นเดียวกับเมื่อคุณปฏิบัติตามคำแนะนำชุดง่ายๆ
ตัวอย่างเช่น ลองคิดถึงกิจวัตรตอนเช้าของคุณทุกวัน:
กิจกรรมแต่ละอย่างจะเกิดขึ้นตามลำดับที่ชัดเจน ในการเขียนโปรแกรม เรียกว่า การดำเนินการแบบต่อเนื่อง คอมพิวเตอร์จะอ่านคำสั่งแรก จากนั้นจึงอ่านคำสั่งที่สอง และคำสั่งที่สาม
หากเราลองนึกถึงโปรแกรมหลอกๆ ง่ายๆ เพื่อทำแซนวิช อาจจะมีลักษณะดังนี้:
ขั้นตอนที่ 1: หยิบขนมปัง 2 แผ่น
ขั้นตอนที่ 2: ทาเนยบนแผ่นขนมปังหนึ่งแผ่น
ขั้นตอนที่ 3: วางชีสไว้บนเนย
ขั้นตอนที่ 4: นำแซนวิชทั้ง 2 ชิ้นมาวางรวมกัน เพลิดเพลินกับแซนวิชของคุณได้เลย!
เช่นเดียวกับแซนด์วิชที่คุณทำ คอมพิวเตอร์จะทำตามคำแนะนำทีละรายการ
โครงสร้างการควบคุมการเลือกช่วยให้คอมพิวเตอร์สามารถเลือกได้ โครงสร้างดังกล่าวทำหน้าที่เหมือนทางแยกหรือหนังสือ "เลือกการผจญภัยของคุณเอง" คอมพิวเตอร์จะพิจารณาเงื่อนไขหรือกฎเกณฑ์ จากนั้นจึงตัดสินใจว่าจะเลือกเส้นทางใด
ตัวอย่างเช่น ลองคิดดูว่าควรใส่เสื้อผ้าอะไรในตอนเช้า คุณอาจตัดสินใจว่า “ถ้าฝนตก ฉันจะใส่เสื้อกันฝน ถ้าแดดออก ฉันจะใส่เสื้อยืด” ซึ่งเป็นการตัดสินใจที่ช่วยให้คุณเตรียมตัวรับมือกับสภาพอากาศได้ ในการเขียนโปรแกรม คอมพิวเตอร์จะใช้คำสั่ง if , else if และ else ในการตัดสินใจ
ตัวอย่างโค้ดง่ายๆ ในภาษาธรรมดาจะมีลักษณะดังนี้:
ถ้า ฝนตกก็ พิมพ์ว่า "กางร่ม"
หรือไม่ก็ พิมพ์ว่า "ไม่ต้องใช้ร่ม"
หมายความว่า ถ้าเงื่อนไข (ฝนตก) เป็นจริงก็ให้ทำอย่างนั้น (กางร่ม) ถ้าไม่เป็นจริงก็ทำอย่างอื่น
มาดูตัวอย่างอื่นกันบ้าง ลองนึกภาพว่าคุณกำลังเล่นเกมอยู่ แล้วมีกฎข้อหนึ่งที่บอกว่า "ถ้าคุณได้ 10 แต้ม คุณชนะ!" กฎข้อนี้เปรียบเสมือนโครงสร้างการควบคุมการเลือก เกมจะตรวจสอบว่าคะแนนของคุณเท่ากับ 10 หรือไม่ หากใช่ เกมจะประกาศว่าคุณเป็นผู้ชนะ หากไม่เป็นเช่นนั้น เกมจะเล่นต่อไป
โครงสร้างการเลือกช่วยให้คอมพิวเตอร์จัดการกับการตัดสินใจที่มีคำตอบที่เป็นไปได้เพียงไม่กี่คำตอบ โดยจะสั่งให้คอมพิวเตอร์ "ทำสิ่งนี้หากเป็นจริง และถ้าไม่เป็นจริง ให้ดำเนินการอย่างอื่น"
โครงสร้างการควบคุมแบบวนซ้ำจะสั่งให้คอมพิวเตอร์ทำบางอย่างซ้ำแล้วซ้ำอีก ซึ่งเรียกว่าการวนซ้ำหรือการทำซ้ำการกระทำ เมื่อคุณต้องทำซ้ำงานหลายๆ ครั้ง จะใช้การวนซ้ำ
ลองนึกภาพตอนที่คุณนับจำนวนแอปเปิลในตะกร้า คุณอาจนับ 1, 2, 3, 4, 5 และอื่นๆ เริ่มจากตัวเลขหนึ่งแล้วนับต่อไปเรื่อยๆ จนกว่าจะถึงตัวเลขสุดท้าย ซึ่งคล้ายกับวิธีที่คอมพิวเตอร์ใช้ลูป
มีลูปสองประเภททั่วไปในการเขียนโปรแกรม:
ลูป for จะใช้เมื่อคุณทราบจำนวนครั้งที่ต้องการทำซ้ำบางสิ่งบางอย่าง ตัวอย่างเช่น หากคุณต้องการร้องเพลงบรรทัดเดียวกัน 5 ครั้ง คุณสามารถใช้ลูป for ได้:
(นับ 1 ถึง 5) ให้ ร้องท่อนนี้ว่า "สุขสันต์วันเกิด!"
คอมพิวเตอร์จะแสดงคำว่า "สุขสันต์วันเกิด!" ห้าครั้งเนื่องจากทำซ้ำขั้นตอนนี้ 5 ครั้ง
ลูป While ถูกใช้เมื่อคอมพิวเตอร์ควรทำซ้ำสิ่งหนึ่งๆ ตราบใดที่เงื่อนไขเป็นจริง ตัวอย่างเช่น หากคุณกำลังเป่าลูกโป่ง คุณก็อาจจะเป่าต่อไปจนกว่าลูกโป่งจะใหญ่พอ กฎอาจเป็นดังนี้: "แม้ว่าลูกโป่งจะไม่ใหญ่ ให้เป่าลมเข้าไปในลูกโป่งต่อไป"
คล้ายกับคำพูดที่ว่า " ในขณะที่ ลูกโป่งยังเล็กอยู่ ให้เป่าต่อไป เมื่อลูกโป่งมีขนาดใหญ่พอแล้ว ให้หยุดวง"
นี่เป็นอีกตัวอย่างง่ายๆ ที่ใช้แนวคิดแบบวนซ้ำ ลองนึกภาพว่าคุณชอบปรบมือ คุณตัดสินใจปรบมือจนกว่าจะปรบมือครบ 10 ครั้ง คุณอาจพูดว่า "ปรบมือ" ซ้ำ 10 ครั้ง ในโปรแกรม คอมพิวเตอร์จะนับการปรบมือแต่ละครั้งและจะหยุดเมื่อปรบมือครบ 10 ครั้ง
โครงสร้างการควบคุมมีความสำคัญมากในการเขียนโปรแกรม โครงสร้างดังกล่าวช่วยในการจัดระเบียบงานในโปรแกรมเพื่อให้ทำงานได้อย่างถูกต้อง หากไม่มีโครงสร้างดังกล่าว คอมพิวเตอร์ก็จะไม่สามารถตัดสินใจหรือทำซ้ำขั้นตอนต่างๆ ได้
ต่อไปนี้คือเหตุผลบางประการว่าเหตุใดโครงสร้างการควบคุมจึงมีความสำคัญ:
มาดูตัวอย่างจากชีวิตประจำวันที่สะท้อนถึงโครงสร้างควบคุมในการเขียนโปรแกรมกัน
ตัวอย่างการควบคุมแบบต่อเนื่อง:
ลองนึกภาพว่าคุณกำลังเตรียมตัวไปโรงเรียน ก่อนอื่นคุณตื่นนอน จากนั้นคุณล้างหน้า จากนั้นคุณใส่เสื้อผ้า และสุดท้ายคุณกินอาหารเช้า นี่คือลำดับของการกระทำที่คุณทำทีละอย่าง ในการเขียนโปรแกรมคอมพิวเตอร์ จะใช้การควบคุมแบบต่อเนื่องเมื่อปฏิบัติตามคำสั่งแต่ละคำสั่งโดยไม่มีเงื่อนไข
ตัวอย่างการควบคุมการเลือก:
พิจารณาการตัดสินใจของคุณในการเลือกเสื้อผ้า หากอากาศหนาว คุณจะสวมเสื้อกันหนาวที่อบอุ่น หากอากาศร้อน คุณจะสวมเสื้อยืด กระบวนการตัดสินใจนี้คล้ายกับการใช้คำสั่ง "ถ้า" คอมพิวเตอร์จะตรวจสอบสภาพอากาศ (เงื่อนไข) จากนั้นจึงเลือกตัวเลือกเสื้อผ้าที่เหมาะสม (การกระทำ)
ตัวอย่างการควบคุมการวนซ้ำ:
ลองนึกภาพว่าคุณกำลังทำภารกิจบางอย่าง เช่น เก็บของเล่น คุณอาจมีของเล่นหลายชิ้นที่ต้องเก็บ แทนที่จะคิดถึงของเล่นทีละชิ้น คุณเพียงแค่ทำสิ่งเดียวกันซ้ำๆ กัน หยิบของเล่นขึ้นมา ใส่ลงในกล่องของเล่น แล้วไปหยิบของเล่นชิ้นต่อไปจนกว่าจะเก็บได้หมด นี่คือการกระทำซ้ำๆ เหมือนกับการวนซ้ำในโปรแกรม
บางครั้งโครงสร้างการควบคุมสามารถวางอยู่ภายในกันได้ ซึ่งเรียกว่า โครงสร้างการควบคุมแบบซ้อน ซึ่งเกิดขึ้นเมื่อการตัดสินใจหรือวงจรหนึ่งอยู่ภายในอีกวงจรหนึ่ง ลองนึกถึงเกมที่คุณต้องเลือกหลายขั้นตอน ตัวอย่างเช่น คุณอาจตัดสินใจก่อนว่าจะไปทางซ้ายหรือขวา หากคุณเลือกทางซ้าย คุณอาจต้องเผชิญกับตัวเลือกอื่น: "คุณจะปีนเนินหรือเดินอ้อมเนิน" ตัวเลือกแต่ละตัวเลือกเป็นการตัดสินใจเล็กๆ น้อยๆ และจะซ้อนกันทีละตัวเลือก
ในการเขียนโค้ด การทำเนสต์ช่วยให้คอมพิวเตอร์สามารถจัดการงานที่ซับซ้อนมากขึ้นได้ แม้แต่เกมหรือแอปพลิเคชันที่เรียบง่ายก็อาจมีการตัดสินใจและลูปหลายชั้น เมื่อชั้นเหล่านี้ทำงานร่วมกัน โปรแกรมจะสามารถตัดสินใจได้อย่างชาญฉลาดมากขึ้นและทำสิ่งที่น่าตื่นเต้นมากขึ้น
ตัวอย่างเช่น ลองนึกถึงโปรแกรมที่ช่วยคุณวางแผนปิกนิก โปรแกรมอาจถามว่า "อากาศดีไหม" ถ้าคำตอบคือใช่ โปรแกรมจะถามว่า "คุณมีอาหารเพียงพอไหม" ถ้าคุณตอบว่าใช่ โปรแกรมจะตอบว่า "เยี่ยมมาก ได้เวลาไปปิกนิกแล้ว" ถ้าคำตอบคือไม่ โปรแกรมจะแนะนำแผนอื่น การตัดสินใจแบบซ้อนกันนี้จะช่วยให้คอมพิวเตอร์เข้าใจตัวเลือกของคุณได้ดีขึ้น
เมื่อโปรแกรมคอมพิวเตอร์ทำงาน โปรแกรมจะปฏิบัติตามคำสั่งที่คุณให้ไว้ตามลำดับที่กำหนด ลองนึกถึงโปรแกรมง่ายๆ ที่แสดงคำทักทายบนหน้าจอคอมพิวเตอร์ โปรแกรมอาจทำสิ่งต่อไปนี้:
ขั้นตอนที่ 1: เริ่มต้นโปรแกรม
ขั้นตอนที่ 2: ตรวจสอบเวลาของวัน
ขั้นตอนที่ 3: หากเป็นเวลาตอนเช้าให้แสดง "Good Morning!"
ขั้นตอนที่ 4: หากเป็นช่วงบ่าย ให้แสดงข้อความ "Good Afternoon!"
ขั้นตอนที่ 5: หากเป็นเวลาตอนเย็นให้แสดง "Good Evening!"
ขั้นตอนที่ 6: สิ้นสุดโปรแกรม
ในโปรแกรมนี้มีลำดับที่ชัดเจน นอกจากนี้ยังมีการตัดสินใจว่าจะแสดงอะไรบนหน้าจอ คอมพิวเตอร์ใช้โครงสร้างควบคุมการเลือก (คำสั่ง if-else ) เพื่อตัดสินใจเรื่องดังกล่าว
ลองนึกภาพว่าคุณกำลังเล่นเกมคอมพิวเตอร์ง่ายๆ ที่ต้องเก็บเหรียญ โปรแกรมอาจใช้ลูปเพื่อตรวจสอบทุกครั้งที่คุณเก็บเหรียญ โปรแกรมจะนับเหรียญของคุณในขณะที่คุณเก็บเหรียญ เมื่อคุณเก็บเหรียญได้ครบ เกมก็จะจบลง ในที่นี้ ลูปคือโครงสร้างควบคุมการวนซ้ำที่ทำซ้ำขั้นตอนการนับ
โครงสร้างการควบคุมไม่เพียงแต่ใช้ในแบบฝึกหัดในโรงเรียนหรือโปรแกรมขนาดเล็กเท่านั้น แต่ยังใช้ในแอปพลิเคชันในโลกแห่งความเป็นจริงมากมายที่เราเห็นทุกวัน ต่อไปนี้คือตัวอย่างที่น่าสนใจบางส่วน:
ตัวอย่างเหล่านี้แสดงให้เห็นว่าโครงสร้างการควบคุมมีอยู่ทุกที่ ช่วยให้อุปกรณ์และโปรแกรมสมัยใหม่ทำงานราบรื่นที่สุด ทำให้ชีวิตของเราง่ายและสนุกมากขึ้น
มาเขียนตัวอย่างซูโดโค้ดแบบง่ายๆ กัน ซูโดโค้ดเป็นวิธีการวางแผนโปรแกรมโดยใช้คำง่ายๆ ที่ดูเหมือนโค้ด
ตัวอย่าง: การตัดสินใจง่ายๆ สำหรับอาหารว่าง
ลองนึกภาพว่าคุณต้องการตัดสินใจว่าจะกินแอปเปิลหรือกล้วยเป็นของว่าง คุณสามารถเขียนกฎได้ดังนี้:
หาก คุณหิวและอยากทานอะไรหวานๆ ให้เลือกแอปเปิล
หรือถ้า คุณหิวและอยากกินอะไรนุ่มๆ ให้เลือกกล้วย
หรือไม่ ก็นั่งคิดดูว่าคุณต้องการอะไร
รหัสเทียมนี้จะบอกคอมพิวเตอร์ว่า: ตรวจสอบก่อนว่าคุณต้องการของหวานหรือไม่ หากเป็นเช่นนั้น ให้หยิบแอปเปิลขึ้นมาหนึ่งผล หากไม่ใช่ ให้ลองเลือกอย่างอื่น เช่น กล้วย หากตัวเลือกใดไม่ตรงกัน ให้ใช้เวลาสักครู่เพื่อตัดสินใจ
การคิดถึงโครงสร้างควบคุมเป็นแผนที่อาจช่วยได้ ลองนึกถึงแผนที่ขุมทรัพย์ธรรมดาๆ แผนที่มีเส้นทางที่ทำเครื่องหมายไว้พร้อมขั้นบันไดที่เขียนไว้ตามลำดับ เมื่อคุณมาถึงทางแยก แผนที่จะบอกคุณว่าจะไปทางไหนโดยอาศัยเบาะแสจากสมบัติ บางครั้ง แผนที่จะบอกคุณให้เดินตามเส้นทางเดิมหลายๆ ครั้งจนกว่าจะถึงสมบัติ คำแนะนำทั้งหมดนี้จะช่วยให้คุณค้นหาเส้นทางที่ถูกต้องได้
ในทำนองเดียวกัน คอมพิวเตอร์ใช้ขั้นตอนตามลำดับในการติดตามแผนที่ การเลือกเพื่อเลือกเส้นทางที่ถูกต้องที่จุดแยก และการวนซ้ำเพื่อทำซ้ำงานจนกว่าจะบรรลุเป้าหมาย ด้วยการใช้โครงสร้างควบคุม เราสามารถบอกคอมพิวเตอร์ได้อย่างแม่นยำว่าจะไปถึง "สมบัติ" ของมันได้อย่างไร ซึ่งก็คือผลลัพธ์ที่ถูกต้อง
มาทบทวนแนวคิดสำคัญๆ ที่เราได้เรียนรู้ในวันนี้กัน: