Jun
10
2010

Aprenda a Programar #10 | Algoritmos – Estruturas de repetição 2

Enquanto… Faça…

Olá algoritmizeiros!

Primeiramente queria pedir desculpas pelo atraso no post dessa semana, mas a correria trabalho-trabalho-faculdade-casa é grande, e as vezes o tempo é pouco…

Dando prosseguimento ao post anterior, sobre estruturas de repetição, hoje vamos aprender sobre o comando enquanto – faca.

Diferentemente do repita-ate, onde todos os comandos são interpretados, para só então haver uma expressão lógica verificando se deve ou não continuar a repetição, o enquanto-faca irá avaliar uma expressão lógica e, enquanto esta for verdadeira, irá executar os comandos…

Sintaxe do Enquanto .. faca

enquanto <expressão lógica ou relacional> faca
    <comandos>
fimenquanto

Melhor explicado com exemplos =)

Exemplo 1

Neste exemplo, vou criar um algoritmo utilizando o repita-ate e depois o mesmo algoritmo, só que dessa vez utilizando a estrutura enquanto – faca, explicando passo-a-passo a vocês, para que possam entender a diferença entre ambos.

- Faça um algoritmo que solicite que o usuário digite um número, e informe se este número é maior que 10. O programa só pode parar de solicitar o número quando este for igual a 0 (zero)

Utilizando a estrutura de repetição repita .. ate

algoritmo "exemplo 1"
// Nos siga no Twitter! @Algoritmizando

var
numero: inteiro

inicio

repita
    escreva("Digite um número: ")
    leia(numero)
    limpatela // Limpa a tela =P
    se (numero > 10) entao
        escreval("O número é maior que 10")
    senao
        escreval("O número é menor que 10")
    fimse
ate (numero = 0)

fimalgoritmo

E agora o mesmo algoritmo, porém utilizando a estrutura de repetição enquanto .. faca

algoritmo "exemplo 2"
// Nos siga no Twitter! @Algoritmizando

var
numero: inteiro

inicio

numero <- 1
enquanto numero <> 0 faca
    escreva("Digite um número: ")
    leia(numero)
    limpatela
    se (numero > 10) entao
    escreval("O número ",numero," é maior que 10")
    senao
    escreval("O número ",numero," é menor que 10")
    fimse
fimenquanto

fimalgoritmo

Nesse exemplo, começamos nosso algoritmo atribuindo o valor 1 a variável número, para que possamos começar a utilizar nossa estrutura de repetição, conforme podem ver na linha 9;

E na linha 10, nossa condição para que o laço continue sendo executado, ou seja, enquanto a variável numero for diferente de 0 (zero), continuaremos executando o programa, e o usuário digitando números para descobrir se é maior ou menor que zero… (como se fosse necessário um programa para isso rsrsrs)

claro, claro, é apenas um exemplo didático…

Mas que tal ver se realmente aprendeu?

Deixo aqui então um desafio a vocês…

  1. Crie dois algoritmos, um utilizando a estrutura de repetição repita .. ate e outro utilizando o enquanto .. faca.
  2. Uma loja está vendendo três modelos de carro, o algoritmo deve ler o nome e o valor (R$) dos seguinte automóveis: GOL, PALIO, CORSA
  3. Ao final, informar quantos carros de cada modelo foram vendidos e o valor total arrecadado em reais.
  4. O programa só pode encerrar quando o valor do veículo for igual a zero.

Good Luck ;)


Receba nossos artigos em seu Email!


Digite o seu email abaixo:

Posts Relacionados:

Sobre o Autor: Bruno Barbosa

Bruno Barbosa cursa Análise e Desenvolvimento de Sistemas, é programador Python, Desenvolvedor Web, usuário Linux e entusiasta de Software Livre. Utiliza no dia-a-dia Python, Zope/Plone e o framework web2py para desenvolvimento de aplicações web. Me siga também no Twitter.

28 Comments + Add Comment

  • Bruno gostei muito dos post, mas to com muita dificuldade nos exercicios, preciso de ajuda!!!please :) ..bj

    [Reply]

    Bruno Barbosa Reply:

    Olá Sabrina,

    Obrigado pelo feedback, mas preciso saber com mais exatidão qual é a sua dúvida, para que eu possa tentar te ajudar.

    Abraços.

    [Reply]

  • Bom Bruno, a minha duvida esta no 3°passo desse exercicio dos carros ai, para informar quantos carros de cada modelo foram vendidos e o valor total arrecadado em reais, não estou conseguindo fazer isso, desde ja obrigada.

    [Reply]

  • oi,Bruno valeu, estou aprendendo muito

    [Reply]

  • Cara, não consegui compreender o enunciado do exercício…

    Poderia explicar melhor?

    desde já agradeço ;D

    [Reply]

  • Explicando melhor o exercício…

    No início do programa, o programa deverá receber o valor de cada modelo do veículo, o valor do GOL, do CORSA e do PALIO.

    Após isso, você deverá entrar em um laço, na qual seria a “venda dos veículos”. Exemplo:

    loop
    … Qual carro foi vendido? // O programa pergunta
    >>> PALIO // O usuário insere o dado
    … Qual o valor pago?
    >>> VALORAQUI
    paliosVendidos <- paliosVendidos + 1 // Aqui você cria uma variável para contabilizar quantos carros da marca PALIO ja foram vendidos.
    // Logo em seguida, você salva em outra variável o valor já arrecadado em reais

    VoltaProLoop // então você volta para o loop até que o valor pago inserido seja igual a 0, então você deve terminar o programa.

    [Reply]

    Bezzy Reply:

    Deixa eu ver se eu entendi…

    Seria isso mesmo que eu escrevi ?

    http://pastebin.com/4pGGVBrD

    [Mandei pro pastebin pra ficar melhor a compreensão]

    abraços

    [Reply]

  • Seguindo a proposta do desafio…

    Acho que eu consegui melhorar um pouquinho o meu código no segunto estilo de estrutura de repetiçao… [Enquanto --- Faça]

    Aqui eu coloquei o código pra quem quiser ver o que eu fiz
    http://pastebin.com/8fuxv5Yr

    To ficando cada vez melhor nisso õ//

    [Reply]

  • Dá uma olhadinha no meu aew…
    foi isso q entendi q o exercicio tava pedindo…

    algoritmo “Controle de Vendas”
    // Função :
    // Autor :
    // Data : 7/3/2011
    // Seção de Declarações
    var
    Carro:caractere
    valor:real
    i:Inteiro
    inicio
    // Seção de Comandos
    i<-1
    Repita
    Escreval("Carros a venda: Gol: R$22.000, Palio: R$28.500, Corsa: R$30.100")
    Escreval("")
    Escreva("Modelo do carro: ")
    Leia(carro)
    Escreva("Valor do carro: R$")
    Leia(Valor)
    Escreval("O Carro ",Carro," custa R$",Valor)
    i<-i+1
    ate (valor=0)
    Escreval("Voce vendeu ",i," carros.")
    fimalgoritmo

    [Reply]

  • muito bom!
    perdi essa aula d estruturas d repetição
    e seus post estão ajudando muito!
    vlw

    [Reply]

    Bruno Barbosa Reply:

    Opa,

    Eu é que agradeço por estar acompanhando e ter nos dado seu feedback.
    Qualquer dúvida só postar nos comentários.

    Abraços.

    [Reply]

  • Bom dia, muito bom esse aprendendo, eu to aprendendo mesmo!!! :) vai ai o meu codigo do exercicio!!!

    algoritmo “Conta carros”
    // Função : Contar carros vendidos e somar valores
    // Autor : Odair h. Farias
    // Data : 19/04/2011
    // Seção de Declarações

    var

    preco, g, c, p, w: real

    tipo: caractere

    inicio
    // Seção de Comandos

    preco <- 1
    g <- 0 // g – quantidades de gol
    c <- 0 // c – quantidade de corsas
    p <- 0 // p – quantidade de palios
    w <- 0 // w – soma dos valores
    enquanto (preco 0) faca

    escreval (“Digite o preço do Carro:”)
    leia(preco)

    escreval (“Digite o modelo do Carro – Gol, Palio ou Corsa:”)
    leia(tipo)

    escolha(tipo)
    caso (“gol”)
    g<-g+1
    caso ("corsa")
    c<-c+1
    caso ("palio")
    p<-p+1
    outrocaso
    escreval ("Digite – Gol, Palio ou Corsa")
    w <- w – preco

    fimescolha
    w <- w + preco
    fimenquanto

    escreval ("Foram vendidos ",g," Gols",c," Corsas",p," Palios")
    escreval ("Valor total de vendas é R$ ",w:6:2)

    fimalgoritmo

    [Reply]

  • queria ver a resolucao desses exercicios do enquanto..
    sera que tem alguma forma?

    [Reply]

  • Olá Bruno! Eu gostaria de saber sobre o custo de processamento… Tô falando besteira ou há alguma diferença do repita pro enquanto faca.?

    [Reply]

    Bruno Barbosa Reply:

    Em portugol não há diferença alguma.

    Os algoritmos ensinados aqui no Aprenda a Programar são apenas para fins didáticos e não consomem muitos recursos do computador.

    Você deverá procurar documentação específica futuramente, da linguagem de programação que você estiver utilizando, sobre custos de processamento de laços de repetição.

    [Reply]

    Gui Reply:

    Grato pela atenção!

    [Reply]

  • algoritmo “semnome”
    // Função : Valor de 3 Tipos Diferentes de Carros
    // Autor : Caasamtos
    // Data : 27/09/2011
    // Seção de Declarações
    var
    car:caractere
    valor,quant,vend:real
    inicio
    // Seção de Comandos
    valor<-1
    enquanto valor0 faca
    escreva(“Coloque o nome do carro que você deseja consultar: “)
    leia(car)
    escolha (car)
    caso (“Gol”),(“Palio”),(“Corsa”)
    escreva (“Qual o Valor do “,car ,” atualmente? “)
    leia(valor)
    fimescolha

    se car=(“Gol”)entao
    quant<-10//Valor Pode ser recebido de pelo banco de dados
    fimse
    se car=("Palio")entao
    quant<-20//Valor Pode ser recebido de pelo banco de dados
    fimse
    se car=("Corsa")entao
    quant<-15//Valor Pode ser recebido de pelo banco de dados
    fimse
    vend<-quant*valor
    escreval ("As Vendas deste Carro é: ",vend)
    fimenquanto

    fimalgoritmo

    //E então como ficou!? tentei uzar varios exercicios

    [Reply]

  • Olá tudo bem?Tô no 1º periodo do curdo de Sistemas,mas o meu raciocinio é meio lento na logica de programação.Como posso melhorar isso?No aguardo.Abraços…Gildasio

    [Reply]

  • Bom gente, tentei por várias horas, vejam qual o problema do meu programa ai, não funcionou.
    _____________________________________
    algoritmo “Venda de carros”

    var
    gol,palio,corsa,carro,valor,valor2,valor3,preco,i:real
    nome:caractere

    inicio
    valor3 <- 0
    valor2 <- 0
    valor <- 0
    i <- 0
    gol <- 0
    palio <- 0
    corsa <- 0

    enquanto valor2 valor3 faca

    //—————————–
    se i = 0 entao
    escreva(“Entre com o valor total da soma dos carros a serem vendidos: “)
    leia(valor3)
    i <- i+1
    limpatela
    fimse
    //—————————–
    escreva("Digite o nome do carro: ")
    leia(nome)
    limpatela
    //—————————–
    escreva("Digite o valor do carro: ")
    leia(preco)
    //—————————–
    se preco = 0 entao
    fimalgoritmo
    fimse
    //—————————–
    valor2 <- valor2+preco
    limpatela
    //—————————–
    se nome = "gol" entao
    carro <- 1
    fimse

    se nome = "palio" entao
    carro <- 2
    fimse

    se nome = "corsa" entao
    carro <- 3
    fimse
    //—————————–
    se carro = 1 entao
    gol <- gol+1
    fimse

    se carro = 2 entao
    palio <- palio+1
    fimse

    se carro = 3 entao
    corsa <- corsa+1
    fimse
    //—————————–
    fimenquanto
    //—————————–
    limpatela
    escreval("Foram vendidos ",(gol)," Gols, ",(palio)," Palios e ",(corsa)," Corsas.")
    escreval("O valor arrecadado foi de ",(valor)," R$.")

    fimalgoritmo
    ________________________________________

    [Reply]

  • Nossa ,não consegui sacar nada ,raciocinio lentinho .

    [Reply]

  • algoritmo “vendas_carros_enquanto_faca”
    // Função :
    // Autor :
    // Data : 31/12/2011
    // Seção de Declarações

    //1. Crie dois algoritmos, um utilizando a estrutura de repetição repita .. ate e outro utilizando oenquanto .. faca.
    //2. Uma loja está vendendo três modelos de carro, o algoritmo deve ler o nome e o valor (R$) dos seguinte automóveis: GOL, PALIO, CORSA
    //3. Ao final, informar quantos carros de cada modelo foram vendidos e o valor total arrecadado em reais.
    //4. O programa só pode encerrar quando o valor do veículo for igual a zero.
    var
    carro : caracter
    carro_valor, vendatotal : real
    vendgol, vendpalio, vendcorsa : inteiro
    inicio
    vendgol <- 0
    vendpalio <- 0
    vendcorsa <- 0
    vendatotal <- 0

    carro_valor 0) faca
    escreval(“Automóveis disponíveis à venda:”)
    escreval(“GOL:R$ 33790 ; PALIO:R$ 34290 ; CORSA:R$ 32436 ;”)
    escreva(“Insira o Modelo ou digite FIM para sair: “)
    leia(carro)
    se ( carro = “FIM” ) entao
    carro_valor <- 0
    senao
    escreva("Insira o valor do automovel: ")
    leia(carro_valor)
    fimse
    limpatela

    escolha carro
    caso "GOL"
    vendgol <- vendgol + 1
    caso "PALIO"
    vendpalio <- vendpalio + 1
    caso "CORSA"
    vendcorsa <- vendcorsa + 1
    outrocaso
    escreva("::modelo inválido::")
    fimescolha
    vendatotal <- vendatotal + carro_valor
    fimenquanto

    escreval("———–VENDAS———–")
    escreval("GOLs vendidos: ",vendgol)
    escreval("PALIOs vendidos: ",vendpalio)
    escreval("CORSAs vendidos: ",vendcorsa)
    escreval("Valor total arrecadado com as vendas: R$",vendatotal)
    fimalgoritmo

    dessa forma é válido o algoritmo quanto ao que o exercício pede?

    [Reply]

    Bruno Barbosa Reply:

    Sim, é válido!
    Parabéns, ficou muito bom o algoritmo.

    Abraços.

    [Reply]

  • E aii, Bruno até a estrutura de repetição #9 eu entendi tudo e ate antes do exercicio, chegou no exercicios nao consigo desenvolver.
    grato

    [Reply]

    Bruno Barbosa Reply:

    Onde está sua dúvida o exercício amigo?

    Abs.

    [Reply]

  • // MINHA SOLUCAO

    algoritmo “concessionaria”
    // Função :
    // Autor :
    // Data : 02/04/2012
    // Seção de Declarações

    var

    preco, total: real
    qpalio, qcorsa, qgol: numerico
    multipla: caractere

    inicio

    preco <- 1

    enquanto preco 0 faca

    faca

    escreval (“Informe qual modelo foi vendido:”)
    escreval (“a)PALIO”)
    escreval (“b)CORSA”)
    escreval (“c)GOL”)
    leia (multipla)

    escolha multipla

    caso “a”

    escreval (“Por qual valor foi vendido o Pálio?”)
    leia (preco)
    total <- (total + preco)
    qpalio <- qpalio + 1

    caso "b"

    escreval ("Por qual valor foi vendido o Corsa?")
    leia (preco)
    total <- (total + preco)
    qcorsa <- qcorsa + 1

    caso "c"

    escreval ("Por qual valor foi vendido o Gol?")
    leia (preco)
    total <- total + preco
    qgol <- qgol + 1

    outrocaso

    escreval ("Digite a,b ou c")

    fimescolha

    fimenquanto

    escreval ("RELATÓRIO")
    escreval ("Foram vendidos ", qpalio, " Palios, ", qcorsa, " Corsas e ", qgol, " Gols" )
    escreval ("O total arrecadado foi: R$", total)

    fimalgoritmo

    [Reply]

  • algoritmo “semnome”
    // Função :
    // Autor : lucas augustin
    // Data : 07/05/2012
    // Seção de Declarações

    var
    t1,p,c,g,tp,tg,tc,tt,vc,vg,vp,vt,x:real
    inicio
    x <- 1
    enquanto x0 faca

    escreva (“palios vendidos:”)//R$ 1000
    leia(p)
    escreva (“corsas vendidos:”)//R$ 2000
    leia (c)
    escreva (“gols vendidos:”)//R$ 1500
    leia (g)
    //loop
    x <- (c+g+p)

    t1 <-(g+c+p)
    tp <- (tp+p)
    tg <- (tg+g)
    tc <- (tc+c)
    tt <- (tp+tc+tg)
    //numero em vermelho é o valor de cada carro
    vp <- (tp*1000)
    vg <- (tg*2000)
    vc <- (tc*1500)
    vt <- (vp+vc+vg)
    escreval("total de palios vendidos: ",tp," valor arrecadado: R$",vp)
    escreval("total de corsas vendidos: ",tc," valor arrecadado: R$",vc)
    escreval("total de gols vendidos: ",tg," valor arrecadado: R$",vg)
    fimenquanto
    fimalgoritmo

    [Reply]

  • Ola Bruno!
    Estou aprendendo muito com os exemplos que você posta.
    Estou com uma duvida, mas acho que você pode me ajudar.
    Gostaria que você desse um exemplo de algoritmo em que o “ENQUANTO” aparece 3 vezes no algoritmo.
    Desde já agradeço

    [Reply]

  • Minha Resolução:
    algoritmo “Valor arrecadado em venda de carros”
    // Função : Calcular o valor arrecadado em venda de carros
    // Autor : Leandro R.
    // Data : 09/05/2012
    // Seção de Declarações
    var
    a, b, c: inteiro
    x, y, z: real

    inicio
    // Seção de Comandos

    escreval(” ———————-Valor arrecadado em vendas de carro————————–”)
    escreval (“Digite o número de Gols vendidos”)
    Leia (a)
    escreval (“digite o valor do carro:” )
    leia (x)
    escreval (“Digite o número de Palios vendidos”)
    Leia (b)
    escreval (“digite o valor do carro:” )
    leia (y)
    escreval (“Digite o número de Corsas vendidos”)
    Leia (c)
    escreval (“digite o valor do carro:” )
    leia (z)
    escreval (“O valor arrecadado foi: “, a*x+b*y+c*z)
    enquanto a >0 faca
    escreval (“Digite o número de Gols vendidos”)
    Leia (a)
    escreval (“digite o valor do carro:” )
    leia (x)
    escreval (“Digite o número de Palios vendidos”)
    Leia (b)
    escreval (“digite o valor do carro:” )
    leia (y)
    escreval (“Digite o número de Corsas vendidos”)
    Leia (c)
    escreval (“digite o valor do carro:” )
    leia (z)
    escreval (“O valor arrecadado foi: “, a*x+b*y+c*z)
    fimenquanto

    fimalgoritmo

    Obrigado pelas postagens!
    Leandro- Fatec ZL

    [Reply]

Deixe o sua opinião abaixo

Wix – Criador de Sites

World Plone Day

World Plone Day

Nossos posts no seu Email

Informe seu email abaixo para receber nossas atualizações.

Facebook

Destaques

QuebraLink - Decodifica e inverte links Aprender Algoritmos Dicas Ubuntu Otimização de Sites

Sites Legais

Banner MeuPinguim

Vida de Programador Dicas em Geral - Dicas sobre Informática, Tecnologia e Inclusão Digital Ubuntu Dicas Infológico