Ir ao conteúdo

Posts recomendados

Postado

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
Postado

Para postar seu código use o botão <> do editor do fórum, fica melhor.

 

O código precisa ser indentado, use ctrl + G.

Declare uma variável por linha.

Inicialize as variáveis.

Operador "maior ou igual" é >= .

Precisa testar a hora zero.

  • Curtir 2
  • Amei 1
  • 4 semanas depois...
Postado

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
  • Membro VIP
Postado
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
Postado
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

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...