Programação

terça-feira, 19 de abril de 2016

Módulo 3 - Subprogramas - Linguagem C


Noção subprograma


Ø Um subprograma, é um “pequeno” programa que realiza uma tarefa específica;
Ø Pode ser chamado pelo nome  dentro programa principal (main() ) ou em outros subprogramas, até mesmo pelo próprio (chamada recursiva).

Podemos ser de dois tipos de Subprogramas:
Funções- retornam um valor em seu nome.
Procedimentos-
não retornam valor.



*   ( Em Pascal, há funções e procedimentos;    os procedimentos são funções que não retornam nada)

*  Em Linguagem C, todos subprogramas são funções.

Em linguagem C, todos os programas têm a função principal chamada main()  e podem ter outras funções destinadas a tarefas específicas.

Nos módulos anteriores foram já utilizadas funções na construção dos programas. Estas funções fazem parte da biblioteca Standard do C, são exemplo as funções printf, scanf, etc., e são fornecidas quando se adquire qualquer Compilador de C.


Sintaxe de uma função
tipo  NomedaFuncao (   parâmetro 1 , parâmetro 2, …)       cabeçalho da função

{     //declaração de variáveis da função
  
    //instruções
}
 
 








Declaração de uma função
É necessário escrever a função antes da função main(),
ou então declarar o protótipo da função antes do main() ()  e depois do main() escrever todo o código da função.

                               


Tipos de Funções e Exemplos
Ø  Funções sem parâmetros e não retornam nada*

Ø  Funções com parâmetros e não retornam nada*
  
Ø  Funções com parâmetros e retornam algum valor


Exemplos de tipos de retorno da função :
void - sem qualquer retorno
int - um valor inteiro
float - um valor de virgula flutuante
char - um caracter

 Exercício: Elaborar 2 funções 
   -- Uma função que escreve 30 asteriscos

      -- 
Uma função que escreve ABC- n vezes

   

PROGRAMA SEM FUNÇÕES

#include <stdio.h>
 main()
 {      int i;
           for ( i=1; i<= 30; i++)   
               printf("*");
          printf("\n ");
         for ( i=1; i<= 30; i++)   
               printf("*");
          printf("\n ");
          for ( i=1; i<= 6; i++)
                   printf("ABC-");
          printf("\n ");
          for ( i=1; i<= 6; i++)
                   printf("ABC-");
          printf("\n ");
            ...
  }

PROGRAMA COM FUNÇÕES


#include <stdio.h>
 void Asteriscos()
{  int i;
         for ( i=1; i<= 30; i++)   
               printf("*");
          printf("\n ");
}
void ABC ( int  )
{ int i;
         for ( i=1; i<= ; i++ )
                   printf("ABC-");
          printf("\n ");
}

main()
 {       Asteriscos( );
          Asteriscos( );
          ABC( 6 ); ABC( 6 );
          ABC( 4);  ABC( 2 );
          ABC( 4);  ABC( 6 );  ABC( 6);  
          Asteriscos( ); Asteriscos( ); Asteriscos( );
  }




Problema: Escrever um programa que coloque no ecrã o seguinte output- sem funções e com 3 funções

Programa sem funções

