Jump to content
Sign in to follow this  
melgrim

Funcionamento do 'and'

Recommended Posts

melgrim

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 :D

Share this post


Link to post
Share on other sites
melgrim

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?

Share this post


Link to post
Share on other sites
GpL

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

Share this post


Link to post
Share on other sites
Warrior

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

Share this post


Link to post
Share on other sites
GpL

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

Share this post


Link to post
Share on other sites
Warrior

É pah.. eu acabei de testar isso no "Free Pascal" e ele escreve "lol" sim.

Tu testaste em que compilador?

Share this post


Link to post
Share on other sites
GpL

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

Share this post


Link to post
Share on other sites
Bruno

Gpl mas o rapaz está a fazer um compilador... e portanto queria saber se funcionava ou não e não a maneira mais correcta! :D

Share this post


Link to post
Share on other sites
GpL

Claro Bruno :P na boa.. apenas acho que não nos devemos contentar com o que funciona,devemos tentar sempre aperfeiçoar ao maximo.. :D

Share this post


Link to post
Share on other sites
PreTenDer666

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?

Share this post


Link to post
Share on other sites
PreTenDer666

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"

Share this post


Link to post
Share on other sites
joninho

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

Share this post


Link to post
Share on other sites
Warrior

if (a<10) then writeln('mensagem')

else if ((a>=10) and (a<20)) then writeln('qualquer coisa')

      else writeln('nada');

Tenta assim

Share this post


Link to post
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
Sign in to follow this  

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