Use o botão abaixo para reportar erros ou dar sugestões.

Computação Científica - Um Livro Colaborativo

3.1 Funções


Começamos com o seguinte exemplo:

Exemplo 3.1.1. Implemente um programa para estudar a expressão 1 + 1 xx

para x = 102, x = 106 e x = 1010.

#include <stdio.h>  
#include <math.h>  
 
main (void)  
  {  
  double x = 1e2,y;  
  y=1+1/x;  
  y=pow(y,x);  
  printf("(1+1/%e)^%e=%f\n",x,x,y);  
 
  x=1e6;  
  y=1+1/x;  
  y=pow(y,x);  
  printf("(1+1/%e)^%e=%f\n",x,x,y);  
 
  x=1e10;  
  y=1+1/x;  
  y=pow(y,x);  
  printf("(1+1/%e)^%e=%f\n",x,x,y);  
}

No solução do exemplo 3.1.1, as linhas 7, 12 e 17 são as mesmas, assim como 8, 13 e 18 e 9, 14 e 19. Para deixar o código mais sucinto e legível, convém escrever essas linhas uma única vez e chamar sua execução cada vez que desejarmos. Observe uma versão alternativa para o código do exemplo 3.1.1:

#include <stdio.h>  
#include <math.h>  
 
Euler_seq(double x)  
{  
  double y;  
  y=1+1/x;  
  y=pow(y,x);  
  printf("(1+1/%e)^%e=%f\n",x,x,y);  
}  
 
main (void)  
{  
  Euler_seq(1e2);  
  Euler_seq(1e6);  
  Euler_seq(1e10);  
}

Nessa última versão, introduzimos a função Euler_seq(double x) antes do ambiente main que entra um parâmetro x do tipo double e executa as linhas de antes estavam repetidas. Dentro do ambiente main nós chamamos a função pelo nome e dizemos qual é o double que vamos passar.

As funções também podem retornar um valor. Observe uma outra versão para o exemplo 3.1.1:

#include <stdio.h>  
#include <math.h>  
 
double Euler_seq(double x)  
{  
  double y;  
  y=1+1/x;  
  return y=pow(y,x);  
}  
 
main (void)  
{  
  double z=1e2;  
  printf("(1+1/%e)^%e=%f\n",z,z,Euler_seq(z));  
  z=1e6;  
  printf("(1+1/%e)^%e=%f\n",z,z,Euler_seq(z));  
  z=1e10;  
  printf("(1+1/%e)^%e=%f\n",z,z,Euler_seq(z));  
}

Seguem algumas observações sobre funções:

  • O nome da variável enviada para uma função não precisa ser o mesmo nome do parâmetro de entrada no cabeçalho. Observe a última versão do código do exemplo 3.1.1, onde a variável enviada é z e a variável de entrada da funçao é x. Mas observe que elas são do mesmo tipo.
  • O cabeçalho não pode ser seguido de ponto-e-vírgula (;).
  • Não se pode definir função dentro de outra função. No entanto, pode-se invocar uma função dentro de outra função.
  • Depois da instrução return pode se colocar qualquer expressão válida em C, inclusive deixar sem nada (tipo void), desde que fique coerente com o cabeçalho.
  • Sempre que não fique indicado o tipo de retorno, o C assume o padrão int.
  • As variáveis definidas dentro das funções são chamadas de variáveis locais e não podem ser chamadas de fora. Na última versão do código do exemplo 3.1.1, y é uma variável local do tipo double.

Exemplo 3.1.2. Escreva um programa que lê dois números inteiros positivos e imprime o menor entre eles. Use a estrutura de função para retornar o menor.

#include <stdio.h>  
#include <math.h>  
 
int menor(int a,int b)  
{  
  if (a<=b) return a;  
  else return b;  
}  
 
main (void)  
{  
  int x,y;  
  printf("Entre com dois números inteiros positivos\n");  
  scanf(" %d  %d",&x,&y);  
  printf("O menor número entre eles é o %d\n",menor(x,y));  
}

Creative Commons License Este texto é disponibilizado nos termos da licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC-BY-SA 3.0). Página gerada em 19/8/2020 às 17:33:16.

Informe erros ou edite você mesmo!