Awk: Lógica booleana, Morgan.

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Responder
Avatar de Usuario
j-seb_rada
Forista Nuevo
Forista Nuevo
Mensajes: 27
Registrado: Vie Dic 14, 2012 1:55 pm
Ubicación: Buenos Aires, Argentina.

Awk: Lógica booleana, Morgan.

Mensaje por j-seb_rada » Vie Dic 14, 2012 7:53 pm

Quisiera comprender cuál es el motivo por el que AWK invierte los operandos AND y OR, tomando a AND como OR y a OR como AND cuando se niegan 2 operandos. Anduve preguntando por el canal IRC de AWK en inglés y me decían que eso no es cuestión propia de AWK, que tenía más bien que ver con las leyes de Morgan, pero al tratar de leer sobre esto, me pegué un buen susto porque me pareció chino básico. ¿Alguien podría explicármelo de la forma más sencilla posible?

'/hola/ && /chau/' : Ok

'!/hola/ && !/chau/' : Lo toma como OR, en vez de AND, ¿por qué?.

Estoy incursionando en el mundo de la programación, agradecería mucho su ayuda.
Última edición por j-seb_rada el Sab Dic 15, 2012 10:42 am, editado 1 vez en total.
Avatar de Usuario
hipersayan_x
Forista Legendario
Forista Legendario
Mensajes: 1905
Registrado: Vie Abr 27, 2007 7:00 am
Contactar:

Re: Awk: Lógica booleana, Morgan.

Mensaje por hipersayan_x » Vie Dic 14, 2012 10:18 pm

Así explicado a lo bruto, es que la afirmación de una operación aplicada sobre un conjunto de elementos es igual a la negación de la operación opuesta aplicada sobre la negación de cada elemento. Siendo AND el opuesto de OR, y viceversa.

Código: Seleccionar todo

a * b * c * ... == !(!a + !b + !c + ...)
a + b + c + ... == !(!a * !b * !c * ...)
https://es.wikipedia.org/wiki/Leyes_de_De_Morgan
j-seb_rada escribió: '/hola/ && /chau/' : Ok
'!/hola/ && !/chau/' : Lo toma como OR, en vez de AND, ¿por qué?.
'!/hola/ && !/chau/' sería igual a !('/hola/ || /chau/')
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net
Avatar de Usuario
j-seb_rada
Forista Nuevo
Forista Nuevo
Mensajes: 27
Registrado: Vie Dic 14, 2012 1:55 pm
Ubicación: Buenos Aires, Argentina.

Re: Awk: Lógica booleana, Morgan.

Mensaje por j-seb_rada » Sab Dic 15, 2012 11:14 am

hipersayan_x escribió:Siendo AND el opuesto de OR, y viceversa.
¿Entonces me estás diciendo que se invierten los operadores booleanos?
hipersayan_x escribió:'!/hola/ && !/chau/' sería igual a !('/hola/ || /chau/')
¿Entre paréntesis entonces no los invierte cierto?, ¿o me equivoco? Con los paréntesis lo entiendo perfectamente y da resultado: "Buscar las líneas en donde no aparezca la palabra <hola> ó <chau>." Y de la otra forma se me hace engorroso.

Gracias por responder.
Avatar de Usuario
hipersayan_x
Forista Legendario
Forista Legendario
Mensajes: 1905
Registrado: Vie Abr 27, 2007 7:00 am
Contactar:

Re: Awk: Lógica booleana, Morgan.

Mensaje por hipersayan_x » Sab Dic 15, 2012 3:11 pm

j-seb_rada escribió:
hipersayan_x escribió:Siendo AND el opuesto de OR, y viceversa.
¿Entonces me estás diciendo que se invierten los operadores booleanos?
Sip.
j-seb_rada escribió:
hipersayan_x escribió:'!/hola/ && !/chau/' sería igual a !('/hola/ || /chau/')
¿Entre paréntesis entonces no los invierte cierto?,
Invierte el resultado de la expresión que esta adentro del paréntesis. De todos modos no tengo puesto el chip de bash en estos momentos y no me acuerdo si la sintaxis es correcta :P , pero la idea es esa.
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje