Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Paulista (UNIP) Disciplina: Lógica de Programação e Algoritmo (LPA) Prof. MSc. Vladimir Camelo São Paulo, 2017 Parte III ESTRUTURAS DE REPETIÇÃO Uma estrutura de repetição possibilita que uma seqüência de instruções (comandos) seja executada várias vezes, até que uma condição (teste) seja satisfeita, ou seja, repete-se um conjunto de instruções sem que seja necessário escrevê-las várias vezes. As estruturas de repetição também são chamadas de Laços ou Loops. A principal perguntar muitas vezes é quando se utilizar um estrutura de repetição? Para sisso, basta analisa se uma instrução ou uma seqüência de instruções precisa ser executada várias vezes, caso sim, então deve-se utilizar uma estrutura de repetição. As estruturas de repetição utilizadas com freqüência são: Enquanto x, processar algoritmo "Números de 1 a 10 (com enquanto...faca)" var j: inteiro inicio j <- 1 enquanto j <= 10 faca escreva (j) j <- j + 1 fimenquanto fimalgoritmo While (<condição>) { <bloco de execução> } Repita até que x, processar algoritmo "Números de 1 a 10 (com repita)" var j: inteiro inicio j <- 1 repita escreva (j) j <- j + 1 ate j > 10 fimalgoritmo do { <bloco de execução> } while (<condição>); Para ... Até ... Faça algoritmo "Números de 1 a 10" var j: inteiro inicio para j de 1 ate 10 faca escreva (j) fimpara fimalgoritmo for (int i = 0; i < 10; i++) { <bloco de execução> } Estrutura de Repetição: REPITA-ATÉ Na estrutura Repita-Até as instruções a serem repetidas são executadas, no mínimo uma vez, já que o teste (a condição) fica no final da repetição. Nesta estrutura, a repetição é finalizada quando o teste for Verdadeiro (V), ou seja, o algoritmo fica executando as instruções que estiverem dentro do laço até que o teste seja verdadeiro. Observações sobre a estrutura de repetição REPITA-ATÉ: A repetição (o laço) se encerra quando a condição (teste) for verdadeira. As instruções a serem repetidas são executadas pelo menos 1 vez, porque o teste é no final da repetição. Estrutura de Repetição: ENQUANTO-FAÇA Na estrutura Enquanto-Faça as instruções a serem repetidas podem não ser executadas nenhuma vez, pois o teste fica no início da repetição, então a execução das instruções (que estão "dentro" da repetição) depende do teste. Nesta estrutura, a repetição é finalizada quando o teste é Falso (F), ou seja, enquanto o teste for Verdadeiro as instruções serão executadas e, quando for Falso, o laço é finalizado. Observações da estrutura de repetição ENQUANTO-FAÇA: A repetição (o laço) se encerra quando a condição (teste) for falsa. As instruções a serem repetidas podem nunca ser executadas, porque o teste é no início da repetição. Estrutura de Repetição: PARA-ATÉ-FAÇA A estrutura de repetição Para-Até-Faça é um pouco diferente das outras duas estruturas de repetição apresentadas anteriormente (Repita-Até e Enquanto-Faça), pois possui uma variável de controle, ou seja, com esta estrutura é possível executar um conjunto de instruções um número determinado de vezes. Por meio da variável de controle, define-se a quantidade de repetições que o laço executará. Contadores: Em algoritmos com estruturas de repetição (Repita, Enquanto ou Para) é comum surgir a necessidade de utilizar variáveis do tipo contador e/ou acumulador. Um contador é utilizado para contar o número de vezes que uma instrução é executada. Forma Geral: VARIÁVEL := VARIÁVEL + CONSTANTE Exemplo: X := X + 1 Observações gerais sobre o uso de contadores: um contador é uma variável (qualquer) que recebe ela mesma mais um valor (uma constante). Normalmente está constante que será somada no contador é o valor 1, para contar de 1 em 1, mas pode ser qualquer valor, como por exemplo 2, caso queira contar de 2 em 2. A variável (do contador) deve possuir um valor inicial conhecido, isto é, ela deve ser inicializada, normalmente com o valor ZERO (0), ou seja, zera-se a variável antes de utilizá-la. Ex.: VARIÁVEL = 0. A constante (que é geralmente o valor 1) determina o valor do incremento da variável (do contador), ou seja, o que será somado (acrescido) a esta variável. Classificação das estruturas de repetição A classificação das estruturas de repetição é feita de acordo com o conhecimento prévio do número de vezes que o conjunto de comandos será executado. Assim os Laços se dividem em: Laços Contados, quando se conhece previamente quantas vezes o comando composto no interior da construção será executado; Laços Condicionais, quando não se conhece de antemão o número de vezes que o conjunto de comandos no interior do laço será repetido, pelo fato do mesmo estar amarrado a uma condição sujeita à modificação pelas instruções do interior do laço. Exercícios de fixação: Realize a implementação destes algoritmos. Exemplo de um algoritmo e seu respectivo fluxograma que possibilita escrever a tabuada de um número especificado pelo usuário: Algoritmo "tabuada" var i, tab, num : inteiro inicio escreval ("Tabuada: ") leia (tab) escreval ("Até que número: ") leia (num) para i := 1 ate num faca escreval (i, " x ", tab, " = ", i * tab) fimpara fimalgoritmo Algoritmo para receber N indivíduos e apresentar: Total e porcentagem de indivíduos com idade para votar Total e porcentagem de indivíduos sem idade para votar Total e porcentagem de indivíduos com idade para tirar habilitação Total e porcentagem de indivíduos sem idade para tirar habilitação Modifique o algoritmo apresentado abaixo para que se adéqüe aos itens solicitados no exercício 1 algoritmo "Teste" var anocorrente: inteiro anodenascimento: inteiro idade: inteiro inicio escreval ("Ano corrente") leia (anocorrente) escreval ("Ano de nascimento") leia (anodenascimento) idade := (anocorrente-anodenascimento) escreval (idade) se (idade >= 16) entao escreval ("INDIVIDUO TEM IDADE PARA VOTAR\n") senao escreval ("INDIVIDUO NÃO TEM IDADE PARA VOTAR\n") fimse se (idade>=18) entao escreval ("INDIVIDUO TEM IDADE PARA TIRAR HABILITAÇÃO\n") senao escreval ("INDIVIDUO NÃO TEM IDADE PARA TIRAR HABILITAÇÃO\n") escreval ("INDIVIDUO NÃO TEM IDADE PARA TIRAR HABILITAÇÃO\n") fimse fimalgoritmo Algoritmo que recebe um valor inteiro positivo qualquer e realiza um laço de repetição enquanto o valor de z < 10. Algoritmo "Teste_Enquanto" var x: inteiro y: inteiro z: inteiro inicio leia (x) y := x z := 1 enquanto (z < 10) faca y := y * x z := z + 1 fimenquanto escreva (y) fimalgoritmo Problema do loop infinito. inicio Var I: inteiro I := 0; enquanto (I < 5) faça escreva (I); fim enquanto fim inicio Var I: inteiro I := 0; enquanto (I < 5) faça I := I + 1; escreva (I); fim enquanto fim Algoritmo para calcular a soma dos salários dos funcionários de uma empresa. O Algoritmo termina quando o usuário digitar salário < 0. Algoritmo "Teste" var soma: inteiro salario: inteiro inicio soma := 0 salario := 1 enquanto (salario>=0) faca leia (salario) soma := soma+salario fimenquanto escreva (soma) fimalgoritmo Algoritmo que escreve os 100 primeiros números pares. algoritmo "teste" var i, par, contador: inteiro inicio contador := 0 par := 0 repita escreval (par) par := par + 2 contador := contador + 1 ate (contador > 50) fimalgoritmo Escreva um algoritmo que receba o peso de homens e mulheres (N valores). Para Finalizar digite “S” (SIM). O programa deverá apresentar como resultados: O total de homens e mulheres que informaram o peso A porcentagem de homens e mulheres que informaram o peso. O maior e o menor peso dos homens e das mulheres. A porcentagem de homens acima de 90 kg A porcentagemde mulheres entre 75 kg Altere algoritmo abaixo para que entre com N números inteiros e ao final informe a quantidade de números pares e números ímpares. algoritmo "teste" var a: inteiro inicio leia(a) escolha(a mod 2) caso 0 escreva("Par") outrocaso escreva("Impar") fimescolha fimalgoritmo Com base no algoritmo apresentado abaixo responda as seguintes questões: algoritmo "teste" var x, n : inteiro inicio leia (n , x) y := 1 enquanto ( x > 0 ) faca y := y * N x := x - 1 fimenquanto escreva ( y ) fimalgoritmo Qual o objetivo do algoritmo acima (qual o problema que ele está solucionando)? O algoritmo está correto? Como ele pode ser testado? Altere o algoritmo, utilizando a Estrutura Repita ... Até Altere o algoritmo, utilizando a Estrutura Para ... Faça Qual das três opções de algoritmo é a melhor na sua opinião? Por que? Com base no fluxograma apresentado abaixo faça a implementação do algoritmo para calcular o Fatorial de N!. utilize uma estrutura de repetição para construção deste algoritmo Teste de mesa para o fluxograma apresentado acima: N Fat Acum Resultado apresentado 0 1 X O fatorial de 0 é 1 1 1 X O fatorial de 1 é 1 3 1 2 1 * 2 3 1 * 2 * 3 4 O fatorial de 3 é 6 Crie um algoritmo de classificação de produtos segundo seu código de barra (utilize a estrutura repita). O algoritmo deve possibilitar digitar N produtos e seus respectivos códigos para classificá-los. Faça um algoritmo para calcular a série Fibonacci até 0 N-ésimo termo. A série tem a seguinte forma: 1,1,2,3,5,8,13,21,34,.... Faça um algoritmo para ler e escrever o nome, idade e sexo de N alunos. Ao final escreva o total de alunos lidos. Para cada nota de compra, tem-se o nome do produto comprado, o valor e o imposto. Faça um algoritmo que escreva o valor total bruto, o imposto total cobrado e o valor total líquido das notas. (50 notas) Utilizar para estes exercícios o Enquanto (enquanto) Apresentar todos os valores numéricos inteiros ímpares de 0 a 20. Apresentar o total da soma obtida dos cem primeiros números inteiros. Apresentar os quadrados dos números inteiros de 15 a 200. Faça um algoritmo para somar o resto da divisão por 3 de 200 números Utilizar para estes exercícios o Repita (repita) Apresentar todos os valores numéricos inteiros pares de 100 a 200. Apresentar a soma total dos cinco primeiros números inteiros. Apresentar a tabuada de um número qualquer. Todo o programa deve se repetir enquanto o usuário desejar. Apresentar todos os números divisíveis por 4 menores que 20. Apresentar os quadrados dos números inteiros de 2 a 50. Elaborar um programa que apresente no final, o somatório dos valores pares existentes na faixa de 10 até 20. Dado uma frase de exatamente 80 caracteres, escreva a frase de trás para frente, um caracter por linha. Utilizar para estes exercícios o Para (para) Apresentar todos os valores numéricos inteiros ímpares situados na faixa de 1000 a 1500. Apresentar o total da soma obtido de N números inteiros onde N é um número digitado pelo usuário. Apresentar a tabuada de um número qualquer. Apresentar os números divisíveis por 3 que sejam menores que 12. Elaborar um programa que apresente no final, o somatório dos valores pares existentes na faixa de 10 até 20.
Compartilhar