Informática, perguntado por natymz666, 11 meses atrás

Quais as características da função com passagem de valor?

Soluções para a tarefa

Respondido por melissasantana290702
0

Resumo:

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. Na passagem por valor, como o próprio nome diz, uma expressão pode ser utilizada na chamada. O valor da expressão é calculada, e o valor resultante é passado para a execução da função. Na passagem por referência, o endereço de uma variável deve ser passado na chamada da função. Dessa forma, a função pode modificar a variável diretamente, o que em geral não é recomendável, mas há situações onde esse recurso é necessário, por exemplo, para a criação de funções que devolvem mais de um valor.

Descrição:

Até o momento, vimos apenas uma forma de passagem de parâmetros, conhecida como passagem por valor. Essa forma permite que as variáveis de uma função sejam protegidas, ou seja, apenas a função onde as variáveis foram declaradas pode modificar seu conteúdo. Permitir que uma função modifique o conteúdo de outra pode ser muito perigoso, mas há situações onde isso é necessário. Vamos primeiro lembrar como funciona a passagem por valor e depois introduzir o conceito de passagem por refência.

Passagem por Valor

É a forma mais comum utilizada para passagem de parâmetros. Por exemplo, considere a família de funções trigonométricas, como seno, cosseno, etc. A função seno, por exemplo, recebe o valor de um ângulo (um número real) e devolve o seno desse ângulo. Se tivermos as funções seno e cosseno, podemos facilmente definir uma função tangente. Em projetos grandes de desenvolvimento de software, grupos de programadores podem trabalhar no desenvolvimento de funções distintas e juntar os seus trabalhos uma vez que tenham suas funções prontas. Para isso, basta que cada grupo conheça o protótipo das funções que precisa utilizar, e ao final, um programa chamodo "linker" é responsável por juntar os pedaços e construir um programa executável. Por exemplo, considere que nós temos disponíveis os seguintes protótipos para as funções seno e cosseno:

float seno (float angulo);

float cosseno (float angulo);

Conhecendo esses protótipos, podemos escrever a função tangente da seguinte forma:

float tangente (float angulo)  

{

  float s, c;

  s = seno(angulo);

  c = cosseno(angulo);

  return s/c;

}

Essa função claramente calcula o seno antes de calcular o cosseno. Imagine se a função seno pudesse modificar o valor do parâmetro angulo. Nesse caso, 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 consegue evitar esse tipo de "efeito colateral" 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. Vamos falar um pouco mais do escopo de variáveis a seguir.

Perguntas interessantes