Fala galerinha!!! Aula em pleno carnaval, hein! Muita ressaca?

Nada melhor para curar a ressaca que estudar. (até parece! hehehe)

Hoje falarei sobre algo importantíssimo e que facilitará a vida de todos quando tiverem programando: Modularização.

MODULARIZAÇÃO

Ao desenvolvermos um programa, muitas vezes precisamos utilizar uma pequena rotina repetidamente em mais de um local do mesmo. Se repetirmos o trecho de código todas as vezes que precisarmos, ocuparemos mais espaço de memória, aumentando a complexidade do algoritmo, aumentando o tamanho do programa. Para evitarmos isso, podemos modularizar o programa, isto é, criar procedimentos e funções uma vez apenas, e chamá-los repetidamente de várias partes do programa, por um nome que os identifica.

Vantagens da utilização de modularização:
• Economia de código: escreve-se menos;
• Desenvolvimento modularizado: pensa-se no algoritmo por partes;
• Facilidade de depuração (correção/acompanhamento): é mais fácil corrigir/detectar um erro apenas uma vez do que dez vezes;
• Facilidade de alteração do código: se é preciso alterar, altera-se apenas uma vez;
• Generalidade de código com o uso de parâmetros: escreve-se algoritmos para situações genéricas, ou seja, pode-se reaproveitar o código.

Podemos modularizar os algoritmos ou programas de duas maneiras: por procedimentos ou por funções. A seguir mostrarei as diferenças de cada um dos métodos.

Procedimentos

É um módulo do algoritmo que pode ser acessado de qualquer parte do programa principal, dele mesmo ou de outros procedimentos/funções. A sintaxe para declaração de procedimentos segue:
CODE
PROCEDIMENTO identificador(parâmetros)
    declaração de variáveis ou constantes locais
INICIO
    comandos do procedimento;
FIM PROCEDIMENTO

Exemplo: Criar um algoritmo que faça o somatório de dois números e mostre o resultado na tela. Obs: Esse somatório será executado de vários pontos do algoritmo.
CODE
INICIO
NUM1,NUM2 : inteiro;
ESCREVA("Digite o primeiro operando: ");
LEIA(NUM1);
ESCREVA("Digite o segundo operando: ");
LEIA(NUM2);
somatorio(NUM1, NUM2);
somatorio(NUM1 + 10, NUM2);
somatorio(1, 35);
FIM

PROCEDIMENTO somatorio(a, b :inteiro)
    soma : inteiro;
INICIO
    soma := a + b;
    ESCREVA(soma);
FIM PROCEDIMENTO

No exemplo acima, se o usuário inserisse NUM1 = 10 e NUM2 = 15, o resultado na tela seria:
CODE
25
35
36


Funções

As funções, embora bastante semelhantes aos procedimentos, têm a característica especial de retornar ao programa que as chamou um valor associado ao nome da função. A sintaxe para declaração de funções segue:
CODE
FUNCAO identificador(parâmetros) : tipo
    declaração de variáveis ou constantes locais
INICIO
    comandos da função;
    identificador := resultado;
FIM FUNCAO

Utilizaremos o mesmo exemplo anterior, mas desta vez utilizaremos funções. Perceba que o retorno do resultado acontece quando se atribui ao nome da função (identificador) o valor do resultado.
CODE
INICIO
NUM1,NUM2 : inteiro;
ESCREVA("Digite o primeiro operando: ");
LEIA(NUM1);
ESCREVA("Digite o segundo operando: ");
LEIA(NUM2);
ESCREVA(somatorio(NUM1, NUM2));
ESCREVA(somatorio(NUM1 + 10, NUM2));
ESCREVA(somatorio(1, 35));
FIM

FUNCAO somatorio(a, b :inteiro) : inteiro
INICIO
    somatorio := a + b;
FIM FUNCAO

