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 Funktionsname() {

	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(Variable vom Datentyp) {

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

Wenn Sie mehrere Variablen wünschen, verwenden Sie einfach "," als Trennzeichen:

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

void Funktionsname(Variable vom Datentyp, Variable vom Datentyp 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(Variable vom Datentyp, Variable vom Datentyp usw.) {

	Deklarationen von Variablen usw.
	Ausdrücke...
	return return-value
}

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

Der Typreturneiner Funktion muss mit dem Datentyp des Rückgabewerts übereinstimmen, den die Funktion zurückgibt. Der Rü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.

Die Funktion soll vor oder nach main() erstellt werden?

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). Es wird ein Fehler angezeigt:Verwendung des nicht deklarierten Bezeichners 'getGCD'

 Der Code-Editor VEXcode Pro V5 zeigt, wie die Hauptfunktion getGCD aufruft, bevor sie definiert ist. getGCD wird als nicht deklarierter Bezeichner hervorgehoben.

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 remainder = 1;
  while (remainder > 0) {
    remainder = a % b;
    a = b;
    b = remainder;
  }
  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 remainder = 1;
  while (remainder > 0) {
    remainder = a % b;
    a = b;
    b = remainder;
  }
  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:

Die Benutzeroberfläche von VEXcode Pro V5 ist geöffnet, das Kontextmenü des Include-Ordners ist aktiv und die Option „Neue Datei“ ist ausgewählt, um eine Header-Datei zu erstellen.

Im Fenster „Neue Datei erstellen“ ist die Option „C++-Headerdatei“ ausgewählt und der Dateiname common.h eingegeben.

Der VEXcode Pro V5 Code-Editor zeigt die getGCD-Funktion an, die in einer separaten common.cpp-Datei definiert ist.

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.

Im Fenster „Neue Datei erstellen“ ist die Option „C++-Quelldatei“ ausgewählt und der Dateiname common.cpp eingegeben.

// Dies ist die Datei common.cpp

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

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

#include "vex.h"
#include "common.h"
using 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: