Compreendendo a sintaxe para criar funções no 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.

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: