18
Lógica de Programação Subalgoritmos Regis Pires Magalhães [email protected] Última atualização em 03/08/2008

Logica Algoritmo 07 Subalgoritmos

Embed Size (px)

Citation preview

Page 1: Logica Algoritmo 07 Subalgoritmos

Lógica de Programação

Subalgoritmos

Regis Pires Magalhã[email protected]

Última atualização em 03/08/2008

Page 2: Logica Algoritmo 07 Subalgoritmos

Problema• Como resolver um problema bem “cabeludo”?• Como as pirâmides do Egito foram construídas?

Page 3: Logica Algoritmo 07 Subalgoritmos

Solução• Dividir para conquistar.

– Modularização

Page 4: Logica Algoritmo 07 Subalgoritmos

Subalgoritmos• São trechos de algoritmos que efetuam

determinada tarefa.• Ao invés de escrever um algoritmo grande,

escrevem-se vários algoritmos menores, os quais, em conjunto, resolvem o problema proposto.

• É especialmente indicado usá-los quando uma determinada tarefa é efetuada em diversos lugares no mesmo algoritmo.

• São declarados no início do algoritmo e podem ser chamados em qualquer ponto após sua declaração.

• Podem ser de dois tipos:– Funções - retornam algum valor.– Procedimento (Subrotina) - não retorna nada.

Page 5: Logica Algoritmo 07 Subalgoritmos

Vantagens• Reduzem o tamanho do algoritmo.• Melhoram a legibilidade do algoritmo.• Evitam a repetição de código.

– Reaproveitamento no mesmo programa ou em outros• Facilitam a manutenção• Facilitam a divisão de trabalho• Possibilitam a utilização de componentes prontos.

Page 6: Logica Algoritmo 07 Subalgoritmos

Funções• Retornam um valor ou uma informação.• A chamada de uma função é feita através da

citação do seu nome seguido de seus argumentos entre parênteses.

• As funções podem ser:– predefinidas pela linguagem;– criadas pelo programador de acordo com o seu

interesse.

Page 7: Logica Algoritmo 07 Subalgoritmos

Funções Predefinidas do Visualg

Page 8: Logica Algoritmo 07 Subalgoritmos

Funções Predefinidas do Visualg

Page 9: Logica Algoritmo 07 Subalgoritmos

Funções Predefinidas do Visualgalgoritmo "exemplo"var numero : real nome : caracterinicio escreva("Digite um número: ") leia(numero) escreval("Raiz quad. de ", numero, " é ", raizq(numero))

escreva("Digite um nome: ") leia(nome) escreval("Normal: ", nome) escreval("Maiúsculas: ", maiusc(nome)) escreval("Minúsculas: ", minusc(nome)) escreval("3 primeiras letras: ", copia(nome,1,3)) escreval("tamanho: ", compr(nome)) escreval(maiusc(copia(nome,compr(nome)-2,3)))fimalgoritmo

Page 10: Logica Algoritmo 07 Subalgoritmos

Criação de Funções

Algoritmo "<nome do algoritmo>"var <declaração de variáveis globais>

funcao <identificador> ([var]<parâmetros>) <tipo de retorno>var<declaração de variáveis locais>inicio<lista de comandos>retorne <variável de retorno>fimfuncao

inicio< lista de comandos>fimalgoritmo

Page 11: Logica Algoritmo 07 Subalgoritmos

Criação de Funções• As variáveis globais ficam antes das funções.• A função sempre fica dentro do escopo Algoritmo

e FimAlgoritmo.• Evite declarar variáveis globais com o mesmo

nome das variáveis da função.

Page 12: Logica Algoritmo 07 Subalgoritmos

Exemploalgoritmo "soma"varn1, n2 : real

funcao soma(a, b : real) : real retorne a + bfimfuncao

inicio escreva("Digite um número: ") leia(n1) escreva("Digite outro número: ") leia(n2) escreva("Soma: ", soma(n1, n2))fimalgoritmo

Page 13: Logica Algoritmo 07 Subalgoritmos

Exemploalgoritmo "par_impar"

var numero : inteiro

funcao par_ou_impar(num : inteiro) : caracterinicio se (num % 2 = 0) entao retorne "par" senao retorne "impar" fimsefimfuncao

inicioescreva("Digite um número: ")leia(numero)escreva(par_ou_impar(numero))fimalgoritmo

Page 14: Logica Algoritmo 07 Subalgoritmos

Procedimento

Algoritmo "<nome do algoritmo>"var <declaração de variáveis globais>

procedimento <identificador> ([var]<parâmetros>)var<declaração de variáveis locais>inicio <lista de comandos>fimprocedimento

inicio< lista de comandos>fimalgoritmo

Page 15: Logica Algoritmo 07 Subalgoritmos

Exemploalgoritmo "repeticao"var palavra : caracter

procedimento repete(texto : caracter; n : inteiro)var i : inteiroinicio para i de 1 ate n faca escreval(texto) fimparafimprocedimento

inicioescreva("Digite uma palavra: ")leia(palavra)repete(palavra, 10)fimalgoritmo

Page 16: Logica Algoritmo 07 Subalgoritmos

Escopo de Variáveis

Page 17: Logica Algoritmo 07 Subalgoritmos

Passagem de Parâmetros• Por valor• Por referência

• Vantagens do uso da passagem de parâmetros por valor:

• Privacidade dos dados• A possibilidade de passar constantes como argumentos

de funções

x ← raizq(25)

Page 18: Logica Algoritmo 07 Subalgoritmos

Exemplo – Passagem por Referênciaalgoritmo "permuta_valor"var n1, n2, aux : inteiro

procedimento troca(var x, y : inteiro)var aux : inteiroinicio aux <- x x <- y y <- auxfimprocedimento

inicioEscreva("Digite n1: ")leia(n1)Escreva("Digite n2: ")leia(n2)troca(n1,n2)Escreval("n1 é: ", n1)Escreval("n2 é: ", n2)fimalgoritmo