Estruturas de Repetição

Slides:



Advertisements
Apresentações semelhantes
Programação em Java Prof. Maurício Braga
Advertisements

Programação em Java Prof. Maurício Braga
Programação em Java Prof. Maurício Braga
Estruturas de Controle
Construção de Algoritmos 2
Programação em Java Prof. Maurício Braga
Métodos, Parâmetros, Argumentos e Contratos
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INTRODUÇÃO AOS APLICATIVOS JAVA Prof. Thiago Pereira Rique
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INSTRUÇÕES DE CONTROLE – PARTE I Prof. Thiago Pereira Rique
Algoritmos.
Introdução à Computação - Jorge Macêdo
Estruturas de repetição
Introdução à Programação
Introdução a Programação
Linguagem C Estruturas de Controle de Fluxos
Linguagem C LPG-I – Estruturas de Repetição Prof. Flavio Marcello
THOBER CORADI DETOFENO, MSC. Aula 07
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estrutura de Repetição
Lógica de Programação Módulo II
6.3 – Estruturas Repetitivas
Classes e objetos Arrays e Sobrecarga
Estrutura de decisão e repetição em JAVA
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
Ap-3 Profª Kelly E. Medeiros
O Portal do Estudante de Computação
JAVA: Conceitos Iniciais
Unidade I: “Dê um mergulho rápido”
Aula prática 4 Laços Monitoria de Introdução à Programação
Introdução à Programação Estruturas de Repetição
Linguagem de Programação I Parte III
Estruturas de Repetição
Material Didático Proposto
FTIN Formação Técnica em Informática
ENGENHARIA DE AUTOMAÇÃO INDUSTRIAL
PROGRAMAÇÃO I UNIDADE 4.
Estruturas de Dados Módulo 3 – Controle de Fluxo
Introdução à Programação de Computadores
Aula 6 - Estruturas de Controle
Linguagem e Ambiente Scratch
Aula 4 – Java – Prof. Marcelo Heitor
Linguagem de Programação JAVA
1 Programação de Computadores Comando de decisão - SE Sintaxe do comando: se então OU se então senão –Quando um comando de decisão é executado, apenas.
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
BC-0505 Processamento da Informação
Algoritmos e Estrutura de Dados I
Introdução à Linguagem C
Programação de PIC em C Exposição das funções básicas para
Algoritmos Comandos de repetição.
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 06) Prof. Alessandro Bernardo.
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 09) Prof. Alessandro Bernardo.
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
Introdução a Programação
Programação I Aula 07 Autor: Francisco Airton Professor: André L. R. Didier 1.
ALGORITMOS Profº Antonio Carlos Marcelino de Paula.
Informática e Computação Aula Estrutura de Repetição
Profa. Maria Augusta Constante Puget
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 08) Prof. Alessandro Bernardo.
Fundamentos de Programação Aula 4. 2 Conteúdo Estruturas Básicas de Programação –Repetição, laço, loop ou iteração Exercícios.
Algoritmos – Aula 04 Comandos de repetição.
Comandos de Repetição (While, Do..While e For)
Linguagem de Programação 11 Estruturas de Decisão e Repetição. Prof. Luiz José Hoffmann Filho
Laço ou loop e repetição
Estrutura de Repetição
1 Estruturas de Controle 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.
Programação I Aula 06 Autor: Francisco Airton Professor: André L. R. Didier 1.
ALGORITMOS Profº Antonio Carlos Marcelino de Paula 1.
1 CCO 016 FUNDAMENTOS DE PROGRAMAÇÃO Universidade Federal de Itajubá Prof. Dr. Edison Oliveira de Jesus.
Conteúdo de Laços de Repetição para os alunos do 7º ano EVL.
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
Transcrição da apresentação:

Estruturas de Repetição Programação em Java Prof. Maurício Braga

Estruturas de repetição Diferente do ser humano, o computador não se cansa de realizar operações repetitivas. Diante disto, podemos incluir nos algoritmos as estruturas de repetição. O que é uma repetição? Também chamada a laço ou loop; É uma instrução que permite a execução de um trecho de algoritmo várias vezes seguidas. Nesta aula veremos: Repetição com teste no início; Repetição com teste no final; Repetição com variável de controle.

Comandos REPITA e ENQUANTO Tanto o comando REPITA quanto o comando ENQUANTO permitem repetir um ou mais comandos no corpo de um algoritmo. A sintaxe dos comandos é: repita <comando1>; <comando2>; . <comandoN>; até <expr>; enquanto <expr> faça <comando>;

Comando REPITA O comando REPITA indica que todos os comandos entre a palavra repita e a palavra até encontram-se dentro de um laço e devem ser executados. Após a palavra até deve haver uma expressão lógica que: Se falsa, indica que o laço deve ser executado novamente; Se verdadeira, indica que o laço acabou e o algoritmo deve continuar sendo executado. Esta estrutura é chamada de repetição com teste no final A decisão entre repetir e parar o laço é feita ao final do comando. É garantido que o laço será executado aos menos uma vez.

Comando REPITA em Java O mais próximo do REPITA em java é a instrução do...while Teste realizado após a execução do corpo do loop. O corpo do loop sempre executa ao menos uma vez. Diferente do repita, o código continuará sendo executado enquanto a instrução for VERDADEIRA. do { instrução } while ( condição );

Exemplo comando do...while int contador = 1; //declara e inicializa o contador do { // Imprime e incrementa o contador System.out.println( “Contador = ” +contador); contador = contador + 1; } while (contador <= 10); // testa a condição de parada

Comando ENQUANTO O comando ENQUANTO indica que o comando seguinte será executado, desde que o resultado da expressão lógica seja verdadeiro. Apesar do ENQUANTO permitir apenas a repetição de um único comando, nada que impede que seja utilizado um bloco de comandos. Ao encontrar o fim do comando (ou do bloco), o computador volta para a 1ª linha do laço e avalia novamente a expressão lógica: Se verdadeira, o computador fará uma nova execução do trecho; Se falsa, o computador pára a execução e continua no próximo comando após o trecho repetido. Esta estrutura é chamada de repetição com teste no início A decisão entre repetir e parar o laço é feita no início do comando. Se o teste for falso desde o início, o laço não será executado.

Comando Enquanto em Java Implementado com a instrução while instrução que efetua o teste antes da execução do corpo do loop. O corpo do loop pode nunca ser executado. while ( condição ) { instrução }

Exemplo comando While int contador; // declara a variável de controle contador = 1; // inicializa a variável de controle while (contador <= 10) { // condição de parada do loop // incrementa a variável de controle por 1 System.out.println( “Contador = ” + contador); contador = contador +1; }

Comandos REPITA e ENQUANTO Exercício: Fazer um programa para ler diversos números informados pelo usuário usando o comando do while, e após cada leitura exibir se o número é par ou ímpar. Considere que ao fornecer um valor negativo o usuário deseja encerrar e entrada de dados.

Comandos REPITA e ENQUANTO Solução Quantos dados serão fornecidos? Quantas variáveis serão necessárias? Temos que identificar o trecho que será repetido e adicioná-lo dentro de um comando de repetição, declarando apenas as variáveis necessárias para uma repetição.

Comandos REPITA e ENQUANTO Solução usando repita(cont.) O algoritmo fica assim: Variáveis num : inteiro; Início repita escrever “Para sair, entre com um valor menor que 0”; escrever “Entre com o número: “; ler num; se num % 2 = 0 então escrever “O número é par” senão escrever “O número é ímpar”; até num < 0; Fim

