Skip to main content

บทที่ 3: คำแถลงแบบมีเงื่อนไข

ในบทเรียนก่อนหน้านี้คุณได้เรียนรู้วิธีใช้ข้อมูลจากออปติคัลเซนเซอร์ในโครงการเพื่อจัดเรียงดิสก์ตามสี ในบทเรียนนี้คุณจะต่อยอดจากสิ่งที่คุณได้เรียนรู้ในการสำรวจตัวเลือกใน VEXcode ที่ช่วยให้โครงการสามารถตัดสินใจได้ไม่ว่าจะตรวจพบสีใดโดยออปติคัลเซนเซอร์ คุณจะได้เรียนรู้เกี่ยวกับ: 

  • ทำไมการเพิ่มประสิทธิภาพการตัดสินใจจึงเป็นสิ่งสำคัญในสถานที่อุตสาหกรรม
  • ความแตกต่าง ระหว่างบล็อค If thenIfthen else และ otherse if

การตรวจสอบหลายเงื่อนไข

ในบทเรียนก่อนหน้านี้คุณได้สร้างโครงการที่สามารถเรียงลำดับดิสก์ตามสีเป็นพาเลทสีแดงหรือพาเลทสีเขียว แม้ว่าจะมีประสิทธิภาพแต่โปรเจกต์สามารถจัดเรียงดิสก์ได้ครั้งละหนึ่งแผ่นเท่านั้น ในโรงงานวัตถุจำนวนมากจะต้องถูกจัดเรียงและจัดเรียงเป็นพาเลทซ้ำๆ เพื่อที่จะทำสิ่งนี้ได้อย่างมีประสิทธิภาพแขน 6 แกนจำเป็นต้องสามารถตัดสินใจซ้ำๆเกี่ยวกับวิธีการเคลื่อนย้ายวัตถุหรือหากจำเป็นต้องมีการแทรกแซงของมนุษย์ พิจารณาลูกบาศก์ที่คุณย้ายมาในหลักสูตร Introduction to the 6 - Axis Armภาพแขน 6 แกนถือลูกบาศก์สีน้ำเงินเหนือเซ็นเซอร์ออปติคอล

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

Sequential If then blocks

ในบทเรียนก่อนหน้านี้ท่านใช้ If then block ตามลำดับเพื่อตรวจสอบสองเงื่อนไขที่แยกกันทีละข้อโดยหลักแล้วถามคำถามสองข้อภายในโครงการ

ภาพของโครงการตัวอย่างสำหรับกิจกรรมของบทเรียนก่อนหน้าด้วยบล็อค If then ที่ไฮไลต์

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

ภาพลำดับงานโปรเจกต์

ตลอดบทเรียนนี้จะมีการแชร์ภาพที่อธิบายการไหลของโปรเจกต์ VEXcode ท่านสามารถสร้างภาพเหล่านี้ขึ้นมาใหม่ในสมุดบันทึกวิศวกรรมของท่านเช่นเดียวกับการย้ายบทเรียน 

ใช้เครื่องมือใน Google สไลด์หรือ Microsoft PowerPoint เช่นลูกศรกล่องหรือผังงานเพื่อช่วยสร้างการแสดงเป็นภาพที่เหมาะกับคุณที่สุดในสมุดบันทึกของคุณ

ภาพความช่วยเหลือของโปรเจกต์โฟลว์ -- กล่องเครื่องมือลูกศร

 

Sequential If then else blocks

มีบล็อกอื่นที่สามารถใช้เพื่อช่วยให้เราสามารถตรวจสอบเงื่อนไขสีแดงและสีเขียวและบัญชีสำหรับสีอื่นได้  If then else block เป็นบล็อก C ที่เรียกใช้บล็อกภายใน สาขา if หรือ สาขา อื่น ตามค่าบูลีนที่รายงาน

ถ้าอย่างนั้นก็ปิดกั้นด้วยคำอธิบายขั้นตอนโครงการ

หลังจากเรียกใช้ สาขา if หรือ สาขา อื่นโครงการจะย้ายไปยังบล็อกถัดไปในสแต็ก การไหลของโปรเจกต์ของ If then else blocks ยังสามารถแสดงให้เห็นถึงการทำให้สาขามองเห็นได้ชัดเจนยิ่งขึ้น

ถ้าอย่างนั้นภาพการไหลของโครงการที่มีกิ่งก้านอธิบาย

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

เนื้อหาของสาขาอื่นของ If then else block called out

ภาพในตอนนี้แสดงให้เห็นเพียงวิธีการจัดการกับสภาพของวัตถุที่เป็นสีแดง อีก หาก จำเป็นต้องตรวจสอบสภาพของวัตถุที่เป็นสีเขียว

สองถ้าอย่างนั้นเอลส์ในโครงการ

ลองคิดเกี่ยวกับการไหลของโครงการด้วยโครงสร้างนี้ ทุกครั้งที่โครงการดำเนินการจะมีการดำเนินการหลายสาขาไม่ว่าเซ็นเซอร์ออปติคอลจะตรวจจับสีใดก็ตาม

project flow of two if then else block

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

ภาพโฟลว์โปรเจกต์

ในขณะที่ตอนนี้เราสามารถพิจารณาวัตถุที่ไม่คาดคิด (เช่นลูกบาศก์สีน้ำเงิน) แต่แขน 6 แกนจะไม่ถึงจุดในโครงการปล่อยดิสก์ลงบนพาเลท แทนที่จะตรวจสอบเงื่อนไขสีแดงและสีเขียวทีละรายการมีวิธีตรวจสอบว่าวัตถุเป็นสีเขียวหรือไม่หากวัตถุไม่เป็นสีแดง เท่านั้นแทนที่จะตรวจสอบ เงื่อนไขสีแดงและสีเขียวทีละรายการ   

Nested If then else blocks 

แต่ละสาขาของบล็อค If then else สามารถยอม รับบล็อค C อื่นๆภายในได้ สิ่งนี้เรียกว่า 'การซ้อน' ซึ่งหมายความว่าอันที่สอง ถ้าอย่าง นั้นบล็อคอื่นสามารถซ้อนอยู่ภายใน สาขา อื่นของอันแรกได้เช่นนี้ภาพของโครงการที่มีลำดับที่สองถ้าเป็นเช่นนั้นให้บล็อกซ้อนเข้าไปในสาขาอื่นของลำดับที่หนึ่ง

ตอนนี้เงื่อนไขของออปติคัลเซนเซอร์ตรวจจับสีเขียวจะถูกตรวจสอบก็ต่อเมื่อเงื่อนไขก่อนหน้านี้ (ออปติคัลเซนเซอร์ตรวจจับสีแดง) รายงานว่าเป็นเท็จ ดังนั้นเมื่อออปติคัลเซนเซอร์ตรวจจับสีแดง เฉพาะ สาขาแรกที่จะทำงานโดยย้ายดิสก์เหนือพาเลทสีแดง 

ถ้าเป็นเช่นนั้นถ้าเป็นเช่นนั้นบล็อคการไหลของโครงการที่ซ้อนกัน

หากออปติคัลเซนเซอร์ตรวจจับสีเขียวเงื่อนไขของอันแรก หาก สาขา (ออปติคัลตรวจจับสีแดง) จะรายงานเป็นเท็จและดังนั้น สาขา อื่นๆจะทำงาน  สภาพของรัง ถ้าเป็นเช่นนั้นจะมีการตรวจสอบ บล็อกอื่นเพื่อดูว่าออปติคัลเซนเซอร์ตรวจพบสีเขียวหรือไม่ เงื่อนไขนั้นจะรายงานว่าเป็นจริงดังนั้นบล็อกภายในอันที่สอง หาก สาขาจะทำงานย้ายดิสก์เหนือพาเลทสีเขียว 

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

ผังงานของการไหลของโครงการ

Nested If then else blocks can be view as a cascading list of questions. Nested If then else blocks can be view as a cascading list of questions ที่นี่คำถามมีดังนี้: 

  1. วัตถุเป็นสีแดงหรือไม่? 
    1. ใช่ไหม? เลื่อนไปบนพาเลทสีแดงและหยุดถามคำถาม
    2. ไม่? ถามคำถามอื่น 
      1. วัตถุเป็นสีเขียวหรือไม่?
        1. ใช่ไหม? เลื่อนไปบนพาเลทสีเขียวและหยุดถามคำถาม
        2. ไม่? จากนั้นวัตถุจะไม่เป็นสีแดงหรือสีเขียว เปลี่ยนสีของ Signal Tower และเรียกใช้การหยุดแบบควบคุม

โปรดสังเกตว่าคำถามจะถูกถามก็ต่อเมื่อคำถามก่อนหน้านี้ได้รับคำตอบในเชิงลบ 

ในขณะที่สิ่งนี้จัดการกับเงื่อนไขทั้งหมดที่เราต้องการตรวจสอบมีอีกบล็อกหนึ่งที่จะตรวจสอบเงื่อนไขในลักษณะเดียวกันแต่สร้างได้ง่ายกว่าบล็อกซ้อน 

มิฉะนั้น ถ้าบล็อค

บล็อก อื่นๆที่ช่วยให้คุณสามารถตรวจสอบหลายเงื่อนไขภายในบล็อกเดียวกัน แต่ละเงื่อนไขในบล็อกนี้จะได้รับการตรวจสอบตามลำดับเฉพาะในกรณีที่เงื่อนไขก่อนหน้านี้รายงานเป็นเท็จ หากเงื่อนไขบูลีนทั้งหมดสำหรับสาขาอื่นๆหากสาขาเป็นเท็จบล็อกภายในส่วนอื่นๆจะถูกเรียกใช้

มิฉะนั้นถ้าบล็อค

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

ตรวจสอบความเข้าใจของคุณ

ก่อนที่จะไปยังบทเรียนถัดไปตรวจสอบให้แน่ใจว่าท่านเข้าใจแนวคิดในบทเรียนนี้โดยตอบคำถามต่อไปนี้ในสมุดบันทึกวิศวกรรมของท่าน

ตรวจสอบคำถามเกี่ยวกับความเข้าใจของ คุณ > (Google Doc /.docx /.pdf )


เลือก ถัดไป > เพื่อใช้ สิ่งอื่นหาก บล็อกในโปรเจกต์