Skip to main content

บทที่ 1: อัลกอริทึมคืออะไร?

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

ผลการเรียนรู้

  • ระบุว่าอัลกอริทึมประกอบด้วยลำดับการเลือกและการทำซ้ำ (ลูป)
  • ระบุว่าอัลกอริทึมเป็นลำดับคำสั่งที่แม่นยำซึ่งนำไปใช้โดยใช้ภาษาโปรแกรมสำหรับกระบวนการที่จะดำเนินการโดยหุ่นยนต์ VR

อัลกอริทึม

อัลกอริทึมเป็นลำดับคำสั่งที่แม่นยำโดยใช้ภาษาโปรแกรมเช่น VEXcode VR Python สำหรับกระบวนการที่จะดำเนินการโดย VR Robot

องค์ประกอบพื้นฐานของอัลกอริทึมคือลำดับการเลือกและการทำซ้ำ

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

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

def main ():
	สำหรับค่าในช่วง (3):
		
		สำหรับค่าในช่วง (3):
			#1 ขับไปยังดิสก์โดยใช้ Down Eye Sensor
			ในขณะที่ไม่
				ใช่ down_eye.near_object (): 				drivetrain.drive (FORWARD)
				wait (5
			, 			msec)
			
			drivetrain.stop () 			 			#2 เลือกดิสก์
			magnet.energize (BOOST)
			
			#3 ขับไปยังเป้าหมายโดยใช้
			เซ็นเซอร์ระยะทาง 			drivetrain.turn_to_heading (180, DEGREES)
			ในขณะที่ front_distance.get_distance (
				MM) > 200: 				drivetrain.drive (FORWARD				)
				wait (5
			, 			msec) drivetrain.stop ()
			
			#4 Drop disk in
			goal 			magnet.energize (DROP
			) 			drivetrain.drive_for (REVERSE, 100, MM)
			
			#5. หันหน้าไปทางดิสก์ถัด
			ไป 			drivetrain.turn_to_heading (0, องศา)
			รอ (5, มิลลิวินาที)
			
		#6 เลี้ยวและขับไปยังเป้าหมายถัดไป
		drivetrain.turn_to_heading (90,
		DEGREES) 		drivetrain.drive_for (FORWARD, 800, MM)
		
		#7 หันไปที่
		ดิสก์ 		drivetrain.turn_to_heading (0, องศา)
		
	รอ (5, มิลลิวินาที)

ลำดับ

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

การเลือก

โครงการนี้ยังรวมถึงการเลือกซึ่งกำหนดส่วนต่างๆของโครงการที่ดำเนินการตามเงื่อนไขของเซ็นเซอร์ ประการแรก Down Eye Sensor ใช้เพื่อกำหนดว่า VR Robot อยู่ใกล้ดิสก์เมื่อใดดังนั้นจึงสามารถหยิบดิสก์ขึ้นมาได้ จากนั้นเซ็นเซอร์ระยะทางจะใช้เพื่อกำหนดว่าหุ่นยนต์ VR อยู่เหนือเป้าหมายเมื่อใดเพื่อให้สามารถวางดิสก์ลงได้  ข้อมูลโค้ดจากหน่วยที่ 8 รวมถึงสภาวะที่เน้นสองสภาวะในขณะที่ควบคุมการเคลื่อนไหวของหุ่นยนต์โดยอาศัยการอ่านค่าของเซ็นเซอร์ สภาพที่ถูกไฮไลต์ครั้งแรกในขณะที่ไม่ใช่ down_eye.near_object () สั่งให้หุ่นยนต์ขับไปข้างหน้าจนกว่าเซ็นเซอร์ตรวจจับดวงตาลงจะตรวจจับวัตถุที่อยู่ใกล้เคียงปล่อยให้มันเข้าใกล้ดิสก์ก่อนที่จะหยุด เงื่อนไขที่สองที่เน้นในขณะที่ front_distance.get_distance (MM) > 200 จะสั่งให้หุ่นยนต์ขับไปข้างหน้าจนกว่าจะอยู่ในระยะ 200 มิลลิเมตรจากเป้าหมายโดยใช้เซ็นเซอร์ระยะทางด้านหน้าสำหรับการวัดระยะใกล้ สิ่งเหล่านี้ในขณะที่เงื่อนไขสร้างลูปที่ทำให้หุ่นยนต์หยุดทำงานเฉพาะเมื่อตรงตามเงื่อนไขเซ็นเซอร์เฉพาะแต่ละตัวเท่านั้น

ในลูปแรก  การเลือกคำสั่งที่จะทำงานจะขึ้นอยู่กับค่าเซ็นเซอร์ที่รายงานโดย Down Eye Sensor

  • ในขณะที่ไม่มีการตรวจพบวัตถุหุ่นยนต์ VR จะขับเคลื่อนไปข้างหน้า
  • ในขณะที่ตรวจพบวัตถุหุ่นยนต์ VR จะหยุดทำงาน

ในการวนซ้ำ while ครั้งที่สอง การเลือกคำสั่งที่จะทำงานจะขึ้นอยู่กับค่าเซ็นเซอร์ที่รายงานโดยเซ็นเซอร์ระยะทาง

  • ในขณะที่ระยะทางที่รายงานมากกว่า 200 มิลลิเมตร (มม.) หุ่นยนต์ VR จะขับเคลื่อนไปข้างหน้า
  • ในขณะที่ระยะทางที่รายงานน้อยกว่า 50 มิลลิเมตร (มม.) หุ่นยนต์ VR จะหยุดการขับขี่และย้ายไปยังส่วนถัดไปของโครงการเพื่อเพิ่มพลังแม่เหล็กไฟฟ้า

การทำซ้ำ

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

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

คำถาม

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

Google Doc /.docx /.pdf