Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Lógica de Programação, Notas de aula de Lógica Matemática

Material sobre Lógica de Programação

Tipologia: Notas de aula

2017

Compartilhado em 08/11/2017

m_douglas1607
m_douglas1607 🇧🇷

4.7

(7)

26 documentos

1 / 17

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Material Didático do Instituto Metrópole Digital - IMD
Versão 2.0 - Todos os Direitos reservados
Lógica de Programação
Aula 11 - Estruturas de repetição –
enquanto... faça repita... até
Apresentação
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Pré-visualização parcial do texto

Baixe Lógica de Programação e outras Notas de aula em PDF para Lógica Matemática, somente na Docsity!

Material Didático do Instituto Metrópole Digital - IMD Versão 2.0 - Todos os Direitos reservados

Lógica de Programação

Aula 11 - Estruturas de repetição –

enquanto... faça repita... até

Apresentação

Apresentação

Na aula anterior, introduzimos os conceitos de estruturas de repetição. Vimos que, algumas vezes, nos algoritmos, há a necessidade de executar comandos emloop, de acordo com uma condição específica. Conhecemos a sintaxe da estrutura de repetição com variável de controle (o comando PARA) e construimos alguns algoritmos com essa estrutura. Nesta aula, encerraremos o estudo das estruturas de repetição, contemplando o comando ENQUANTO, que é utilizado em repetições que testam a condição no início da estrutura, e o comando REPITA, em que a condição é testada no final da estrutura. Nesta aula, conheceremos a sintaxe e identificaremos quando utilizar esses comandos, a fim de construir algoritmos eficazes dentro das estruturas de repetição.

Vídeo 01 - Apresentação

Objetivos

Ao final da aula, você deverá ser capaz de:

Definir a sintaxe para o comando ENQUANTO em estruturas de repetição com teste condicional no início.

Definir a sintaxe para o comando REPITA em estruturas de repetição com teste condicional no final.

Construir algoritmos completos utilizando essas estruturas.

media <- (nota1+nota2)/

escreval("O aluno ",contador," teve média igual a: ",media)

contador <- contador + 1

fimenquanto

fimalgoritmo

Veja que o algoritmo anterior, utilizando o comando ENQUANTO, faz a mesma coisa que o algoritmo que vimos na aula anterior, com os comandos PARA...FACA.

No algoritmo da média, sabemos previamente a quantidade de repetições, que equivale ao número de alunos da turma. Por isso, esse algoritmo pode ser resolvido com qualquer uma das duas estruturas de repetição: o PARA ou o ENQUANTO.

É importante, porém, observar um detalhe. Já vimos que o comando PARA define o valor de incremento do contador antes do início da execução. Essa definição não é feita na sintaxe do comando ENQUANTO. Por isso, é de extrema importância que você lembre de incrementar o contador, antes de finalizar a estrutura.

Veja que antes do comando fimenquanto, temos a seguinte expressão:

contador <- contador + 1

Declaramos, no início do algoritmo, a variável contador, do tipo inteiro, mas não atribuimos a ela valor algum. Sabemos que, quando não atribuímos valor a uma variável do tipo inteiro, o valor default assumido é

  1. Portanto, o valor do contador, antes do início da execução da estrutura de repetição, é igual a 0.

Vimos também, anteriormente, que o valor de incremento não pode ser nulo e só pode ser negativo, se quisermos percorrer o laço na ordem inversa. Assumimos, no algoritmo demonstrado anteriormente, que o valor de incremento é positivo e igual a 1 (sabemos que quando não definimos o valor de incremento, assume-se esse valor, na estrutura PARA).

A cada repetição, o valor do contador deve ser incrementado em 1. É isso que o algoritmo faz quando chega à linha "contador <- contador + 1‟. Veja, no Quadro 1, como ocorre esse incremento.

Execuções Valor do contador Expressão de incremento

Início 0 Contador <- contador + 1

Primeira execução contador = 0 contador = 0 + 1

Segunda execução execução contador = 1 contador = 1 + 1

Terceira execução execução contador = 2 contador = 2 + 1

Quinquagésima execução

execução contador = 49 contador = 49 + 1

Fim da execução execução contador = 50 Contador atingiu valorlimite

Quadro 1 - Incremento do contador ao longo das repetições

Pseudocódigo

enquanto <condição>

faca

<instruções>

fimenquanto

Fluxograma

estrutura encerra e aparece a mensagem de que o número digitado é negativo.

O comando ENQUANTO testa uma condição e, enquanto essa condição for verdadeira, as instruções da estrutura de repetição são executadas. No momento em que a condição deixar de ser verdadeira, a estrutura encerrará.

Como não podemos prever qual será o momento em que o usuário irá digitar um número negativo, não há como saber previamente a quantidade de repetições.

O comando ENQUANTO é utilizado em estruturas de repetição nas quais não sabemos previamente a quantidade de repetições do comando ou grupo de comandos da estrutura.

Veja a sintaxe dessa estrutura:

Atenção: Se houver alguma situação em que seja possível a condição ser sempre verdadeira, as instruções da estrutura executarão para sempre. É o que chamamos de loop infinito. É importante que você tenha o cuidado de evitar situações como essa.

Quer ver um exemplo de algoritmo que resulta em loop infinito? Retorne ao algoritmo da média no início desta aula e tente executá-lo no VisuAlg removendo a linha em que o contador é incrementado (contador <- contador + 1). Veja o que acontece.

Como o contador não está sendo incrementado, terá sempre o valor inicial (zero). Dessa forma, a condição (contador < 50) será sempre verdadeira, causando, portanto, a situação deloop infinito.

Vídeo 02 - Estrutura de Repetição Enquanto...Faça

Atividade 01

  1. O que diferencia a estrutura de repetição com o comando PARA da estrutura que utiliza o comando ENQUANTO?
  2. O que é umloop infinito?
  3. 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.
  4. 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.

Teste Condicional no Final – (Repita...Até)

media <- (nota1 + nota2)/

escreval ("O aluno ",contador," teve média igual a: ",media)

contador <- contador + 1

ate contador > 50

Fimalgoritmo

Na estrutura REPITA...ATE, a repetição continua ATE que a condição (contador > 50) se torne verdadeira.

Veja que o problema da média pôde ser resolvido com qualquer uma das estruturas de repetição, alterando-se somente a sintaxe.

Apesar disso, nem sempre um problema, em algoritmos, poderá ser solucionado com qualquer uma das estruturas. Sempre haverá uma das estruturas que se enquadre melhor na solução de determinado problema.

Ao contrário do ENQUANTO, o teste da condição verifica, na estrutura REPITA...ATE, se a condição é falsa. O loop termina quando a condição é verdadeira. Além disso, a estrutura REPITA...ATE sempre executa, pelo menos uma vez, os comandos, pois o teste da condição é realizado no final.

Essa estrutura pode ser utilizada, também, em menus. Veja o exemplo a seguir:

algoritmo "menu sorvetes"

var

op:caracter

inicio

repita

escreval ("Escolha um sabor de sorvete:")

escreval ("1- Morango")

escreval ("2- Abacaxi")

escreval ("3- Chocolate")

escreval ("4- Caramelo")

escreval ("5- Salada de Frutas")

leia (op)

ate (op = "1") ou (op = "2") ou (op = "3") ou (op = "4") ou (op = "5")

Estrutura REPITA...ATE

escolha op

caso "1"

escreval ("Você escolheu Morango.")

caso "2"

escreval ("Você escolheu Abacaxi.")

caso "3"

Pseudocódigo

repita

<instruções>

ate <condição>

Fluxograma

O comando REPITA executa as instruções até que a condição seja verdadeira. Ou seja, se a condição for falsa, o ciclo continua. Quando a condição é verdadeira, a estrutura encerra.

