Logica Algoritmo 07 Subalgoritmos

12,850 views

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
12,850
On SlideShare
0
From Embeds
0
Number of Embeds
72
Actions
Shares
0
Downloads
369
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

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>

×