Anuncios Google

Uso del not (LUA)

Alguien me puede explicar cómo se utiliza el not en Lua en general? Es que lo he intentado pero no me sale.


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Chimecho

Comment para Arbër

Lo pongo acá para que pueda modificar el comentario, es que en la segunda tabla de verdad pone "p and q" y es "p or q".

Imagen de Arbër

Jejeje, gracias por avisarme,

Jejeje, gracias por avisarme, aunque al ser Moderador aunque hubieras respondido mas abajo lo podría haber editado ;)

De todos modos gracias por el favor crack ;)


-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----

Imagen de Chimecho

Pero

Igual no veo la corrección =/

Imagen de Arbër

Juraría que lo corregí...

Juraría que lo corregí...

Imagen de Arbër

Expresiones lógicas

El not al igual que el and y el or es una estructura lógica que te permite crear en Lua lo que en programación son conocidas como expresiones lógicas. Si has dado algo de lógica en Matematicas no te será muy dificil comprender su uso y funcionamiento, a grandes rasgos se las expresiones de mas arriba se podrían explicar de la siguiente forma:

  • and -> Viene a ser literalmente "y". Se usa para evaluar si dos condiciones (o mas) se cumplen al mismo tiempo, si ambas se están cumpliendo entonces devuelve 1 (true) en caso contrario devuelve 0 (false). 

Su tabla de verdad vendría a ser:

p | q | p and q
1 | 1 |     1
1 | 0 |     0
0 | 1 |     0
0 | 0 |     0

 

  • or -> Viene a ser literalmente "o". Se usa para evaluar si al menos una de las condiciones se está cumpliendo, si es asi se entonces devuelve 1 (true), en caso de que ninguna de las condiciones se cumpla devuelve 0 (false). 

Su tabla de verdad vendría a ser:

p | q | p or q
1 | 1 |     1
1 | 0 |     1
0 | 1 |     1
0 | 0 |     0

 

  • not -> Viene a ser literalmente "no". Se usa para evaluar si al menos una condición en concreto no se está cumpliendo o para negarla (es decir invertirla) de tal forma que si está activa duelva 0 (false) y si está inactiva devuelva 1 (true). En el caso de estar evaluando una condición, comprobará si la condición no se está evaluando, en tal caso devolverá 1, en caso contrario devolverá cero.

Su tabla de verdad vendría a ser:

 

p | not p
1 |   0
0 |   1

Espero que con esta explicación hayas entendido mas o menos como funcionan y como se usan las expresiones lógicas en programación.

Saludos ;)

 

 


-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----

Imagen de m.rr

Perfecto, me ha servido mucho

Perfecto, me ha servido mucho la explicación del not y ya de paso el and y or, aunque esas ya las tenia bastante claras. Gracias a todos.

Imagen de Dioni0396

Ejemplo

variable = false
while not (variable==true) do --si la variable no es true
code de un while normal
end

Imagen de m.rr

Y para una variable? EJ: hola

Y para una variable? EJ:

hola = true
if blablabla then
not hola
end

EStaría bien así?

Imagen de moikop

Para cambiar al opuesto es así:

hola = false
 
hola = not hola -- Hola ahora es true
 
hola = not hola -- hola ahora es false

Obviamente, que si quieres que SIEMPRE dentro de determinada situación hola sea false,  con una asignación (hola = false) alcanza. El uso del "not X" en ese caso puede derivar en bugs..


Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.

No preguntes por MP, mejor pregunta aquí.

Imagen de m.rr

Eso es lo que buscaba.

Eso es lo que buscaba. Gracias!

Imagen de jorge_97

by jorge_97

no. haber:

a=false
b=true
 
 
if not a then os.message("Hola") end
--Esto quiere decir si a no es verdadero entonces que salte un mensaje
 
if b then os.message("Hola") end
--Si b es verdadero que salte un mensaje
 
--Para pasar de trua a false o viceversa:
a=true
b=false


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de Dioni0396

No tendria ningun sentido

Seria un error de sintaxis, aparte de que no tendria sentido, ¿Que pretendes conseguir?

Imagen de m.rr

Yo quiero que si pasa algo

Yo quiero que si pasa algo que sea lo contario. Si es false, que sea true y así.

Imagen de Dioni0396

...

variable=true

while...

code...

if noseque then

variable=false

end

end

Tendras que explicarte mejor, si no es lo que buscas.

Imagen de m.rr

Img =

Img = image.load(blabla)
Img_statuts = true
if controls.press("cross") then
not Img_status --Lo que quiero es que si pulso equis no se ve nada y si lo vuelvo a hacer se blitea la imagen.
if Img_status == true then
Img:blit(0,0)
end
end

Imagen de Dioni0396

Ok, captado.

Img = image.load(blabla)
Img_status = true
if controls.press("cross") then
Img_status = false
end
if Img_status == true then
Img:blit(0,0)
if not (Img_status==false) and controls.press("cross") then
Img_status = true
end
end

Ahora puedes ponerla y quitarla.

Imagen de Chimecho

........................

Usando NOT (que es lo que pregunta en el post):

Img = image.load(blabla);
Img_status = true;
 
while true do
	controls.read();
	if controls.press("cross") then
		Img_status = not Img_status; -- not true = false, y not false = true
	end
	if Img_status then
		Img:blit(0,0);
	end
	screen.flip();
end

Como puedes ver, es más sencillo, corto, y elegante con el not.

Saludos!



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Imagen de m.rr

Eso es lo que buscaba.

Eso es lo que buscaba. Gracias Chimecho

Otro capricho mío: Un if se

Otro capricho mío: 

Un if se cumple cuando la condición es true, si hacéis:

minumero = 5
 
if minumero == 5 then ....

minumero == 5 devuelve true, por lo tanto hacer:

a = true
 
if a == true then ....
 
--Eso es "inútil" (seguramente se podría considerar un mal hábito
 
--por lo que es mejor hacer
 
if a then ...

EDITO: Para que lo entendáis mejor:

--Hacer
 
a = true
 
if a == true then ...
 
--sería como hacer
 
a = 5
 
if (a == 5) == true then ...

Imagen de Dioni0396

Cierto,

es correcto eso, pero prefiero usar los comparadores == para trabajar, no creo que sea un mal habito.

Cambia el modo del code...

Está en C creo xD

Es solo un caprichito mío jeje

Imagen de Dioni0396

No se como

si cuando has respondido me has quitado la forma de editar mi comentario.

LOL

Es verdad... prdón... xD

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.