Atividade 02

  1. Escreva um algoritmo que receba vários números digitados pelo usuário, até que o usuário digite 0. Ao digitar 0, o algoritmo termina.
  2. 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".

Conclusão

Conclusão

Bom, concluímos por aqui o estudo das estruturas de repetição, mas ainda temos mais duas aulas. Na próxima aula, você vai conhecer as estruturas de dados homogêneas e aprenderá a construir algoritmos com vetores e matrizes. Faça a autoavaliação com atenção e veja se precisa parar e refletir mais um pouco sobre o que estudamos até aqui, pois daqui pra frente vamos abordar assuntos diferentes e estamos nos aproximando do final da nossa disciplina. Bons estudos!

Resumo

Nesta aula, vimos os conceitos referentes às estruturas de repetição com teste da condição no início (que utilizam o comando ENQUANTO) e com teste da condição no final (que utilizam o comando REPITA). Vimos quando esses comandos são utilizados e conhecemos a sintaxe e semântica de cada uma dessas estruturas. Estudamos, também, a respeito do cuidado que devemos ter com loops infinitos, pois, caso a condição seja sempre verdadeira (ou falsa no caso do REPITA), há o risco do programa permanecer executando para sempre.

Autoavaliação

  1. Explique a sintaxe da estrutura ENQUANTO...FACA.
  2. Escreva um algoritmo que receba vários números inteiros positivos e diga se cada número é primo ou não. A estrutura encerra quando é digitado um valor negativo ou nulo. Lembre-se: um número é primo quando é divisível apenas por um e por ele mesmo.
  3. Escreva um algoritmo que receba números positivos e calcule a soma dos que são pares. A estrutura encerra quando o usuário digita um número negativo.
  4. Escolha a alternativa correta em cada questão a seguir.

a. Não há diferenças. b. Uma testa a condição no início e a outra testa a condição no final. c. Em uma delas, o incremento é definido antes do início da execução. Na outra, essa definição é realizada ao final da execução.

  1. Escreva um algoritmo que receba o preço e a quantidade de 20 diferentes produtos e mostre o valor total da compra.
  2. Explique a sintaxe da estrutura REPITA...ATE.
  3. Escreva, com a estrutura REPITA...ATE, a tabuada de um número digitado pelo usuário.
  4. Em uma eleição presidencial, há três candidatos, representados pelos códigos "1", "2" e "3". O código "4" representa voto nulo e o código "5" representa voto em branco. Escreva um algoritmo que leia o voto do eleitor e calcule a quantidade de votos de cada candidato, bem como a quantidade de votos nulos e em branco e a quantidade total de votos. Ao digitar a opção "0", o eleitor sai do programa e os valores são exibidos. Também é interessante exibir o candidato vencedor ou, em caso de a quantidade de votos nulos ou em branco ser maior que a metade do total de votos, a mensagem de eleição anulada.
  5. Escreva um algoritmo que apresente ao usuário as opções: (a) Saldo; (b) Depósito, (c) Saque e (x) Sair. O algoritmo deve repetir até que o usuário digite "x". O valor inicial do saldo é R$ 0,00. Se o usuário escolher a opção Depósito, deve digitar o valor do depósito e o saldo é incrementado. Caso o usuário escolha a opção Saque, deve digitar o valor e exibir mensagem e saldo insuficiente (se não houver saldo) ou debitar o valor, alterando o saldo. Em ambas as opções, o novo saldo é exibido.

Referências

ASCENCIO, Ana F. Gomes; CAMPOS, Edilene A. V. de. Fundamentos de programação de computadores: algoritmos, Pascal e C/C++. São Paulo: Prentice Hall, 2002. 355p.

SOUZA, Cláudio M de. VISUALG: editor e interpretador de algoritmos. Disponível em: http://apoioinformatica.inf.br/produtos/visualg/item/31-objetivos. Acesso em: 22 mai. 2015.