Controlo da Execução | Resumos LEIC-A
Mais uma vez, por esta altura já devemos estar mais que habituados a expressões if, else if e else: expressões condicionais que permitem exprimir decisões consoante um dado conjunto de condições.
if (/* condição 1 */) {
/* instrução 1 */
} else if (/* condição 2 */) {
/* instrução 2 */
/* instrução 3 */
Passamos então a uma operação que não foi abordada em FP: switch (switch-case) corresponde a um problema de decisão com múltiplas opções. Testa-se uma expressão, sendo que se a mesma coincidir com um dado caso, a instrução/conjunto de instruções a ele associadas são executadas. Podemos ainda definir (não obrigatoriamente) um conjunto de instruções para o caso especial em que a expressão não coincide com nenhum dos outros casos: default.
Devemos por norma colocar um break no final de cada conjunto de instruções, visto que caso contrário continuaremos a verificar todos os outros casos. Exceções aplicam-se quando queremos que dois cases distintos seguidos executem o mesmo conjunto de instruções: no trecho abaixo podemos ver isso mesmo com case 'b' e case 'B', que vão executar o mesmo conjunto de instruções.
/* instruções 1 */
break; /* parar a execução dentro do switch aqui */
/* instruções 2 */
/* instruções 3 */
Enquanto uma dada expressão se verificar, uma instrução/conjunto de instruções são executadas.
while (/* expressão */) {
for loops têm a particularidade de ter um cabeçalho, ao contrário de while loops. Esse mesmo cabeçalho possui:
uma expressão de inicialização, como por exemplo int i = 0: tipicamente a variável que vai ser iterada durante o loop e que normalmente faz parte da condição de ciclo do mesmo;
a condição de ciclo do loop: enquanto esta se verificar, o loop continua;
uma expressão de incremento/alteração, que altera um dado conjunto de variáveis.
Um exemplo de cabeçalho de um for loop poderia ser for (int i = 0; i < 10; i++): o loop vai ser executado enquanto a variável i, inicializada a 0 e incrementada em 1 unidade por iteração, tiver valor menor que 10.
for (/* expr inicialização */; /* condição */; /* expr alteração */) {
Bastante semelhante ao while loop, com um twist: o loop é sempre executado pelo menos uma vez, já que a condição só é testada no fim do mesmo.
A instrução break, como sabemos, permite terminar a execução de um for, while, do-while ou switch. A instrução continue, por sua vez, desencadeia a execução da próxima iteração de um for, while ou do-while, ignorando todo o resto das instruções do loop que poderiam ser executadas a seguir.