Opção variável
Tese: Opção variável. Pesquise 862.000+ trabalhos acadêmicosPor: tuninho12131415 • 19/10/2014 • Tese • 1.059 Palavras (5 Páginas) • 348 Visualizações
opo de variáveis
O escopo de uma variável é definido pelas regiões (blocos) onde a variável pode ser utilizada. Por exemplo, as variáveis declaradas no início do corpo da função main podem ser utilizadas em qualquer lugar dentro da função main, porém apenas DENTRO da main, ou seja, não podem ser utilizadas em outra função. Variáveis declaradas no mesmo escopo precisam ter nomes diferentes, mas nomes podem ser "reaproveitados" em outros escopos. Vejamos o exemplo abaixo:
#include <stdio.h>
#include <stdlib.h>
int fat (int n)
{
int res = 1;
while (n > 1) {
res = res * n;
n--;
}
return res;
}
int main ()
{
int n, res;
printf("Entre com o valor de n: ");
scanf("%d", &n);
res = fat(n+1) / (n+1);
printf("Fatorial de %d = %d\n", n, res );
system("pause");
return 0;
}
Observe que a função main e fat possuem ambas variáveis com o nome res, e que main possui uma variável chamada n, que é o nome do parâmetro da função fat. Procure não se confundir, pois apesar do mesmo nome, elas são variáveis diferentes. Para a função fat, o parâmetro n funciona como uma variável local (ou seja, válida dentro da função apenas), juntamente com a variável res. A diferença é que o parâmetro n recebe seu valor no instante da chamada. Vamos simular esse programa para a entrada 2.
O programa sempre inicia sua execução pela função main, que solicita a entrada de um valor para n. A linha res = fat(n+1)/(n+1); chama a função fat. Como n=2 (entrada do programa), então o valor 3 ( é passado para a função, ou seja, esse valor é atribuido ao parâmetro n e a função fat começa a executar seu corpo. O fatorial de 3 é calculado e o valor 6 é atribuido à variável res. Observe que o parâmetro n é utilizado como variável, o que é permitido pela linguagem C. Esse parâmetro é decrementado até 1, porém, como são variáveis diferentes, o valor de n dentro de main continua sendo 2. Ao terminar o chamado, a função fat devolve o valor 6 ao lugar onde foi chamado dentro da função main, e o programa continua para calcular o valor da expressão fat(n+1)/(n+1). Como o valor de n continua 2, o resultado da divisão é . Esse valor é atribuído à variável res. O último printf imprime o valor de n e res, que correspondem aos valores 2 e 2, respectivamente.
Passagem por Referência
Sempre que possível é recomendável utilizar a forma de passagem por valor, para evitar "efeitos colaterais", mas há situações onde esses efeitos são desejáveis, por exemplo, quando desejamos criar uma função que retorne mais de um valor. As funções que vimos até agora, seno, cosseno, potencia, fatorial, etc, só devolvem um valor, mas que outras funções, que trabalhem com números imaginários por exemplo, precisam retornar 2 valores. Por exemplo, tente escrever uma função que retorne o quadrado de um número imaginário.
Sabemos que um número imaginário (ou complexo) possui uma parte real e outra complexa , e podemos escrever esse número como , onde , e o quadrado de como . Assim, a variável complexa tem parte real e parte complexa .
Poderíamos fazer uma função para retornar apenas a parte real, e outra para retornar apenas a parte imaginária. Mas o C permite criar uma função que retorne os dois valores simultaneamente. Observe a seguinte função:
void complexo2 (float *r, float *t)
{
float real;
real = (*r * *r) - (*t * *t);
*t = 2 * *r * *t;
*r = real;
}
Funções do tipo void como definidas acima correspondem a funções que não retornam um valor. No entanto, o símbolo '*' na definição dos parâmetros real e imaginário da função complexo2 indicam que esses parâmetros PODEM ser modificados dentro da função, ou seja,
...