Capítulo 8 Estruturas de Repetição Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Objetivos do Capítulo Apresentar as três estruturas de repetição (loops) disponíveis no Java: while, do-while e for. Indicar a sintaxe que deve ser empregada para a construção de cada diferente tipo de estrutura de repetição. Explorar diferentes tipos de tarefas que podem ser realizadas por uma estrutura de repetição e analisar quando cada uma delas é a mais adequada. Apresentar os mecanismos que podem ser empregados para interromper ou desviar o fluxo de execução em uma estrutura de repetição. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Introdução Estrutura de repetição = loop = laço Finalidade: repetir uma instrução ou bloco Composição: Inicialização Condição Corpo Iteração Tipos: while do-while for Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Estrutura while while = enquanto Sintaxe: <inicialização> while (<condição>) <corpo> <iteração> Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Estrutura while Código 8.1 – While.java Escreva um laço que imprima o valor de uma variável inteira. Esta variável deve iniciar com zero. A variável deve ser incrementada antes de ser impressa. Isso deve se repetir enquanto a variável for menor que cinco. Escreva um laço que imprima o valor de uma variável inteira e o caractere correspondente a ele. Esta variável deve iniciar com 69. A variável deve ser decrementada depois de ser impressa. Isso deve se repetir enquanto a variável for maior ou igual a 65. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Estrutura while Código 8.2 – ValidaNome.java Crie um programa que solicite o nome do usuário. Quando o nome for válido, exiba uma mensagem que indique sua validade e encerre o aplicativo. Quando o nome for inválido, exiba uma mensagem de erro e solicite-o novamente. Para ser válido, o nome deve ter de 5 a 50 caracteres. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Estrutura do-while while versus do-while while = condição testada antes da primeira execução do-while: condição testada após uma execução Sintaxe: <inicialização> do <corpo> <iteração> while (<condição>); Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Estrutura do-while Código 8.3 – DoWhile.java Escreva um laço que imprima o valor de uma variável inteira. Esta variável deve iniciar com nove. A variável deve ser incrementada antes de ser impressa. Isso deve se repetir enquanto a variável for menor que cinco. Escreva um laço que imprima o valor de uma variável inteira e o caractere correspondente a ele. Esta variável deve iniciar com 69. A variável deve ser decrementada depois de ser impressa. Isso deve se repetir enquanto a variável for maior ou igual a 65. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Estrutura do-while Código 8.4 – ValidaEmail.java Crie um programa que solicite o e-mail do usuário. Quando o e-mail for válido, exiba uma mensagem que indique sua validade e encerre o aplicativo. Quando o e-mail for inválido, solicite-o novamente. Para ser válido, o e-mail deve atender aos seguintes requisitos: Deve ter pelo menos 5 caracteres. Deve ter somente um símbolo de arroba. Este símbolo não pode ser o primeiro caractere. Este símbolo não pode ser o último caractere. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Estrutura for Característica: compacta Sintaxe: for (<inicialização>; <condição>; <iteração>) <corpo> Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Estrutura for Código 8.5 – For.java Escreva um laço que imprima o valor de uma variável inteira. Esta variável deve iniciar com 1. A variável deve ser incrementada depois de ser impressa. Isso deve se repetir enquanto a variável for menor ou igual a 5. Escreva outro laço que imprima o valor de uma variável inteira. Esta variável deve iniciar com 5. A variável deve ser decrementada depois de ser impressa. Isso deve se repetir enquanto a variável for maior ou igual a 1. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Estrutura for Código 8.6 – Compras.java Crie um programa que solicite a descrição de 5 itens para compor uma lista de compras. Grave todos os itens em uma única string. Se o diálogo de entrada for cancelado, encerre o aplicativo. Ao final, exiba a lista de compras com os 5 itens registrados. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Quebras de Laço Finalidade: interromper o fluxo normal de um laço Tipos: break: encerra o laço continue: desvia a execução No while e do-while: para a condição No for: para a iteração Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Quebras de Laço Código 8.7 – Break.java Crie um programa que solicite o nome do usuário. Quando o nome for válido, exiba uma mensagem co o nome informado e encerre o aplicativo. Quando o nome for inválido, solicite-o novamente. Para ser válido, o nome deve ter pelo menos 2 caracteres. Para repetir a solicitação do nome, utilize um laço cuja condição jamais se torne falsa. Interrompa este laço quando o nome for válido. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Quebras de Laço Código 8.8 – Tarefas.java Crie um programa que solicite a descrição de até 10 tarefas para compor uma lista de coisas a serem feitas. Grave todas as tarefas em uma única string. Se o diálogo de entrada for cancelado, exiba a lista de tarefas que foram registradas. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Quebras de Laço Código 8.9 – Continue.java Crie um programa que solicite o nome do usuário. Utilize um laço for para realizar esta solicitação. Quando o nome for inválido, solicite-o novamente. Utilize o contador do laço for para contar quantas vezes um nome inválido foi informado. Se nenhum erro tiver sido cometido, apenas apresente uma mensagem de boas-vindas. Se um nome inválido tiver sido informado, a mensagem de boasvindas deve incluir o número de erros cometidos. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Quebras de Laço Código 8.10 – Musicas.java Crie um programa que permita registrar até 10 músicas. O nome do artista e o nome da música devem ser informados através de diálogos distintos. Grave todos os dados em uma única string. Antes de gravá-los, converta o nome do artista para maiúsculo e o título da música para minúsculo. Se um diálogo de entrada for cancelado, exiba uma lista com as músicas que foram registradas. Se um dado inválido for informado, exiba uma mensagem de erro e solicite-o novamente. O título da música deve ter de 2 a 30 caracteres. O nome do artista deve ter de 5 a 40 caracteres. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Exercício 1 Crie um novo aplicativo, chamado Exercicio0801, que solicite seu nome completo e avalie se o dado informado é válido. Se o diálogo de entrada for cancelado, o aplicativo deve ser encerrado imediatamente. Se o nome não for válido, uma mensagem de erro deve ser exibida e o aplicativo deve solicitá-lo novamente. Se o nome for válido, o aplicativo deve exibir uma mensagem com o nome informado. As regras para a validação do dado informado são as seguintes: Deve ter de 5 a 50 caracteres. Não pode ter números. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Exercício 1 As figuras abaixo ilustram a saída que deve ser produzida por este aplicativo para diferentes entradas. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Exercício 2 Crie um novo aplicativo, chamado Exercicio0802, que solicite seu CPF e avalie se o dado informado é válido. Se o diálogo de entrada for cancelado, o aplicativo deve ser encerrado imediatamente. Se o CPF não for válido, uma mensagem de erro deve ser exibida e o aplicativo deve solicitá-lo novamente. Se o CPF for válido, o aplicativo deve exibir uma mensagem com o CPF informado. As regras para a validação do dado informado são as seguintes: Deve ter 11 caracteres. Todos os caracteres devem ser dígitos numéricos. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Exercício 2 As figuras abaixo ilustram a saída que deve ser produzida por este aplicativo para diferentes entradas. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Exercício 3 Crie um novo aplicativo, chamado Exercicio0803, que solicite um número e calcule o seu fatorial. Se o diálogo de entrada for cancelado, o aplicativo deve ser encerrado imediatamente. Se o número não for válido, uma mensagem de erro deve ser exibida e o aplicativo deve solicitá-lo novamente. Se o número for válido, o aplicativo deve exibir uma mensagem com o seu fatorial. Para ser válido, o número deve estar entre 0 e 25. O cálculo do fatorial de um número é realizado multiplicandose este número por todos os números inteiros positivos anteriores a ele. Por exemplo: o fatorial de 4 é 24 (4 x 3 x 2 x 1). Além disso, o fatorial de zero é igual a um. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Exercício 3 As figuras abaixo ilustram a saída que deve ser produzida por este aplicativo para uma entrada válida. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Exercício 4 Crie um novo aplicativo, chamado Exercicio0804, que realize um número ilimitado de cálculos de IMC. Para realizar cada cálculo, o aplicativo deve solicitar um peso e uma altura. Se qualquer um destes diálogos for cancelado, o aplicativo deve ser encerrado imediatamente. Se um destes dados informados não for válido, uma mensagem de erro deve ser exibida e o aplicativo deve solicitá-lo novamente. Se os dois dados forem válidos, o aplicativo deve exibir uma mensagem contendo o IMC e a categoria correspondentes. As regras para a validação dos dados informados são as seguintes: Peso: deve ser um número entre 1,0 e 300,0. Altura: deve ser um número entre 0,1 e 2,5. Depois de realizar um cálculo de IMC e exibir a mensagem final, o aplicativo deve iniciar um novo procedimento de captação de dados para um novo cálculo. Ele deve realizar esta tarefa pela quantidade de vezes que você desejar e só deve ser encerrado quando você cancelar um dos diálogos de entrada. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Exercício 4 As figuras abaixo ilustram a saída que deve ser produzida por este aplicativo para duas entradas válidas. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Exercício 5 Crie um novo aplicativo, chamado Exercicio0805, que simule a emissão de um relatório simplificado de folha de pagamento. O aplicativo deve utilizar diálogos de entrada de dados para solicitar o nome e o salário de um número ilimitado de funcionários. Se qualquer um destes diálogos for cancelado, o aplicativo deve ser encerrado imediatamente. Se um destes dados informados não for válido, uma mensagem de erro deve ser exibida e o aplicativo deve solicitá-lo novamente. As regras para a validação dos dados informados são as seguintes: Nome: deve ter de 2 a 30 caracteres. Salário: deve ser um valor igual ou superior a R$ 465,00. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Exercício 5 O teto para recolhimento de INSS é de RS 354,07. Esse é o valor máximo que pode ser descontado do funcionário. Para cada funcionário, o aplicativo deve calcular os valores a serem descontados de seu salário a título de INSS e de Imposto de Renda. Para calcular o valor do INSS a ser descontado, utilize a tabela abaixo: Salário Até R$ 965,67 8,0 De R$ 965,68 a R$ 1.609,45 9,0 De R$ 1.609,46 a R$ 3.218,90 Rui Rossi dos Santos Alíquota 11,0 Programação de Computadores em Java Editora NovaTerra Exercício 5 Para calcular o valor do Imposto de Renda, utilize a tabela abaixo. Salário Rui Rossi dos Santos Alíquota Até R$ 1.434,00 0,0 De R$ 1.434,01 a R$ 2.150,00 7,5 De R$ 2.150,01 a R$ 2.886,00 15,0 De R$ 2.886,01 a R$ 3.582,00 22,5 Acima de 3.582,00 27,5 Programação de Computadores em Java Editora NovaTerra Exercício 5 O aplicativo também deve calcular o salário líquido a ser pago a cada funcionário, que representa o valor do salário decrescido dos valores do INSS e do Imposto de Renda. Ele deve captar o nome e o salário de um funcionário e realizar todos estes cálculos a quantidade de vezes que você desejar. Quando você cancelar um dos diálogos de entrada de dados, este aplicativo deve exibir uma mensagem contendo uma lista com o nome e o salário de cada funcionário que você informou, bem como os valores do INSS e do Imposto de Renda e o salário líquido a ser pago a cada um deles. Ao final desta lista, o aplicativo também deve indicar algumas totalizações: a soma do valor de todos os salários, as somas dos descontos de INSS e de Imposto de Renda e a soma de todos os salários líquidos. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Exercício 5 As figuras abaixo ilustram os diálogos produzidos por este aplicativo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Contato Com o autor: Rui Rossi dos Santos E-mail: [email protected] Web Site: http://www.ruirossi.pro.br Com a editora: Editora NovaTerra Telefone: (21) 2218-5314 Web Site: http://www.editoranovaterra.com.br Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra