labmm3 - aula teórica 08

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

Upload: carlos-santos

Post on 24-May-2015

899 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: LabMM3 - Aula teórica 08

JavaScript: Subalgoritmos

Carlos SantosLabMM 3 - NTC - DeCA - UAAula 08, 10-10-2011

Page 2: LabMM3 - Aula teórica 08

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.

Page 3: LabMM3 - Aula teórica 08

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.

Page 4: LabMM3 - Aula teórica 08

Subalgoritmos: declaração em Javascript

function nomeFunção ([arg0, arg1,..., argN]){

// código a executar[return valor;]

}

identificador único do subalgoritmo/

função

valor a retornar pela função (opcional)

lista de parâmetros necessários para a execução do subalgoritmo/

função (podem não existir)

Page 5: LabMM3 - Aula teórica 08

Subalgoritmos: ordem de execução

Page 6: LabMM3 - Aula teórica 08

Subalgoritmos: caixa preta!

subalgoritmoinvocação

retorno daexecução

Page 7: LabMM3 - Aula teórica 08

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.

Page 8: LabMM3 - Aula teórica 08

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?

Page 9: LabMM3 - Aula teórica 08

Subalgoritmos: exemplo

Page 10: LabMM3 - Aula teórica 08

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.

Page 11: LabMM3 - Aula teórica 08

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>

Page 12: LabMM3 - Aula teórica 08

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...