1 Estruturas de Controle 2 4.2 Algoritmos • Algoritmos – Série de ações em uma ordem específica • As ações executadas • Ordem na qual as ações são executadas • Controle do Fluxo do Programa – Especificar a ordem na qual as ações são executadas • As estruturas de controle ajudam a determinar esta ordem 3 4.3 Pseudocódigo • Pseudocódigo – Linguagem informal para desenvolver algoritmos – Não é executado em computadores – Ajuda os desenvolvedores a "pensar" em algoritmos 4 4.4 Estruturas de Controle • Execução seqüencial – As instruções do programa executam uma após a outra • Transferência de Controle – Três estruturas de controle podem especificar a ordem de execução das instruções: • estruturas de seqüência • estruturas de seleção • estruturas de repetição 5 4.4 Estruturas de Controle • As estruturas seqüenciais são o default para a execução de programas Java • Java tem três estruturas de seleção – if – if…else – switch • Java tem três estruturas de repetição – while – do…while – for • Cada uma dessas palavras é uma palavra reservada Java 6 4.5 Comando if (sem else) • Estrutura de controle "entrada única/saída única" • Executa a ação somente se a condição for verdadeira • Modelo de programação de ação/decisão 7 [grade >= 60] print “Passed” [grade < 60] diagrama de atividade para um comando if 8 4.6 comando if…else • Realiza a ação somente quando a condição é verdadeira • Quando a condição é falsa, executa uma outra ação alternativa especificada pelo programador • Operador condicional ternário (?:) • Estruturas if…else aninhadas 9 [grade < 60] print “Failed” [grade >= 60] print “Passed” diagrama de atividade para um comando if..else 10 4.7 O laço while • Repita a ação enquanto a condição permanecer verdadeira 11 merge decisão [product <= 1000] dobra o valor do produto [product > 1000] instrução Java: product = 2 * product; Diagrama de atividade para um laço while. 4.8 Formulando algoritmos: Estudo de Caso 1 (Repetição controlada por um contador) • Contador – Variável que controla o número de vezes que um grupo de instruções é executada • Media1.java calcula a média de notas – usa um contador para controlar o número de repetições 12 13 total 0 contador 1 Enquanto contador <= 10 Leia a próxima nota total total + nota contador contador + 1 fim enquanto media total / 10 Imprime a média Pseudo código de um algoritmo que usa uma estrutura de repetição controlada por um contador para resolver o problema da média de uma turma. 14 15 Outline Declara variáveis; contaNotas é o contador Continua o laço enquanto contaNotas for menor ou igual a 10 16 Outline Media1.java 17 4.9 Estudo de Caso 2 (Repetição controlada por uma sentinela) • Valor sentinela – Usado para indicar o fim da entrada de dados • Media2.java tem o número de repetições indefinido – Usuário entra o valor sentinela (-1) para terminar as repetições 18 total 0 contador 0 Leia a primeira nota (talvez até a sentinela) Enquanto o usuário não digitar o valor sentinela total total + nota contador contador + 1 Leia a próxima nota (talvez seja a sentinela) fim enquanto se contador <> 0 média total / contador Imprime a média senão Imprime “Nenhuma nota foi entrada” O problema da média resolvido por um laço com sentinela 19 20 Outline efetua o laço até que o valor da sentinela nota seja igual a (-1) Formata o número com duas casas decimais 21 Outline Media2.java 22 4.10 Estudo de Caso 3: Estruturas de Controle Aninhadas • Estruturas de Controle Aninhadas 23 aprovados 0 reprovados 0 estudante 1 Enquanto estudante <= 10 Leia o próximo resultado de exame Se o estudante passou aprovados aprovados + 1 senão reprovados reprovados + 1 estudante estudante + 1 Fim enquanto Imprime o número de aprovados Imprime o número de reprovados Se aprovados > 8 Imprime “Aumentar a dificuldade!” Pseudo código para o problema da estatística dos resultados. 24 25 Outline 26 Outline Analise.java 27 Operadores ++ -++ -* / + < <= == != ?: = += Fig. 4.15 Associação Tipo direita para a esquerda pós-incremento e pósdecremento + (type) direita para a esquerda unários % esquerda para a direita multiplicativos esquerda para a direita aditivos > >= esquerda para a direita relacionais esquerda para a direita igualdade direita para a esquerda condicional -= *= /= %= direita para a esquerda atribuição Precedência e associação dos operadores vistos até aqui.