Tìm hiểu cú pháp tạo hàm trong 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.

định nghĩa hàm

Bây giờ chúng ta đã xem qua một số mẫu, hãy xem dạng tổng quát của định nghĩa hàm:

void function-name() {

	Khai báo biến, v.v.
	Biểu thức...
	// không cần trả lại rõ ràng.
}

Hàm không trả về giá trị đặc biệt cũng như không có tham số đầu vào.

void function-name(data-type Variable) {

	Khai báo biến, v.v.
	Biểu thức...
	// không cần trả lại rõ ràng.
}

Nếu bạn muốn có nhiều biến, bạn chỉ cần sử dụng "," làm dấu phân cách:

Hàm không trả về giá trị đặc biệt nào nhưng có một tham số.

Tên hàm void (biến kiểu dữ liệu, biến kiểu dữ liệu, v.v.) {

	Khai báo biến, v.v.
	Biểu thức...
	// không cần trả lại rõ ràng.
}

Một hàm không trả về giá trị đặc biệt nào nhưng có nhiều hơn một tham số.

Tên hàm void (biến kiểu dữ liệu, biến kiểu dữ liệu, v.v.) {

	Khai báo biến, v.v.
	Biểu thức...
	trả về giá trị trả về
}

Hàm trả về giá trị của một kiểu dữ liệu cụ thể và có nhiều hơn một tham số đầu vào.

Kiểutrả vềcủa hàm phải giống với kiểu dữ liệu của giá trị trả về mà hàm trả về. Giá trị trả vềcó thể là giá trị không đổi hoặc biến. Trước nó phải có từ khóa “return.

Các quy tắc sau đây chi phối kiểu trả về:

  • Hầu như không có hạn chế nào về kiểu trả về, ngoại trừ mảng. (Mảng là một chủ đề nâng cao khác liên quan đến cách tạo dữ liệu của bạn. Nó nằm ngoài phạm vi của bài viết này và không được đề cập ở đây.
  • Chỉ định rằng kiểu trả về “void” có nghĩa là không cần giá trị trả về. Mệnh đề “trở lại” là ngầm định. Điều đó có nghĩa là bạn phải nêu rõ ràng “return” ở cuối hàm “void”.

Tạo hàm trước main() hay sau?

Trình biên dịch đọc tệp của bạn từ trên xuống dưới. Vì vậy, thứ tự không quan trọng.

Hãy lấy hàm Mẫu số chung lớn nhất (GCD) đơn giản làm ví dụ. Bạn sẽ gặp lỗi:sử dụng mã định danh không được khai báo 'getGCD'

 Ảnh chụp màn hình giao diện lập trình VEXcode V5 hiển thị nhiều khối mã hóa và tùy chọn khác nhau để lập trình hệ thống VEX Robotics, minh họa các tính năng có sẵn cho người dùng trong phần lập trình.

Trên thực tế, điều này đúng cho dù nó đến từ khối chức năng gọi chính ( ) hay khối chức năng gọi khác, tức là “khối chức năng được gọi” phải đứng trước “khối chức năng gọi”.

Hai giải pháp khả thi:

int getGCD(int a, int b) {
  int dư = 1;
  while (dư lượng > 0) {
    dư = a % b;
    a = b;
    b = số dư;
  }
  trả về a;
}


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

Di chuyển “hàm được gọi” phía trên “khối hàm gọi” trong ví dụ "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 dư = 1;
  while (dư lượng > 0) {
    dư = a % b;
    a = b;
    b = số dư;
  }
  trả lại a;
}
	

Đặt nguyên mẫu (còn gọi là chữ ký) của hàm trước “khối hàm gọi”.


Điều gì sẽ xảy ra nếu bạn muốn mô-đun hóa các chức năng trong các tệp khác nhau?

Bước 1: Tạo tệp tiêu đề và đặt nguyên mẫu của hàm vào tệp này.

ví dụ: tạo một tập tin có tên “myFuncs.h”

Bạn cần “thêm” tệp tiêu đề này vào dự án của mình trước khi biên dịch mã. Điều này cho phép VEXcode Pro V5 IDE “nhận biết” việc đưa vào tệp tiêu đề mới này trước khi nó bắt đầu xây dựng dự án của bạn.

Đây là cách thực hiện:

Ảnh chụp màn hình giao diện lập trình giới thiệu các tính năng của danh mục V5, bao gồm các đoạn mã và công cụ dành cho nhà phát triển, minh họa các chức năng có sẵn trong phần lập trình.

Ảnh chụp màn hình nội dung liên quan đến lập trình trong Mô tả danh mục V5, giới thiệu các tính năng và chức năng chính dành cho nhà phát triển.

Ảnh chụp màn hình mô tả danh mục Lập trình V5, giới thiệu các tính năng và chức năng chính liên quan đến lập trình trên nền tảng V5.

Trong tệp tiêu đề này “common.h” (bạn có thể đặt tên bất cứ thứ gì bạn muốn, miễn là nó có chữ và số không có khoảng trắng.)

Bước 2: Tạo một file cpp riêng, ví dụ có tên common.cpp

Ảnh chụp màn hình giao diện lập trình giới thiệu nhiều tùy chọn và tính năng mã hóa khác nhau, minh họa chức năng và bố cục của phần mô tả danh mục V5 trong phần lập trình.

// đây là tệp common.cpp

int getGCD(int a, int b) {
  int còn lại = 1;
  while (dư lượng > 0) {
    dư = a % b;
    a = b;
    b = số dư;
  }
  trả lại a;
}

Di chuyển hàm getGCD(...) vào tệp này

#include "vex.h"
#include "common.h"
sử dụng không gian tên vex;

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

Bây giờ, tất cả những gì bạn có trong tệp cpp chính sẽ bao gồm những thứ sau

Tham khảo:https://api.vexcode.cloud/v5/html/namespacevex.html

Các chủ đề trong tương lai sẽ được đề cập trong các phần nâng cao hơn của Thư viện VEX trong tương lai:

  • Truyền theo giá trị so với truyền theo tham chiếu
  • Truyền vào một mảng
  • Truyền vào một cấu trúc

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

Last Updated: