Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Logica Algoritmo 07 Subalgoritmos

13,201 views

Published on

Published in: Technology
  • Be the first to comment

Logica Algoritmo 07 Subalgoritmos

  1. 1. Lógica de Programação Subalgoritmos <ul><ul><li>Regis Pires Magalhães </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul><ul><ul><li>Última atualização em 03/08/2008 </li></ul></ul>
  2. 2. Problema <ul><li>Como resolver um problema bem “cabeludo”? </li></ul><ul><li>Como as pirâmides do Egito foram construídas? </li></ul>
  3. 3. Solução <ul><li>Dividir para conquistar. </li></ul><ul><ul><li>Modularização </li></ul></ul>
  4. 4. Subalgoritmos <ul><li>São trechos de algoritmos que efetuam determinada tarefa. </li></ul><ul><li>Ao invés de escrever um algoritmo grande, escrevem-se vários algoritmos menores, os quais, em conjunto, resolvem o problema proposto. </li></ul><ul><li>É especialmente indicado usá-los quando uma determinada tarefa é efetuada em diversos lugares no mesmo algoritmo. </li></ul><ul><li>São declarados no início do algoritmo e podem ser chamados em qualquer ponto após sua declaração. </li></ul><ul><li>Podem ser de dois tipos: </li></ul><ul><ul><li>Funções - retornam algum valor. </li></ul></ul><ul><ul><li>Procedimento (Subrotina) - não retorna nada. </li></ul></ul>
  5. 5. Vantagens <ul><li>Reduzem o tamanho do algoritmo. </li></ul><ul><li>Melhoram a legibilidade do algoritmo. </li></ul><ul><li>Evitam a repetição de código. </li></ul><ul><ul><li>Reaproveitamento no mesmo programa ou em outros </li></ul></ul><ul><li>Facilitam a manutenção </li></ul><ul><li>Facilitam a divisão de trabalho </li></ul><ul><li>Possibilitam a utilização de componentes prontos. </li></ul>
  6. 6. Funções <ul><li>Retornam um valor ou uma informação. </li></ul><ul><li>A chamada de uma função é feita através da citação do seu nome seguido de seus argumentos entre parênteses. </li></ul><ul><li>As funções podem ser: </li></ul><ul><ul><li>predefinidas pela linguagem; </li></ul></ul><ul><ul><li>criadas pelo programador de acordo com o seu interesse. </li></ul></ul>
  7. 7. Funções Predefinidas do Visualg
  8. 8. Funções Predefinidas do Visualg
  9. 9. Funções Predefinidas do Visualg <ul><li>algoritmo &quot;exemplo&quot; </li></ul><ul><li>var </li></ul><ul><li>numero : real </li></ul><ul><li>nome : caracter </li></ul><ul><li>inicio </li></ul><ul><li>escreva(&quot;Digite um número: &quot;) </li></ul><ul><li>leia(numero) </li></ul><ul><li>escreval(&quot;Raiz quad. de &quot;, numero, &quot; é &quot;, raizq(numero)) </li></ul><ul><li>escreva(&quot;Digite um nome: &quot;) </li></ul><ul><li>leia(nome) </li></ul><ul><li>escreval(&quot;Normal: &quot;, nome) </li></ul><ul><li>escreval(&quot;Maiúsculas: &quot;, maiusc(nome)) </li></ul><ul><li>escreval(&quot;Minúsculas: &quot;, minusc(nome)) </li></ul><ul><li>escreval(&quot;3 primeiras letras: &quot;, copia(nome,1,3)) </li></ul><ul><li>escreval(&quot;tamanho: &quot;, compr(nome)) </li></ul><ul><li>escreval(maiusc(copia(nome,compr(nome)-2,3))) </li></ul><ul><li>fimalgoritmo </li></ul>
  10. 10. Criação de Funções <ul><li>Algoritmo &quot;<nome do algoritmo>&quot; </li></ul><ul><li>var </li></ul><ul><li><declaração de variáveis globais> </li></ul><ul><li>funcao <identificador> ([var]<parâmetros>) <tipo de retorno> </li></ul><ul><li>var </li></ul><ul><li><declaração de variáveis locais> </li></ul><ul><li>inicio </li></ul><ul><li><lista de comandos> </li></ul><ul><li>retorne < variável de retorno > </li></ul><ul><li>fimfuncao </li></ul><ul><li>inicio </li></ul><ul><li>< lista de comandos> </li></ul><ul><li>fimalgoritmo </li></ul>
  11. 11. Criação de Funções <ul><li>As variáveis globais ficam antes das funções. </li></ul><ul><li>A função sempre fica dentro do escopo Algoritmo e FimAlgoritmo. </li></ul><ul><li>Evite declarar variáveis globais com o mesmo nome das variáveis da função. </li></ul>
  12. 12. Exemplo <ul><li>algoritmo &quot;soma&quot; </li></ul><ul><li>var </li></ul><ul><li>n1, n2 : real </li></ul><ul><li>funcao soma(a, b : real) : real </li></ul><ul><li>retorne a + b </li></ul><ul><li>fimfuncao </li></ul><ul><li>inicio </li></ul><ul><li>escreva( &quot;Digite um número: &quot;) </li></ul><ul><li>leia(n1) </li></ul><ul><li>escreva( &quot;Digite outro número: &quot; ) </li></ul><ul><li>leia(n2) </li></ul><ul><li>escreva( &quot;Soma: &quot; , soma(n1, n2)) </li></ul><ul><li>fimalgoritmo </li></ul>
  13. 13. Exemplo <ul><li>algoritmo &quot;par_impar&quot; </li></ul><ul><li>var </li></ul><ul><li>numero : inteiro </li></ul><ul><li>funcao par_ou_impar(num : inteiro) : caracter </li></ul><ul><li>inicio </li></ul><ul><li>se (num % 2 = 0) entao </li></ul><ul><li>retorne &quot;par&quot; </li></ul><ul><li>senao </li></ul><ul><li>retorne &quot;impar&quot; </li></ul><ul><li>fimse </li></ul><ul><li>fimfuncao </li></ul><ul><li>inicio </li></ul><ul><li>escreva(&quot;Digite um número: &quot;) </li></ul><ul><li>leia(numero) </li></ul><ul><li>escreva(par_ou_impar(numero)) </li></ul><ul><li>fimalgoritmo </li></ul>
  14. 14. Procedimento <ul><li>Algoritmo &quot;<nome do algoritmo>&quot; </li></ul><ul><li>var </li></ul><ul><li><declaração de variáveis globais> </li></ul><ul><li>procedimento <identificador> ([var]<parâmetros>) </li></ul><ul><li>var </li></ul><ul><li><declaração de variáveis locais> </li></ul><ul><li>inicio </li></ul><ul><li><lista de comandos> </li></ul><ul><li>fimprocedimento </li></ul><ul><li>inicio </li></ul><ul><li>< lista de comandos> </li></ul><ul><li>fimalgoritmo </li></ul>
  15. 15. Exemplo <ul><li>algoritmo &quot;repeticao&quot; </li></ul><ul><li>var palavra : caracter </li></ul><ul><li>procedimento repete(texto : caracter; n : inteiro) </li></ul><ul><li>var i : inteiro </li></ul><ul><li>inicio </li></ul><ul><li>para i de 1 ate n faca </li></ul><ul><li>escreval(texto) </li></ul><ul><li>fimpara </li></ul><ul><li>fimprocedimento </li></ul><ul><li>inicio </li></ul><ul><li>escreva(&quot;Digite uma palavra: &quot;) </li></ul><ul><li>leia(palavra) </li></ul><ul><li>repete(palavra, 10) </li></ul><ul><li>fimalgoritmo </li></ul>
  16. 16. Escopo de Variáveis
  17. 17. Passagem de Parâmetros <ul><li>Por valor </li></ul><ul><li>Por referência </li></ul><ul><li>Vantagens do uso da passagem de parâmetros por valor: </li></ul><ul><ul><ul><li>Privacidade dos dados </li></ul></ul></ul><ul><ul><ul><li>A possibilidade de passar constantes como argumentos de funções </li></ul></ul></ul><ul><ul><li>x  raizq(25) </li></ul></ul>
  18. 18. Exemplo – Passagem por Referência <ul><li>algoritmo &quot;permuta_valor&quot; </li></ul><ul><li>var </li></ul><ul><li>n1, n2, aux : inteiro </li></ul><ul><li>procedimento troca(var x, y : inteiro) </li></ul><ul><li>var aux : inteiro </li></ul><ul><li>inicio </li></ul><ul><li>aux <- x </li></ul><ul><li>x <- y </li></ul><ul><li>y <- aux </li></ul><ul><li>fimprocedimento </li></ul><ul><li>inicio </li></ul><ul><li>Escreva(&quot;Digite n1: &quot;) </li></ul><ul><li>leia(n1) </li></ul><ul><li>Escreva(&quot;Digite n2: &quot;) </li></ul><ul><li>leia(n2) </li></ul><ul><li>troca(n1,n2) </li></ul><ul><li>Escreval(&quot;n1 é: &quot;, n1) </li></ul><ul><li>Escreval(&quot;n2 é: &quot;, n2) </li></ul><ul><li>fimalgoritmo </li></ul>

×