ip_aula06_modularização.pdf

32
Modularização Introdução à Programação Prof. Fabiano Madeira

Upload: felipe-bressan

Post on 27-Dec-2015

3 views

Category:

Documents


0 download

TRANSCRIPT

Modularização Introdução à Programação

Prof. Fabiano Madeira

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

Introdução à Programação - Prof. Fabiano Madeira 32

Exercício 2 – 06 da Lista 04

- Dado um número em decimal faça um

módulo para convertê-lo em notação

binária.