Baixe o app para aproveitar ainda mais
Prévia do material em texto
Estruturas de Repetição Introdução a estruturas de repetição em Java: – com teste no início ( while ) – com teste no final ( do .. while ) – com variável de controle ( for ) Estrutura de Repetição com Teste no Início • A <condição> é primeiro avaliada • Enquanto a <condição> for verdadeira o “bloco verdade” é executado • Quando a <condição> for falsa, é executado o bloco de instruções imediatamente após FIM_ENQUANTO ENQUANTO <condição> FAÇA <Bloco Verdade> instrução 1 instrução 2 . instrução n FIM-ENQUANTO Estrutura de Repetição com Teste no Início, em Java while ( <condição> ) { instrução 1; instrução 2; . . . instrução n; } ENQUANTO <condição> FAÇA <Bloco Verdade> instrução 1 instrução 2 . instrução n FIM-ENQUANTO Exemplo: Repetição com teste no início • Converter o algoritmo que imprime a tabuada do número dado pelo usuário, usando a estrutura de repetição ENQUANTO-FAÇA num programa em Java. Exemplo de Algoritmo (1) - Resolução Nome: Tabuada Objetivo: Elaborar um algoritmo que imprima a tabuada de um número inteiro Dados de Entrada: Um número inteiro Saída: A tabuada do número lido Exemplo de Algoritmo (2) - Resolução Variáveis: inteiro num, <número lido> cont, <contador da repetição> result <resultado da multiplicação> Exemplo de Algoritmo (3) - Resolução INÍCIO 1 LEIA num 2 cont ← 1 3 ENQUANTO cont <= 10 FAÇA 3.1 result ← num * cont 3.2 IMPRIMA num, “x” , cont, “=” , result 3.3 cont ← cont + 1 FIM-ENQUANTO FIM. Inicialização da variável contador Condição Incremento da variável contador Exemplo de Implementação (parte I) package seuNome; import javax.swing.JOptionPane; public class Tabuada { public static void main ( String[ ] args ) { // declaração de variáveis: int num;// Número lido int cont; // Contador da repetição int result; // Resultado da multiplicação String entrada; // Variável auxiliar para entrada de dados String saida; // Variável auxiliar para exibição de mensagem Exemplo de Implementação (parte II) // instruções: // 1) Leia num: entrada = JOptionPane.showInputDialog("Digite um número:" ); num = Integer.parseInt (entrada); // 2) Inicia variáveis: cont = 1; saida = ""; Exemplo de Implementação (parte III) // 3) Gera a tabuada: while (cont <= 10) { // 3.1) calcula: result = num * cont; // 3.2) monta a mensagem de saída: saida = saída + num + " x " + cont + " = " + result + "\n" ; // 3.3) incrementa o contador: cont = cont + 1; } // 4) exibe a mensagem de saída JOptionPane.showMessageDialog(null, saida); } // fim do main } // fim da classe Exercício 6.1: Estrutura de Repetição com Teste no Início • ESTE EXERCÍCIO É RECOMENDADO COMO ESTUDO PARA A PROVA!!! • Dada a quantidade de alunos de uma turma, calcular a média semestral de cada aluno da turma e mostrar uma mensagem para os alunos aprovados. Exemplo de Algoritmo para Exercício 6.1 - Resolução (1) Nome: CálculoMédia. Objetivo: Calcular a média de cada aluno de uma turma e mostrar uma mensagem para os aprovados Dados de Entrada: Quantidade de alunos, médias do 1º e 2º bimestre (MB1 e MB2). Saída: Média semestral de cada aluno e uma mensagem para os aprovados Exemplo de Algoritmo para Exercício 6.1 - Resolução (2) Variáveis: inteiro qtd <quantidade de alunos> real MB1 <Nota do 1º. Bimestre> real MB2 <Nota do 2º. Bimestre> real media <media semestral> Exemplo de Algoritmo para Exercício 6.1 - Resolução (3) INÍCIO 1 LEIA qtd 2 cont ← 0 3 ENQUANTO cont < qtd FAÇA 3.1 LEIA MB1 3.2 LEIA MB2 3.3 media ← (MB1 + MB2)/2 3.4 SE media >= 7,0 ENTÃO 3.4.1 IMPRIMA "Você foi aprovado !“ 3.4.2 IMPRIMA "Parabéns !" FIM-SE 3.5 IMPRIMA media 3.6 cont ← cont + 1 FIM-ENQUANTO FIM. Inicialização da variável contador Incremento da variável contador Condição ou critério de parada (depende da variável contador já inicializada!) Exercício 6.2: Estrutura de Repetição com Teste no Início ESTE EXERCÍCIO É RECOMENDADO COMO ESTUDO PARA A PROVA!!! Dado um número inteiro positivo n, imprimir os n primeiros naturais ímpares. – Exemplo: Para n = 4, a saída deverá ser 1, 3, 5, 7 – Escreva um algoritmo e, em seguida, implemente-o em Java. Exercício 6.3: Estrutura de Repetição com Teste no Início ESTE EXERCÍCIO É PARA SER FEITO EM SALA VALENDO NOTA!!! Escrever um programa em java que resolva o problema a seguir: Uma pesquisa sobre a população de uma determinada região coletou os seguintes dados, referentes a cada habitante, para serem analisados: – idade (em anos) – sexo (m-masculino, f-feminino) – Para cada habitante são informados os dados acima. A fim de indicar o final da entrada, após a seqüência de dados dos habitantes, o usuário entrará com o valor -1 para a idade, o que deve ser interpretado pelo algoritmo como fim de entrada. Encontrar a maior idade de um conjunto de indivíduos e o percentual de indivíduos do sexo feminino com idade entre 18 e 35 anos. Exemplo de Algoritmo para Exercício 6.3 - Resolução (1) Nome: Habitantes Objetivo: Encontrar a maior idade de um conjunto de indivíduos e o percentual de indivíduos do sexo feminino com idade entre 18 e 35 anos Dados de Entrada: A idade e o sexo Saída: a maior idade e o percentual de indivíduos do sexo feminino com idade entre 18 e 35 anos Exemplo de Algoritmo para Exercício 6.3 - Resolução (2) Variáveis: inteiro idade, <idade de um indivíduo> maioridade, <a maior idade> femHab <habitantes do sexo feminino> real totalHab, < total de habitantes> porcentagem <porcentagem de habitantes> caracter sexo <sexo do indivíduo> INÍCIO 1. maioridade –1 <inicializa algumas variáveis> 2. femHab 0 3. totalHab 0 4. IMPRIMA "Entre com a idade do habitante ou -1 para encerrar: “ 5. LEIA idade <lê a idade do primeiro habitante> 6. ENQUANTO idade –1 FAÇA <calcula os resultados> 6.1. LEIA sexo 6.2. SE idade > maioridade ENTÃO 6.2.1. maioridade idade FIM-SE 6.3. totalHab totalHab + 1 <conta o número total de habitantes> 6.4. SE (idade 18) E (idade 35) E (sexo =’F’) ENTÃO 6.5.1. femHab femHab + 1 FIM-SE 6.5. IMPRIMA "entre com a idade do habitante ou -1 para encerrar: " 6.6. LEIA idade <lê a idade do próximo habitante> FIM-ENQUANTO 7. SE totalHab > 0 ENTÃO <escreve a maior idade e a porcentagem pedida> 7.1. porcentagem femHab*100/totalHab 7.2. IMPRIMA "a maior idade é: ", maioridade 7.3. IMPRIMA "a porcentagem é: ", porcentagem FIM-SE FIM. Exercícios: Estrutura de Repetição com Teste no Início ESTES EXERCÍCIOS SÃO RECOMENDADOS COMO ESTUDO PARA A PROVA!!! 6.4) Ler um número inteiro n, que não contém dígito 0, e escrever um número inteiro m que corresponde ao número n invertido. Por exemplo, se n igual a 123, a saída será m igual a 321 6.5) Escreva um algoritmo que leia um número inteiro e positivo representando um número binário, determine o seu equivalente decimal. Exemplo: Dado 10010 a saída será 18, pois 1. 24 + 0. 23 + 0. 22 + 1. 21 + 0. 2 0 = 18 Algoritmo do Exercício 6.4 Objetivo: Inverter um número inteiro sem dígito 0. Dados de Entrada: Um número inteiro e positivo n. Saída: o número m (n invertido). Variáveis: inteiro n <armazena o número inteiro> r < armazena um valor auxiliar > m < armazena o número invertido > Início 1. LEIA n 2. m 0 < inicializa a variável que conterá o inteiro invertido > 3. ENQUANTO n > 0 FAÇA < encontra o número invertido> 3.1 r n % 10 3.2 m m * 10 + r 3.3 n n / 10 FIM-ENQUANTO 4. IMPRIMA m Fim Algoritmo do Exercício 6.5 Objetivo: Ler um número inteiro representado na base 2 e fazer a conversão paraum número inteiro representado na base 10 Entrada: Um número inteiro representado na base 2 Saída: O número lido convertido para a base 10 Variáveis: inteiro binário, decimal, resto, pot2 Início 1. LEIA binário 2. decimal 0 3. pot2 1 4. ENQUANTO binario > 0 FAÇA 4.1 resto binario % 10 < obtém o dígito menos significativo do nº> 4.2 decimal decimal + resto * pot2 4.3 pot2 pot2 * 2 4.4 binario binario / 10 <atualiza o binario > FIM-ENQUANTO 5. IMPRIMA decimal Fim Exercícios Gerais: ESTES EXERCÍCIOS SÃO RECOMENDADOS COMO ESTUDO PARA A PROVA!!! 6.6) Faça um programa em Java que leia 5 valores inteiros e positivos e exiba: o maior valor, o menor valor e a média aritmética dos números lidos 6.7) Dados valores B e E, de base e expoente, exibir BE, sem usar a função Math.pow. 6.8) Dados inteiros positivos N e M, exiba o resultado de N*M, sem usar o operador *. Exercícios Gerais: ESTES EXERCÍCIOS SÃO RECOMENDADOS COMO ESTUDO PARA A PROVA!!! 6.9) Dados 5 valores inteiros positivos, exiba quantos desses valores são múltiplos de 7 e quantos são pares. 6.10) ConversãoDecimalBinário 6.11) Verificar se um número é palíndromo Estrutura de Repetição com Teste no Final repetição com Teste no Final: FAÇA – ENQUANTO FAÇA <Bloco Verdade> instrução 1 instrução 2 . instrução n ENQUANTO <condição> Estrutura de Repetição com Teste no Final Principais características: • O “bloco verdade” é executado uma vez • Ao final a <condição> é avaliada • Enquanto a <condição> for verdadeira o “bloco verdade” é executado • Quando a <condição> for falsa, é executado o bloco de instruções imediatamente após a estrutura de repetição Estrutura de Repetição com Teste no Final • A instrução ou o “bloco verdade” é executado pelo menos uma vez, independentemente do resultado da <condição>, enquanto que o teste no início testa antes de executar o “bloco verdade” FAÇA <Bloco Verdade> instrução 1 instrução 2 . instrução n ENQUANTO <condição> do { instrução 1; instrução 2; . . . instrução n; } while ( <condição> ) ; Exemplo: Repetição com Teste no Final Elaborar um algoritmo que imprima a tabuada do número dado pelo usuário, usando a estrutura de repetição FAÇA-ENQUANTO Resolução: Trecho de Algoritmo com FAÇA-ENQUANTO INÍCIO 1. LEIA num 2. cont ← 1 3. FAÇA 3.1 result ← num * cont 3.2 IMPRIMA num, “x “, cont, “= “, result 3.3 cont ← cont + 1 ENQUANTO cont <= 10 FIM. Exemplo de Implementação (parte I) package seuNome; import javax.swing.JOptionPane; public class Tabuada { public static void main ( String[ ] args ) { // declaração de variáveis: int num; // Número lido int cont; // Contador da repetição int result; // Resultado da multiplicação String entrada; // Variável auxiliar para entrada de dados String saida; // Variável auxiliar para exibição de mensagem Exemplo de Implementação (parte II) // instruções: // 1) Leia num: entrada = JOptionPane.showInputDialog("Digite um número:" ); num = Integer.parseInt (entrada); // 2) Inicia variáveis: cont = 1; saida = ""; // 3) Gera a tabuada: Exemplo de Implementação (parte III) do { // 3.1) calcula: result = num * cont; // 3.2) monta a mensagem de saída: saida = saida + num+ " x “+cont+" = "+ result + "\n" ; // 3.3) incrementa o contador: cont = cont + 1; } while (cont <= 10); // 4) exibe a mensagem de saída JOptionPane.showMessageDialog(null, saida); } // fim do main } // fim da classe Exemplo de Algoritmo: Validação Uma aplicação da estrutura de reptição com teste no final é a validação dos dados de entrada Por exemplo: Ler um número inteiro e positivo Nome: LerNumeroInteiroPositivo Objetivo: Ler e mostrar um número inteiro e positivo Dados de Entrada: Número inteiro e positivo Saída: O número lido Variáveis: inteiro n Exemplo de Algoritmo: Validação INÍCIO 1. FAÇA 1.1 LEIA n 2. ENQUANTO n < 0 3. IMPRIMA n FIM. Exercício 6.12: Estrutura de Repetição com Teste no Final Leia o ano de nascimento de uma pessoa viva; só aceite valores “razoáveis”. Imprima o valor do ano e se ele é ou não ano bissexto. – Entende-se por “razoavel” por exemplo: • número inteiro; • anos anteriores ou igual ao ano atual; • é razoável considerar que alguém viva até 130 anos? – Considere que um ano múltiplo de quatro é bissexto. Estrutura de Repetição com Variável de Controle A característica principal: sabe-se normalmente previamente o número de vezes que a instrução ou “bloco verdade” deve ser repetido. PARA <variável> DE < valor inicial> ATÉ <valor final> PASSO <incremento> FAÇA <Bloco Verdade> instrução 1 instrução 2 . instrução n FIM-PARA Estrutura de Repetição com Variável de Controle, em Java PARA <variável> DE < valor inicial> ATÉ <valor final> PASSO <incremento> FAÇA <Bloco Verdade> instrução 1 instrução 2 . instrução n FIM-PARA for ( <inicialização> ; <condição> ; <incremento> ) { instrução 1; instrução 2; . . . instrução n; } Exemplo: Estrutura de Repetição com Variável de Controle, em Java Observações: i ++ equivale a i = i + 1 i -- equivale a i = i -1 i +=2 equivale a i = i + 2 PARA i DE 1 ATÉ 10 PASSO 1 FAÇA <Bloco Verdade> instrução 1 instrução 2 . instrução n FIM-PARA for ( i = 1 ; i <= 10 ; i++ ) { instrução 1; instrução 2; . . . instrução n; } Exemplo de Algoritmo Elaborar um algoritmo que imprima a tabuada do número dado pelo usuário, usando a estrutura de repetição PARA-PASSO-FAÇA Nome: Tabuada Objetivo: Elaborar um algoritmo que imprima a tabuada de um número inteiro Dados de Entrada: Um número inteiro Saída: A tabuada do número lido Resolução: Algoritmo com Variável de Controle INÍCIO 1. LEIA num 2. PARA cont DE 1 ATÉ 10 PASSO 1 FAÇA 2.1 result ← num * cont 2.2 IMPRIMA num, “x “, cont, “= “, result FIM-PARA FIM Exemplo de Implementação (parte I) package seuNome; import javax.swing.JOptionPane; public class Tabuada { public static void main ( String[ ] args ) { // declaração de variáveis: int num; // Número lido int cont; // Contador da repetição int result; // Resultado da multiplicação String entrada; // Variável auxiliar para entrada de dados String saida; // Variável auxiliar para exibição de mensagem Exemplo de Implementação (parte II) // instruções: // 1) Leia num: entrada = JOptionPane.showInputDialog("Digite um número:" ); num = Integer.parseInt (entrada); // 2) Inicia variáveis: saida = ""; Exemplo de Implementação (parte III) // 3) Gera a tabuada: for ( cont=1 ; cont <= 10 ; cont ++ ) { // 3.1) calcula: result = num * cont; // 3.2) monta a mensagem de saída: saida = saida + num +" x "+cont + " = " + result + "\n" ; } // 4) exibe a mensagem de saída JOptionPane.showMessageDialog(null, saida); } // fim do main } // fim da classe Exercícios: Estrutura de Repetição com Variável de Controle 6.13) Calcular e exibir a soma de todos os números pares desde 100 até 200, inclusive, utilizando uma instrução condicional para determinar se o número é par. 6.14) Resolver o problema 6.13 variando o PASSO para que a incrementação seja feita de duas em duas unidades Algoritmo do Exercício 6.13 Nome: SomaPares100até200 Objetivo: Somar os números pares de 100 a 200, utilizando uma instrução condicional para determinar se o número é par. Dados de Entrada: Nenhum dado de entrada é requerido Saída: O somatórios de todos os número pares de 100 até 200 Algoritmo do Exercício 6.13 INÍCIO 1. soma ← 0 2. PARA i DE 100 ATE 200 PASSO 1 FAÇA 2.1 SE i % 2 = 0ENTÃO 2.1.1 soma ← soma + i FIM-SE FIM-PARA 3. IMPRIMA soma FIM. Algoritmo do Exercício 6.14 Nome: SomaPares100até200 Objetivo: Somar os números pares de 100 a 200, sem usar uma instrução condicional para determinar se o número é par. Dados de Entrada: Nenhum dado de entrada é requerido Saída: O somatórios de todos os número pares de 100 até 200 Algoritmo do Exercício 6.14 INÍCIO 1. soma ← 0 2. PARA i DE 100 ATE 200 PASSO 2 FAÇA 2.1 soma ← soma + i FIM-PARA 3. IMPRIMA soma FIM. Definição para o próximo Exercício Considere a seguinte definição para resolver o próximo exercício: Dado um número natural N maior ou igual a zero, o fatorial de N (escreve-se N!) é definido como: – Se N = 0, 0! = 1 (por definição); – Se N > 0, N! = 1 x 2 x 3 x ... x (N – 1) x N Exercícios Propostos 6.15) Dado um número inteiro e positivo, calcular o seu fatorial. Fatorial é o produto dos números naturais desde 1 até o inteiro n. Faça a validação se o número digitado pelo usuário é positivo. – Por exemplo, para n = 5, o algoritmo deverá executar as multiplicações sucessivas e acumulá-las a fim de possuir o valor 120 após 5 passos – 5! = 1 x 2 x 3 x 4 x 5 = 120 Exercícios Propostos 6.16) Uma pessoa aplicou seu capital a juros e deseja saber, trimestralmente, a posição de seu investimento inicial c. Chamando de i a taxa de juros do trimestre, escrever uma tabela que forneça, para cada trimestre, o rendimento auferido e o saldo acumulado durante o período de x anos, supondo que nenhuma retirada tenha sido feita. O Comando BREAK Comando break pode quebrar a execução de um comando (como no caso do switch) ou interromper a execução de qualquer ciclo (como no caso do for, do while ou do do-while). O break faz com que a execução do programa continue na primeira linha seguinte ao loop ou bloco que está sendo interrompido. O Comando CONTINUE O comando continue pode ser visto como sendo o oposto do break. Ele só funciona dentro de um ciclo. Quando o comando continue é encontrado, o ciclo salta para a próxima execução, sem abandonar o ciclo, ao contrário do que acontecia no comando break. Exemplo do Continue /*Adiciona nºs entre 1 e10 sem incluir o 5 */ int sum= 0, i = 0; While(i <= 10){ i ++; if (i == 5) continue; sum+= i; } Exemplo do Continue /*Adiciona nºs entre 1 e10 sem incluir o 5 */ int sum= 0, i; for (i = 1 ; i <= 10 ; i++){ if (i == 5) continue; sum+= i; }
Compartilhar