Você está na página 1de 12

Programação II

Acetatos das Aulas Teóricas - 2011


Aula – : FUNÇÕES
 Definição
 Funções são as estruturas que permitem ao utilizador separar os seus
programas em blocos.
 Declaração
tipo_de_retorno nome_da_função (lista_de_parâmetros)
{
corpo_da_função
}
 O tipo-de-retorno é o tipo de variável que a função vai retornar.
 Uma função para qual não se declara o tipo de retorno é considerada
como retornando um inteiro.
 A lista de parâmetros é uma lista com a seguinte forma geral:
tipo nome1, tipo nome2, ... , tipo nomeN
 No corpo da função é onde as entradas são processadas e as saídas são
geradas

UniMETRO/FATEC/LCC-BIF
ProgramaçãoII/ M.T.Ditutala 2
Funções – Comando Return
 Encerra a execução de uma função.
 É usado para retornar um determinado valor,
no local em que a função foi chamada.
 Caso a função não retorna valor, deve ser
declarada como tendo tipo de retorno void
 O comando return tem a seguinte forma geral:
return valor_de_retorno;
ou
return;

UniMETRO/FATEC/LCC-BIF
ProgramaçãoII/ M.T.Ditutala 3
Funções – Chamadas e Retorno
 Uma função só é executada se for chamada.
 Uma função que chama a outra chama-se função
chamadora
 A própria função é conhecida como função
chamada.
 Quando se chama uma função, o controlo de
execução é desviado para a primeira instrução da
função.
 Quando se retorna para a função chamadora a
instrução chamadora é substituída pelo valor
retornado pela função.
 Quando se retorna para a função chamadora
executa-se a instrução seguinte a chamada.
UniMETRO/FATEC/LCC-BIF
ProgramaçãoII/ M.T.Ditutala 4
Funções – Exemplo
int EPar (int a)
{
#include <stdio.h>
if (a%2) /* Verifica se a e divisível por dois */
int EPar (int a); return 0; /* Retorna 0 se não for divisível */
int main () else
{ return 1; /* Retorna 1 se for divisível */
int num; }
printf ("Digite um número: ");
scanf ("%d",&num);
if (EPar(num))
printf ("\n\nO número é par.\n");
else
printf ("\n\nO número é impar.\n");
return 0;
}
Fonte: Manual da Linguagem C, de
Paulo Valentim, ECB
UniMETRO/FATEC/LCC-BIF
ProgramaçãoII/ M.T.Ditutala 5
Funções – Tipo Void
 A palavra void, em inglês, significa “vazio”.
 Usado juntamente com funções serve para:
◦ Declarar funções sem retorno de valor
◦ Declarar uma função que não recebe parâmetros
formais específicos.
 Assim, podemos ter:
◦ void nome_da_função (declaração_de_parâmetros);
◦ tipo_de_retorno nome_da_função (void);
◦ void nome_da_função (void);
 Nota: Numa função com tipo de retorno void, o comando return não
tem valor ou ainda pode ser omitido na função.
UniMETRO/FATEC/LCC-BIF
ProgramaçãoII/ M.T.Ditutala 6
Funções – Tipo Void
 Um exemplo de funções que usam o tipo void:
#include <stdio.h>
void Mensagem (void);
int main ()
{
Mensagem();
printf ("\tDiga de novo:\n");
Mensagem();
return 0;
}
void Mensagem (void)
{
printf ("Olá! Eu estou vivo.\n");
}
Fonte: Pag.70– Manual da Linguagem C, de
UniMETRO/FATEC/LCC-BIF
Paulo Valentim, ECB ProgramaçãoII/ M.T.Ditutala 7
Funções - Protótipos
 O protótipo consiste na declaração
prévia de uma função antes da sua
definição.
 Um protótipo tem o seguinte formato:
tipo_de_retorno nome_da_função (declaração_de_parâmetros);

UniMETRO/FATEC/LCC-BIF
ProgramaçãoII/ M.T.Ditutala 8
Funções – Passagem de Parâmetros
 Por Valor
◦ Quando os parâmetros formais, passados para
uma função não devem ser alterados após sair
da função, a passagem dos parâmetros deve
ser por valor.
◦ Neste caso devem ser passados para a função
apenas os valores e não os próprios
parâmetros.

UniMETRO/FATEC/LCC-BIF
ProgramaçãoII/ M.T.Ditutala 9
Funções – Passagem de Parâmetros por Valor
 Exemplo: Determinar o quadrado de um número float sqr (float num)
#include <stdio.h> {
num=num*num;
float sqr (float num); return num;
void main () }
{
float num,sq;
printf ("Digite um número: ");
scanf ("%f ",&num);
sq=sqr(num);
printf ("\n\nO número original é: %f\n",num);
printf ("O seu quadrado é: %f\n",sq);
}

Fonte: Manual da Linguagem C, de


UniMETRO/FATEC/LCC-BIF
Paulo Valentim, ECB ProgramaçãoII/ M.T.Ditutala 10
Funções – Passagem de Parâmetros
 Por Referência
◦ Quando os parâmetros formais, passados para
uma função, devem ser alterados à saida da
função, os parâmetros deve ser por
referência.
◦ Neste caso devem ser passados para a função
as referências dos parâmetros (endereços).
◦ Assim os parâmetros devem ser declarados
como sendo ponteiros.

UniMETRO/FATEC/LCC-BIF
ProgramaçãoII/ M.T.Ditutala 11
Funções – Passagem de Parâmetros por Referência
 Exemplo: Limpar os Valores Lidos void limpe (int *num1,
#include <stdio.h> int *num2)
void limpe(int *, int *); {
int main () *num1= *num2 = 0;
return;
{ }
int a,b;
printf ("Digite dois números separados por espaço: ");
scanf ("%d" "%d",&a,&b);
printf (“Valores Lidos:\na = %d \nb= %d\n",a,b);
limpe(&a,&b);
printf (“Limpeza Efectuada com Sucesso\na = %d \nb=
%d\n",a,b);
return 0;
}

UniMETRO/FATEC/LCC-BIF
ProgramaçãoII/ M.T.Ditutala 12