ip_aula06_modularização.pdf
TRANSCRIPT
Introdução à Programação - Prof. Fabiano Madeira 2
Objetivos
Após esta aula, você deverá ser capaz de:
Compreender o conceito de modularização
Definir e utilizar os componentes de um módulo
Solicitar a execução de um módulo
Construir um módulo
Conceituar e utilizar passagem de parâmetros
Introdução à Programação - Prof. Fabiano Madeira 3
Introdução
A maioria dos algoritmos resolve problemas
complexos, cuja solução é normalmente
formada de várias sub-tarefas ou módulos,
cada qual resolvendo uma parte específica
do problema
Introdução à Programação - Prof. Fabiano Madeira 4
Introdução
Módulo nada mais é do que um grupo de
instruções que constitui um trecho de
algoritmo com uma função bem definida e o
mais independente possível das demais
partes do algoritmo.
Introdução à Programação - Prof. Fabiano Madeira 5
Vantagens
Torna o algoritmo mais fácil de escrever
Torna o algoritmo mais fácil de ler
Economia de tempo, espaço e esforço
REUTILIZAÇÃO
Introdução à Programação - Prof. Fabiano Madeira 6
Como modularizar ?
A modularização de problemas é realizada através da definição de: Um módulo principal, que organiza e coordena o
trabalho dos demais módulos;
Módulos específicos, para cada uma das sub-tarefas do algoritmo.
O módulo principal solicita a execução dos vários módulos em uma dada ordem.
Os demais módulos, antes de iniciar a execução, recebem dados do módulo principal e devolvem o resultado de suas operações.
Introdução à Programação - Prof. Fabiano Madeira 7
Ordem de execução das instruções
em algoritmos modularizados
Conjunto de
Instruções
do módulo X
Conjunto de
Instruções
do módulo X
Módulo Principal Módulo X
Módulo Y
<Nome: Exemplo>
Módulos:
Váriáveis:
INÍCIO
<conjunto de instruções >
Módulo X
<conjunto de instruções>
Módulo X
Módulo Y
...
FIM
Introdução à Programação - Prof. Fabiano Madeira 8
Como especificar módulos em algoritmos
1. Dividir o problema
2. Identificar as sub-tarefas
3. Detectar tarefas que se repetem durante a
execução do algoritmo
Introdução à Programação - Prof. Fabiano Madeira 9
Componentes de um módulo
Interface: a descrição do tipo do módulo,
nome e dos dados de entrada
Corpo: conjunto de instruções que compõe
o trecho de algoritmo correspondente ao
módulo
Introdução à Programação - Prof. Fabiano Madeira 10
Interface e Corpo
Nome_do Módulo(Parâmetros)
CORPO
interface
Variáveis
<declaração das variáveis locais da função>
Início
<conjunto instruções da função>
Fim
Introdução à Programação - Prof. Fabiano Madeira 11
Tipos de Módulo
Podemos definir dois tipos de módulo,
dependendo do resultado de suas
operações:
Funções: módulos que devolvem valor ou
referência
Procedimentos: módulos que somente
executam tarefas
Introdução à Programação - Prof. Fabiano Madeira 12
O que é Parâmetro?
Quando criamos módulos, sejam eles funções ou procedimentos, normalmente estamos delegando funções menores para eles.
Como são subordinados aos algoritmos ditos chamadores, os módulos podem depender de informações passadas a eles para executar suas tarefas
Estas informações são passadas através dos parâmetros
Introdução à Programação - Prof. Fabiano Madeira 13
Parâmetros
Parâmetros são variáveis locais do módulo
inicializadas na chamada do módulo.
São especificados como uma lista de declaração
de variáveis, separadas por vírgula
Se o módulo não recebe parâmetros, a lista pode ser
vazia
Exemplo:
Procedimento ValidaProduto(inteiro num, string nome,
real preço)
Introdução à Programação - Prof. Fabiano Madeira 14
Passagem de Parâmetros
Existem dois tipos de passagem de
parâmetro:
Passagem por Valor
Passagem por Referência
Introdução à Programação - Prof. Fabiano Madeira 15
Passagem de Parâmetros (1)
Passagem por Valor Os valores dos parâmetros passados por valor são
passados pelo mecanismo de cópia
O valor do parâmetro (uma constante ou o valor de uma variável ou expressão) é atribuído ao parâmetro quando da chamada
Sintaxe:
(tipo_dado nome1, tipo_dado nome2, ..., tipo_dado nomeN)
A ordem de definição dos parâmetros é considerada quando é feita a passagem de valores para o módulo.
Introdução à Programação - Prof. Fabiano Madeira 16
Definindo procedimentos - Sintaxe
Procedimento <nome_do procedimento> (parâmetro1,
..., parâmetroN)
Variáveis
<declaração das variáveis locais do módulo>
Início
<conjunto instruções do procedimento>
Fim
Introdução à Programação - Prof. Fabiano Madeira 17
Definindo funções - sintaxe
Função <tipoRetorno> <nomeFunção> (parâmetro1, ..., parametroN)
Variáveis
<declaração das variáveis locais da função>
Início
<conjunto instruções da função>
RETORNA <valor_de_retorno>
Fim
O valor de retorno deve ter o
mesmo tipo de dados definido
em <tipoRetorno>
Introdução à Programação - Prof. Fabiano Madeira 18
Exemplo
Nome da Função: Quadrado
Objetivo: Função para calcular o quadrado de um número.
Dados de Entrada: número passado como parâmetro para calcular o seu quadrado.
Saída: (retorno) o número ao quadrado
Função inteiro Quadrado(inteiro num)
Variáveis
inteiro res < declaração de variável do módulo >
Início
res num * num < calcula o quadrado >
RETORNA res < retorna o quadrado calculado >
Fim
Introdução à Programação - Prof. Fabiano Madeira 19
Exemplo - Identificando os
componentes da função
Função inteiro Quadrado(inteiro num)
Variáveis
inteiro res < declaração de variável do módulo >
Início
res num * num < calcula o quadrado >
RETORNA res < retorna o quadrado calculado >
Fim
Finaliza a execução do módulo
retornando o valor da variável res
Nome da função
Lista de parâmetros
Tipo de dado de
saída
Introdução à Programação - Prof. Fabiano Madeira 20
Exemplo
Nome do Procedimento: Apresentacao
Objetivo: Apresentar as informações sobre algoritmo
Dados de Entrada: nome do programador e objetivo
Saída: exibe na tela as informações do algoritmo passado como parâmetro
Procedimento Apresentacao(string programador, string objetivo)
Variáveis
< nesse módulo não é necessário declarar variáveis >
Início
ESCREVA “Este algoritmo foi desenvolvido por: ”
ESCREVA programador
ESCREVA “Objetivo do algoritmo:’
ESCREVA objetivo
Fim
Introdução à Programação - Prof. Fabiano Madeira 21
Passagem de Parâmetros (2)
Passagem por Referência
A passagem por referência ocorre quando alterações nos parâmetros, dentro da função, alteram os valores das variáveis que foram passadas para a função.
A referência de uma variável é seu endereço de memória, quando realizamos uma passagem de parâmetro por referência
O parâmetro não recebe a cópia do valor da variável e sim o endereço de memória onde está armazenada essa variável
Qualquer alteração no valor do parâmetro feita pelo procedimento/função acarretará uma modificação no valor da variável externa passada como parâmetro
Introdução à Programação - Prof. Fabiano Madeira 22
Passagem de Parâmetros (2)
Passagem por Referência
Para indicar passagem por referência
utilizaremos a palavra reservada REF na
especificação do parâmetro
NomeMódulo (tipo_dados REF nome_parametro)
Introdução à Programação - Prof. Fabiano Madeira 23
Exemplo
Nome do Procedimento: troca
Objetivo: Procedimento para trocar os valores de duas variáveis.
Dados de Entrada: as duas variáveis inteiras passadas por referência
Saída: As duas variáveis com valores invertidos
Procedimento Troca (REF inteiro a, REF inteiro b)
Variáveis
inteiro aux
Início
aux a
a b
b aux
Fim
Introdução à Programação - Prof. Fabiano Madeira 24
Solicitando a Execução de um Módulo
Quando queremos utilizar os módulos que criamos para resolver uma tarefa, ou seja solicitar sua execução, devemos fazer chamada ao módulo
A chamada ao módulo é a forma de solicitar a execução do módulo em um determinado passo do algoritmo
Para fazer a chamada de um módulo devemos especificar qual o nome do módulo e passar argumentos (valores iniciais ou variáveis) para seus parâmetros
Introdução à Programação - Prof. Fabiano Madeira 25
Exemplos de Chamada de Função
x Quadrado(10)
<solicita a execução do módulo quadrado para o numero 10, o valor
retornado pela função será atribuído à variável x >
y Quadrado(20 + x)
<solicita a execução do módulo quadrado para o valor resultante da
soma de 20 mais o valor de x, o valor retornado pela função será atribuído à variável y>
z Quadrado(5) + 50
<solicita a execução do módulo quadrado para o número 5, soma o
valor retornado pela função a 50 e atribui o resultado à variável z>
Introdução à Programação - Prof. Fabiano Madeira 26
Exemplos de chamada de procedimento
Solicita a execução do procedimento Apresentacao que exibirá na tela a primeira cadeia como nome do autor e a segunda cadeia como o objetivo do algoritmo
Apresentacao(“João”, “ Mostrar um exemplo do módulo”)
nome “Maria”
texto “Mostrar outro exemplo de chamada do módulo”
Apresentacao(nome, texto)
Introdução à Programação - Prof. Fabiano Madeira 27
Algoritmo Modularizado
A partir de agora, o nosso algoritmo será
composto das seguintes partes:
Cabeçalho
Área para especificação da interface dos
módulos
Área para declaração de variáveis globais
Módulo Principal
Especificação do corpo dos demais módulos.
Introdução à Programação - Prof. Fabiano Madeira 28
Exemplo de Algoritmo Modularizado (1)
<Cabeçalho>
Nome do Algoritmo: soma dos quadrados
Objetivo: calcular a soma dos quadrados de dois números inteiros positivos
Dados de Entrada: dois números positivos
Saída: soma dos quadrados
<Especificação da interface dos módulos>
Módulos:
Procedimento Apresentacao(string programador, string objetivo)
<procedimento para exibir ao usuário as informações sobre o algoritmo>
Função inteiro Quadrado(inteiro num)
<função que calcula o quadrado de um número>
Introdução à Programação - Prof. Fabiano Madeira 29
Exemplo de Algoritmo Modularizado (2)
<Especificação do Módulo Principal>
Variáveis:
inteiro x, y, <números digitados pelo usuário>
soma <quadrado>
string nome, <nome do autor do algoritmo>
descricao <descrição objetivo do algoritmo>
<Conjunto de instruções do módulo principal>
INÍCIO
nome “Fulano de Tal”
descricao “Calcular a soma do quadrado de dois números”
Apresentacao(nome, descricao)
ESCREVA “Entre com um número positivo: ”
LEIA x
ESCREVA “Entre com um número positivo: ”
LEIA y
soma Quadrado(x) + Quadrado(y)
ESCREVA soma
FIM
Introdução à Programação - Prof. Fabiano Madeira 30
Exemplo de Algoritmo Modularizado (3)
<Especificação dos Módulos>
Procedimento Apresentacao (string programador, string objetivo)
Variáveis
< nesse módulo não é necessário declarar variáveis >
Início
ESCREVA “Este algoritmo foi desenvolvido por: ”
ESCREVA programador
ESCREVA “Objetivo do algoritmo:’
ESCREVA objetivo
Fim
Função inteiro Quadrado( inteiro num )
Variáveis
inteiro res
Início
res num * num
RETORNA res
Fim
Introdução à Programação - Prof. Fabiano Madeira 31
Exercício 1 - Extra
- Dado uma base e um expoente (inteiros
naturais), faça um módulo para calcular a
potência.
- Identifique:
- Qual o objetivo específico do módulo?
- Tem retorno de informação?
- Definir se é FUNÇÃO ou PROCEDIMENTO
- Nome
- Quais são os parâmetros
- Conjunto de instruções