Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Curso : Análise e desenvolvimento de Sistemas ALGORITMOS - CCT0001 Aulas 10 e11 Estrutura de repetição Profª. Marília S. Mendes mariliamendes@gmail.com 26/09/2012 1 Estrutura de repetição Importância Os conceitos ensinados permitem desenvolver algoritmos que repitam um conjunto de instruções Objetivo Introduzir as três estruturas de repetição que podem ser usadas em um algoritmo Enquanto/Faça Repita/Até Para/Faça 26/09/2012 2 Estrutura de repetição Como escrever algoritmos que façam iteração de instruções? 26/09/2012 3 Estrutura de repetição Existem situações que o processamento de um valor uma única vez não é suficiente para resolver o problema. Quando isto ocorre, deve-se utilizar uma estrutura de repetição. Estruturas de repetição permitem que um ou mais instruções sejam executadas um número definido de vezes, ou enquanto uma determinada condição não é alcançada. 26/09/2012 4 Estrutura de repetição As estruturas de repetição também são conhecidas como Laços ou Loops As estruturas de repetição das linguagens de programação são de dois tipos: Condicional Repetem até satisfazer a condição de repetição São usadas quando não se sabe previamente quantas vezes deve-se executar as instruções do bloco de repetição Contada Repetem um número contado (pré-definido) de vezes São usadas quando se sabe previamente quantas vezes deve-se executar as instruções do bloco de repetição 26/09/2012 5 Estrutura de repetição As estruturas de repetição condicional podem executar seus testes: No Início Enquanto/Faça No Fim Repita/Até As estruturas de repetição contada utilizam uma variável para controlar a quantidade de repetições Para/Faça 26/09/2012 6 Estrutura de Repetição – Enquanto/Faça Semântica: Faz o teste no início do laço. Se o resultado for V as instruções do laço e/são executadas. Volta-se para o início do laço e testa-se novamente a sua condição. Isto é repetido enquanto a condição testada for V. Estrutura de Repetição – Enquanto/Faça Sintaxe Enquanto (<condição>) faça <Comando1>; <Comando 2>; .... <Comando N>; FimEnquanto Exemplo 1: n <- 1; Enquanto (n<=10) faça escreva (n); n <- n + 1; FimEnquanto Os comandos serão executados 10 vezes. Estrutura de Repetição – Comando Enquanto/Faça 26/09/2012 9 Estrutura de Repetição – Comando Enquanto/Faça Fluxograma Pseudocódigo enquanto(CONT< 100)faça escreva(“Digite o número:”); leia (NUM); SOMA <- SOMA + NUM; CONT<-CONT+ 1; fim_enquanto Estrutura de Repetição – Comando Enquanto/Faça Os comandos que estão no “lado S” do comando enquanto, são aqueles que serão repetidos. No exemplo do slide anterior, um comando leia e dois comandos de atribuição de valores. A condição para repetição é a seguinte: enquanto a variável CONT apresentar valor menor do que 100, os comandos devem ser repetidos. Na prática acontece o seguinte: é realizado o teste lógico para determinar se a condição é verdadeira. Se a condição for verdadeira ele executa os comandos que estão no “lado S” e volta para o teste lógico da condição. Caso continue verdadeiro, repete e testa novamente, caso a condição se apresente como falsa, ele interrompe a repetição (“vai para o lado ‘N’”) e continua a sequencia normal de comandos. Estrutura de Repetição – Comando Enquanto/Faça Resumindo... Não se sabe de antemão quantas vezes o bloco de repetição será executado. Isto é, ele pode ser executado várias vezes ou nenhuma vez Testa a condição antes de entrar na estrutura de repetição Repete a execução do bloco de instruções toda vez que condição for V O bloco de instruções A execução do bloco é finalizada quando a condição for F Estrutura de Repetição – Repita/Até Semântica: Efetua um teste lógico no fim do laço, garantindo que pelo menos uma vez as instruções deste são executadas. Ao contrário do enquanto, esta só repete o laço se o resultado do teste for F Estrutura de Repetição – Repita/Até Sintaxe Repita <Comando1>; <Comando 2>; ... <Comando N>; Até (<Condição>) Exemplo : n <- 1; Repita Escreva n; n <- n + 1; Até (n > 10) O comando será executado 10 vezes. Estrutura de Repetição – Repita/Até 26/09/2012 15 Estrutura de Repetição – Comando Repita/Até Fluxograma Pseudocódigo repita escreva(“Digite o número:”); leia (NUM); SOMA <- SOMA + NUM; CONT<-CONT+ 1; até(CONT> = 100) Estrutura de Repetição – Comando Repita/Até Esse comando executa pelo menos uma vez os comandos a serem repetidos. Isso nem sempre é interessante para o funcionamento do algoritmo. Como ele funciona de modo inverso ao comando enquanto, observe que a condição testada é exatamente o inverso para a mesma situação. O “lado N” (quando o comando volta para repetir os comandos) não pode ter nenhum comando. Estrutura de Repetição – Comando Repita/Até Resumindo... Não se sabe de antemão quantas vezes o bloco de repetição será executado. Todavia é garantido que ele será executado pelo menos uma vez Testa a condição depois de entrar na estrutura de repetição Repete a execução do bloco de instruções toda vez que a condição for F A execução do bloco é finalizada quando a condição for V Observações importantes Toda repetição condicional pode ser representada por uma estrutura do tipo Enquanto/Faça ou Repita/Até. Todavia, perceba que a primeira repete somente quando a condição é V e a segunda somente quando a condição é F. Por isso, a condição de uma é a negação da outra! Nos laços condicionais a variável que é testada, deve estar sempre associada a uma instrução que a atualize no interior do laço. Pois, se isto não ocorrer, o algoritmo ficará repetindo indefinidamente este laço, gerando uma situação conhecida como “laço/loop” infinito” Exercícios Faça um algoritmo para imprimir os números pares entre 10 e 20. Algoritmo Var inicio n<-10 enquanto(n<=20)faça escreva(n) n<-n+2 Fimenquanto fim 20 Exercícios 2. Faça um algoritmo para escrever os números múltiplos de 5 entre 1 e 100. Exercícios 3. Faça um algoritmo que mostre quantos números múltiplos de 3 existem entre 1 e 100. Exercícios 4. Faça um algoritmo para ler a idade de 5 amigos de uma sala, fazer a média e imprimir. Teste de Mesa Nem sempre será possível ter em mão ferramentas computacionais para testar os algoritmos. Nessa situação, é necessário testar o programa utilizando apenas “papel e caneta”, ou seja, simular o funcionamento do programa no papel. Teste de Mesa Crie uma tabela onde cada linha tenha o nome de uma das variáveis do algoritmo. Todas as variáveis devem ser colocadas na tabela. Observe se a quantidade de vezes que se deseja repetir é alta. Se for, altere para uma quantidade menor, e possível de ser testada em um tempo razoável. Toda entrada de dados (comando leia) indica que um valor será inserido pelo usuário, ou seja, não é possível determinar qual será esse valor, então, cada vez que um comando leia for encontrado é necessário determinar um valor qualquer para a variável de entrada (“chutar o valor”). Seguir o algoritmo comando por comando, do início até o fim, fazendo o que os comandos determinam que deve ser feito. Só parar o teste quando encontrar o comando fim. Cada vez que ocorrer um comando de entrada de dados ou de atribuição de valor, na tabela, alterar o valor da variável utilizada pelo comando. Lembre que esses comandos substituem o valor anteriormente armazenado na variável. Quando ocorrerem comandos que tenham condições a serem testadas, testar a condição. Chegando ao final do algoritmo, conferir se foram apresentados os resultados corretos (esperados). Com isso é possível garantir que o algoritmo funciona corretamente. INDENTAÇÃO Observações para construção de algoritmos Ler atentamente a especificação do problema até compreende-lo. Ler novamente, anotando os pontos fundamentais: Variáveis, Constantes, Decisões, Repetições e Condições de Parada Escrever em português, da forma que desejar, a entrada, o processamento e a saída dos resultados desejados Ao fim deste passo, deverá ser possível visualizar todas as estruturas de decisão e repetição necessárias ao algoritmo final Escrever o algoritmo em pseudo-código Importante: veja se variáveis foram inicializadas e se as expressões lógicas das estruturas de decisão e de repetição estão corretas Verifique a corretude do algoritmo Aplique a técnica de teste de mesa Exercícios 5. Faça um algoritmo que: Leia um número indeterminado de linhas contendo cada idade de um indivíduo. A última linha, que não entrará nos cálculos terá valor da idade igual a zero. Calcule e escreva a idade média desse grupo de indivíduos. Encadeando as Estruturas de Repetição Encadeando Diversas Estruturas Encadeando Diversas Estruturas Encadeando Diversas Estruturas Exercícios 6. Faça um algoritmo que leia 20 números inteiros e mostre qual é a média desses números. 7. Faça um algoritmo que leia o nome e o sexo de 56 pessoas e informe o nome e se ela é homem ou mulher. No final informe total de homens e de mulheres.. 8. Faça um algoritmo que leia 15 números inteiros e mostre qual foi o maior e o menor valor fornecido. 9. Faça um algoritmo que apresente a tabuada de um número N. O valor de N será apresentado pelo usuário. 10. Faça um algoritmo para ler 10 números e mostrar a quantidade dos números maiores que 100. Exercícios 11. Faça o algoritmo que apresente o peso total que será carregado por um caminhão. Sabe-se que esse caminhão carrega 25 caixas, com pesos diferentes. 12. Escreva um algoritmo que receba o preço e a quantidade de 20 diferentes produtos e mostre o valor total da compra. 13.Escreva um algoritmo que solicite ao usuário que digite o seu login e a sua senha. Caso o login e a senha estejam errados, pedir para digitar novamente. Caso estejam corretos, escrever: “Login efetuado com sucesso.” O login deve ser o seu nome e a senha deve ser a palavra “digital”. Exercícios 14. Faça o algoritmo que controle a entrada de pessoas em um elevador. O algoritmo receberá, como dado de entrada, o peso de cada pessoa que entra no elevador e essa entrada só vai ser encerrada quando o elevador não suportar mais a entrada de pessoas (limite ultrapassado). As limitações de entrada de pessoas no elevador são duas: O peso máximo suportado pelo elevador é de 1.250 kg; A quantidade máxima de pessoas suportada pelo elevador é de 15 pessoas. Quando algum dos limites for superado, o programa deve indicar o peso e a quantidade de pessoas que o elevador irá carregar (lembre que a última pessoa que entrou no elevador teve que sair dele). Exercícios 15. Escreva um algoritmo que receba uma quantidade indeterminada de números positivos e diga quantos deles estão no intervalo de 0 a 25, quantos estão no intervalo de 26 a 50 e quantos são maiores que 50. O algoritmo deve parar quando o usuário digitar um número negativo. 16. Escreva um algoritmo que receba um número diversas vezes e mostre o seu inverso (1/n). O algoritmo encerra quando o valor digitado é zero, exibindo uma mensagem de erro que diz que não se pode dividir por zero.