• Olá Visitante, se gosta do forum e pretende contribuir com um donativo para auxiliar nos encargos financeiros inerentes ao alojamento desta plataforma, pode encontrar mais informações sobre os várias formas disponíveis para o fazer no seguinte tópico: leia mais... O seu contributo é importante! Obrigado.

Funções Em Cpp

Serr@no™

GF Ouro
Membro Inactivo
Entrou
Set 23, 2006
Mensagens
1,690
Gostos Recebidos
0
Já tinha dito que a função main é a primeira a ser chamada, é como se fosse o corpo do programa. Mas o C++ não vive só da função main e podemos criar quantas funções quisermos como quisermos a fazer aquilo que quisermos!
#include <iostream>
using namespace std;
// programa que introduz as funções


void ola_mundo() // declaração + definição
{
cout<<"OlA Mundo!"<<endl;
}


void f1() // declaração + definição
{
cout<<"Estou na funcao f1!"<<endl;
}


void main()
{
ola_mundo();
f1();
cin.get();
}
O programa entra em main(), quando chega à instrução ola_mundo(); vai à procura dessa função e faz tudo o que ela mandar antes de proseguir.
Sempre usámos a palavra chave void antes da função main. O que ela indicava é que a função não retornava nada. Estas funções são denominadas de procedimentos.
Se quisermos que uma função retorne qualquer coisa, mudamos o tipo de retorno. O exemplo seguinte mostra uma função que retorna o maior de 2 valores.
#include <iostream>
using namespace std;
// programa que introduz as funções


int max( int a, int b ); // declaração


void main()
{
int v1, v2;
cout<<"introduza dois inteiros: "<<endl;
cin>> v1>> v2;


cout<<endl<<"O maior é "<< max(v1,v2) << endl;
cin.get();
}


int max( int a, int b ) // definição
{
return a>=b ? a : b;
}
A função max recebe dois valores como parâmetro, o que se vai fazer é que o compilador irá criar duas variáveis a e b e irá afectá-las com os valores de v1 e v2 respectivamente. É como se fossem criadas cópias dos valores originais.
Todas as funções que não retornem void têm obrigatoriamente de ter a palavra return a retornar qualquer coisa. No caso da função max o operador ternário irá ver qual o maior e retorna esse valor.
Sempre que o return é chamado a função acaba, e pode ser chamado a qualquer altura.
Aproveito para lançar também o conceito de variável global. Se houvesse uma variável declarada fora da função main ela estaria acessível em todas as funções do ficheiro. Exemplo:
#include <iostream>
using namespace std;


//variável global
int v1;


int max( int a, int b ); // declaração


void main()
{
int a;
v1 = 2; // correcto, v1 está acessível pois é global
}


void f1() // definição
{
v1 = 5; // correcto, v1 está acessível pois é global
a = 2; // ERRO! variavel declarada na função main e portanto só está acessivel em
// main! teria de haver também uma declaração int a; nesta função para que
// não desse erro
}
Mais uma coisa, é standard C++ que o tipo de retorno da função main seja inteiro. Há mesmo compiladores que não aceitam void main(). Por norma usa-se int main() { /.. / return 0; } A partir de agora não usarei mais void main().
Para solidificar o conceito de função e fazer uma revisão em tudo o que já foi falado, vou deixar aqui um jogo simples. O objectivo será o utilizador advinhar uma palavra que só o programa saberá. Não passo aqui o código pois iria ocupar muito espaço. Todas as funções e variáveis estão comentadas e explicadas, mas se tiver alguma dúvida pode sempre contactar-me por mail. Tente fazer uma evolução do jogo, incluir alguns temas, mais palavras, por mais opções!
 
Topo