Slide 1 - WordPress.com

Propaganda
FUNÇÕES: PASSAGEM DE
PARÂMETROS
Aluno:Kaynã Vasconcelos Santos
Matéria: Estrutura de dados e algoritmos I
Turma: 020200
Professor: Danilo Silva dos Santos
PASSAGEM DE PARÂMETROS

A linguagem de programação C permite que os
parâmetros sejam passados para as funções de
duas maneiras, por valor e por referência.
PASSAGEM POR VALOR
A função recebe uma cópia da variável que é
fornecida quando é chamada. Todas as alterações
feitas dentro da função não afetarão os valores
originais.
 O valor da expressão é calculado, e o valor
resultante é passado para a execução da função.

EXEMPLO 1



#include<stdio.h>
int soma(int x, int y){
return(x+y);}

int main(){
int a, b, c;
a= 4;
b=2;
c=soma(a,b);
printf("%d",c);

printf

}





PASSAGEM POR VALOR

É a forma mais comum utilizada para passagem
de parâmetros. Considerando as funções
trigonométricas, seno, cosseno e tangente.
Podemos ter a função seno, recebendo o valor de
um ângulo e devolvendo o seno desse ângulo. Se
tivermos as funções seno e cosseno, podemos
definir uma função tangente.
EXEMPLO 2

float seno (float angulo);
float cosseno (float angulo);
float tangente (float angulo)
{
float s, c;
s = seno(angulo);
c = cosseno(angulo);
return s/c;
}
PASSAGEM POR VALOR

Essa função calcula o seno antes de calcular
o cosseno.Se a função seno modifica-se o valor do
parâmetro angulo, o valor passado para a
função cosseno seria diferente do valor original
usado para o seno, e o resultado da
função tangente estaria incorreto. A passagem
por valor evita esse tipo de erro através da
criação de variáveis locais para os parâmetros.
Quando uma função é chamada, essas variáveis
são carregadas, como em atribuições, antes do
início da execução do corpo da função.
PASSAGEM POR REFERÊNCIA

Neste caso o que é enviado para a função é uma
referência às variáveis utilizadas, e não uma
simples cópia, pelo que as alterações realizadas
dentro da função irão certamente alterar os
valores contidos nessas variáveis.
EXEMPLO 1














#include<stdio.h>
void troca(int *a, int *b){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
int main(){
int a=2,b=3;
printf("Antes de chamar a função
:\na=%d\nb=%d\n",a,b);
troca(&a,&b);
printf("Depois de chamar a
função:\na=%d\nb=%d\n",a,b);
return 0;
}
UTILIDADE:PASSAGEM POR REFERENCIA
Quando precisamos criar uma função que devolva
mais de um valor, temos que definir esses
parâmetros com um caractere '*' no protótipo da
função, e ao chamar a função, os parâmetros
utilizados na chamada correspondentes à saída
precisam ser precedidos pelo caractere '&' para
indicar que eles podem ser modificados pela
função chamada.
 Um exemplo são funções que trabalham com
números imaginários(precisam retornar 2
valores).

EXEMPLO 2


#include <stdio.h>
#include <stdlib.h>
void complexo2 (float *r, float *t)
{
float real;
real = (*r * *r) - (*t * *t);
*t = 2 * *r * *t;
*r = real;
}

void complexo2 (float *r, float *t);
int main ()
{
float a, b;
printf ("Entre com um numero complexo (2 numeros inteiros): ");
scanf("%f %f", &a, &b);
complexo2 ( &a, &b);
printf("O quadrado do número complexo é %f + i %f\n", a, b);
system("pause");
return 0;
}
Download