Solução em Java usando do-while public static void main(String[] args) { // declaração de variáveis int num = 0; do { System.out.println( "Para sair, entre com um valor < 0"); System.out.println( "Digite um número:"); num = Leia(num); if (num % 2 == 0) System.out.println("O número é par"); else System.out.println("O número é impar"); } while (num > 0); // testa a condição de parada }

Comandos REPITA e ENQUANTO Exercício: Refazer o programa anterior, só que desta vez usando while.

Comandos REPITA e ENQUANTO Solução usando enquanto (cont.) O algoritmo fica assim: Variáveis inteiro: num =0; Início enquanto num >= 0 faça [[ escrever “Para sair, entre com um valor menor que 0”; escrever “Entre com o número: “; ler num; se num % 2 = 0 então escrever “O número é par” senão escrever “O número é ímpar”; ]]; Fim

Solução em Java usando while public static void main(String[] args) { // declaração de variáveis int num = 0; while (num >=0) { System.out.println( "Para sair, entre com um valor < 0"); System.out.println( "Digite um número:"); num = Leia(num); if (num % 2 == 0) System.out.println("O número é par"); else System.out.println("O número é impar"); }

Comandos REPITA e ENQUANTO Solução (cont.) Executando o teste de mesa para os valores 8, 11, 21, 8 e -1, teríamos as seguintes mensagens: 8 O número é par 11 O número é ímpar 21 -1 Esta mensagem não deveria ser exibida

Comandos REPITA e ENQUANTO Solução (cont.) Como podemos contornar este problema? Adicionando mais uma condição ao comando SE se num >=0 e num %2 = 0 Solução pouco elegante, pois este teste é sempre verdadeiro, exceto no último caso Utilizando o comando ENQUANTO ao invés do comando REPITA

Comandos REPITA e ENQUANTO Solução (cont.) Como podemos contornar este problema? Retirando a leitura da variável de dentro do laço: Será gerado um laço infinito, pois num será lida apenas uma vez, e se for >= 0, o laço nunca terminará. Iniciar a variável para um valor padrão que sempre executará na 1ª vez: Caímos no mesmo problema que no algoritmo utilizando o comando REPITA. Colocar uma leitura antes do laço, e uma segunda leitura como últimos comandos dentro do laço.

Comandos REPITA e ENQUANTO Solução (cont.) O algoritmo fica assim: Variáveis num : inteiro; Início escrever “Para sair, entre com um valor menor que 0”; escrever “Entre com o número: “; ler num; enquanto num >= 0 faça [[ se num % 2 = 0 então escrever “O número é par” senão escrever “O número é ímpar”; ]]; Fim

Variáveis contadoras Uma variável é chamada de contadora quando armazena dentro de si um número referente a uma certa quantidade de elementos ou iterações. Este tipo de variável é muito comum em estruturas de repetição, dada as suas diversas aplicações em problemas que envolvem contagens de valores. Exemplo: Imprimir todos os números inteiros de 1 a 100.

Variáveis contadoras Solução O algoritmo não tem dados de entrada, e fica assim: Variáveis valor : inteiro; Início escrever “Valores inteiros de 1 a 100”; valor = 1; repita escrever valor; valor = valor + 1; até valor > 100; Fim É possível resolver utilizando o ENQUANTO?

Programa em Java public static void main(String[] args) { int valor = 1; System.out.println( "Valores inteiros entre 1 e 100"); do { System.out.println( "valor = " + valor); valor = valor + 1; } while (valor <100); }

Variáveis contadoras Solução Utilizando o ENQUANTO o algoritmo fica assim: Variáveis valor : inteiro; Início escrever “Valores inteiros de 1 a 100”; valor = 1; enquanto valor <= 100 faça [[ escrever valor; valor = valor + 1; ]]; Fim

Variáveis contadoras Exercício: Escrever um programa que leia 10 números inteiros fornecidos pelo usuário, e exiba quantos números ímpares foram informados.

Variáveis contadoras Solução Serão necessárias 10 leituras. Podemos criar uma variável contadora para controlar este laço. Precisaremos de uma outra variável para contar a quantidade de números ímpares. Não podemos deixar para contar após a repetição, pois cada número fornecido apaga o anterior. Logo precisamos ir contando após cada entrada, incrementando uma nova variável contadora. Esta nova variável contadora só é incrementada se o número informado for ímpar.

Variáveis contadoras Solução Variáveis cont, num, qtd_impar : inteiro; A variável é iniciada como 0 pois o usuário poderá informar 10 números pares Solução Variáveis cont, num, qtd_impar : inteiro; Início cont = 1; qtd_impar = 0 enquanto cont <= 10 faça [[ escrever “Digite um número: ”; ler num; se num % 2 <> 0 então qtd_impar = qtd_impar + 1; cont = cont + 1; ]]; escrever “O total de ímpares foi “ + qtd_impar; Fim

Programa em Java public static void main(String[] args) { int contador=1, numero=0, qtd_impar = 0; while (contador <=10) { System.out.println( "Entre o " + contador + "º número:"); numero = Leia(numero); if (numero % 2 != 0) qtd_impar = qtd_impar + 1; contador = contador +1; } System.out.println("O total de números ímpares digitado foi: " + qtd_impar);

Variáveis acumuladoras Uma variável é chamada de acumuladora quando tem por característica armazenar dentro de si o resultado acumulado de uma série de valores. Quando armazenamos a soma de uma quantidade pequena de números, a atribuição é direta. Numa repetição devemos armazenar a soma de diversos números sucessivos, e para isto utilizamos uma variável acumuladora. Exemplo Calcular a soma de diversos números reais informados pelo usuário. A entrada de dados termina com o número -999.

Variáveis acumuladoras Solução O algoritmo fica assim: A variável é iniciada como 0 pois, caso o usuário forneça -999 na primeira execução, o valor total da soma é 0. Variáveis num, soma : real; Início soma = 0; escrever “Para sair, entre com -999”; escrever “Entre com o número: “; ler num; enquanto num <> -999 faça [[ soma = soma + num; ]]; escrever “A soma foi ”, soma; Fim

Variáveis acumuladoras Exercício Fazer um programa que leia diversos números reais e exiba qual foi o maior de todos. O código -1 sinaliza o fim da leitura.

Variáveis acumuladoras num, maior : real; Início escrever “Para sair, entre com -1”; escrever “Entre com o número: “; ler num; maior <- num; enquanto num <> -1 faça [[ se num > maior então ]]; se maior <> -1 então escrever “O maior número digitado foi ”, maior senão escrever “Nenhum número válido foi informado.”; Fim Solução

Programa em Java public static void main(String[] args) { double numero = 0, numero_maior =0; System.out.println("Para sair, digite -1."); System.out.println("Digite um número:"); numero = Leia(numero); numero_maior = numero; while (numero != -1) { if (numero > numero_maior) } if (numero_maior != -1) System.out.println("O maior número foi: " + numero_maior); else System.out.println("Nenhum número válido foi informado");

Laços infinitos Ao trabalhar com repetições, é preciso tomar cuidado para não criar um laço infinito, ou seja, um laço que não termina. Neste tipo de situação a máquina permaneceria executando o laço indefinidamente, até que ocorra uma intervenção externa. Exemplo: Imprimir os quadrados dos números inteiros de 1 a 10.

Este decremento provoca Laços infinitos Solução: Este decremento provoca um loop infinito. Variáveis valor, quadrado : real; Início escrever “Quadrados dos números inteiros de 1 a 10”; escrever “Entre com o número: “; valor = 1; repita quadrado = sqr(valor); escrever quadrado; valor = valor - 1; até valor > 10; escrever “Fim da impressão.”; Fim

Repetições encadeadas Da mesma forma que é permitido o encadeamento de testes, também é possível encadear comandos de repetição. Um encadeamento de repetições ocorre quando há necessidade de efetuar um laço dentro de outro. Neste tipo de situação, o algoritmo possui repetições controladas por um teste interno e outro externo. Exemplo Imprimir as tabuadas de multiplicação dos números 3, 4, 5 e 6.

Repetições encadeadas Solução Variáveis num, mult, cont : inteiro; Início num <- 3; enquanto num <= 6 faça [[ escrever “Tabuada de ”, num; cont = 1; enquanto cont <= 10 faça mult = num * cont; escrever num, “x”, cont, “=“, mult; cont = cont + 1; ]]; num = num + 1; Fim

Repetições encadeadas Exercício Escreva o algoritmo anterior em Java e observe o seu funcionamento. Em seguida, modifique o mesmo para mostrar a tabuada dos números 1 a 5.

Comando PARA É muito comum a existência de repetições que fazem uso de variáveis contadoras, especialmente para contagens de 1 em 1. Para facilitar a construção deste tipo de laço, pode-se utilizar um outro comando de repetição complementar chamada PARA. Sua sintaxe é: para <var> de <valor_inicial> até <valor_final> faça <comando>;

Comando PARA Exemplo: Solução com o comando PARA: Escrever os números inteiros de 1 a 100. Solução com o comando PARA: Variáveis valor : inteiro; Início escrever “Valores inteiros de 1 a 100”; para valor de 1 até 100 faça escrever valor; Fim

Incremento após iteração Inicialização da variável Comando Para em Java Instrução de repetição for foi criada para repetição por contador Especifica os detalhes da repetição controlador por contador em uma única linha for ( int contador = 1; contador <= 10; contador++ ) { System.out.printf( “%d ”, contador ); } Condição de parada Incremento após iteração Inicialização da variável

Instrução de repetição for Formato geral for (inicialização; condiçãoDeParada; incremento) { instrução } Inicialização Nomeia a variável de controle e incializa seu valor. Condição de parada Condição que determina se o loop deve parar. Incremento Modifica o valor do contador para que a condição de parada torne-se falsa ao final.

Instrução de repetição for Expressões da condição são opcionais Se condição de parada for omitida, o compilador entende que a condição é sempre verdadeira. Loop infinito. Caso incremento seja calculado no corpo do loop, esta expressão pode ser omitida; Caso contador seja inicializado antes de chegar a instrução, esta expressão pode ser omitida.

Instrução de repetição for Calcule e exiba a soma de todos os números pares contidos entre zero e um número fornecido via teclado (caso o número fornecido seja par, o mesmo deverá fazer parte da soma).

Solução public static void main(String[] args) { double numero = 0, soma_pares =0; System.out.println("Digite um número > 0:"); numero = Leia(numero); if (numero >0) { for (int i=1;i<=numero; i++) { if (i % 2 == 0) soma_pares = soma_pares + i; } System.out.println("A soma dos pares é: "+soma_pares); else System.out.println("Número inválido informado.");

Comando PARA Exercícios: Faça um programa para exibir os números 1, 4, 9, 16, 25, 36, ... , 10000. Faça um programa que leia 10 valores inteiros e positivos e depois informe: Qual o maior valor; Qual o menor valor; A média dos números lidos.

Solução exercício 1 public static void main(String[] args) { int numero = 1, contador =3; System.out.println(numero); while (numero < 10000) { System.out.println((numero + contador)); numero = numero + contador; contador = contador + 2; }

Solução exercício 2 public static void main(String[] args) { double numero = 0, numero_maior =0, numero_menor=0,soma =0, contador =0; System.out.println("Para sair, digite -1."); System.out.println("Digite um número:"); numero = Leia(numero); numero_maior = numero; numero_menor = numero; while (numero != -1) { contador = contador + 1; soma = soma + numero; if (numero > numero_maior)

Solução exercício 2 else if (numero < numero_menor) numero_menor = numero; System.out.println("Digite um número:"); numero = Leia(numero); } if (numero_maior != -1) { System.out.println("O maior número digitado foi: " + numero_maior); System.out.println("O menor número digitado foi: " + numero_menor); System.out.println("A média dos números digitados é: " + soma/contador); else System.out.println("Nenhum número válido foi informado");}

Estruturas de Repetição Programação em Java Prof. Maurício Braga