#include <stdio.h>
 main()
 {      int i;

           for ( i=0; i<= 15; i++)    
               printf("*#");
          printf("\n ");
          for ( i=0; i<= 15; i++)
                   printf("*#");
          printf("\n\t\t Números \n");  
          for (i=0; i<=15 ; i++)
                  printf (“ %i   ", i ) ;  
          printf("\n ");
          for (i=15; i<=0 ; i--)
                  printf (“ %i   ", i ) ;  
          printf("\n ");
          for (i=0; i<=15 ; i++)
                  printf (“ %i   ", i ) ;  
          printf("\n ");
          for ( i=0; i<= 15; i++)
               printf("*#");
  }

   
    



 O programa anterior podia ser escrito da seguinte forma, utilizando funções:

Programa COM funções


É na função main() que as funções elaboradas serão chamadas, através da escrita do nome da função com os respectivos parênteses.  


A função main() é responsável por iniciar  o programa e executar todas as instruções presentes no seu interior.
Nota: As variáveis declaradas dentro de uma função, são locais, não sendo conhecidas fora dela.


Duas razões principais para recorrer à escrita de funções
o   Reduzir a complexidade de um programa
o   Evitar a repetição de código ao longo de um programa



Exercício: Elaborar 1 função EscreveNumeros  com 1 parâmetro
0    1    2    3    4    5   6   7   8   9  10  
0    1    2    3    4    5   6   7         
0    1    2  
0    1    2    3    4    5   6  7        
0    1    2    3    4    5   6  7   8   9  10   




Exercício: Elaborar 1 função EscreveNumeros  com 2 parâmetro

0    1    2    3    4    5    6    7   8   9  10  
0    2   4    6    8    10  12  14   16   18   20          
0    2   4    6    8    10  12  14   16   18   20            
0    1    2    3    4    5   6   7   8   9  10    



Exercício: Elaborar 1 função EscreveNumeros  com 3 parâmetro
0    1    2    3    4    5    6    7   8   9  10  
10   1 2   14    16    18    22  24   26   28   30          
10   1 2   14    16    18    22  24   26   28   30  32  34  36  38   40 
0    3    6    9   12    15   18   21   24   27   30    
10    20   30  40  50   60   70   80   90   100



Exercício :   escrever uma função SOMA que calcule a soma de dois inteiros e que retorne o resultado do cálculo e o respectivo programa;

#include <stdio.h>

int  SOMA (int  num1,  int num2 )
{ return    num1+ num2;                     //Devolve a soma de dois inteiros
   }

main ( )
   {    int  a, b, total ;
            printf("\nIntroduza dois valores inteiros ");
            scanf("%i", &a);  

            scanf(" %i" , &b );

            total = SOMA( a, b);
            printf(" A soma dos dois valores é  %i  ",   total  );
     }



Exercício
1. Implemente a função int   minutos ( int   horas) -Que devolva o número de minutos de um número de horas.
Implemente a função long int  minutos_segundos( int   horas,   char tipo )
          Que devolve o número de minutos ou o número de segundos de acordo com o 2º parâmetro de entrada 'm' - minutos   e 's' - segundos e tendo em conta ao parâmetros horas.
Elabore programa principal, que peça o nº de horas e determine o nº de minutos e de segundos.



Variáveis Locais e Globais

– Variável local: qualquer variável declarada no corpo de uma função é local a essa função.

 – Variável global: é uma variável declarada fora do escopo de qualquer função.




Exercício :  Implementar  função Tabuada. No programa principal, pedir qual a tabuada a visualizar e fazer chamada à função Tabuada, para mostrar a tabuada






ExercícioElaborar função Perimetro e função Area, que determine o perímetro e a área de um círculo, respetivamente;
No programa principal, mostrar as 2 opções (1- Calcular perímetro de círculo;  2- Calcular área de círculo); dependendo da opção escolhida pelo utilizador, chamar a função correta.




ELABORAR BIBLIOTECA

Criar um documento em C e guarde-o com o nome  MyBibliotec.h (Guarde na mesma pasta em que guarda seu código-fonte de C.) 

à Escreva uma função “AreaRetangulo”, com 2 parâmetros e devolva o cálculo da área do retângulo.
à Escreva uma função “PerimetroRetangulo”, com 2 parâmetros e devolva o cálculo do perímetro do retângulo.


Crie um programa em C com nome Retangulo.c.
            
  Após o #include <stdio.h>
Coloque:
              #include "MyBibliotec.h"  (com aspas)

è Peça e leia os valores do comprimento e da largura do retângulo. 
è Determine a área e o perímetro do retângulo utilizando as funções criadas na MyBibliotec.h

As funções em vez de estarem escritas no ficheiro .c estão escritas na biblioteca MyBibliotec.h.


Exercício : Elaborar função AreaCirculo; PerimetroCirculo na biblioteca CircLib.h
                     Elaborar programa Circulo.c, que peça o valor do raio do círculo; chame as funções da biblioteca CircLib.h que calculem a área e o perímetro do círculo.


com pi definida como constante através do #define




Sem comentários:

Enviar um comentário