algoritmos e lp parte 5-subalgoritmos

18
Algoritmos e Linguagem de Programação de Programação Professor: Mauro Jansen Parte 5 – Sub-algoritmos 09/11/2010

Upload: mauro-jansen

Post on 19-Jun-2015

1.035 views

Category:

Technology


0 download

DESCRIPTION

sub-algoritmos

TRANSCRIPT

Page 1: Algoritmos e lp parte 5-subalgoritmos

Algoritmos e Linguagem de Programação de Programação

Professor: Mauro Jansen

Parte 5 – Sub-algoritmos

09/11/2010

Page 2: Algoritmos e lp parte 5-subalgoritmos

Introdução� Conforme a complexidade dos problemas, os algoritmos tornam-se mais extensos e difíceis de acompanhar� Solução: Dividir para conquistar

� Nesses casos (e mesmo em problemas mais simples) é importante dividirmos a tarefa de

Prof. MauroAlgoritmos e Ling.de Programação

Sub-algoritmos 2

simples) é importante dividirmos a tarefa de resolução do problema em tarefas menores chamados MÓDULOS ou SUB-ALGORITMOS

� Cada parte (módulo) do algoritmo fica responsável por uma determinada parte do processo e o conjunto de módulos resolve o problema principal

Page 3: Algoritmos e lp parte 5-subalgoritmos

Conceito

� Sub-algoritmos, sub-rotinas, sub-programas ou módulos são blocos de instruções que realizam tarefas específicas� Cada sub-algoritmo é um trecho do algoritmo

Prof. MauroAlgoritmos e Ling.de Programação

Sub-algoritmos 3

Cada sub-algoritmo é um trecho do algoritmo completo e resolve uma parte do problema

� Os algoritmos podem também ser REUTILIZADO na solução de outros problemas

Page 4: Algoritmos e lp parte 5-subalgoritmos

Funcionamento� Um algoritmo completo é dividido em:

� UM Algoritmo principal� Diversos Sub-algoritmos

� A execução sempre começa pelo algoritmo principalA execução de um subalgoritmo é solicitada

Prof. MauroAlgoritmos e Ling.de Programação

Sub-algoritmos 4

� A execução de um subalgoritmo é solicitada sempre que necessário, através de uma chamada ou invocação.

� Quando um subalgoritmo é chamado, a execução do algoritmo principal é interrompida para que o subalgoritmo seja executado. Após isso, o algoritmo principal continua de onde parou

Page 5: Algoritmos e lp parte 5-subalgoritmos

Subalgoritmo 1

Algoritmo Principalinstrução 1instrução 2

Subalgoritmo 1instrução 3

A execução inicial aqui e segue a sequência das instruções.

A execução do Algoritmo Principal é interrompida até que o Subalgoritmo 1 seja executado, continuando em seguida a partir da instrução 3.

Funcionamento (ilustração)

Prof. MauroAlgoritmos e Ling.de Programação

Sub-algoritmos 5

Subalgoritmo 1instrução 1

Subalgoritmo 2instrução 2

Subalgoritmo 2instrução 1instrução 2

Executado no momento em que é invocado pelo Algoritmo Principal.

A execução do Subalgoritmo 1 é interrompida até que o Subalgoritmo 2 seja executado, continuando em seguida a partir da instrução 2.

Executado no momento em que é invocado pelo Subalgoritmo 1.

Terminada a execução, volta para continuar o Subalgoritmo 1. Quando terminar o Subalgoritmo 1, volta para continuar com a execução do Algoritmo Principal.

Page 6: Algoritmos e lp parte 5-subalgoritmos

� A execução pode ser visualizada como segue:

Algoritmo Principalinstrução 1instrução 2

Subalgoritmo 1

Funcionamento (ilustração)

Prof. MauroAlgoritmos e Ling.de Programação

Sub-algoritmos 6

instrução 3

Subalgoritmo 1instrução 1

instrução 2

Subalgoritmo 2instrução 1instrução 2

Page 7: Algoritmos e lp parte 5-subalgoritmos

� Variáveis Globais são declaradas no início do algoritmo e pode ser usadas no algoritmo principal e por todos os subalgoritmos.

� Variáveis Locais são definidas dentro de um subalgoritmo e só podem ser utilizadas dentro dele.

Variáveis Locais e Variáveis Globais

Prof. MauroAlgoritmos e Ling.de Programação

Sub-algoritmos 7

A, B: Realinstrução 1instrução 2

instrução 3

Subalgoritmo 1X, Y: Inteiroinstrução 1instrução 2

Subalgoritmo 2num: Inteiroinstrução 1instrução 2

As variáveis A e B são globais e podem ser usadas por qualquer subalgoritmo

As variáveis X e Y só podem ser utilizadas no subalgoritmo 1 e a variável num só pode ser

utilizada no subalgoritmo 2.

Page 8: Algoritmos e lp parte 5-subalgoritmos

Tipos de sub-algoritmos

� Existem dois tipos de sub-algoritmos:� PROCEDIMENTOS� FUNÇÕES

Prof. MauroAlgoritmos e Ling.de Programação

Sub-algoritmos 8

Page 9: Algoritmos e lp parte 5-subalgoritmos

Procedimentos

� PROCEDIMENTO é um sub-algoritmo que não retorna valor ao algoritmo chamador ou que retorna dois ou mais valores� A chamada de procedimentos só pode ser feita

Prof. MauroAlgoritmos e Ling.de Programação

Sub-algoritmos 9

A chamada de procedimentos só pode ser feita com uma linha de comando isolada dentro do algoritmo

� Se retornar valores, o retorno é feito por meio de parâmetros ou variáveis globais

� Exemplos: solicita_valores, lista_resultados

Page 10: Algoritmos e lp parte 5-subalgoritmos

Funções� FUNÇÃO é um sub-algoritmo que calcula um valor a partir de outros fornecidos a ela, retornando o valor calculado� A chamada a uma função sempre ocorre dentro de uma expressão do mesmo tipo que tem o valor retornado por ela.

Prof. MauroAlgoritmos e Ling.de Programação

Sub-algoritmos 10

retornado por ela.� Sua chamada é feita pelo seu nome, seguido de seus respectivos parâmetros entre parênteses.

� A função é executada e, ao seu término, o trecho do comando que a invocou é substituído pelo valor retornado

� Exemplos: primo(<número>), fatorial(<número>)

Page 11: Algoritmos e lp parte 5-subalgoritmos

� Os parâmetros possibilitam a comunicação entre um subalgoritmo e o algoritmo chamador.� Corresponde aos dados que são passados ao subalgoritmo pelo

algoritmo chamador.� A passagem de dados para procedimentos e funções se dá da

mesma forma.

Parâmetros e retorno

Prof. MauroAlgoritmos e Ling.de Programação

Sub-algoritmos 11

mesma forma.

� Retorno de Dados

� No caso dos procedimentos os dados são retornados através dos parâmetros.

� No caso das funções, o retorne se dá pelo comando Retorne.Retorne <expressão>

� Ao encontrar este comando, a expressão é retornada ao chamador e a função é terminada.

Page 12: Algoritmos e lp parte 5-subalgoritmos

� A passagem de parâmetros pode se dar de duas formas:� Por valor: neste caso é passada uma cópia do conteúdo de uma variável. Essa cópia só existirá no procedimento ou na função.

� Qualquer alteração que for feita no valor, não irá alterar o conteúdo da variável original.

Parâmetros e retorno

Prof. MauroAlgoritmos e Ling.de Programação

Sub-algoritmos 12

o conteúdo da variável original.

� Por referência: não existe cópia do conteúdo enviado, o que ocorre é o envio do endereço de memória onde a variável se encontra.

� Neste caso, qualquer alteração no valor alterará o valor da variável original.

Page 13: Algoritmos e lp parte 5-subalgoritmos

Declarando sub-algoritmos

� O NOME dos sub-algoritmo deve seguir as mesmas regras para definição de nomes de variáveis

� Sempre que um sub-algoritmo recebe

Prof. MauroAlgoritmos e Ling.de Programação

Sub-algoritmos 13

� Sempre que um sub-algoritmo recebe parâmetros, estes devem ser especificados entre parênteses, com seus respectivos tipos, logo após o nome do sub-algoritmo

Page 14: Algoritmos e lp parte 5-subalgoritmos

� Para declarar um procedimento, devemos seguir o modelo a seguir.

Algoritmo NomeAlgoritmo

Variáveis

<Aqui são declaradas as Variáveis Globais>

Início

Declarando procedimentos

Prof. MauroAlgoritmos e Ling.de Programação

Sub-algoritmos 14

<Aqui são colocadas as instruções do Algoritmo Principal>

Fim

Procedimento NomeProcedimento (Lista de Parâmetros)

Variáveis

<Aqui são declaradas as Variáveis do Procedimento>

Início

<Aqui são colocadas as instruções do Procedimento>

Fim

Page 15: Algoritmos e lp parte 5-subalgoritmos

� Para declarar uma função, devemos seguir o modelo a seguir.

Algoritmo NomeAlgoritmo

Variáveis

<Aqui são declaradas as Variáveis Globais>

Início

Declarando funções

Prof. MauroAlgoritmos e Ling.de Programação

Sub-algoritmos 15

<Aqui são colocadas as instruções do Algoritmo Principal>

Fim

Função NomeFunção (Lista de Parâmetros)

Variáveis

<Aqui são declaradas as Variáveis da Função>

Início

<Aqui são colocadas as instruções da Função>

Fim

Page 16: Algoritmos e lp parte 5-subalgoritmos

� Um algoritmo, com uma função que recebe dois números inteiros como parâmetros e retorna a soma desses números ao algoritmo principal.

Função soma (x, y: Inteiro)

Variáveis

Nome da Função Parâmetros e seus tiposNeste caso, os parâmetros são os dois valores que serão somados.

Exemplo

Prof. MauroAlgoritmos e Ling.de Programação

Sub-algoritmos 16

adicao: Inteiro

Início

adicao ← x + y

Retorne adicao

Fim

Uma variável local para armazenar o valor da soma

O comando que retorna o valor da soma para o algoritmo que

chamou a função

Page 17: Algoritmos e lp parte 5-subalgoritmos

Algoritmo SomaDeDoisNumeros

Variáveis

num1, num2, s: Inteiro

Função soma (x, y: Inteiro)

Variáveis

adicao: Inteiro

Início

Aqui se inicia o algoritmo principal, que solicita dois números ao usuário e, em seguida, chama a

Exemplo (algoritmo completo)

Prof. MauroAlgoritmos e Ling.de Programação

Sub-algoritmos 17

adicao ← x + y

Retorne adicao

Fim

Início

Escreva “Digite o Primeiro Numero”

Leia num1

Escreva “Digite o Segundo Numero”

Leia num2

s ← soma(num1, num2)

Escreva s

Fim

usuário e, em seguida, chama a função que realiza a soma dos números. Guarda a soma retornada pela função na variável s e mostra o valor na tela.

Quando a função é chamada, a execução do algoritmo principal fica parada até que a função seja finalizada e retorne o resultado.

Page 18: Algoritmos e lp parte 5-subalgoritmos

Exercícios

� Reescreva um dos exercícios de vetores ou matrizes criando um procedimento para ler os dados e outro para processar e mostrar os resultados

Prof. MauroAlgoritmos e Ling.de Programação

Sub-algoritmos 18

� Crie uma função para calcular o fatorial de um número

� Crie uma função para determinar se um número é primo