Compreendendo a sintaxe para criar funções no VEXcode Pro V5

Definição de função

Agora que analisamos alguns exemplos, vamos dar uma olhada na forma geral de uma definição de função:

void function-name() {

	Declarações de variáveis, etc.
	Expressões...
	//nenhum retorno explícito é necessário.
}

Uma função não retorna nenhum valor especial nem parâmetros de entrada.

void nome-da-função(variável do tipo de dados) {

	Declarações de variáveis, etc.
	Expressões...
	//nenhum retorno explícito é necessário.
}

Se você quiser múltiplas variáveis, basta usar "," como delimitador:

Uma função não retorna nenhum valor especial, mas com um parâmetro.

void nome da função (variável de tipo de dados, variável de tipo de dados, etc.) {

	Declarações de variáveis, etc.
	Expressões...
	//nenhum retorno explícito é necessário.
}

Uma função não retorna nenhum valor especial, mas com mais de um parâmetro.

void nome da função (variável de tipo de dados, variável de tipo de dados, etc.) {

	Declarações de variáveis, etc.
	Expressões...
	retornar valor de retorno
}

Uma função retorna um valor de um tipo de dados específico e com mais de um parâmetro de entrada.

O tiporeturnde uma função deve ser igual ao tipo de dados do valor de retorno que a função retorna. Ode retornopode ser um valor constante ou uma variável. Deve ser precedido da palavra-chave “retorno.

As seguintes regras regem o tipo de retorno:

  • Quase não há restrições quanto ao tipo de retorno, exceto array. (Array é outro tópico mais avançado sobre como criar seus dados. Está fora do escopo deste artigo e não será abordado aqui.
  • Especificar que o tipo de retorno “void” significa que nenhum valor de retorno é necessário. A cláusula “return” está implícita. Isso significa que você deve declarar explicitamente “return” no final de uma função “void”.

Criando uma função antes do main() ou depois?

O compilador lê seu arquivo de cima para baixo. Portanto, a ordem importa.

Vamos pegar a função simples do Máximo Denominador Comum (GCD) como exemplo. Você receberá um erro:uso do identificador não declarado 'getGCD'

 VEXcode_V5_Text_xi2kumoPkA.png

Na verdade, isso é verdade quer seja do main() ou de outro bloco de função de chamada, ou seja, o “bloco de função chamado” deve preceder o “bloco de função de chamada”.

Duas soluções possíveis:

int getGCD(int a, int b) {
  int restante = 1;
  enquanto (resto > 0) {
    resto = a % b;
    =b;
    = resto;
  }
  retornar a;
}


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

Mova a “função chamada” acima do “bloco de função de chamada”, no exemplo “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 resto = 1;
  enquanto (restante > 0) {
    restante = a % b;
    =b;
    = resto;
  }
  retornar a;
}
	

Coloque o protótipo (também chamado de assinatura) da função antes do “bloco de função de chamada”.


E se você quiser modularizar funções em arquivos diferentes?

Passo 1: Crie um arquivo de cabeçalho e coloque o protótipo da função neste arquivo.

por exemplo, crie um arquivo chamado “myFuncs.h”

Você precisa “adicionar” este arquivo de cabeçalho ao seu projeto antes de compilar seu código. Isso permite que o IDE VEXcode Pro V5 “esteja ciente” da inclusão deste novo arquivo de cabeçalho antes de começar a construir seu projeto.

Aqui está como:

Neste arquivo de cabeçalho “common.h” (você pode nomear o que quiser, desde que seja alfanumérico sem espaço).

Etapa 2: Crie um arquivo cpp separado, por exemplo, chamado common.cpp

//este é o arquivo common.cpp

int getGCD(int a, int b) {
  int resto = 1;
  enquanto (resto > 0) {
    resto = a % b;
    =b;
    = resto;
  }
  retorne a;
}

Mova a função getGCD(...) para este arquivo

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

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

Agora, tudo o que você tem no arquivo cpp principal consistirá no seguinte

Referência:https://api.vexcode.cloud/v5/html/namespacevex.html

Os tópicos futuros serão abordados em seções mais avançadas da Biblioteca VEX no futuro:

  • Passagem por valor vs. passagem por referência
  • Passe em uma matriz
  • Passe em uma estrutura

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

Last Updated: