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.
Comentários:
jaderubini disse:
Não. Os parâmetros (ou argumentos, como estou acostumado a chamá-los
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.
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...
tmferreira disse:
Ver o restante dos comentários no fórum (e aproveitar pra comentar também !).