Comprendre la syntaxe pour créer des fonctions dans 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.

Définition de fonction

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

void nom-de-la-fonction() {

	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 nom-de-fonction(variable-de-type-de-données) {

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

Si vous souhaitez plusieurs variables, il vous suffit d'utiliser "," comme délimiteur :

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

void nom-de-fonction(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.

void nom-de-fonction(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 typerenvoied'une fonction doit être identique au type de données de la valeur de retour que cette fonction renvoie. valeur de retourpeut être une 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 abordé 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 ».

Faut-il créer la fonction avant ou après la fonction main() ?

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

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

 L'éditeur de code VEXcode Pro V5 affiche la fonction principale appelant getGCD avant sa définition, getGCD étant mis en évidence comme une erreur d'identificateur non déclaré.

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

Deux solutions possibles :

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


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

Déplacez la « fonction appelée » au-dessus du « bloc fonction appelant », dans l'exemple « main() ».

int getGCD(int, int);

int main() { 
	Brain.Screen.printAt(5,60, "PGCD ( %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;
  }
  return a;
}
	

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


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

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

par exemple, créez 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:

L'interface VEXcode Pro V5 permet d'ouvrir le menu contextuel du dossier inclus et de sélectionner l'option Nouveau fichier pour créer un fichier d'en-tête.

La fenêtre « Créer un nouveau fichier » affiche l'option « fichier d'en-tête C++ » sélectionnée, avec le nom de fichier common.h saisi.

L'éditeur de code VEXcode Pro V5 affiche la fonction getGCD définie dans un fichier common.cpp séparé.

Dans ce fichier d'en-tête « common.h » (vous pouvez nommer ce que vous voulez, à condition qu'il soit alphanumérique sans espace.)

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

La fenêtre « Créer un nouveau fichier » affiche l'option « Fichier source C++ » sélectionnée, avec le nom de fichier common.cpp saisi.

//Ceci est le fichier common.cpp

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

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

#include "vex.h"
#include "common.h"
using namespace vex;

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

Maintenant, tout ce que vous avez dans le fichier cpp principal sera composé des éléments suivants

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

Les sujets futurs seront abordés dans les sections plus avancées de la bibliothèque VEX à l'avenir :

  • Passer par valeur ou passer 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

Last Updated: