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 nome-da-função() {

	Declarações de variáveis, etc.
	Expressões...
	//Não é necessário retornar explicitamente.
}

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

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

	Declarações de variáveis, etc.
	Expressões...
	//Não é necessário retornar explicitamente.
Se pretender

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-tipo-de-dados, variável-tipo-de-dados, etc.) {

	Declarações de variáveis, etc.
	Expressões...
	//Não é necessário retornar explicitamente.
}

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

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

	Declarações de variáveis, etc.
	Expressões...
	devolver 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 tiporetornode uma função deve ser o mesmo que o tipo de dados do valor devolvido por essa função. O valor de 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”.

Criar uma função antes ou depois da função main()?

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. Receberá um erro:utilização do identificador não declarado 'getGCD'

 O editor de código VEXcode Pro V5 mostra a função principal a chamar getGCD antes da sua definição, com getGCD destacado como um erro de identificador não declarado.

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


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

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


E se quiser modularizar funções em ficheiros diferentes?

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

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:

Interface do VEXcode Pro V5 com menu de contexto da pasta "include" aberto e opção "Novo Ficheiro" selecionada para criar um ficheiro de cabeçalho.

A janela Criar Novo Ficheiro mostra a opção de ficheiro de cabeçalho C++ selecionada com o nome de ficheiro common.h introduzido.

O editor de código VEXcode Pro V5 mostra a função getGCD definida num ficheiro common.cpp separado.

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

Passo 2: Crie um ficheiro . cpp separado, por exemplo, chamado common.cpp.

A janela Criar Novo Ficheiro mostra a opção de ficheiro fonte C++ selecionada com o nome de ficheiro common.cpp introduzido.

//este é o ficheiro common.cpp

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

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

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

int main() { 
  vexcodeInit();
	Brain.Screen.printAt(5,60, "MDC ( %d, %d ) = %d", getMDC(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: