algoritmos e lp parte 5-subalgoritmos
DESCRIPTION
sub-algoritmosTRANSCRIPT
Algoritmos e Linguagem de Programação de Programação
Professor: Mauro Jansen
Parte 5 – Sub-algoritmos
09/11/2010
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
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
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
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.
� 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
� 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.
Tipos de sub-algoritmos
� Existem dois tipos de sub-algoritmos:� PROCEDIMENTOS� FUNÇÕES
Prof. MauroAlgoritmos e Ling.de Programação
Sub-algoritmos 8
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
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>)
� 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.
� 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.
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
� 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
� 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
� 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
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.
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