C++#
เอกสารอ้างอิง API ของ VEX IQ (รุ่นที่ 1) ในภาษา C++ อธิบายเกี่ยวกับคลาส อ็อบเจ็กต์ คอนสตรัคเตอร์ ฟังก์ชันสมาชิก และตัวแปรที่ใช้ในโปรเจ็กต์ VEXcode C++
ใช้เอกสารอ้างอิงนี้เมื่อคุณต้องการทำความเข้าใจวิธีการสร้างอุปกรณ์หรือฟีเจอร์ ตรวจสอบว่าควรใช้รูปแบบการเรียกใช้ฟังก์ชันใด หรือเปรียบเทียบฟังก์ชันสมาชิกที่เกี่ยวข้องในคลาสเดียวกัน
คำสั่ง C++ ถูกใช้ในโปรเจ็กต์ C++ ของ VEXcode IQ หน้าเว็บ C++ มีการจัดเรียงแตกต่างจากหน้าเว็บ Blocks เนื่องจากคำสั่งหลายคำสั่งเป็นของคลาส หน้าเว็บอาจอธิบายถึงคลาสและวิธีการสร้างอ็อบเจ็กต์ก่อน จากนั้นจึงแสดงรายการฟังก์ชันสมาชิกที่สามารถเรียกใช้กับอ็อบเจ็กต์นั้นได้
วิธีการอ่านหน้าข้อมูลคลาสของภาษา C++#
โดยทั่วไปแล้ว หน้าแสดงโครงสร้างคลาสของภาษา C++ จะมีลำดับดังนี้:
บทนำ - อธิบายว่าคลาสนี้หมายถึงอะไรและมีประโยชน์เมื่อใด
คลาสที่สืบทอด - แสดงรายการคลาสใดๆ ที่อิงตามคลาสนี้ หากมี
ตัวสร้างคลาส - แสดงไวยากรณ์ที่ใช้ในการสร้างอ็อบเจ็กต์จากคลาส
ตัวทำลายคลาส - แสดงไวยากรณ์ที่ใช้ในการทำลายวัตถุและปล่อยทรัพยากรของวัตถุนั้น หากมี
พารามิเตอร์ - อธิบายพารามิเตอร์ของคอนสตรัคเตอร์ที่ใช้ในการสร้างอ็อบเจ็กต์
ตัวอย่าง - แสดงวิธีการสร้างอ็อบเจ็กต์ในโค้ด
ฟังก์ชันสมาชิก - แสดงรายการฟังก์ชันที่อยู่ในคลาส โดยมักจัดกลุ่มตามวัตถุประสงค์
คำอธิบายฟังก์ชัน - อธิบายฟังก์ชันสมาชิกแต่ละตัว รวมถึงฟังก์ชันที่มีให้ใช้งาน พารามิเตอร์ ค่าที่ส่งคืน หมายเหตุ และตัวอย่าง
ไม่ใช่ทุกหน้าจะมีทุกส่วน ตัวอย่างเช่น บางหน้าไม่มีคลาสที่สืบทอดมา และบางฟังก์ชันไม่มีพารามิเตอร์หรือค่าส่งคืน
องค์ประกอบ API ทั่วไปของ C++#
องค์ประกอบ |
มันหมายความว่าอย่างไร |
|---|---|
ระดับ |
ประเภท C++ สำหรับอุปกรณ์หรือคุณลักษณะ เช่น |
วัตถุ |
อินสแตนซ์ที่มีชื่อซึ่งสร้างขึ้นจากคลาส เช่น |
ผู้สร้าง |
โค้ดที่ใช้สร้างอ็อบเจ็กต์จากคลาส |
ฟังก์ชันสมาชิก |
คำสั่งที่เรียกใช้กับวัตถุ เช่น |
ฟังก์ชันที่มีให้ใช้งาน |
รูปแบบฟังก์ชันที่แน่นอนเพียงรูปแบบเดียวที่สามารถใช้สำหรับฟังก์ชันสมาชิกได้ ฟังก์ชันสมาชิกบางฟังก์ชันอาจมีฟังก์ชันให้เลือกใช้มากกว่าหนึ่งแบบ |
พารามิเตอร์ |
ค่าที่ส่งเข้าไปในคอนสตรัคเตอร์หรือฟังก์ชันเพื่อควบคุมการทำงานของมัน |
ค่าที่ส่งคืน |
ค่าที่ฟังก์ชันส่งคืน เช่น |
คำศัพท์พื้นฐานของภาษา C++#
ภาคเรียน |
มันหมายความว่าอย่างไร |
|---|---|
ตัวแปร |
ชื่อที่เก็บค่า เช่น |
พิมพ์ |
ประเภทของข้อมูลที่จัดเก็บ เช่น |
สตริง |
ข้อความภายในเครื่องหมายคำพูด เช่น |
ภายใน |
ประเภทจำนวนเต็มบวกหรือลบ เช่น |
สองเท่า |
ประเภทตัวเลขที่สามารถมีจุดทศนิยมได้ เช่น |
บูล |
ค่าที่เป็น |
การโต้แย้ง |
ค่าที่ส่งผ่านเข้าไปในฟังก์ชันสมาชิกหรือการเรียกฟังก์ชัน เช่น |
ตัวสร้างและวัตถุ#
ก่อนที่จะใช้ฟังก์ชันสมาชิกจากคลาส C++ หลายๆ คลาส จำเป็นต้องมีอ็อบเจ็กต์อยู่ก่อนแล้ว โดยคอนสตรัคเตอร์จะแสดงวิธีการสร้างอ็อบเจ็กต์นั้น
ตัวอย่างเช่น สามารถสร้างอ็อบเจ็กต์ Bumper Switch ได้โดยการระบุ Smart Port ที่เชื่อมต่อกับเซ็นเซอร์ให้กับคอนสตรัคเตอร์:
bumper Bumper1 = bumper(PORT1);
หลังจากสร้างอ็อบเจ็กต์แล้ว สามารถเรียกใช้ฟังก์ชันสมาชิกของอ็อบเจ็กต์นั้นได้:
Bumper1.pressing();
ใน VEXcode การกำหนดค่าอุปกรณ์มักจะถูกสร้างขึ้นโดยอัตโนมัติโดยเมนูอุปกรณ์ ใน VS Code อาจจำเป็นต้องเขียนคอนสตรัคเตอร์ด้วยตนเอง
การเลือกฟังก์ชันที่เหมาะสมที่มีอยู่#
ฟังก์ชันสมาชิกบางฟังก์ชันมีฟังก์ชันให้เลือกใช้มากกว่าหนึ่งฟังก์ชัน แต่ละฟังก์ชันใช้ชุดพารามิเตอร์ที่แตกต่างกัน ดังนั้นให้เลือกฟังก์ชันที่ตรงกับค่าที่โครงการของคุณต้องการ
ตัวอย่างเช่น ฟังก์ชันระบบขับเคลื่อนอาจมีเวอร์ชันหนึ่งที่ใช้ความเร็วปัจจุบัน และอีกเวอร์ชันหนึ่งที่ให้โปรเจ็กต์เลือกความเร็วได้:
void drive(directionType dir);
void drive(directionType dir, double velocity, velocityUnits units);
ทั้งสองเวอร์ชันเรียกใช้ฟังก์ชัน driveกัน แต่เวอร์ชันที่สองให้การควบคุมมากกว่าเพราะมีพารามิเตอร์ความเร็วรวมอยู่ด้วย
ตัวอย่างการป้อนฟังก์ชัน#
ขับ#
คำสั่ง drive จะทำให้หุ่นยนต์เคลื่อนที่ไปข้างหน้าหรือถอยหลังอย่างไม่มีที่สิ้นสุด หุ่นยนต์จะเคลื่อนที่ต่อไปจนกว่าจะได้รับคำสั่งอื่น เช่น การเลี้ยวหรือการหยุด
ฟังก์ชันที่มีให้ใช้งาน
void drive(directionType dir);
void drive(directionType dir, double velocity, velocityUnits units);
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
ทิศทางการเคลื่อนที่ของหุ่นยนต์: |
|
|
ความเร็วในการขับเคลื่อนสามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ |
|
|
หน่วยความเร็ว: |
ค่าที่ส่งคืน
ฟังก์ชันนี้ไม่ส่งค่ากลับ
หมายเหตุ
driveคือคำสั่งที่ไม่รอ โปรเจ็กต์จะรันโค้ดบรรทัดถัดไปทันทีหุ่นยนต์จะเคลื่อนที่ต่อไปจนกว่าจะมีการเรียกใช้คำสั่ง
stopหรือจนกว่าจะมีการทำงานของฟังก์ชันการเคลื่อนที่ของระบบขับเคลื่อนอื่นๆisDoneและisMovingไม่ได้ใช้กับdriveเพราะdriveไม่มีระยะเป้าหมาย
ตัวอย่าง
// Drive forward and back.
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
พฤติกรรมการรอคอยและการไม่รอคอย#
ฟังก์ชันการเคลื่อนที่บางฟังก์ชันใน C++ จะรอจนกว่าการกระทำจะเสร็จสิ้นก่อนที่โปรเจ็กต์จะย้ายไปยังบรรทัดโค้ดถัดไป ในขณะที่ฟังก์ชันอื่นๆ จะเริ่มการกระทำและอนุญาตให้บรรทัดถัดไปทำงานได้ทันที
กำลังรอ - โปรเจ็กต์จะรอจนกว่าฟังก์ชันจะทำงานเสร็จสิ้น
ไม่ต้องรอ - โปรเจ็กต์จะเริ่มฟังก์ชันและดำเนินการต่อในบรรทัดถัดไปทันที
ฟังก์ชันบางฟังก์ชันมีพารามิเตอร์ เช่น waitForCompletion สำหรับฟังก์ชันเหล่านั้น true จะทำให้โปรเจ็กต์รอ ในขณะที่ false จะทำให้บรรทัดถัดไปทำงานทันที
คำสั่งในหัวข้อย่อย#
คำสั่งในภาษา C++ จะถูกจัดระเบียบตามอุปกรณ์หรือหัวข้อ ตัวอย่างเช่น คำสั่งสำหรับสมอง (Brain), ตัวควบคุม (Controller), ระบบขับเคลื่อน (Drivetrain), เหตุการณ์ (Events), การเคลื่อนไหว (Motion), อุปกรณ์สมาร์ทพอร์ต (Smart Port), เธรด (Threads) และตรรกะ (Logic) จะถูกจัดกลุ่มไว้ในหมวดหมู่ย่อยของตนเอง