Ir ao conteúdo
  • Cadastre-se

VisualG Estudo de estruturas condicionais compostas


Posts recomendados

Boa noite. Estava tentando traduzir para VisualG uma estrutura que foi apresentada numa aula, porém não consigo concluir a execução do algoritmo. Quando executado, se a condição do primeiro SE for atendida, o prompt encerra com sucesso, porém caso sejam as condições 2 ou 3, eles até tão as devidas atribuições, mas acusam a falta de um então na próxima linha, mesmo a próxima já apresentando o então.

Código abaixo: 

algoritmo "teste"
var
   nome, saudacao: caractere
   hora: inteiro
inicio
   escreval ("Insira seu nome: ")
   leia(nome)
   escreval ("Que horas são? sem minutos, ")
   leia (hora)

   se (hora > 0) e (hora < 12) então
      saudacao <- "Bom dia, "
      escreval (saudacao, nome)
   senao
      se (hora => 13) e (hora < 18) então
         saudacao <- "Boa tarde, "
         escreval(saudacao, nome)
      senao
         se (hora => 19) e (hora < 24) então
            saudacao <- "Boa noite, "
            escreval (saudacao, nome)
         fimse
      fimse
   fimse
fimalgoritmo

1.jpg

2.jpg

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois...

Tem erro de lógica também. O código vai falhar se a hora for 12, 18, e ainda tem a mistura de sistemas de horários. É sistema 12 horas ou 24 horas? Porque se for o sistema 24 horas, ao contador chegar a 24, tem que ter o reset automático para 0, considerações abaixo:

 

//Vai que alguém digita 24
se (hora = 24) então
   hora <- 0
fimse

se (hora > 0) e (hora < 12) então
   saudacao <- "Bom dia, "
senao
   se (hora => 12) e (hora < 18) então
      saudacao <- "Boa tarde, "
   senao
      se (hora => 18) e (hora < 24) então
         saudacao <- "Boa noite, "
      fimse
   fimse
fimse

escreval (saudacao, nome)
fimalgoritmo
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
13 horas atrás, Danrley_Silva disse:

O código vai falhar se a hora for 12, 18

Perfeito. Incluir também o 0

 

 

 

13 horas atrás, Danrley_Silva disse:

É sistema 12 horas ou 24 horas?

Fica implícito que é de 24 horas.

 

 

 

13 horas atrás, Danrley_Silva disse:

Porque se for o sistema 24 horas, ao contador chegar a 24, tem que ter o reset automático para 0

Nesse algoritmo não tem um conceito de "contador". Da mesma forma que está implícito que é "sistema de 24 horas", também está implícito que os valores sempre devem ser digitados de modo correto, ou seja, supostamente o algoritmo não deve se preocupar com "regras de negócios", como as validações das entradas de dados.

 

Resumindo:

Seria verificado isso se no enunciado estivesse estipulando. Ou, por exemplo, caso queira "ir além"... para treinar ou algo do tipo...

 

 

Seguindo o que já foi discutido, acho que o código poderia ficar com algo assim:
 

algoritmo "Bom dia, boa tarde, boa noite"
var
   nome, saudacao: caractere
   hora: inteiro
inicio
   escrevaL("Insira seu nome: ")
   leia(nome)
   escrevaL("Que horas são? (Sem minutos)")
   leia (hora)

   se (hora >= 0) e (hora < 12) então
      saudacao <- "Bom dia, "
   senao
      se (hora >= 12) E (hora < 18) então
         saudacao <- "Boa tarde, "
      senao
         se (hora >= 18) e (hora <= 23) então
            saudacao <- "Boa noite, "
         fimSe
      fimSe
   fimSe

   escrevaL(saudacao, nome)
fimalgoritmo

 

ou assim:

 

algoritmo "Bom dia, boa tarde, boa noite"
var
   nome, saudacao: caractere
   hora: inteiro
inicio
   escrevaL("Insira seu nome: ")
   leia(nome)
   escrevaL("Que horas são? (Sem minutos)")
   leia (hora)

   se (hora >= 0) e (hora < 12) então
      saudacao <- "Bom dia"
   senao
      se (hora >= 12) E (hora < 18) então
         saudacao <- "Boa tarde"
      senao
         se (hora >= 18) e (hora <= 23) então
            saudacao <- "Boa noite"
         fimSe
      fimSe
   fimSe

   escrevaL(saudacao, ", ", nome)
fimalgoritmo

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

11 horas atrás, Simon Viegas disse:

Fica implícito que é de 24 horas.

 

Eu estava justamente me referindo a tratamento de entrada de dados, óbvio que tendo os números 18 e 24 o sistema é 24 horas :eiei:

 

11 horas atrás, Simon Viegas disse:

Nesse algoritmo não tem um conceito de "contador".

 

Eu me referi mal :naonao:

Era para ter dito "Se a variável receber 24" :oops:

Isso era uma preocupação com correção de entrada de dados.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!