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'
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:



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.

//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