Skip to main content

บทที่ 4: การใช้บล็อก [ตลอดไป]

เงื่อนไขการตรวจสอบซ้ำๆ

ดังที่สังเกตได้ในบทเรียนก่อนหน้านี้บล็อก [ถ้าเป็นเช่นนั้น] จะตรวจสอบเงื่อนไขเพียงครั้งเดียว เพื่อให้เงื่อนไขที่มีอยู่ในบล็อก [If then] ถูกตรวจสอบซ้ำๆจำเป็นต้องใช้บล็อก [Forever] C บล็อก [ตลอดไป] เป็นบล็อก C จากหมวดหมู่การควบคุมที่ทำซ้ำพฤติกรรมที่มีอยู่ภายในตลอดไป

บล็อก VEXcode VR Forever ที่ว่างเปล่า
  • โหลด โป รเจกต์ Unit7Lesson3 จากบทเรียนก่อนหน้า

    VEXcode VR เดียวกันจะบล็อกโปรเจกต์จากตอนท้ายของบทเรียนที่แล้ว มันเริ่มต้นด้วยบล็อกเมื่อเริ่มต้นและจากนั้นจะมีบล็อก If Then ที่มีพารามิเตอร์บูลีนของบล็อกการตรวจจับสีที่เขียนว่า 'ตาด้านหน้าตรวจจับสีเขียว ?' และเลี้ยวขวาสำหรับบล็อก 90 องศาภายในภาชนะบรรจุ If ถัดไปมีเหมือนกันถ้าบล็อกและหมุนบล็อกสแต็คแต่เปลี่ยนเป็นเลี้ยวซ้ายเป็น 90 องศาถ้าตรวจพบสีฟ้า ถัดไปเช่นเดียวกันหากมีการใช้ block และ turn block stack แต่เปลี่ยนเป็น Stop Driving หากตรวจพบสีแดง สุดท้ายนี้หากใช้ block และ turn block stack เหมือนกันแต่เปลี่ยนเป็น Drive Forward หากตรวจไม่พบสี
  • เปลี่ยนชื่อ โครงการUnit7Lesson4

    แถบเครื่องมือ VEXcode VR ที่มีปุ่ม 'ชื่อโครงการ' ที่เน้นในช่องสีแดงทางด้านซ้ายของปุ่มเลือกสนามเด็กเล่น ชื่อโครงการถูกตั้งค่าเป็นหน่วยที่ 7 บทเรียนที่ 4
  • ลากบล็อค [Forever] ลงในพื้นที่ทำงานและแนบไปกับด้านบนของกองบล็อค โปรดทราบว่านี่จะรวมบล็อก [If then] ทั้งสี่บล็อกภายในบล็อก [Forever]

    VEXcode VR บล็อกโปรเจกต์จากก่อนหน้านี้แต่มีลูกศรระบุการเพิ่มบล็อกตลอดไปล้อมรอบข้อความ if ทั้งหมด มันเริ่มต้นด้วยบล็อกเมื่อเริ่มต้นและจากนั้นจะมีชุดข้อความสี่ชุดหากห่อด้วยบล็อกตลอดไป อย่างแรกคือบล็อค If Then ที่มีพารามิเตอร์บูลีนของบล็อค Color Sensing ที่เขียนว่า 'Front Eye detects green ?' และ Turn right สำหรับบล็อค 90 องศาภายในคอนเทนเนอร์ If ถัดไปมีเหมือนกันถ้าบล็อกและหมุนบล็อกสแต็คแต่เปลี่ยนเป็นเลี้ยวซ้ายเป็น 90 องศาถ้าตรวจพบสีฟ้า ถัดไปเช่นเดียวกันหากมีการใช้ block และ turn block stack แต่เปลี่ยนเป็น Stop Driving หากตรวจพบสีแดง สุดท้ายนี้หากใช้ block และ turn block stack เหมือนกันแต่เปลี่ยนเป็น Drive Forward หากตรวจไม่พบสี

    สำหรับข้อมูลของคุณ

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

    ภาพแสดงให้เห็นว่าบล็อก Forever สามารถลากไปที่ด้านบนของกองซ้อนได้อย่างไรและพันรอบเนื้อหาของกองซ้อนโดยอัตโนมัติ โครงการบล็อก VEXcode VR จะเหมือนเดิมและอยู่ในลูปตลอดไป ข้อความ IF มีดังนี้: อย่างแรกคือบล็อค If Then ที่มีพารามิเตอร์บูลีนของบล็อค Color Sensing ที่เขียนว่า 'Front Eye detects green ?' และ Turn right สำหรับบล็อค 90 องศาภายในคอนเทนเนอร์ If ถัดไปมีเหมือนกันถ้าบล็อกและหมุนบล็อกสแต็คแต่เปลี่ยนเป็นเลี้ยวซ้ายเป็น 90 องศาถ้าตรวจพบสีฟ้า ถัดไปเช่นเดียวกันหากมีการใช้ block และ turn block stack แต่เปลี่ยนเป็น Stop Driving หากตรวจพบสีแดง สุดท้ายนี้หากใช้ block และ turn block stack เหมือนกันแต่เปลี่ยนเป็น Drive Forward หากตรวจไม่พบสี

    วิดีโอด้านล่างนี้แสดงวิธีเพิ่มบล็อก [Forever] รอบๆสี่บล็อก [If then] ในโครงการปัจจุบัน โปรดสังเกตว่าด้านบนของบล็อก [Forever] จะเรียงรายหลังจาก [When started] และบล็อก [If then] แรก บล็อก [Forever] จะล้อมรอบบล็อกต่อไปนี้ทั้งหมดในสแต็กโครงการ

  • ตอนนี้บล็อก [Forever] ถูกเพิ่มลงในโครงการเพื่อให้บล็อก [If then] ทั้งหมดได้รับการตรวจสอบเงื่อนไขอย่างต่อเนื่องให้เปิด Disk Maze Playground และเรียกใช้โครงการ
  • เมื่อโครงการนี้ทำงานหุ่นยนต์ VR จะนำทาง Disk Maze Playground ตั้งแต่ต้นจนจบ เมื่อหุ่นยนต์ VR ตรวจพบสีแดงมันจะหยุดการขับขี่

    มุมมองจากบนลงล่างของ VR Disk Maze Playground โดยหุ่นยนต์ VR จะผ่านแต่ละดิสก์และพักที่ดิสก์สีแดงสุดท้าย
  • ในโครงการจากบทเรียนก่อนหน้านี้มีการตรวจสอบเงื่อนไขภายในบล็อก [ถ้าเป็นเช่นนั้น] เพียงครั้งเดียว เนื่องจากเงื่อนไขภายในบล็อก [ถ้าเป็นเช่นนั้น] ถูกตรวจสอบเพียงครั้งเดียวหุ่นยนต์ VR จึงขับเคลื่อนไปข้างหน้าตลอดไปเนื่องจากสภาพที่ไม่มีการตรวจพบสีถูกรายงานว่าเป็นจริง

    แผนภาพการไหลของตรรกะในโครงการบล็อก VEXcode VR ของเราโดยไม่มีบล็อกตลอดไป ลูกศรระบุว่าแต่ละข้อความจะทำงานเพียงครั้งเดียวก่อนที่โปรเจกต์จะสิ้นสุดจึงทำให้โปรเจกต์ของเราตอบสนองน้อยกว่าที่เราต้องการมาก โครงการของเราตรวจสอบว่าตาด้านหน้าตรวจพบสีเขียวหรือไม่และถ้าเป็นเช่นนั้นมันจะเลี้ยวขวาเป็นเวลา 90 องศา ถัดไปหากตาด้านหน้าตรวจพบสีน้ำเงินมันจะเลี้ยวซ้ายเป็นเวลา 90 องศา ถัดไปหากตาด้านหน้าตรวจพบสีแดงก็จะหยุดขับรถ สุดท้ายหากตาด้านหน้าตรวจไม่พบว่ามันขับไปข้างหน้า
  • ตอนนี้มีการเพิ่มบล็อก [Forever] แล้วแต่ละเงื่อนไขของบล็อก [If then] C จะได้รับการตรวจสอบซ้ำๆ ในระหว่างการไหลของโครงการหากเงื่อนไขของบล็อก [ถ้าเป็นเช่นนั้น] C เป็นจริงบล็อกภายในบล็อก [ถ้าเป็นเช่นนั้น] C จะถูกดำเนินการ หากเงื่อนไขของบล็อก [ถ้าเป็นเช่นนั้น] C เป็นเท็จบล็อกภายในบล็อก [ถ้าเป็นเช่นนั้น] C จะถูกข้ามไปและการไหลของโครงการจะดำเนินต่อไปยังบล็อกถัดไปในกองซ้อน สิ่งนี้ช่วยให้หุ่นยนต์ VR สามารถทำพฤติกรรมที่ไม่ต่อเนื่องเช่นการหมุนหรือหยุดเมื่อตรวจพบสีบางอย่าง

    แผนภาพการไหลของตรรกะของ VEXcode VR บล็อกโครงการไปทางซ้ายผ่านตัวอย่างของหุ่นยนต์ VR ในภาพไปทางขวา ภาพแสดงให้เห็นว่าหุ่นยนต์ VR กำลังไปถึงดิสก์สีน้ำเงินและเลี้ยวซ้าย แผนภาพแสดงให้เห็นว่าข้อความ if ทำซ้ำตลอดไปและแต่ละข้อความจะถูกตรวจสอบแต่ละลูป หลังจากที่ตาด้านหน้าตรวจไม่พบสีเขียวมันจะตรวจสอบสีน้ำเงินถัดไปซึ่งจะส่งกลับมาเป็นจริงและหมุนหุ่นยนต์ไปทางซ้าย 90 องศา หลังจากนั้นการไหลของตรรกะยังคงดำเนินต่อไปตามกองตรวจสอบสีแดงและไม่มีอะไรเลย
  • [ถ้าเป็นเช่นนั้น] บล็อกจะถูกใช้กับ [Forever] บล็อกเพื่อให้แน่ใจว่ามีการตรวจสอบเงื่อนไขอย่างต่อเนื่อง

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

การใช้สวิทช์บล็อก 

นี่คือบล็อค Switch [Forever] คำสั่งสลับ Python สำหรับ ตลอดไป จะสร้างลูป ในขณะที่ โดยที่เงื่อนไขเป็น True คำสั่งที่ซ้อนกันอยู่ภายในลูปเมื่อนั้นจะถูกทำซ้ำตลอดไปเนื่องจากเงื่อนไขเป็นจริงเสมอ 

บล็อกสวิตช์ VEXcode VR ของบล็อก Forever รหัส Python เขียนว่า 'while True :' ซึ่งก็คือ Python ที่เทียบเท่ากับข้อความ forever

คำถาม

โปรดเลือกลิงก์ด้านล่างเพื่อเข้าถึงแบบทดสอบบทเรียน

Google Doc /.docx /.pdf