O resultado na tela seria o seguinte, se utilizarmos NUM1 = 10 e NUM1 = 15:
CODE
25
35
36


O resultado da execução dos dois algoritmos é exatamente a mesma!! Então quando devemos usar procedimentos e quando devemos usar funções?

A resposta é simples e já foi até dada nas entrelinhas: Usamos funções quando precisamos usar o valor retornado para cálculo, comparação lógica, etc.

Leia o anexo dessa aula: Escopo de Variáveis

Exercícios

1. Todo procedimento ou função requer parâmetros?
2. Preciso exibir uma mesma mensagem na tela diversas vezes durante o meu algoritmo. O que é mais recomendável: usar Função ou Procedimento?
3. Preciso exibir o nome do usuário (a pessoa que está utilizando) do meu algoritmo na tela diversas vezes durante o meu algoritmo. O que é mais recomendável: usar Função ou Procedimento?
4. Crie uma função que calcule as duas raízes de uma equação do segundo grau e faça três chamadas à essa função passando parâmetros diferentes em cada chamada.

Desafio

1. Crie uma função ou procedimento (decida qual o melhor) que leia os pesos de 50 pessoas e mostre o mais leve e o mais pesado. Obs.: Não poderão ser aceitos pesos menores ou iguais a zero.

Você gostou? Comente no fórum!

Comentários:

jaderubini disse:

1. Todo procedimento ou função requer parâmetros?
Não. Os parâmetros (ou argumentos, como estou acostumado a chamá-los original.gif ) são úteis na construção de funções ou procedimentos genéricos, onde a execução da função/procedimento depende da passagem de dados ou valores ao programa.


2. Preciso exibir uma mesma mensagem na tela diversas vezes durante o meu algoritmo. O que é mais recomendável: usar Função ou Procedimento?
Procedimento.


3. Preciso exibir o nome do usuário (a pessoa que está utilizando) do meu algoritmo na tela diversas vezes durante o meu algoritmo. O que é mais recomendável: usar Função ou Procedimento?
Função.


4. Crie uma função que calcule as duas raízes de uma equação do segundo grau e faça três chamadas à essa função passando parâmetros diferentes em cada chamada.
CODE
INICIO
       a, b, c : real;
       ESCREVA("Digite um número: ");
       LEIA(a);
       ESCREVA("Digite outro número: ");
       LEIA(b);
       ESCREVA("Digite mais um número: ");
       LEIA(c);
      
       raizes(a, b, c);
       raizes(b, c, a);
       raizes(c, a, b);
  
       FUNCAO raizes(x, y, z : real) : array[0..1] de real
       d : real;
       INICIO
           d := y^2 - 4*x*z;
  
           raizes[0] := (-y + sqrt(d)) / (2*x);
           raizes[1] := (-y - sqrt(d)) / (2*x);
  
           ESCREVA(raizes[0], raizes[1]);
       FIM FUNCAO
FIM




Acho que é isso... O desafio eu faço outra hora... thumbsup.gif

tmferreira disse:

Mandou muito bem, Jader!!!

Ver o restante dos comentários no fórum (e aproveitar pra comentar também !).

Mais recentes em Outras Linguagens

Não consigo.
Por 2pac - Não consigo ver as aulas da 4 a 9 aula vai direto da...
Tudo sobre manipulação de strings e caracteres
Por fernando777 - Muito completo...
Criando bibliotecas no c
Por fernando777 - Criando bibliotecas no c - - a criação de bibliotecas...
Operador sizeof no c
Por fernando777 - Operador sizeof - - o operador sizeof mostra quanto...
Estrutura if else - se senÃo e operadores lógicos
Por fernando777 - If else e operadores lógicos no c...

Ver mais Artigos de Outras Linguagens.

Ver e retirar outras dúvidas no fórum Webly.

Alguns Direitos Reservados | RSS | O Fórum

Webly Portal e Fóruns - Internet + Humana | Design by ArthurHenrique.com