Verstehen der Syntax zum Erstellen von Funktionen in 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.

Funktionsdefinition

Nachdem wir nun einige Beispiele durchgegangen sind, schauen wir uns die allgemeine Form einer Funktionsdefinition an:

void function-name() {

	Deklarationen von Variablen usw.
	Ausdrücke...
	//Es ist keine explizite Rückgabe erforderlich.
}

Eine Funktion gibt keinen besonderen Wert und keine eingehenden Parameter zurück.

void Funktionsname(Datentypvariable) {

	Variablendeklarationen usw.
	Ausdrücke...
	//Es ist keine explizite Rückgabe erforderlich.
}

Wenn Sie mehrere Variablen möchten, verwenden Sie einfach „“, als Trennzeichen:

Eine Funktion gibt keinen besonderen Wert zurück, sondern einen Parameter.

void Funktionsname (Datentypvariable, Datentypvariable usw.) {

	Deklarationen von Variablen usw.
	Ausdrücke...
	//Es ist keine explizite Rückgabe erforderlich.
}

Eine Funktion gibt keinen besonderen Wert zurück, sondern mit mehr als einem Parameter.

void Funktionsname (Datentypvariable, Datentypvariable usw.) {

	Deklarationen von Variablen usw.
	Ausdrücke...
	return Rückgabewert
}

Eine Funktion gibt einen Wert eines bestimmten Datentyps und mit mehr als einem Eingabeparameter zurück.

Der TypRückgabeeiner Funktion muss mit dem Datentyp des Rückgabewerts übereinstimmen, den die Funktion zurückgibt. DerRückgabewertkann ein konstanter Wert oder eine Variable sein. Ihm muss das Schlüsselwort „return“ vorangestellt werden.

Die folgenden Regeln regeln den Rückgabetyp:

  • Für den Rückgabetyp gibt es fast keine Einschränkungen, mit Ausnahme des Arrays. (Array ist ein weiteres fortgeschritteneres Thema zum Erstellen Ihrer Daten. Dies liegt außerhalb des Rahmens dieses Artikels und wird hier nicht behandelt.
  • Die Angabe des Rückgabetyps „void“ bedeutet, dass kein Rückgabewert erforderlich ist. Die Klausel „return“ ist implizit. Das bedeutet, dass Sie am Ende einer „void“-Funktion explizit „return“ angeben müssen.

Eine Funktion vor oder nach main() erstellen?

Der Compiler liest Ihre Datei von oben nach unten. Daher ist die Reihenfolge wichtig.

Nehmen wir als Beispiel die einfache Funktion „Größter gemeinsamer Nenner“ (GCD). Sie erhalten eine Fehlermeldung:Verwendung des nicht deklarierten Bezeichners „getGCD“

 Screenshot der VEXcode V5-Programmierschnittstelle, der verschiedene Codierungsblöcke und Optionen zum Programmieren von VEX-Robotiksystemen zeigt und die den Benutzern im Programmierbereich zur Verfügung stehenden Funktionen veranschaulicht.

Tatsächlich gilt dies unabhängig davon, ob es sich um main() oder einen anderen aufrufenden Funktionsblock handelt, d. h. der „aufgerufene Funktionsblock“ muss vor dem „aufrufenden Funktionsblock“ stehen.

Zwei mögliche Lösungen:

int getGCD(int a, int b) {
  int rest = 1;
  while (Rest > 0) {
    Rest = a % b;
    a = b;
    b = Rest;
  }
  return a;
}


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

Verschieben Sie die „aufgerufene Funktion“ über den „aufrufenden Funktionsblock“, im Beispiel „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 rest = 1;
  while (Rest > 0) {
    Rest = a % b;
    a = b;
    b = Rest;
  }
  return a;
}
	

Platzieren Sie den Prototyp (auch Signatur genannt) der Funktion vor dem „aufrufenden Funktionsblock“.


Was ist, wenn Sie Funktionen in verschiedenen Dateien modularisieren möchten?

Schritt 1: Erstellen Sie eine Header-Datei und fügen Sie den Prototyp der Funktion in diese Datei ein.

Erstellen Sie beispielsweise eine Datei mit dem Namen „myFuncs.h“.

Sie müssen diese Header-Datei Ihrem Projekt „hinzufügen“, bevor Sie Ihren Code kompilieren. Dadurch kann die VEXcode Pro V5-IDE die Einbeziehung dieser neuen Header-Datei „erkennen“, bevor sie mit der Erstellung Ihres Projekts beginnt.

Hier ist, wie:

Screenshot einer Programmierschnittstelle, die Funktionen der Kategorie V5 vorführt, einschließlich Codeausschnitten und Tools für Entwickler, und die im Programmierbereich verfügbaren Funktionen veranschaulicht.

Screenshot von programmierungsbezogenem Inhalt in der V5-Kategoriebeschreibung, der wichtige Funktionen und Funktionalitäten für Entwickler zeigt.

Screenshot der Kategoriebeschreibung „V5-Programmierung“, der die wichtigsten Merkmale und Funktionen im Zusammenhang mit der Programmierung auf der V5-Plattform zeigt.

In dieser Header-Datei „common.h“ (Sie können den Namen beliebig benennen, solange er alphanumerisch und ohne Leerzeichen ist.)

Schritt 2: Erstellen Sie eine separate CPP-Datei, z. B. mit dem Namen common.cpp

Screenshot einer Programmierschnittstelle, die verschiedene Codierungsoptionen und -funktionen zeigt und die Funktionalität und das Layout der V5-Kategoriebeschreibung im Programmierabschnitt illustriert.

//Dies ist die common.cpp-Datei

int getGCD(int a, int b) {
  int rester = 1;
  while (Rest > 0) {
    Rest = a % b;
    a = b;
    b = Rest;
  }
  return a;
}

Verschieben Sie die Funktion getGCD(...) in diese Datei

#include „vex.h“
#include „common.h“
mit Namespace vex;

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

Jetzt besteht die Haupt-CPP-Datei nur noch aus Folgendem

Referenz:https://api.vexcode.cloud/v5/html/namespacevex.html

Zukünftige Themen werden in Zukunft in fortgeschritteneren Abschnitten der VEX-Bibliothek behandelt:

  • Wertübergabe vs. Referenzübergabe
  • Übergeben Sie ein Array
  • Übergeben Sie eine Struktur

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

Last Updated: