6 - Funções

Como citado no item 3, um programa em linguagem C é formado por um conjunto de funções. As funções , na maioria das linguagens de programação, seguem a seguinte metodologia em relação a passagem de parâmetros e retorno de resultados (quando não nos referimos a passagem por referência):
 

1 - Funções Sem Passagem de Parâmetros e 
                      Sem Retorno de Resultado

Este tipo de função pode ser considerado como um procedimento quase independente da função principal. 
Costumo dizer que este tipo de função não exerce controle algum sobre as variáveis do programa (isso é lógico).
Ex.:

void entra_mat(void)
          {
          int i, j; 
          for(i=1;i<=3;i++)
               for(j=1;j<=4;j++)
                   scanf("%d",&mat[i][j]);
          }
Neste exemplo, a função dá entrada em uma variável matriz (vetor bidimensional) que foi anteriormente declarada globalmente. Veja o uso da palavra reservada void, indicando que não haverá passagem de parâmetros ou retorno de resultados.
int mat[3][3];
void main(void)
          {
          ...
          entra_mat( ); 
         }
Ao lado teríamos a declaração da matriz globalmente e a chamada para a função entra_mat no programa principal.

2 - Funções Sem Passagem de Parâmetros e 
                      Com Retorno de Resultado

Este tipo de função retorna ao programa (função) principal, um resultado através do comando return( ).
Costumo dizer que este tipo de função exerce um controle médio sobre as variáveis do programa.
Ex.:

int media_mat(void)
          {
          int i, j, media; 
          for(i=1;i<=3;i++)
               for(j=1;j<=3;j++)
                   media=media+mat[i][j];
          media = media/9;
       return(media);
          }
Neste exemplo, a função acumula a soma de todos os valores de uma  variável matriz (vetor bidimensional) que foi anteriormente declarada globalmente e coloca o resultado na variável media. Em seguida calcula a média aritmética, já que a matriz 3X3 possui 9 valores ao todo. Só então a função retorna o valor da média 
int mat[3][3];
void main(void)
          {
          int K,A;
          ...
          K=media_mat( ); 
          A=K*3;
          ...
         }
Ao lado teríamos a declaração da matriz globalmente e o retorno do resultado da função media_mat na variável K. Quando o programa tenta fazer a atribuição do valor para K, necessita resolver primeiro a função. Note que a variável deverá ter o mesmo tipo retornado pela função.

3 - Funções Com Passagem de Parâmetros e 
                      Sem Retorno de Resultado

Este tipo de função recebe parâmetros porém não retorna resultados ao programa (função) principal.
Costumo dizer que este tipo de função também exerce um controle médio sobre as variáveis do programa.
Ex.:

void calc_desc(float sal){
          float desc; 
          if(sal<1000)
               printf("Isento");
          else 
               if(sal<=2500)
                  {desc=0.25*sal;
                    printf("Desc = %f",desc);}
                    else
                  {desc=0.37*sal;
                    printf("Desc = %f",desc);}
        }
Neste exemplo, a função recebe a variável real sal (na verdade, o parâmetro salario passado), calcula em qual faixa se encontra tal valor e mostra na tela o resultado de acordo com a faixa salarial. Nenhum valor é retornado para o programa(função) principal. 
void main(void)
          {
          float salario;
          printf("Digite seu salário");
          scanf("%f",&salario);
          cal_desc(salario);
         }
Ao lado teríamos a declaração da variável salario, que será recebida do teclado (do usuário) através de scaf(). De posse desse valor, executa-se a chamada da função cal_desc() que receberá o salario como parâmetro mas não retornará nenhum resultado ao programa principal.

4 - Funções Com Passagem de Parâmetros e 
                      Com Retorno de Resultado

Costumo dizer que este tipo de função exerce controle forte sobre as variáveis do programa.
Ex.:

float calc_desc(float sal)
         {
          float desc; 
        if(sal<1000)
               desc=0;
        else
             if(sal<=2500)
                    desc=0.25*sal;
             else
                    desc=0.37*sal;
         return(desc);
        }
Agora modificamos o exemplo anterior fazendo com que a função retorne o valor do desconto, que deverá ser um float
void main(void)
          {
          float desconto;
          printf("Digite seu salário");
          scanf("%f",&salario);
          desconto=cal_desc(salario);
         printf("Seu desconto será de R$ %f",desconto);
         }
Dessa vez, o programa principal passará um parâmetro para a função que calculará o desconto, devolvendo-o na variável desconto.
Pagina anteriorIndiceProxima pagina
Hosted by www.Geocities.ws

1