Ir ao conteúdo
  • Cadastre-se
Tommy Shelby

VisualG Inserir estrutura de repetição no código

Recommended Posts

Olá amigos. Eu tenho o seguinte algoritmo:

algoritmo "SacarDinheiro"
// Função : Verificar se o saque é possível na conta bancária
// Autor :
// Data : 04/12/2018
// Seção de Declarações 
var

   SaldoDisponivel: REAL
   ValorDoSaque: REAL
   SIM: LOGICO
   NAAO: LOGICO
inicio

      SaldoDisponivel:= 1000 //Assumimos que há 1000 reais de saldo na conta disponível para o saque
      ESCREVA ("Informe o valor do Saque: ")
      LEIA (ValorDoSaque)
      SE ValorDoSaque <= SaldoDisponivel ENTAO
         SaldoDisponivel := SaldoDisponivel - ValorDoSaque
         ESCREVAL ("Sacando R$", ValorDoSaque, ".")
         ESCREVAL ("Aguarde a contagem das notas")
         ESCREVAL("Retire as notas")
      SENAO
         ESCREVAL ("O valor solicitado é maior que o valor disponível para saque!")
      FIMSE


         ESCREVA("Deseja continuar?")
         LEIA (SIM)
         SE SIM ENTAO
         AQUI EU GOSTARIA DE FAZER A REPETIÇÃO DO algoritmo SE MINHA resposta FOR SIM MAS NÃO ENCONTRO A ESTRUTURA CERTA ALGUEM SABE?


      ESCREVA ("Informe o valor do Saque: ")
      LEIA (ValorDoSaque)
      SE ValorDoSaque <= SaldoDisponivel ENTAO
         SaldoDisponivel := SaldoDisponivel - ValorDoSaque
         ESCREVAL ("Sacando R$", ValorDoSaque, ".")
         ESCREVAL ("Aguarde a contagem das notas"
         ESCREVAL("Retire as notas")
      SENAO
         ESCREVAL ("O valor solicitado é maior que o valor disponível para saque!")

      FIMSE
         
      
      
      ESCREVAL ("Saldo Disponível: R$", SaldoDisponivel)
      FIMSE
fimalgoritmo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá. Primeiramente seja bem vindo ao Fórum do Clube do Hardware.

 

Segundamente, vamos lá:

 

1#

Poste o enunciado completo do problema. Por definição, um programas é uma solução para um problema predefinido. Toda sua base depende do que ele foi proposto para se fazer.

 

 

 

2#

1 hora atrás, Tommy Shelby disse:

      //AQUI EU GOSTARIA DE FAZER A REPETIÇÃO DO algoritmo SE MINHA resposta
      //FOR SIM MAS NÃO ENCONTRO A ESTRUTURA CERTA ALGUEM SABE??

 

Existem basicamente 3 tipos de laços de repetição:

  • repita
  • enquanto
  • para

Qual usar depende da característica de cada um desses tipos (que deixo para você estudá-los/revisá-los e descobrir) e também de qual assunto está estudando (se está estudando, por exemplo, enquanto, não tem porque fazer com repita ou para, mesmo que um ou outra seja "melhor"! Entende?).

 

 

 

3#

Então, basicamente você precisa deixar o trecho que vai repetir dentro do laço. Algo como:

algoritmo "Sacar Dinheiro v0.2"
// Função: Verificar se o saque é possível na conta bancária
// Autor : Tommy Shelby
// Data  : 04/12/2018
var
   saldoDisponivel :real
   valorSaque      :real
   {sim :logico}   //"sim" ou "não" seria um valor da resposta, não da variável
   {nao :logico}
   continuar       :caractere //sim ou não
inicio
   repita
      //Assumimos que há 1000 reais de saldo na conta disponível para o saque
      saldoDisponivel <- 1000
      escreva ("Informe o valor do saque: R$")
      leia(valorSaque)
      se valorSaque <= saldoDisponivel entao
         saldoDisponivel <- saldoDisponivel - valorSaque
         escreval("Sacando R$",valorSaque,".")
         escreval("Aguarde a contagem das notas...")
         escreval("Retire as notas")
      senao
         escreval("O valor solicitado é maior que o valor disponível para saque!")
      fimSe
      escreval()
      escreva("Deseja continuar?")
      leia(continuar)
   ate (continuar="n") ou (continuar="nao")
fimAlgoritmo

Certo? Veja o 4#.

 

 

 

4#

Então, para adiantar, verás que o saldo não estará atualizando, ou seja, eu poderia ficar sacando qualquer valor menor ou igual a 1000 infinitamente. Analisando o código, veria que deixei o "inicializador do saldo disponível" dentro do laço... basta tirar.

   //Assumimos que há 1000 reais de saldo na conta disponível para o saque
   saldoDisponivel <- 1000
   repita
      escreva ("Informe o valor do saque: R$")
      leia(valorSaque)
      se valorSaque <= saldoDisponivel entao
         saldoDisponivel <- saldoDisponivel - valorSaque

Ou seja, só vai repetir a parte do saque... o saldo disponível é algo que já existe antes.

 

 

 

5#

O código precisaria de algumas melhorias na interface... por exemplo: o cliente não sabe quanto tem de saldo antes de sacar; não sabe o que precisa digitar para continuar ou para sair... etc.

 

Sugestão: peça para outra pessoa executar o código. Não explique o que é ou como funciona e observe o comportamento e as dúvidas das pessoas. Após, vá ajustante o código para minimizar. Com o tempo, já vai criando código seguindo alguns padrões...

 

 

**

 

Posta o novo código aqui para analisarmos, ou se tiver dúvidas, indicar onde.

 

 

No aguardo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×