
คำสั่ง If

อัปเกรดสำหรับเนื้อหาเพิ่มเติม
True or false? The instructions for the robot's program is called pseudocode.
ฉันได้ช็อคโกแลตมากล่องหนึ่ง เธออยากได้ไหม? อยาก แต่ขอเฉพาะรสนมนะ ฉันเอาแต่รสเข้มนะ นี่คือช็อกโกแลตเข้ม นี่ช็อกโกแลตนม ที่เธอชอบ มาเรีย อีกอัน นี่ไง ฉันด้วย เอาอีก เฮ้ จริงๆ พวกเธอหยิบเองได้นี่ ฉันจะไม่หยิบให้หรอก แต่หุ่นยนต์ของฉันอาจหยิบให้ได้นะ โอ้ แต่หุ่นยนต์ไม่รู้ว่าเราชอบอะไรนี่นา แถมมันยังไม่รู้ด้วยว่าเราจะเลือก ช็อคโกแลตแบบไหน แต่เราสอนมันได้นะ ลีน่าจะสอนหุ่นยนต์ เพื่อให้มันมอบช็อคโกแลตให้ถูกคน มาเรียชอบช็อคโกแลตนม เธอกินแต่ช็อคโกแลตนม นั่นคือความต้องการของเธอ ส่วนความต้องการช็อคโกแลตของลีออน ต้องเป็นรสเข้ม ความต้องการเหล่านี้จะควบคุม สิ่งที่หุ่นยนต์ควรทำ มันจะควบคุมเงื่อนไข และเงื่อนไขอาจเป็นจริงหรือเท็จก็ได้ ทำตามหรือไม่ทำตามก็ได้ และไม่ใช่อะไรครึ่งๆ กลางๆ ตอนนี้ลีน่าจะอธิบายให้หุ่นยนต์รู้ ในสิ่งที่มันควรทำ หุ่นยนต์จะต้องได้คำอธิบาย ทุกอย่างโดยชัดเจน คำสั่งถูกเรียกว่ารหัสเทียม ของโปรแกรมของลีน่า รหัสเทียมจะมีหน้าตาเป็นแบบนี้ หยิบช็อคโกแลต ถ้าเป็นช็อกโกแลตนม ให้มอบมันแก่มาเรีย แต่ถ้าเป็นช็อกโกแลตเข้ม ให้มอบมันแก่ลีออน ลีน่าทำการย่อหน้า สองแถวนี้ในรหัสเทียมนี้ ทำไมล่ะ? ก็เพื่อให้ชัดเจนว่าเงื่อนไข จะควบคุมหุ่นยนต์ได้อย่างไร หุ่นยนต์อ่านคำสั่ง "if" และหากเงื่อนไขเป็นจริง คำสั่งต่อไปก็จะถูกดำเนินการ แต่ถ้าหากเงื่อนไขเป็นเท็จ หุ่นยนต์ก็จะกระโดดข้าม ทุกคำสั่งทั้งหมดที่เชื่อมโยง กับคำสั่งในแถว "if" ไป คำสั่งที่บอกว่า "มอบช็อคโกแลตให้มาเรีย" จะดำเนินการเฉพาะถ้าเงื่อนไข "ช็อคโกแลตนม" เป็นจริงเท่านั้น คำสั่ง "ให้ช็อคโกแลตแก่ลีออน" ก็จะดำเนินถ้าเงื่อนไข "ช็อคโกแลตเข้ม" เป็นจริงเท่านั้น เมื่อลีน่าย่อหน้าสองแถว ของรหัสเทียม มันจะชัดเจนว่าเงื่อนไขที่เป็นคำว่า ช็อคโกแลต"นม" หรือ 'เข้ม' ซึ่งควบคุมคำสั่งที่จะให้ดำเนินการ ทีนี้มาดูกันว่าหุ่นยนต์ ได้เรียนรู้อะไรบ้างหรือเปล่า หุ่นยนต์หยิบช็อคโกแลตขึ้นมา มันเป็นช็อคโกแลตเข้ม และเงื่อนไขแรกเป็น...เท็จ แล้วหุ่นยนต์ก็กระโดดข้ามคำสั่ง "มอบช็อคโกแลตให้มาเรีย" ไปยังแถวถัดไป ซึ่งเงื่อนไขเป็นช็อกโกแลตเข้ม เงื่อนไขนี้เป็นจริง หุ่นยนต์มีช็อคโกแลตเข้มอยู่ในมือ ดังนั้นหุ่นยนต์จะดำเนินการตาม คำสั่งในแถวถัดไป คือมอบช็อคโกแลตให้แก่ลีออน มาเรียไม่ได้ช็อคโกแลตซักอันเลย ดังนั้น เธอจึงรีสตาร์ทโปรแกรม ของหุ่นยนต์ใหม่ หุ่นยนต์หยิบช็อคโกแลตชิ้นใหม่ขึ้นมา คราวนี้มันเป็นช็อกโกแลตนม และเงื่อนไขแรกเป็น...จริง ดังนั้น หุ่นยนต์จึงให้ช็อคโกแลตแก่มาเรีย โปรแกรมดำเนินการต่อในแถวถัดไป และหุ่นยนต์ก็ยืนอยู่โดยไม่มีอะไร ในมือเลย มันไม่มีช็อคโกแลตเหลือแล้ว แล้วเงื่อนไขของ “ช็อคโกแลตเข้ม” ล่ะ เป็นจริงหรือเท็จ เราเคยบอกว่าเงื่อนไขในการเขียนโปรแกรม สามารถเป็นเพียง จริงหรือเท็จได้เท่านั้น ไม่ครึ่งๆ กลางๆ เมื่อไม่มีช็อคโกแลต นั่นก็แปลว่าเงื่อนไขของ "ช็อกโกแลตเข้ม" เป็นเท็จ เพราะไม่มีช็อคโกแลตแล้ว ดังนั้นโปรแกรมจะข้ามคำสั่ง มอบช็อคโกแลตให้ลีออน และหยุดดำเนินการ การใช้เงื่อนไข จะทำให้หุ่นยนต์สามารถ มอบช็อคโกแลตที่มาเรีย และลีออนชอบที่สุดได้ ทุกคนพอใจและมีความสุข เก่งนะ เจ้าหุ่นยนต์!