• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

melgrim

Funcionamento do 'and'

18 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tás a usar como?

if x=1 or 2

ou

if x=1 or x=2

eu digo isso, pq tb me fez um bocado de confusão e era mesmo por isso, fazia if x=1 or 2

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

da ultima forma é suposto funcionar. Não sei se a sintax para o pascal é essa se não, que já não me lembro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

Tu testaste em que compilador?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.. :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

if a< 10 then Writeln('mensagem')

else if a>=10 and [glow=red,2,300]a[/glow]<20 then writeln('kk koisa')

else writeln('outra koisa kk');

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:S lol opa k cena :X :X experimenta mudar o tipo da variavel para single em ves d double

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

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

      else writeln('nada');

Tenta assim

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora