Eu fiz isso no visualg
algoritmo "semnome"
var
inicio
se 3 = "a" entao
escreva("igual")
senao
escreva("diferente")
FimSe
fimalgoritmo
e não entendi por que a condição retorna verdadeira
Eu fiz isso no visualg
algoritmo "semnome"
var
inicio
se 3 = "a" entao
escreva("igual")
senao
escreva("diferente")
FimSe
fimalgoritmo
e não entendi por que a condição retorna verdadeira
Na real, está bem estranho isso.
A princípio, a comparação de qualquer inteiro com qualquer literal sempre retorna verdadeiro.
Pode ser um bug do visualg.
é um BUG, não confere se os dados são do mesmo tipo e retorna verdadeiro para todas as comparação igual exemplo citado na sua.
se colocar:
Algoritmo "semnome"
// Disciplina : [Linguagem e Lógica de Programação]
// Professor : Antonio Carlos Nicolodi
// Descrição : Aqui você descreve o que o programa faz! (função)
// Autor(a) : Nome do(a) aluno(a)
// Data atual : 07/04/2017
Var
// Seção de Declarações das variáveis
c: caractere
Inicio
// Seção de Comandos, procedimento, funções, operadores, etc...
c <- "a"
se "3" = c entao
escreva("1")
senao
escreva("0")
fimse
Fimalgoritmo
ele verifica corretamente caso contrario dá o que acontece no seu exemplo …
BUG, ou alguma limitação!
Bem observado, @Dragoon!
É importante lembrar que o visualg não é uma IDE e nem está suportando nuances específicas de uma ou outra linguagem de programação (embora rode sobre uma estrutura muito limitada de pascal, se não me engano, de onde, inclusive, tira várias de suas características).
Eu também havia testado o código com variações, por exemplo
Algoritmo "semnome"
Var
comp : logico
Inicio
comp <- 3 = "a"
se comp entao
escreva("igual")
senao
escreva("diferente")
FimSe
Fimalgoritmo
O mais incrível é que a variável comp fica com o valor de “a”, logo após a atribuição da comparação.
Muito obrigado pessoal pelas resposta