ทำความเข้าใจไวยากรณ์เพื่อสร้างฟังก์ชันใน VEXcode Pro V5

The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.

VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.

นิยามฟังก์ชัน

ตอนนี้เราได้ดูตัวอย่างบางส่วนแล้ว มาดูรูปแบบทั่วไปของนิยามฟังก์ชันกันดีกว่า:

void function-name() {

	การประกาศตัวแปร ฯลฯ
	นิพจน์...
	//ไม่จำเป็นต้องส่งคืนอย่างชัดเจน
}

ฟังก์ชันไม่ส่งกลับค่าพิเศษหรือไม่มีพารามิเตอร์ขาเข้า

ชื่อฟังก์ชันเป็นโมฆะ (ตัวแปรประเภทข้อมูล) {

	การประกาศตัวแปร ฯลฯ
	นิพจน์...
	//ไม่จำเป็นต้องส่งคืนอย่างชัดเจน
}

หากคุณต้องการหลายตัวแปร คุณเพียงใช้ "," เป็นตัวคั่น:

ฟังก์ชันไม่ส่งคืนค่าพิเศษ แต่มีพารามิเตอร์เดียว

ชื่อฟังก์ชันเป็นโมฆะ (ตัวแปรประเภทข้อมูล, ตัวแปรประเภทข้อมูล ฯลฯ ) {

	การประกาศตัวแปร ฯลฯ
	นิพจน์...
	//ไม่จำเป็นต้องส่งคืนอย่างชัดเจน
}

ฟังก์ชันไม่ส่งคืนค่าพิเศษ แต่มีพารามิเตอร์มากกว่าหนึ่งตัว

ชื่อฟังก์ชันเป็นโมฆะ (ตัวแปรประเภทข้อมูล, ตัวแปรประเภทข้อมูล ฯลฯ ) {

	การประกาศตัวแปร ฯลฯ
	นิพจน์...
	ส่งกลับค่าส่งคืน
}

ฟังก์ชันส่งคืนค่าของประเภทข้อมูลเฉพาะและมีพารามิเตอร์มากกว่าหนึ่งพารามิเตอร์

ประเภทreturnของฟังก์ชันจะต้องเหมือนกับประเภทข้อมูลของค่าที่ส่งคืนที่ฟังก์ชันส่งคืน ค่าส่งคืนเป็นค่าคงที่หรือตัวแปรก็ได้ ต้องนำหน้าด้วยคีย์เวิร์ด “return

กฎต่อไปนี้ควบคุมประเภทการคืนสินค้า:

  • แทบไม่มีข้อจำกัดเกี่ยวกับประเภทการส่งคืน ยกเว้นอาร์เรย์ (อาร์เรย์เป็นหัวข้อขั้นสูงอีกหัวข้อหนึ่งเกี่ยวกับวิธีสร้างข้อมูลของคุณ อยู่นอกเหนือขอบเขตของบทความนี้ และไม่ครอบคลุมในที่นี้
  • การระบุว่าประเภทการส่งคืนเป็น "โมฆะ" หมายความว่าไม่จำเป็นต้องมีค่าส่งคืน คำว่า "การกลับมา" นั้นเป็นนัย นั่นหมายความว่าคุณต้องระบุอย่างชัดเจนว่า "return" ที่ส่วนท้ายของฟังก์ชัน "void"

การสร้างฟังก์ชั่นก่อน main() หรือหลัง?

คอมไพเลอร์จะอ่านไฟล์ของคุณจากบนลงล่าง ดังนั้นคำสั่งซื้อจึงมีความสำคัญ

ลองใช้ฟังก์ชันตัวส่วนร่วมมาก (GCD) แบบธรรมดาเป็นตัวอย่าง คุณจะได้รับข้อผิดพลาด:การใช้ตัวระบุที่ไม่ได้ประกาศ 'getGCD'

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

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

สองวิธีที่เป็นไปได้:

int getGCD (int a, int b) {
  ส่วนที่เหลือ int = 1;
  ในขณะที่ (ส่วนที่เหลือ > 0) { ส่วนที่เหลือ
    = a % b;
    ก = ข;
    b = เศษ;
  }
  กลับ;
}


int main() {
	Brain.Screen.printAt(5,60, “GCD ( %d, %d ) = %d”, getGCD(60, 100) );
}
	

ย้าย “ฟังก์ชันที่ถูกเรียก” ไว้เหนือ “บล็อกฟังก์ชันการเรียก” ในตัวอย่าง "main()"

int getGCD(int, int);

int main() { 
	Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(60, 100) );
}

int getGCD(int a, int b) {
  int ส่วนที่เหลือ = 1;
  ในขณะที่ (ส่วนที่เหลือ > 0) { ส่วนที่เหลือ
    = a % b;
    ก = ข;
    b = เศษ;
  }
  กลับ;
}
	

วางต้นแบบ (หรือที่เรียกว่าลายเซ็นต์) ของฟังก์ชันไว้หน้า "บล็อกฟังก์ชันการเรียก"


จะทำอย่างไรถ้าคุณต้องการทำให้ฟังก์ชันเป็นโมดูลในไฟล์ต่างๆ?

ขั้นตอนที่ 1: สร้างไฟล์ส่วนหัว และใส่ต้นแบบของฟังก์ชันลงในไฟล์นี้

เช่น สร้างไฟล์ชื่อ “myFuncs.h”

คุณต้อง "เพิ่ม" ไฟล์ส่วนหัวนี้ในโครงการของคุณก่อนที่จะรวบรวมโค้ดของคุณ ซึ่งช่วยให้ VEXcode Pro V5 IDE “รับรู้” การรวมไฟล์ส่วนหัวใหม่นี้ก่อนที่จะเริ่มสร้างโปรเจ็กต์ของคุณ

นี่คือวิธีการ:

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

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

ภาพหน้าจอของคำอธิบายหมวดหมู่การเขียนโปรแกรม V5 แสดงคุณสมบัติหลักและฟังก์ชันต่างๆ ที่เกี่ยวข้องกับการเขียนโปรแกรมในแพลตฟอร์ม V5

ในไฟล์ส่วนหัวนี้ “common.h” (คุณสามารถตั้งชื่ออะไรก็ได้ที่คุณต้องการ ตราบใดที่เป็นตัวอักษรและตัวเลขโดยไม่มีช่องว่าง)

ขั้นตอนที่ 2: สร้างไฟล์ cpp แยกต่างหาก เช่น ชื่อ common.cpp

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

//นี่คือไฟล์ common.cpp

int getGCD(int a, int b) {
  int ส่วนที่เหลือ = 1;
  ในขณะที่ (ส่วนที่เหลือ > 0) { ส่วนที่เหลือ
    = a % b;
    ก = ข;
    b = เศษ;
  }
  กลับ;
}

ย้ายฟังก์ชัน getGCD(...) ลงในไฟล์นี้

#include "vex.h"
#include "common.h"
ใช้เนมสเปซ vex;

int main() { 
  vexcodeInit();
	Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(60, 100) );
}

ตอนนี้สิ่งที่คุณมีในไฟล์ cpp หลักจะประกอบด้วยสิ่งต่อไปนี้

อ้างอิง:https://api.vexcode.cloud/v5/html/namespacevex.html

หัวข้อในอนาคตจะกล่าวถึงในส่วนขั้นสูงของ VEX Library ในอนาคต:

  • ส่งผ่านตามค่าเทียบกับส่งผ่านโดยการอ้างอิง
  • ผ่านในอาร์เรย์
  • ผ่านเข้าไปในโครงสร้าง

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: