Comprendre la syntaxe pour créer des fonctions dans VEXcode Pro V5

Définition de la fonction

Maintenant que nous avons parcouru quelques exemples, examinons la forme générale d'une définition de fonction :

void function-name() {

	Déclarations de variables, etc.
	Expressions...
	//aucun retour explicite n'est nécessaire.
}

Une fonction ne renvoie aucune valeur spéciale, ni aucun paramètre entrant.

void function-name(data-type variable) {

	Déclarations de variables, etc.
	Expressions...
	//aucun retour explicite n'est nécessaire.
}

Si vous voulez plusieurs variables, vous utilisez simplement "," comme délimiteur :

Une fonction ne renvoie aucune valeur spéciale, mais avec un paramètre.

nom de fonction void (variable de type de données, variable de type de données, etc.) {

	Déclarations de variables, etc.
	Expressions...
	//aucun retour explicite n'est nécessaire.
}

Une fonction ne renvoie aucune valeur spéciale, mais avec plus d'un paramètre.

nom de fonction void (variable de type de données, variable de type de données, etc.) {

	Déclarations de variables, etc.
	Expressions...
	renvoyer la valeur de retour
}

Une fonction renvoie une valeur d'un type de données spécifique et avec plus d'un paramètre d'entrée.

Le renvoie type d'une fonction doit être le même que le type de données de la valeur de retour renvoyée par la fonction . La valeur de retour  peut être une valeur constante ou une variable. Il doit être précédé du mot clé "return.

Les règles suivantes régissent le type de retour :

  • Il n'y a presque aucune restriction sur le type de retour, à l'exception du tableau. (Array est un autre sujet plus avancé concernant la façon de créer vos données. Cela sort du cadre de cet article et ne sera pas traité ici.
  • Spécifier que le type de retour « void » signifie qu'aucune valeur de retour n'est nécessaire. La clause « retour » est implicite. Cela signifie que vous devez indiquer explicitement « return » à la fin d'une fonction « void ».

Créer une fonction avant le main() ou après ?

Le compilateur lit votre fichier de haut en bas. Ainsi, l'ordre compte.

Prenons comme exemple la fonction simple du plus grand dénominateur commun (GCD). Vous obtiendrez une erreur : utilisation d'un identifiant non déclaré ' getGCD'

 VEXcode_V5_Text_xi2kumoPkA.png

En fait, cela est vrai qu'il s'agisse du bloc de fonction main( ) ou d'un autre bloc de fonction appelant, c'est-à-dire que le "bloc de fonction appelé" doit précéder le "bloc de fonction appelant".

Deux solutions possibles :

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


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

Déplacez la "fonction appelée" au-dessus du "bloc de fonction appelant", dans l'exemple "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 reste = 1;
  while (reste > 0) {
    reste = a % b ;
    a = b ;
    b = reste ;
  }
  renvoie a ;
}
	

Placez le prototype (également appelé signature) de la fonction avant le « bloc de fonction appelant ».


Et si vous souhaitez modulariser les fonctions dans différents fichiers ?

Étape 1 : Créez un fichier d'en-tête et placez le prototype de la fonction dans ce fichier.

par exemple. créer un fichier nommé « myFuncs.h »

Vous devez "ajouter" ce fichier d'en-tête dans votre projet avant de compiler votre code. Cela permet à l'IDE VEXcode Pro V5 "d'être au courant" de l'inclusion de ce nouveau fichier d'en-tête avant de commencer à construire votre projet.

Voici comment:

Dans ce fichier d'en-tête "common.h" (vous pouvez nommer ce que vous voulez, tant qu'il est alphanumérique sans espace.)

Étape 2 : Créez un fichier cpp distinct, par exemple, appelé common.cpp

//il s'agit du fichier common.cpp

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

Déplacez la fonction getGCD(...) dans ce fichier

#include "vex.h"
#include "common.h"
en utilisant l'espace de noms vex ;

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

Maintenant, tout ce que vous avez dans le fichier cpp principal consistera en ce qui suit

Référence : https://api.vexcode.cloud /v5/html/namespacevex.html

Les sujets futurs seront traités dans des sections plus avancées de la base de connaissances à l'avenir :

  • Passage par valeur vs passage par référence
  • Passer dans un tableau
  • Passer dans une structure

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