Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos e Estruturas de Dados I Algoritmos com Repetição Profa. Márcia Cristina Moraes Profa. Milene Selbach Silveira Prof. Iara C. de Almeida Material para estudo: Forbellone, A. e Eberspächer, H. (2005) capítulo 3 (estrutura de repetição) a sintaxe utilizada em nossos algoritmos será diferenciada em alguns poucos detalhes, mas a lógica é a mesma Calcular média das notas de aluno Algoritmo Média inteiro: num real: n1, n2, n3, m Início escreva(“Informe seu número de matrícula e suas três notas”) leia(num, n1, n2, n3) m ←(n1 + n2 + n3)/3 escreva(“Média = ”, m) Fim Como calcular a média das notas de 30 alunos ? Solução simplista: executar 30 vezes este algoritmo Solução correta: trabalhar com algoritmo de repetição! Algoritmos com Repetição Algoritmos que repetem uma ou mais instruções. Todo o algoritmo que tem a execução de um ou mais de seus passos repetido duas ou mais vezes é denominado de algoritmo de repetição (Orth, 2001). Algoritmo com Repetição - Enquanto Sempre que quisermos realizar uma instrução ou uma sequência de instruções mais de uma vez, necessitamos de uma instrução de repetição. Sequência de Instruções: 1 ou mais instruções quaisquer Enquanto <condição> faça Início <sequencia de instruções> Fim Também é preciso uma variável que conte quantas vezes é executada a “sequência de passos” que se pretende repetir Esta variável contador deve receber um valor inicial, ser incrementada sempre que “a sequência de passos foi repetida”, e ser comparada ao valor final Algoritmo com Repetição Variável Contador Também é preciso uma variável que conte quantas vezes é executada a “sequência de passos” que se pretende repetir Esta variável contador deve receber um valor inicial permite iniciar a contagem ser incrementada sempre que “a sequência de passos foi repetida” permite contar n vezes ser comparada ao valor final permite finalizar a contagem Algoritmo com Repetição Variável Contador Exemplo Algoritmo Média inteiro: num, cont real: n1, n2, n3, m Início cont 0 {inicialização do contador} enquanto (cont < 30) faça Início escreva (“Informe seu número de matrícula e suas três notas”) leia(num, n1, n2, n3) m (n1 + n2 + n3)/3 escreva(“Média = ”, m) cont cont + 1 {incremento do contador} Fim Fim Exercício 1 Faça um algoritmo que leia 20 pares de valores a e b, e para cada par de valores lido escreve qual é o maior valor. SUGESTÃO (1) especificar um algoritmo para determinar o maior de um par de valores … e, só depois, (2) verificar o que é preciso para repetir 20 vezes os passos definidos em (1) Exercício 2 Escreva um algoritmo que lê um número inteiro n. Calcule e escreva a tabuada (de 1 a 10) deste número No exemplo anterior, caso se queira saber ao final a média geral desta turma, deve-se se utilizar o conceito de variável acumulador. Variável acumulador é qualquer variável que recebe um valor inicial constante e é incrementada em algum outro ponto do algoritmo de um valor variável. soma 0 .... ... soma soma + valor Exemplo: Inicialização da variável acumulador Incremento da variável acumulador de um valor variável Algoritmo com Repetição Variável Acumulador Exemplo Algoritmo MédiaGeral inteiro: num, cont real: n1, n2, n3, m, mg, soma Início cont 0 {inicialização do contador} soma 0 {inicialização do acumulador} enquanto (cont < 30) faça Início escreva(“Informe seu número de matrícula e suas três notas”) leia(num, n1, n2, n3) m (n1 + n2 + n3)/3 escreva(“Média = “, m) soma soma + m {incremento do acumulador} cont cont + 1 {incremento do contador} Fim mg soma/30 {calcula média DEPOIS do laço} escreva(“Media Geral = “, mg) Fim Exercício 3 Escrever um algoritmo que lê o código e o valor de 25 produtos e calcula e apresenta o valor total a ser pago por eles. Exercício 4 Escrever um algoritmo que lê um número n e calcula o somatório de n. Por exemplo: S = 1 + 2 + 3 + 4 + ... + n. Ao final do cálculo, escrever o valor do somatório calculado. Algoritmo com Repetição – Enquanto com número desconhecido de repetições No exemplo anterior sabíamos exatamente o número de vezes que o laço de repetição deveria ocorrer, mas existem casos em que o número de repetição pode estar condicionado a um valor de entrada. Por exemplo: ler um conjunto não determinado de números de alunos. O algoritmo deve parar quando o número do aluno for um número negativo. Algoritmo MédiaGeralCondicional inteiro: num, cont real: n1, n2, n3, m, mg, soma Início soma 0 {inicialização do acumulador} cont 0 {inicialização do contador} escreva(“Informe seu número de matrícula”) leia(num) {leitura da matrícula do aluno ANTES} enquanto (num > 0) faça {número de aluno válido? Continua!} Início escreva(“Informe suas três notas”) leia(n1,n2,n3) m (n1 + n2 + n3)/3 escreva(“Média = “, m) soma soma + m {incremento do acumulador} cont cont + 1 {incremento do contador} escreva(“Informe seu número de matrícula”) leia(num) {novo aluno} Fim mg soma/cont escreva(“Media Geral = “, mg) Fim Exemplo Comparação dos Algoritmos Enquanto Contado Enquanto Condicional Algoritmo MédiaGeralCONTADA inteiro: num, cont real: n1, n2, n3, m, mg, soma Início cont 0 soma 0 enquanto (cont < 30) faça Início escreva(“Informe....”) leia(num, n1, n2, n3) m (n1 + n2 + n3)/3 escreva(“Média = “, m) soma soma + m cont cont + 1 Fim mg soma/30 escreva(“Media Geral = “, mg) Fim Algoritmo MédiaGeralCONDICIONAL inteiro: num, cont real: n1, n2, n3, m, mg, soma Início soma 0 cont 0 escreva(“Informe seu número...”) leia(num) enquanto (num > 0) faça Início escreva(“Informe... notas”) leia(n1,n2,n3) m (n1 + n2 + n3)/3 escreva(“Média = “, m) soma soma + m cont cont + 1 escreva(“Informe seu número...”) leia(num) Fim mg soma/cont escreva(“Media Geral = “, mg) Fim Exercício 5 Faça um algoritmo que lê uma quantidade não determinada de valores e verifica qual o maior e qual o menor valor digitados. O algoritmo pára quando for digitado o valor 0 (zero). Algoritmo com Repetição - Para Outra forma de repetição… Para variável de Exp1 até Exp2 [passo Exp3] Início <instruções> Fim Variável: variável de controle Exp1, Exp2, Exp3 são constantes ou expressões aritméticas Exp1 representa o valor inicial Exp2 representa o valor final Exp3 representa o valor a ser incrementado a cada iteração. Se não for especificado este item, assume-se o valor 1 Algoritmo com Repetição - Para Na instrução “Para” ocorrem 3 passos: 1) inicialização da variável de controle com o valor inicial igual a Exp1 2) um teste que verifica se o valor da variável de controle já ultrapassou o seu valor final indicado em Exp2 3) a cada nova repetição ocorrerá um incremento da variável de controle de um valor igual ao que esta estabelecido em Exp3 ou de 1 caso não tenha esta especificação Exemplos Para i de 1 até 5 Início Instruções Fim A cada repetição ocorre o incremento de 1 na variável i Para x de a até b passo 2 Início Instruções Fim Para i de n até 1 passo -1 Início Instruções Fim Quando o incremento é negativo o teste é sempre se o valor da variável é menor do que o valor final especificado A cada repetição ocorre o incremento de 2 na variável x Exemplo Algoritmo MédiaGeralPARA inteiro: num, cont real: n1, n2, n3, m, mg, soma Início soma 0 Para cont de 1 até 30 Início escreva(“Informe...”) leia(num, n1, n2, n3) m (n1 + n2 + n3)/3 escreva(“Média = “, m) soma soma + m Fim mg soma/30 escrever(“Media Geral = “, mg) Fim Qual o valor de cont após o laço de repetição? Exercício Modifique os exercícios 1, 2 e 3 para que eles sejam realizados com a instrução Para. Algoritmo com Repetição- Repita Além do “Enquanto” e do “Para” podemos ainda usar o “Repita” Repita Inicio <instruções> Fim até <condição> Exemplo Algoritmo MédiaGeralPARA inteiro: num, cont real: n1, n2, n3, m, mg, soma Início cont 0 soma 0 Repita Inicio escreva(“Informe...”) leia(num, n1, n2, n3) m (n1 + n2 + n3)/3 escreva(“Média = “, m) soma soma + m cont cont + 1 Fim Até cont == 30 mg soma/30 escrever(“Media Geral = “, mg) Fim Enquanto Contado Algoritmo MédiaGeralCONTADA inteiro: num, cont real: n1, n2, n3, m, mg, soma Início cont 0 soma 0 Enquanto (cont < 30) faça Início escreva(“Informe....”) leia(num, n1, n2, n3) m (n1 + n2 + n3)/3 escreva(“Média = “, m) soma soma + m cont cont + 1 Fim mg soma/30 escreva(“Media Geral = “, mg) Fim Repita Bibliografia Orth, Afonso Inácio. Algoritmos e Programação. Editora AIO. 2001. Forbellone, A. e Eberspacher, H. Lógica de Programação: A Construção de Algoritmos e Estruturas de Dados. Makron Books, São Paulo, 3ª edição. 2005.
Compartilhar