LabMM3 - Aula teórica 08

1.002 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.002
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
93
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

LabMM3 - Aula teórica 08

  1. 1. JavaScript: SubalgoritmosCarlos SantosLabMM 3 - NTC - DeCA - UAAula 08, 10-10-2011
  2. 2. 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.
  3. 3. 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.
  4. 4. 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)
  5. 5. Subalgoritmos: ordem de execução
  6. 6. Subalgoritmos: caixa preta! invocação subalgoritmo retorno da execução
  7. 7. 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.
  8. 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. 9. Subalgoritmos: exemplo
  10. 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. 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. 12. 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...

×