Você está na página 1de 7

Captulo 1 Funes Passagem de Parmetro por Valor e Referncia

Uma funo utilizada em uma unidade do cdigo de um programa para cumprir uma tarefa desejada caso temos mais de uma funo para calcular determinada funes matemticas, isso importante para ns que queira em um determinado cdigo de um programa calcular por exemplo uma soma em um determinado momento do nosso cdigo, para isso fazemos uma funo ante do nosso main ou seja uma funo que criamos antes de digitar o cdigo, e quando desejarmos usar essa funo nos chamamos essa funo pois ela j foi feita anteriormente com isso permitimos a reutilizao do cdigo, facilita mudanas e esconde detalhes do programa que no necessita conhecer. A fun0 deve ser chamada com o nome da funo seguido de parnteses e ento um ponto e virgula, essa a estrutura de uma funo utilizada onde primeiro devemos colocar o nome da funo que pode ser qualquer nome que o usurio queira seguido de parnteses com ou sem argumentos e depois um ponto e virgula. Dentro de uma determinada funo podem-se colocar argumentos que se comportam como uma varivel local, pois elas existem apenas durante a execuo da funo chamada, possvel passar vrios argumentos para uma funo, caso queira usar vrios argumentos utilizamos varias variveis como argumentos dentro do parntese. Em passagem de parmetros por valor de uma funo so como copias dos valores originais, quando a funo chamada so criadas variveis com os mesmos valores no alternando os valores originais, qualquer alterao na varivel dentro da funo no altera o valor das variveis fora da funo, Por exemplo, considere a famlia de funes trigonomtricas, como seno, cosseno, etc. A funo seno, por exemplo, recebe o valor de um ngulo (um nmero real) e devolve o seno desse ngulo. Se tivermos as funes seno e cosseno, podemos facilmente definir uma funo tangente. Em projetos grandes de desenvolvimento de software, grupos de programadores podem trabalhar no desenvolvimento de funes distintas e juntar os seus trabalhos uma vez que tenham suas funes prontas. Para isso, basta que cada grupo conhea o prottipo das funes que precisa utilizar, e ao final, um programa chamado "linker" responsvel por juntar os pedaos e construir um programa executvel. Por exemplo, considere que ns temos disponveis os seguintes prottipos para as funes seno e cosseno: float seno (float angulo); float cosseno (float angulo); Conhecendo esses prottipos, podemos escrever a funo tangente da seguinte forma:

float tangente (float angulo) {

float s, c; s = seno(angulo); c = cosseno(angulo); return s/c; } Essa funo claramente calcula o seno antes de calcular o cosseno. Imagine se a funo seno pudesse modificar o valor do parmetro angulo. Nesse caso, o valor passado para a funo cosseno seria diferente do valor original usado para o seno, e o resultado da funo tangente estaria incorreto. A passagem por valor consegue evitar esse tipo de "efeito colateral" atravs da criao de variveis locais para os parmetros. Quando uma funo chamada, essas variveis so carregadas, como em atribuies, antes do incio da execuo do corpo da funo. Em passagem por referncia passada para a funo uma referncia da varivel, sendo possvel alterar o contedo da varivel original usando-se esta referncia. Nesse tipo de funo, os argumentos passam os endereos de memria para os parmetros declarados na funo. Sendo assim, os parmetros que recebem os valores passados obrigatoriamente tem que ser ponteiros j que iro receber um endereo de memria. As alteraes feitas dentro da funo tem efeito direto nas variveis passadas como argumentos na chamada. Isto proporciona a oportunidade de retornar vrios valores em uma nica funo j que as alteraes ocorrem diretamente nas variveis.

Exemplos de funes simples:

Funo simples de uma equao que recebe o nmero 3 que multiplicado por ele mesmo 3 vezes e depois divido por 5

Sua sada ser: O resultado 5,4.

Funo simples de uma soma que recebe o nmero 2 e depois somado por ele mesmo 3 vezes.

A sada ser: 2+2+2 = 6

Exemplos de funes com passagem de parmetro por valor:

Funo com passagem de parmetros por valor que recebe dois argumentos como variveis do tipo inteiro e que depois somados com um valor atribudo de 3 para v1 e 5 para v2.

A sada ser: 3+5 = 8

Funo com passagem de parmetros por valor onde inverte os nmeros que o usurio digitou, para isso foi utilizado um valor do tipo caractere em decimal e tambm foi utilizado o tamanho do convertido e depois foram feitos a inverso.

A sada sera: Digite um numero: 12345 54321.

Exemplos de funes com passagem de parmetro por referencia

Funo com passagem de parmetro por referncia que foi utilizada para troca de valores por referncia que o usurio digitou dois nmeros do tipo inteiro e depois foram mostrado os valores trocados.

A Sada ser: digite o primeiro valor: 5 Digite o segundo valor: 3 Voc digitou os valores na seguinte ordem: 5 3 Os valores trocados so: 3 5.

Funo com passagem de parmetro por referncia usando um valor de uma varivel local e depois foram mostrado a troca desses valores.

A sada ser: 1:a = 1 2:a = 2 3:a = 2 O valor da varivel local *a em func alterado, alterando tambm a varivel local a em main.

Você também pode gostar