UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL Introdução à Algoritmos Professora: Fabíola Gonçalves. AGENDA Estruturas de repetição: 2 Introdução; Comando enquanto ... faça; Comando faça ... enquanto; Comando repita; Comando para. ESTRUTURAS DE REPETIÇÃO Permite que uma sequência de comandos seja executada repetidamente, enquanto uma determinada condição seja satisfeita. Existem 2 tipos: Condicional – repetição ocorre enquanto a condição for verdadeira; Ex.: ENQUANTO e REPITA. Incondicional – tem um número pré-determinado de repetições. Ex.: PARA. ESTRUTURAS DE REPETIÇÃO - COMANDO ENQUANTO Comando enquanto. Linguagem Algorítmica: enquanto condição faça comando-A1; comando-A2; ... ... comando-An; fim-enquanto ESTRUTURAS DE REPETIÇÃO - COMANDO ENQUANTO A condição é testada no início da repetição; Enquanto a condição for Verdadeira, o bloco de comandos é executado; O bloco de comandos pode ser executado 0 ou + vezes; Para a execução quando a condição se tornar Falsa. 5 ESTRUTURAS DE REPETIÇÃO - COMANDO ENQUANTO Exemplo 1: ... leia (SENHA); enquanto (SENHA # “XYZ”) faça escreva (“Senha inválida”); escreva (“Digite a senha novamente”); leia (SENHA); fim-enquanto ... Como o teste da condição é realizado no início do laço, a sequência de comandos será executada zero ou mais vezes, dependendo da avaliação da condição. ESTRUTURAS DE REPETIÇÃO - COMANDO ENQUANTO Exemplo 2: Algoritmo EXEMPLO_DE_ENQUANTO {escrever os números inteiros de 1 a 100} N : inteiro início N <-1; enquanto N ≤ 100 faça escreva (N); N <-(N + 1); fim-enquanto fim O comando escreva será executado repetidas vezes enquanto a variável N possuir um valor igual ou inferior a 100. O algoritmo terá como saída a sequência dos números inteiros de 1 a 100. ESTRUTURAS DE REPETIÇÃO COMANDO ENQUANTO Exemplo 3: inicio numero ← 1; enquanto numero # 0 faça escreva(“o quadrado de”, numero, “ é: “ ); escreva(numero^2); leia(numero); fim-enquanto escreva(“FIM DO PROGRAMA”); fim 8 Algoritmo EXEMPLO_ENQUANTO {calculo do quadrado de um número} numero : inteiro ESTRUTURAS DE REPETIÇÃO COMANDO ENQUANTO Exemplo 4: Algoritmo EXEMPLO_ENQUANTO {soma valores} inicio soma <- 0; leia (valor); enquanto valor # -1 faça soma <- (soma + valor); leia(valor); fim-enquanto escreva(“O valor da soma é: ”, soma ); fim 9 valor, soma: inteiro; ESTRUTURAS DE REPETIÇÃO COMANDO ENQUANTO Exercício: Elabore um algoritmo para determinar o menor número inteiro fornecido pelo usuário. Considere que o número zero indica o fim da entrada de dados. 2. Achar o maior e o menor número de uma série de números positivos fornecidos pelo usuário. 10 1. ESTRUTURAS DE REPETIÇÃO COMANDO FAÇA ... ENQUANTO Sintaxe: faça enquanto <condição>; Exemplo: numero ← 1; faça escreva(“o quadrado de “, numero, “ é: “); escreva(numero^2); leia(numero); enquanto numero ≠ 0; escreva(“FIM DO PROGRAMA”); 11 comando-A1; comando-A2; ... ... comando-An; ESTRUTURAS DE REPETIÇÃO COMANDO REPITA A condição é testada no final da repetição; Enquanto a condição for Falsa, o bloco de comandos é executado; Lembrando que condição é uma expressão lógica sempre testada ao final de cada interação! O bloco de comandos é executado pelo menos 1 vez. Para a execução quando a condição se tornar Verdadeira. 12 ESTRUTURAS DE REPETIÇÃO COMANDO REPITA-ATE Sintaxe: comando-A1; comando-A2; ... ... comando-An; ate <condição> A1, A2, A3, ... , A4 serão executados pelo menos uma vez. Até que a condição seja testada e se torne ?? 13 repita ESTRUTURAS DE REPETIÇÃO COMANDO REPITA-ATE Exemplo: escreva(“o quadrado de “, numero, “ é: “); escreva(numero^2); leia(numero); ate numero = 0 escreva(“FIM DO PROGRAMA”); Neste caso calcularemos o quadrado do número enquanto o usuário não entrar com um valor 0. Mas se ele entrar com 0 o que a algoritmo imprimirá? 14 numero ← 1; repita ESTRUTURAS DE REPETIÇÃO COMANDO REPITA-ATE 15 O comando repita-até é equivalente ao comando enquanto-faça, vejam: REPETIÇÃO POR VARIÁVEL DE CONTROLE Número de repetições for previamente conhecido. Uso de contador para controlar o número de repetições. Contador: uma variável do tipo inteiro. Sintaxe do Comando: para i de valor até l passo p faça comando-C1; comando-C2; ... ... comando-An; fim-para OBS: Quando o passo p for =1 não é necessário colocar essa esta especificação REPETIÇÃO POR VARIÁVEL Exemplo: Algoritmo LAÇO_CONTADOR NUM,SOMA,CONT : inteiro; início SOMA <-0; para CONT de 1 até 100 faça leia (NUM); SOMA <- (SOMA + NUM); fim-para escreva (SOMA); fim Fim_Algoritmo DE CONTROLE REPETIÇÃO POR VARIÁVEL DE CONTROLE Também conhecido como Controle por Contador o comando para é, na verdade, o comando enquanto utilizando uma variável de controle em uma notação compacta. Neste caso sempre existirá uma inicialização de variável de controle Um teste para verificar se a variável atingiu o limite E, ainda, um acréscimo na variável de controle REPETIÇÃO POR VARIÁVEL DE CONTROLE COMANDO PARA Exemplos: /* O que será impresso?*/ para cont = 10 ate 1 passo -1 faça escreva(“O valor de cont é”, cont ); fim-para 19 para cont = 1 ate 9 passo 2 faça escreva(“O valor de cont é”, cont); fim-para Pergunta: O que será impresso?? REPETIÇÃO POR VARIÁVEL DE CONTROLE COMANDO PARA Exercício: --Faça um algoritmo que, sem utilizar o operador de exponenciação, realize a operação X^Y, para qualquer X e Y fornecido pelo usuário. Reescreva o algoritmo acima, utilizando as demais estruturas de repetição. 20 -- Construa um algoritmo que calcule e imprima a somatória de N números (sendo N > 0). Considere como dados de entrada a quantidade de números a serem lidos e os valores dos respectivos números. CONTROLE POR ENTRADA (FLAG) Quando não conhecemos o número de repetições e este for determinado por um valor que será lido (flag); devemos utilizar um controle de repetições por entrada, também conhecido como controle por sentinela. Exemplo: este algoritmo lê um conjunto de números inteiros e exibe o valor médio dos mesmos. Obs: a condição de saída do laço será a leitura do valor 0 (flag). CONTROLE POR ENTRADA (FLAG) Algoritmo LAÇO_COM_FLAG NUM,CONT,SOMA,MEDIA : inteiro; início Sentinela SOMA <-0; CONT <-0; leia (NUM); enquanto (NUM # 0) faça SOMA <- (SOMA + NUM); CONT <- (CONT + 1); escreva(Entre com um valor ou entre com o sair e visualizar a media) leia (NUM); fim-enquanto MEDIA <- (SOMA div CONT); escreva (MEDIA); fim Fim_Algoritmo Flag EXERCÍCIOS Qual a utilidade da estrutura de repetição? Em que consiste o controle de repetições por contador? Em que consiste o controle de repetições por flag? Faça um algoritmo que mostre todos os números inteiros de 1 a 50. Faça um algoritmo que mostre todos os números inteiros pares de 2 a 100. Faça um algoritmo que gere a seguinte série: 10, 20, 30, 40, ..., 990, 1000. Escreva um algoritmo que leia três números e imprima o maior deles. EXERCÍCIOS Faça o acompanhamento da execução algoritmo abaixo e preencha a Tabela Variáveis: do de EXERCÍCIOS Escreva um algoritmo que leia 10 números e imprima o maior deles. Escreva um algoritmo que leia três números e os imprima em ordem crescente. Escreva um algoritmo que leia uma certa quantidade de números e imprima o maior deles e quantas vezes o maior número foi lido. A quantidade de números a serem lidos deve ser fornecida pelo usuário. Assuma que o usuário sempre fornecerá um número positivo.