Jump to content

Funcionamento do 'and'


melgrim
 Share

Recommended Posts

Não há como ter de fazer projecto de compiladores sobre uma linguagem que me é totalmente desconhecida!

enfim, esquecendo detalhes tristes...

alguém me pode explicar resumidamente o funcionamento do operadores lógicos (and, or e not)?

a minha dúvida é mais propriamente o que acontece quando um dos operadores é aplicado a algo cujo resultado não é booleano. tipo " 10 and 11" é suposto dar erro de sintaxe!? ou é suposto fazer algo?

desde já agradeço eventuais respostas.

e um bom ano para todos 😄

Link to comment
Share on other sites

Eu não estou a usar!

É suposto estar a fazer um compilador para pascal não a programar em pascal...

mas ainda assim, no primeiro caso. "if x=1 or 2" qual é a interpretação correcta?

será "if ((x=1) or (x=2))" ou é suposto dar erro?

Link to comment
Share on other sites

é assim.. if (x=1) or (x=2) then..

usei o if,só para exemplificar.. tipo dizes, se x igual a um ou x igual a dois entao....

nao podes dizer se x igual a 1 ou igual a dois .. ele n sabe a que é que estas a igualar o dois..

Link to comment
Share on other sites

Encontras na net listas de precedência de operadores.. (pelo menos deves encontrar, quando estudei PHP fartei-me de passar por elas)

Agora o que perguntas.. podias ter sacado um compilador da net e testar por ti mesmo.

"if 10 and 11" retorna Erro (Boolean expression expected, but got "ShortInt")

x:=11;
if x=10 or 11 then writeln('lol')

Escreve "lol" no ecran, logo ele lê "if (x=10) or (x=11)"

Podes sacar um compilador em www.freepascal.org

Link to comment
Share on other sites

x:=11;
if x=10 or 11 then writeln('lol')

Escreve "lol" no ecran, logo ele lê "if (x=10) or (x=11)"

Isso dá erro,não escreve lol nenhum..

já disse que tem que dizer sempre a que é que o valor é igual,neste caso a x.. porque podia ser if x=10 or y=11 then ..

não podes ter só lá o 11,sem tar igualado a alguma variavel ou constante..

Link to comment
Share on other sites

Pronto,funciona mas isso não se deve fazer, vai perguntar ao teu professor de Pascal que ele diz te qual é a maneira mais correcta.. eu faço como o meu professor me disse que era mais correcta,e eu gosto de usar boa programação e não programar à trolha.. 😄

Link to comment
Share on other sites

Para não estar a abrir um novo topico....

Eu estou a tentar usar a função AND mas dá-me sempre um erro

if a< 10 then Writeln('mensagem')

else if a>=10 and <20 then writeln('kk koisa')

else writeln('outra koisa kk');

O exemplo acima esta mal?

Da-me sempre erro "syntax error, "then" expected but "ordinal const" found

Conseguem-me ajudar?

Link to comment
Share on other sites

Em primeiro lugar, obrigado pela resposta, mas agora acrescentei o A e mudou o erro, agora dá-me o erro: operation "and" not supported for types "double" and "double"

Link to comment
Share on other sites

lol, mas tah certo assim :X lol :\ e dah o operador "or" ? opah aí dis k o "and" nao da pa ser usado em variaveis tipo DOUBLE axo eu :X mete "OR" em vex de "AND" e ve o k dah :X so pa saber kual eh a confusao, nao tou a diser pa deixares tar o "OR" pk mudava o programa por completo...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.