Aqui você encontra infomações sobre Informática, Eletrônica, Elétrica, Mecânica e Automação

domingo, 17 de abril de 2011

Linguagem C (parte 8)

Funções: protótipos de função É considerada boa prática utilizar protótipos de função para todas as funções em seu programa. Um protótipo declara o nome de função, seus parâmetros e seu tipo de retorno para o resto do programa antes da declaração real da função. Para entender a utilidade dos protótipos, digite o seguinte código e execute-o:
  #include <stdio.h>

  void main()
  {
     printf("%d\n",add(3));
  }  
  int add(int i, int j)

  {
     return i+j; 
  }  
Este código compila em diversos compiladores sem emitir um aviso, apesar de add esperar dois parâmetros e receber apenas um. Ele funciona porque muitos compiladores C não verificam se o parâmetro corresponde ao tipo ou à quantidade. Você pode perder horas na depuração de um código no qual você está declarando parâmetros a mais ou a menos por engano. O código anterior compila corretamente, mas produz a resposta errada.
Para resolver este problema, a linguagem C permite colocar protótipos de função no início (na verdade, em qualquer lugar) de um programa. Se fizer isso, a linguagem C verifica tipos e quantidades de todas as listas de parâmetros. Tente compilar o seguinte:
  #include <stdio.h>  

  int add (int,int); /* protótipo de função para add */

  void main()
  {
     printf("%d\n",add(3));
  }    
  int add(int i, int j)
  {    
     return i+j;
  } 
O protótipo faz com que o compilador sinalize um erro na instrução printf.
Coloque um protótipo para cada função no início de seu programa. Os propótipos podem economizar bastante tempo de depuração e também resolver o problema que ocorre ao compilar com funções que são utilizadas antes de serem declaradas. Por exemplo, o seguinte código não compilará:
  #include  <stdio.h> 
   
  void main()
  {
      printf("%d\n",add(3));
  }
  float add(int i, int j)
  {
      return i+j;
  }  
Você pode perguntar: "Por que ele compilará quando add retorna um int mas não quando retorna um float?" Porque os compiladores em C mais antigos padronizaram um valor de retorno para int. O uso de um protótipo resolverá este problema. Os "compiladores antigos" (sem suporte a ANSI) permitem protótipos, porém a lista de parâmetros do protótipo deve estar vazia. Os compiladores antigos não fazem a verificação de erros em listas de parâmetros.


Tente isto

  • Retorne ao exemplo de classificação bubble sort anteriormente apresentado e crie uma função.
  • Retorne aos programas anteriores e crie uma função para obter a entrada de dado do usuário, em vez de obter a entrada de dado da função principal.

2 comentários:

Testtador disse...

interessante

Anônimo disse...

My duo as regards temperature conserved in passage to file away man lady-killer firmware and taste richard roe scaling thereupon yourselves effectual there are degrees on route to the source. http://ynuajfy.com