Ir ao conteúdo
  • Cadastre-se

VisualG Aceitando senha diferente da condição


Posts recomendados

Quando ponho nome = T e senha 9 o programa está aceitando. Por que está acontecendo isso ?

var
nome : caractere
senha, cont: inteiro
inicio
senha <- 0
cont <- 0

     enquanto cont< 3 faca
         escreval( "Digite seu login" )
         leia(nome)
         escreval ("Digite sua senha")
         leia(senha)

        se (nome <> "T") e (senha <> 99) então
           escreval("Senha invalida")
           cont <- cont+1;
        senao
           cont <- 3
        fimse

     fimenquanto
fimalgoritmo

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @Gabriel S Muniz. Seja bem vindo ao Fórum do Clube do Hardware.

Antes um aviso: para postar um código no Fórum, utilize a tag CODE. Basta clicar antes no botão "<>" e cola o código.

 

Vamos lá:

5 horas atrás, Gabriel S Muniz disse:

se (nome <> "T") e (senha <> 99) então

 

Resumidamente seria: você está usando o operador lógico "e", onde, deveria ser "ou".




 

Uma sugestão para uma verificação seria efetuar "testes de mesas". Poderia ser algo assim:
 

tabela_verdade.jpg

 

Fiz testes das 4 possibilidades possíveis. A coluna 5 é baseada na tabela verdade do "e", a coluna 6 seria "o que deveria acontecer"... ou seja, a "expressão lógica" contida no se (coluna 5) não está satisfazendo a sua necessidade (conferindo com o esperado). Ai teria que analisar o que está errado...

 

Então, quando deveria dar "Senha invalida"?

 

Deveria dar quando o "nome" está errado OU a "senha" está errada, ou seja, basta pelo menos um dos dois esteja errado para ser "senha inválida", mas no seu código você usou o e (quando ambos estão errados).

 

Sugiro que tente fazer essa mesma tabela no Excel (ou Word) usando o OU no lugar do E lá na coluna 5 e veja se vai conferir com a coluna 6.

 

 

Outro ponto importante é sempre manter o código bem indentado. Ex.:

 

var
   nome : caractere
   senha, cont: inteiro
inicio
senha <- 0
cont  <- 0
enquanto cont< 3 faca
   escreval( "Digite seu login" )
   leia(nome)
   escreval ("Digite sua senha")
   leia(senha)
   se (nome <> "T") e (senha <> 99) ENTÃO
      escreval("Senha invalida")
      cont <- cont+1;
   senao
      cont <- 3
   fimse
fimenquanto
fimalgoritmo


No aguardo.

Link para o comentário
Compartilhar em outros sites

13 horas atrás, Simon Viegas disse:

Olá @Gabriel S Muniz. Seja bem vindo ao Fórum do Clube do Hardware.

Antes um aviso: para postar um código no Fórum, utilize a tag CODE. Basta clicar antes no botão "<>" e cola o código.

 

Vamos lá:

 

Resumidamente seria: você está usando o operador lógico "e", onde, deveria ser "ou".




 

Uma sugestão para uma verificação seria efetuar "testes de mesas". Poderia ser algo assim:
 

tabela_verdade.jpg

 

Fiz testes das 4 possibilidades possíveis. A coluna 5 é baseada na tabela verdade do "e", a coluna 6 seria "o que deveria acontecer"... ou seja, a "expressão lógica" contida no se (coluna 5) não está satisfazendo a sua necessidade (conferindo com o esperado). Ai teria que analisar o que está errado...

 

Então, quando deveria dar "Senha invalida"?

 

Deveria dar quando o "nome" está errado OU a "senha" está errada, ou seja, basta pelo menos um dos dois esteja errado para ser "senha inválida", mas no seu código você usou o e (quando ambos estão errados).

 

Sugiro que tente fazer essa mesma tabela no Excel (ou Word) usando o OU no lugar do E lá na coluna 5 e veja se vai conferir com a coluna 6.

 

 

Outro ponto importante é sempre manter o código bem indentado. Ex.:

 


var
   nome : caractere
   senha, cont: inteiro
inicio
senha <- 0
cont  <- 0
enquanto cont< 3 faca
   escreval( "Digite seu login" )
   leia(nome)
   escreval ("Digite sua senha")
   leia(senha)
   se (nome <> "T") e (senha <> 99) ENTÃO
      escreval("Senha invalida")
      cont <- cont+1;
   senao
      cont <- 3
   fimse
fimenquanto
fimalgoritmo


No aguardo.

 

13 horas atrás, Simon Viegas disse:

Olá @Gabriel S Muniz. Seja bem vindo ao Fórum do Clube do Hardware.

Antes um aviso: para postar um código no Fórum, utilize a tag CODE. Basta clicar antes no botão "<>" e cola o código.

 

Vamos lá:

 

Resumidamente seria: você está usando o operador lógico "e", onde, deveria ser "ou".




 

Uma sugestão para uma verificação seria efetuar "testes de mesas". Poderia ser algo assim:
 

tabela_verdade.jpg

 

Fiz testes das 4 possibilidades possíveis. A coluna 5 é baseada na tabela verdade do "e", a coluna 6 seria "o que deveria acontecer"... ou seja, a "expressão lógica" contida no se (coluna 5) não está satisfazendo a sua necessidade (conferindo com o esperado). Ai teria que analisar o que está errado...

 

Então, quando deveria dar "Senha invalida"?

 

Deveria dar quando o "nome" está errado OU a "senha" está errada, ou seja, basta pelo menos um dos dois esteja errado para ser "senha inválida", mas no seu código você usou o e (quando ambos estão errados).

 

Sugiro que tente fazer essa mesma tabela no Excel (ou Word) usando o OU no lugar do E lá na coluna 5 e veja se vai conferir com a coluna 6.

 

 

Outro ponto importante é sempre manter o código bem indentado. Ex.:

 


var
   nome : caractere
   senha, cont: inteiro
inicio
senha <- 0
cont  <- 0
enquanto cont< 3 faca
   escreval( "Digite seu login" )
   leia(nome)
   escreval ("Digite sua senha")
   leia(senha)
   se (nome <> "T") e (senha <> 99) ENTÃO
      escreval("Senha invalida")
      cont <- cont+1;
   senao
      cont <- 3
   fimse
fimenquanto
fimalgoritmo

Boa noite, consegui entender... o se está entrando em verdade e ele entra no senao. Obrigado .

 

meu primeiro post aqui tentei visualizar o CODE "<>" e não encontrei
No aguardo.

 

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