Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

definicao_funcao [2008/05/13 16:55]
laureano
definicao_funcao [2008/05/13 17:17] (atual)
laureano
Linha 46: Linha 46:
  
 Veja o exemplo: Veja o exemplo:
 +<code c>
 +/* programa definindo_funcao.c */
  
 +#include <stdio.h>
 +
 +int soma (int,  int); /* Declaração da função (protótipo da função.
 +                         Esta declaração indica que a função soma irá receber 2 valores inteiros e vai retornar 1 valor inteiro */
 +
 +int main (void)
 +{
 +   int iValor_a;
 +   int iValor_b;
 +   int iResultado;
 +
 +   printf("Entre com os valores:");
 +   scanf("%d %d", &iValor_a, &iValor_b);
 +
 +   iResultado = soma(iValor_a, iValor_b); /* chamada da função */
 +
 +   printf ("Soma : %d\n", iResultado);
 +
 +   return 0;
 +}
 +
 +int soma (int a, int b) /* função soma que recebe 2 inteiros */
 +{
 +   return a + b; /* retornar 1 valor inteiro */
 +}
 +</code>
 +
 +===== Escopo de Variáveis =====
 +Entende-se como escopo de variáveis a área onde o valor e o nome dela tem significado. Pode-se ter dois tipos de variáveis na Linguagem C. O primeiro tipo é a variável global. Uma variável é global quando a mesma é definida fora de qualquer função. Esta variável pode ser usada em qualquer função e o significado dela abrange todo o programa fonte.
 +As variáveis locais são definidas dentro de funções e o seu significado é somente válido dentro da função. Assim têm-se duas variáveis com o mesmo nome em funções diferentes.
 +
 +
 +==== Variáveis Globais ====
 +As variáveis globais são definidas fora de qualquer função e o seu nome é válido para todo o programa. Qualquer função que alterar o seu conteúdo estará alterando para todo o programa pois estas variáveis ficam em uma área de dados disponível para todo o programa.
 +
 +==== Variáveis Locais ====
 +Quando uma variável é definida dentro de uma função, está sendo definindo uma variável local à função. Esta variável utiliza a pilha interna da função como memória, portanto ao final da função este espaço de memória é liberado e a variável não existe mais. Portanto a definição da variável só é valida dentro da função. 
 +
 +Os parâmetros de uma função também são considerados variáveis locais e também utilizam a pilha interna para a sua alocação.
 +
 +<code c>
 +/* programa escopo_variavel.c */
 +
 +#include <stdio.h>
 +
 +int soma (int,  int);
 +int diferenca (int,  int);
 +void le_valores(void);
 +
 +int G_iValor_a; /* Declarando as variáveis como públicas, ou seja, elas estarão disponíveis para uso em todo o programa. */
 +int G_iValor_b;
 +
 +int main(void)
 +{
 +   int iResultado; /* Variável local e portanto somente disponível para a função main */
 +
 +   le_valores();
 +
 +   printf("Soma : %d\n", soma (G_iValor_a, G_iValor_b)); /* uso das variáveis públicas declaradas anteriormente. */
 +
 +   printf("Diferenca : %d\n", diferenca (G_iValor_a, G_iValor_b)); /* uso das variáveis públicas declaradas anteriormente. */
 +
 +   return 0;
 +}
 +
 +void le_valores(void)
 +{
 +   printf("Entre com os valores:");
 +   scanf("%d %d", &G_iValor_a, &G_iValor_b); /* uso das variáveis públicas declaradas anteriormente */
 +   return;
 +}
 +
 +int soma (int a, int b) /* Variáveis declaradas como parâmetros de função sempre são locais, portanto as variáveis a e b 
 +                           estão disponíveis para uso somente na função soma. */
 +{
 +   int iResultado; /* Variável local e portanto somente disponível para a função soma. Importante: não é a mesma variável definida anteriormente. */
 +
 +   iResultado = a + b;
 +   return iResultado;
 +}
 +
 +int diferenca (int a, int b) /* Variáveis declaradas como parâmetros de função sempre são locais, portanto as variáveis a e b estão disponíveis 
 +                                para uso somente na função diferenca, embora na função soma também tenha sido utilizado o mesmo nome para as variáveis.  */
 +{
 +   int iResultado;
 +
 +   iResultado = a - b;
 +   return iResultado;
 +}
 +</code>
definicao_funcao.txt · Última modificação: 2008/05/13 17:17 por laureano
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0