JavaScript: Subalgoritmos
Carlos Santos
LabMM 3 - NTC - DeCA - UA
Aula 08, 10-10-2011
Subalgoritmos

• Porque não devemos repetir o mesmo algoritmo/código em diferentes
  locais do programa?

 • quantidade de código escrito aumenta;

 • alterações no algoritmo implica alterar todas as existências do código.

• Porque é uma boa prática centralizar rotinas em subalgoritmos?

 • cada algoritmo só é escrito uma vez;

 • diminui a dimensão da aplicação;

 • facilita operações de alteração e/ou manutenção do código;

 • pode minimizar alguns erros de programação.
Subalgoritmos - O que são?

• Subalgoritmos são algoritmos dentro de algoritmos que compreendem um
  conjunto de instruções dedicadas à resolução de uma tarefa ou problema.

 • são identificados por um nome único que é definido na sua declaração;

 • são invocados através do seu nome único;

• Conceptualmente, podem-se distinguir dois tipos de subalgoritmos:

 • procedimentos: definem um conjunto de instruções a executar;

 • funções: definem um conjunto de instruções a executar e retornam um
   valor final.
Subalgoritmos: declaração em Javascript

     identificador único     lista de parâmetros necessários
      do subalgoritmo/     para a execução do subalgoritmo/
           função               função (podem não existir)




  function nomeFunção ([arg0, arg1,..., argN])
  {
      // código a executar
      [return valor;]
  }
                               valor a retornar pela
                                função (opcional)
Subalgoritmos: ordem de execução
Subalgoritmos: caixa preta!




 invocação

                         subalgoritmo
 retorno da
 execução
Subalgoritmos e estratégias de programação

• Sem recurso a subalgoritmos – Programação convencional linear

 • Cada processo é executado após o anterior;

 • Não se distinguem alterações à linearidade do fluxo exceto pela utilização
   de estruturas de decisão e repetição.



• Com recurso a subalgoritmos – Programação estruturada ou modular

 • Programação por módulos baseada na divisão do problema em sub-
   problemas;

 • Cada módulo pensado para invocação a partir de múltiplos locais do
   programa.
Subalgoritmos: mais quais?

 A aplicação dos subalgoritmos é facilitada se adotada a estratégia Top-
 Down.

  • O programador deve:

     • Identificar as principais tarefas do programa;

     • Desenvolver o programa principal e os métodos de controlo das sub-
       rotinas;

     • Desenvolver os algoritmos para as sub-rotinas:

        • Identificar o nível de detalhe e divisão em sub-rotinas (ex. rotinas só para a entrada de dados, ...)

        • Validar a execução;

        • Otimizar para reutilização;


 • Qual a possibilidade de divisão de tarefas entre programadores?
Subalgoritmos: exemplo
Tipos de subalgoritmos

• Intrínsecos

    • nativos da própria linguagem de programação.

• Extrínsecos

    • criados pelo programador



• NOTA: as frameworks disponibilizam bibliotecas de funções que permitem
  ampliar as funções nativas de uma linguagem de programação.

• NOTA 2: apesar das diferenças conceptuais, a partir deste ponto irei utilizar apenas a designação “função” para
  todos os tipos de subalgoritmos.
Funções: exemplo 1
 <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
         <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
         <title>Funções: Exemplo 1</title>
         <script language="javascript" type="application/javascript">
             <!--
               function helloWorld() //Declaração da função
               {
                   alert("Hello World!");
               }
             //-->
         </script>
     </head>
     <body>
         <script language="javascript" type="application/javascript">
             helloWorld(); //Invocação da função
         </script>
     </body>
 </html>
Como invocar

• Uma instrução direta no código

  • helloWorld();


• Associar a um evento

  • onload="iniciarQuadroJogo(); //evento de sistema

  • onclick="clicarObjeto(); //eventos de ações do utilizador

  • timerID = setInterval(“limparQuadroJogo()”, 2000); //eventos periódicos gerados
    por timers

     • clearInterval(timerID); //para terminar com um timer específico


• Callback

  • uma função é invocada assincronamente quando uma determinada
    operação terminar...

LabMM3 - Aula teórica 08

  • 1.
    JavaScript: Subalgoritmos Carlos Santos LabMM3 - NTC - DeCA - UA Aula 08, 10-10-2011
  • 2.
    Subalgoritmos • Porque nãodevemos repetir o mesmo algoritmo/código em diferentes locais do programa? • quantidade de código escrito aumenta; • alterações no algoritmo implica alterar todas as existências do código. • Porque é uma boa prática centralizar rotinas em subalgoritmos? • cada algoritmo só é escrito uma vez; • diminui a dimensão da aplicação; • facilita operações de alteração e/ou manutenção do código; • pode minimizar alguns erros de programação.
  • 3.
    Subalgoritmos - Oque são? • Subalgoritmos são algoritmos dentro de algoritmos que compreendem um conjunto de instruções dedicadas à resolução de uma tarefa ou problema. • são identificados por um nome único que é definido na sua declaração; • são invocados através do seu nome único; • Conceptualmente, podem-se distinguir dois tipos de subalgoritmos: • procedimentos: definem um conjunto de instruções a executar; • funções: definem um conjunto de instruções a executar e retornam um valor final.
  • 4.
    Subalgoritmos: declaração emJavascript identificador único lista de parâmetros necessários do subalgoritmo/ para a execução do subalgoritmo/ função função (podem não existir) function nomeFunção ([arg0, arg1,..., argN]) { // código a executar [return valor;] } valor a retornar pela função (opcional)
  • 5.
  • 6.
    Subalgoritmos: caixa preta! invocação subalgoritmo retorno da execução
  • 7.
    Subalgoritmos e estratégiasde programação • Sem recurso a subalgoritmos – Programação convencional linear • Cada processo é executado após o anterior; • Não se distinguem alterações à linearidade do fluxo exceto pela utilização de estruturas de decisão e repetição. • Com recurso a subalgoritmos – Programação estruturada ou modular • Programação por módulos baseada na divisão do problema em sub- problemas; • Cada módulo pensado para invocação a partir de múltiplos locais do programa.
  • 8.
    Subalgoritmos: mais quais? A aplicação dos subalgoritmos é facilitada se adotada a estratégia Top- Down. • O programador deve: • Identificar as principais tarefas do programa; • Desenvolver o programa principal e os métodos de controlo das sub- rotinas; • Desenvolver os algoritmos para as sub-rotinas: • Identificar o nível de detalhe e divisão em sub-rotinas (ex. rotinas só para a entrada de dados, ...) • Validar a execução; • Otimizar para reutilização; • Qual a possibilidade de divisão de tarefas entre programadores?
  • 9.
  • 10.
    Tipos de subalgoritmos •Intrínsecos • nativos da própria linguagem de programação. • Extrínsecos • criados pelo programador • NOTA: as frameworks disponibilizam bibliotecas de funções que permitem ampliar as funções nativas de uma linguagem de programação. • NOTA 2: apesar das diferenças conceptuais, a partir deste ponto irei utilizar apenas a designação “função” para todos os tipos de subalgoritmos.
  • 11.
    Funções: exemplo 1 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Funções: Exemplo 1</title> <script language="javascript" type="application/javascript"> <!-- function helloWorld() //Declaração da função { alert("Hello World!"); } //--> </script> </head> <body> <script language="javascript" type="application/javascript"> helloWorld(); //Invocação da função </script> </body> </html>
  • 12.
    Como invocar • Umainstrução direta no código • helloWorld(); • Associar a um evento • onload="iniciarQuadroJogo(); //evento de sistema • onclick="clicarObjeto(); //eventos de ações do utilizador • timerID = setInterval(“limparQuadroJogo()”, 2000); //eventos periódicos gerados por timers • clearInterval(timerID); //para terminar com um timer específico • Callback • uma função é invocada assincronamente quando uma determinada operação terminar...