Loops aninhados Leonardo Larback leo@larback.com.br http://www.larback.com.br 1 de junho de 2019 Loops aninhados 1/16
Conteúdo Definição Exemplos Atividade Guiada Exercícios Loops aninhados 2/16
Laços aninhados Algumas aplicações exigem que uma estrutura de repetição seja implementada dentro de outra estrutura de repetição. Quando isso acontece, dizemos que os laços estão aninhados. A cada iteração do laço externo, todas as iterações do laço interno serão executadas. Loops aninhados 3/16
Laços aninhados Como desenvolver um algoritmo que produza a saída ao lado? Loops aninhados 4/16
1 programa 2 { 3 funcao inicio() 4 { 5 inteiro i, j 6 para (i=1; i<=10; i++) 7 { 8 para (j=1; j<i; j++) 9 { 10 escreva (i) 11 } 12 escreva ("\n") 13 } 14 } 15 } Loops aninhados 5/16
Exemplo 1 Bart Simpson está aprendendo a jogar xadrez, mas tem dificuldade em saber para qual direção ele pode mover sua Torre. Sabemos que um tabuleiro de xadrez é composto por 8 linhas e 8 colunas, e que a Torre se move ortogonalmente, ou seja, pelas linhas (horizontais) e pelas colunas (verticais). Escreva um programa que solicite ao Bart o número da linha e da coluna que indicam a posição de sua Torre. O programa deve imprimir quais são os possíveis movimentos da Torre. Utilize - para indicar uma casa para a qual a Torre não pode ser movida e x para indicar uma casa para a qual ela pode ser movida. Loops aninhados 6/16
1 programa{ 2 funcao inicio(){ 3 inteiro linha, coluna, li, c 4 escreva("em qual linha esta a torre?\n") 5 leia(linha) 6 escreva("em qual coluna esta a torre?\n") 7 leia(coluna) 8 para (li=1; li<=8; li++){ 9 para (c=1; c<=8; c++){ 10 se (linha==li ou coluna==c){ 11 escreva (" X ") 12 } senao { 13 escreva (" - ") 14 } 15 } 16 escreva("\n") 17 } 18 } 19 } Loops aninhados 7/16
Exemplo 2 Bart Simpson está aprendendo a multiplicar. Lisa tentou forçalo a decorar a tabuada, mas como bom programador que é, Bart resolveu desenvolver um programa que imprime a tabuada de multiplicação dos números inteiros entre 1 e 10. Loops aninhados 8/16
1 programa{ 2 funcao inicio() { 3 inteiro x, y 4 para (x=1; x<=10; x++){ 5 escreva ("Tabuada do " + x +"\n") 6 para (y=1; y<=8; y++){ 7 escreva (x + " * " + y + " = " + (x*y)+"\n") 8 } 9 escreva("\n\n") 10 } 11 } 12 } Loops aninhados 9/16
Perguntas? Loops aninhados 10/16
Exercício 1 Elabore uma aplicação que permita calcular o fatorial de N números informados pelo usuário. A aplicação se encerra quando o valor de N for -1. Loops aninhados 11/16
Exercício 1 1 programa{ 2 funcao inicio() { 3 inteiro n, fat 4 escreva("informe um numero ou -1 para sair\n") 5 leia (n) 6 enquanto(n!=-1){ 7 fat = 1 8 enquanto (n>0){ 9 fat = fat*n 10 n-- 11 } 12 escreva ("O fatorial e " + fat + "\n") 13 escreva("informe um numero ou -1 para sair\n") 14 leia (n) 15 } 16 } 17 } Loops aninhados 12/16
Exercício 2 Elabore uma aplicação que exiba todos os números primos menores que 100. Loops aninhados 13/16
Exercício 1 1 programa{ 2 funcao inicio() { 3 inteiro i, j, divisores 4 escreva("lista dos numeros primos menores que 100:\n") 5 para (i=2;i<100;i++){ 6 divisores = 0 7 para (j=1;j<=i;j++){ 8 se(i % j == 0){ 9 divisores++ 10 } 11 } 12 se (divisores==2){ 13 escreva(i +"\n") 14 } 15 divisores = 0 16 } 17 } 18 } Loops aninhados 14/16
Exercícios 1. Elabore um programa que imprima os números entre 1 e 100 e a quantidade respectiva de divisores que cada um possui. 2. Resolva o problema 1150 do URI JUDGE - O código gerado usa loops aninhados? Por que? 3. Resolva o problema 1143 do URI JUDGE - Seu código deve, obrigatoriamente, utilizar loops aninhados. 4. Faça um programa que leia 10 números inteiros e imprima, a cada número lido, o valor do somatório entre 1 e N (sendo N o número lido). Loops aninhados 15/16
Referências CARVALHO, Marco Antonio Moreira de. Projeto e análise de algoritmos. 01 mar. 2018, 15 jun. 2018. Notas de Aula. UFOP. DEITEL, Paul J.; DEITEL, Harvey M. Java: como programar. Pearson Educación, 2008. FORBELLONE, André Luiz Villar; EBERSPÄCHER, Henri Frederico. Lógica de programação: a construção de algoritmos e estrutura de dados. 3.ed. São Paulo: Makron Books do Brasil, 2010. TOFFOLO, Túlio. Introdução à programação. 2018. Notas de Aula. UFOP. Os algoritmos foram implementados utilizando-se o software Portugol Studio Loops aninhados 16/16