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 ao algoritmo implicam uma manutenção mais complexa.
• 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 - 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. 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 (pode não existir)
function nomeFunção ([arg0, arg1,..., argN])
{
// código a executar
[return valor;]
}
valor a retornar pela
função (opcional)
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. 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?
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.
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...
14. Parâmetros de uma função
• Parâmetros de entrada
• definem o “protocolo” de comunicação com uma função, ou seja,
explicitam os dados que a função precisa para que possa atingir o seu
objetivo;
• não há um limite formal ao número de parâmetros de uma função;
• na declaração são separados por vírgula;
• podem ser de qualquer tipo de dados.
• Parâmetro de saída
• é o valor devolvido pela função no final da sua execução;
• return valorDevolvido;
• após um return, o código seguinte da função não é executado!
15. Funções: exemplo 2
<head>
<script language="javascript" type="application/javascript">
function helloWorld() //Declaração da função
{
return true; //Qual o resultado da execução desta função?
alert("Hello World!");
}
</script>
</head>
<body>
<script language="javascript" type="application/javascript">
helloWorld();
</script>
</body>
17. Parâmetros: como funcionam?
// Na invocação das funções temos valores,
// ou seja, a lista dos valores que queremos passar para a função
nomeFunção (valor0, valor1,..., valorN);
// Na declaração da função definimos os parâmetros.
// Na sua execução, os parâmetros são transformados em variáveis da função.
// Cada parâmetro é inicializado com o valor passado na respetiva posição.
function nomeFunção(param0, param1,..., paramN)
{
// código da função
// por exemplo, aqui, “param0” é uma variável cujo valor inicial é “valor0”
}
18. Funções: exemplo 3 - passagem de parâmetros
<head>
<script language="javascript" type="application/javascript">
function helloPeople(name) //Declaração da função
{
alert(name);
} nesta invocação da função, ao parâmetro
</script> “name” é atribuído o valor inicial “Manel”
</head>
<body>
<script language="javascript" type="application/javascript">
helloPeople(“Manel”);
</script>
</body>
19. Funções: exemplo 4 - qual o resultado?
<head>
<script language="javascript" type="application/javascript">
function incValores(x, y) //Declaração da função
{
x++;
y++;
alert(x + “ “ + y); // ??
}
</script>
</head>
<body>
<script language="javascript" type="application/javascript">
var a = 4;
var b = 8;
alert(a + “ “ + b); // ??
incValores(a, b);
alert(a + “ “ + b); // ??
</script>
</body>