Lógica de Programação Subalgoritmos Regis Pires Magalhães [email_address] Última atualização em 03/08/2008
Problema Como resolver um problema bem “cabeludo”? Como as pirâmides do Egito foram construídas?
Solução Dividir para conquistar. Modularização
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.
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.
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.
Funções Predefinidas do Visualg
Funções Predefinidas do Visualg
Funções Predefinidas do Visualg algoritmo  "exemplo" var numero : real nome : caracter inicio 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
Criação de Funções Algoritmo  &quot;<nome do algoritmo>&quot; 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
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.
Exemplo algoritmo   &quot;soma&quot; var n1, n2 : real funcao  soma(a, b : real) : real retorne a + b fimfuncao inicio escreva( &quot;Digite um número: &quot;) leia(n1) escreva( &quot;Digite outro número: &quot; ) leia(n2) escreva( &quot;Soma: &quot; , soma(n1, n2)) fimalgoritmo
Exemplo algoritmo &quot;par_impar&quot; var numero : inteiro funcao par_ou_impar(num : inteiro) : caracter inicio se (num % 2 = 0) entao retorne &quot;par&quot; senao retorne &quot;impar&quot; fimse fimfuncao inicio escreva(&quot;Digite um número: &quot;) leia(numero) escreva(par_ou_impar(numero)) fimalgoritmo
Procedimento Algoritmo  &quot;<nome do algoritmo>&quot; 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
Exemplo algoritmo &quot;repeticao&quot; var palavra : caracter procedimento repete(texto : caracter; n : inteiro) var i : inteiro inicio para i de 1 ate n faca escreval(texto) fimpara fimprocedimento inicio escreva(&quot;Digite uma palavra: &quot;) leia(palavra) repete(palavra, 10) fimalgoritmo
Escopo de Variáveis
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)
Exemplo – Passagem por Referência algoritmo &quot;permuta_valor&quot; var n1, n2, aux : inteiro procedimento troca(var x, y : inteiro) var aux : inteiro inicio aux <- x x <- y y <- aux fimprocedimento inicio Escreva(&quot;Digite n1: &quot;) leia(n1) Escreva(&quot;Digite n2: &quot;) leia(n2) troca(n1,n2) Escreval(&quot;n1 é: &quot;, n1) Escreval(&quot;n2 é: &quot;, n2) fimalgoritmo

Logica Algoritmo 07 Subalgoritmos

  • 1.
    Lógica de ProgramaçãoSubalgoritmos Regis Pires Magalhães [email_address] Última atualização em 03/08/2008
  • 2.
    Problema Como resolverum problema bem “cabeludo”? Como as pirâmides do Egito foram construídas?
  • 3.
    Solução Dividir paraconquistar. Modularização
  • 4.
    Subalgoritmos São trechosde 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.
  • 5.
    Vantagens Reduzem otamanho 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.
  • 6.
    Funções Retornam umvalor 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.
  • 7.
  • 8.
  • 9.
    Funções Predefinidas doVisualg algoritmo &quot;exemplo&quot; var numero : real nome : caracter inicio escreva(&quot;Digite um número: &quot;) leia(numero) escreval(&quot;Raiz quad. de &quot;, numero, &quot; é &quot;, raizq(numero)) escreva(&quot;Digite um nome: &quot;) leia(nome) escreval(&quot;Normal: &quot;, nome) escreval(&quot;Maiúsculas: &quot;, maiusc(nome)) escreval(&quot;Minúsculas: &quot;, minusc(nome)) escreval(&quot;3 primeiras letras: &quot;, copia(nome,1,3)) escreval(&quot;tamanho: &quot;, compr(nome)) escreval(maiusc(copia(nome,compr(nome)-2,3))) fimalgoritmo
  • 10.
    Criação de FunçõesAlgoritmo &quot;<nome do algoritmo>&quot; 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
  • 11.
    Criação de FunçõesAs 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.
  • 12.
    Exemplo algoritmo &quot;soma&quot; var n1, n2 : real funcao soma(a, b : real) : real retorne a + b fimfuncao inicio escreva( &quot;Digite um número: &quot;) leia(n1) escreva( &quot;Digite outro número: &quot; ) leia(n2) escreva( &quot;Soma: &quot; , soma(n1, n2)) fimalgoritmo
  • 13.
    Exemplo algoritmo &quot;par_impar&quot;var numero : inteiro funcao par_ou_impar(num : inteiro) : caracter inicio se (num % 2 = 0) entao retorne &quot;par&quot; senao retorne &quot;impar&quot; fimse fimfuncao inicio escreva(&quot;Digite um número: &quot;) leia(numero) escreva(par_ou_impar(numero)) fimalgoritmo
  • 14.
    Procedimento Algoritmo &quot;<nome do algoritmo>&quot; 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
  • 15.
    Exemplo algoritmo &quot;repeticao&quot;var palavra : caracter procedimento repete(texto : caracter; n : inteiro) var i : inteiro inicio para i de 1 ate n faca escreval(texto) fimpara fimprocedimento inicio escreva(&quot;Digite uma palavra: &quot;) leia(palavra) repete(palavra, 10) fimalgoritmo
  • 16.
  • 17.
    Passagem de ParâmetrosPor 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)
  • 18.
    Exemplo – Passagempor Referência algoritmo &quot;permuta_valor&quot; var n1, n2, aux : inteiro procedimento troca(var x, y : inteiro) var aux : inteiro inicio aux <- x x <- y y <- aux fimprocedimento inicio Escreva(&quot;Digite n1: &quot;) leia(n1) Escreva(&quot;Digite n2: &quot;) leia(n2) troca(n1,n2) Escreval(&quot;n1 é: &quot;, n1) Escreval(&quot;n2 é: &quot;, n2) fimalgoritmo