Você está na página 1de 6

Funes

Uma funo um mdulo independente de cdigo, que ir executar uma tarefa


especfica.
Consoante a especificidade da tarefa atribuda funo, esta ter ou no de devolver
um valor.
tipo_devolvido nome_da_funo(lista_de_parmetros)
{
declaraes locais;
instrues
}
Exemplo:
#include <stdio.h>
int ler()
{
int x;
scanf(%d,&x); return(x);
}
void escreve(x)
{
printf(%d,x);
}
main()
{
int valor;
valor=ler();
escreve(valor);
}

Instruo RETURN
Permite funo transmitir ao mdulo que a invocou o resultado da sua execuo. A
sintaxe :
return valor;
onde valor representa um valor constante, uma varivel ou uma expresso.
Esta instruo provoca um abandono imediato da execuo da funo. Nesse sentido
pode tambm ser utilizado nas funes void com a sintaxe
return;
Uma funo retorna automaticamente quando atinge o fim do corpo da funo, a no
ser que antes encontre a expresso RETURN.

Exemplo 1
Elaborar um programa que escreva os factoriais de todos os nmeros entre 1 e 10.
#include<stdio.h>
long factorial(int x)
{
long fact=1;
int calculo;
for(calculo=1;calculo<=x; calculo++)
fact=fact*calculo;
return fact;
}
main()
{
int valor;
for(valor=1;valor<=10;valor++)
printf(%d\t%ld\n,valor,factorial(valor));
}

Passagens de parmetros
Parmetros:

Lista de declarao de variveis no cabealho da funo.


Por valor ou referncia

Passagens por valor


Numa invocao de uma funo cujos argumentos sejam passados por valor, os
parmetros constituem-se como variveis autnomas que sero inicializadas com os
valores dos argumentos.
Assim sendo, qualquer alterao no valor de um parmetro no se repercute no
valor do respectivo argumento.

Exemplo:

#include <stdio.h>
antes: 1
void exemplo(int x)
dentro: 7
{
depois: 1
x=7;printf(dentro:%d\n,x);
}
main()
{
int a=1;
printf(antes: %d\n,a);
exemplo(a);
printf(depois: %d\n,a);

Passagens por referncia ou endereo


Numa invocao por endereo ou referncia, o que passado para os parmetros da
funo so os endereos das variveis utilizadas como argumentos da invocao da
funo, o que significa que qualquer alterao efectuada pela funo provoca uma
alterao do argumento.
Operadores unrios: Para manipulao de apontadores
& Fornece o endereo de memria do seu operando, utiliza-se com todos os tipos
de dados excepto arrays (neste caso a definio do array indica a posio do seu
1 elemento)
* Fornece o contedo da posio de memria referida pelo seu operando. Utilizase para efectuar a declarao de apontadores.
int *a, b, q;
a uma varivel do tipo apontador para inteiro, ou seja, a uma varivel que
contm o endereo de uma varivel do tipo inteiro, ou simplificando, a o endereo
de um inteiro
a = &b - a toma o valor do endereo da varivel b, ou seja a o endereo e *a o
contedo, ou seja a = b
q = *a - q toma o valor da varivel que est no endereo de a, ou seja q = b
Se houver passagem de endereos para dentro da funo, os parmetros da funo
devem ser apontadores. Assim consegue-se alterar o valor das variveis fora da
funo.
Exemplo:
#include <stdio.h>
void exemplo(int *x) apontador
{
*x=7;
printf(dentro:%d\n,*x);
}
antes: 1
dentro: 7
depois: 7

main()
{
int a=1;
printf(antes: %d\n,a);
exemplo(&a);
printf(depois: %d\n,a);
}

Exemplo funo duplica( )

1 Com passagem de parmetros por valor


#include <stdio.h>
main()
{
int x=4;
void duplica(int);
printf(O valor inicial de x %d\n: x);
duplica(x);
printf(O valor de X depois de chamar a funo %d\n: ,x);
}
void duplica(int x1)
/* ou s duplica(x1) */
{
x1*=2;
printf(O valor de X dentro da funo %d\n: ,x1);
return;
}
O resultado do programa :
o valor inicial de X 4
o valor de X dentro da funo 8
o valor de X depois de chamar a funo 4

X1

depois (x1*=2)

X1

A passagem por valor permite a transferncia de informao apenas numa direco, ou seja,
do local de chamada para dentro da funo.

2 -Com passagem de parmetros por referncia


#include <stdio.h>
main()
{
int x=4;
void duplica(int);
printf(O valor inicial de x %d\n: x);
duplica(&x);
printf(O valor de X depois de chamar a funo %d\n: ,x);
}

void duplica(int *x1)


/* ou s duplica(x1) */
{
*x1*=2;
printf(O valor de X dentro da funo %d\n: ,x1);
return;
}

O resultado do programa : o valor inicial de X 4


o valor de X dentro da funo 8
o valor de X depois de chamar a funo 8
100
4

100

X1

&x = 100
x=4

x1 = &x = 100
*x1 = x = 4

Significa que a funo processou o contedo do endereo, ou seja o prprio valor, alterando-o
dessa forma.

Você também pode gostar