Escolar Documentos
Profissional Documentos
Cultura Documentos
Linguagem C
Funo
Conceitos
Unidade 07 Funo
Para ser usada, uma funo deve estar previamente definida, isto , deve-se
indicar para o compilador qual o nome da funo e quais so os parmetros
esperados;
Uma maneira simples de se resolver isto, a colocao da funo antes de seu
uso;
Quando se tm sistemas grandes, no recomendvel ter um nico arquivo
fonte, pois a manuteno seria impraticvel;
Neste caso, possvel ter uma funo definida em um programa fonte e seu uso
em outro programa fonte. Para resolver este problema a Linguagem C criou uma
definio chamada de prottipo (assinatura da funo);
No prottipo de uma funo definido somente o necessrio para o compilador
no acusar erros. A definio do prottipo geralmente colocada dentro de
arquivos header (.h) e includa dentro dos programas fontes;
No prottipo somente so informados o nome da funo, o seu tipo de retorno e o
tipo de cada parmetro esperado.
Unidade 07 Funo
Tipos de Funes
Funes da biblioteca;
Definidas nos arquivos da biblioteca da
linguagem;
Unidade 07 Funo
Reutilizao de cdigo:
Unidade 07 Funo
Unidade 07 Funo
comando return;
Unidade 07 Funo
Funes e Escopo
Sintaxe:
tipoValorDeRetorno nomeDaFuno(parmetros){
declaraes;
comandos;
}
Escopo:
Unidade 07 Funo
Escopo de Variveis
Unidade 07 Funo
Global
Unidade 07 Funo
Local
10
Exemplo:
int power(int base, int exp){
int i, p = 1;
for(i = 1; i <= exp; ++i){
p *= base;
}
return(p);
}
O valor retornado por uma funo sempre copiado para o contexto de chamada.
X = power(2,5);
// Atribuio.
// Comparao.
// Expresso.
vetor[power(2,2)];
// ndice.
funcao(power(4,9), valor);
// Argumento.
Unidade 07 Funo
11
Faa um
programa
que imprima
na tela, o
resultado
dos
seguintes
clculos
2^9, 3^5 e
7^7.
Unidade 07 Funo
O mesmo
cdigo repetido
trs vezes.
Pssima prtica
de programao!
12
Vamos
resolver
novamente,
o exemplo
anterior.
Desta vez
usaremos
funo.
Unidade 07 Funo
13
Passagem de Parmetros em C
fim do escopo.
Unidade 07 Funo
14
Passagem de Parmetros
// i: 2 3 4 5 6 7 8 9
}
void main(){
int i = 2;
contador(i);
printf(i = %d , i);
// i = 2
}
Unidade 07 Funo
15
Passagem de Parmetros
Observaes importantes:
Unidade 07 Funo
16
Passagem de Parmetros
// i: 2 3 4 5 6 7 8 9
}
void main(){
int i = 2;
contador(&i);
printf(i = %d , i);
// i = 10
Unidade 07 Funo
17
Poderamos ter
definido a funo
potencia, depois
da funo main.
Mas para isto,
teramos que ter
definido o
prottipo da
funo potencia,
para no termos
um erro de
compilao.
Unidade 07 Funo
18
Unidade 07 Funo
19
Por valor
Unidade 07 Funo
20
Exemplo Clssico
A funo troca:
exemplo:
int x = 10, y = 20;
troca(x,y);
printf(x = %d e y = %d, x, y);
deve produzir:
x = 20 e y = 10
Unidade 07 Funo
21
Funo Troca
Implementao:
void troca(int x, int y){
Memria do computador
em trs instantes.
int temp;
temp = x;
x = y;
y = temp;
}
void main(){
int a = 5, b = 7;
troca(a,b);
No funciona!
printf(a = %d e b = %d, a, b); troca copia os valores,
no altera as variveis
}
originais (a e b).
Unidade 07 Funo
22
Funo Troca
Unidade 07 Funo
Passagem de Parmetros
Unidade 07 Funo
24
Unidade 07 Funo
25
utiliz-los no programa.
Unidade 07 Funo
26
Convenes:
Exemplo:
echo Hello, world!
argc = 3
Unidade 07 Funo
27
Exemplo
Unidade 07 Funo
28
Bibliografia
Unidade 07 Funo
29