Operadores lógicos: ¿qué son las tablas de verdad?
15/24
Recursos
Los operadores lógicos nos ayudan a combinar dos o más afirmaciones para definir si una oración es cierta o falsa. Su uso está basado en las tablas de verdad.
Estructura básica
En la mayoría de sus usos se necesitan al menos dos afirmaciones y un operador:
Tipos de operadores lógicos
En programación, los tipos de operadores más usados son: AND (Y lógico), OR (O lógico) y NOT (Negación lógica).
Y (And)
Se utiliza para verificar si dos afirmaciones son ciertas. Si ambas afirmaciones son ciertas, entonces la oración completa es cierta. Si una de ellas es falsa, entonces la oración completa es falsa.
Operador Y (And) en PHP
En PHP para representar este operador podemos usar la palabra reservada and o && (doble ampersand):
// Las siguientes líneas son para visualización mas no para que las ejecutes en tu PC# Opción 1:
$valor_1 and $valor_2
# Opción 2:
$valor_1 && $valor_2
Tabla de verdad con el operador AND
Entonces si evaluamos 2 variables con el operador lógico Y (AND) podremos obtener estos posibles resultados dependiendo del valor que almacenen estas:
Valor 1
Valor Operador
Valor 2
Resultado
Verdadero
AND
Verdadero
Verdadero
Verdadero
AND
Falso
Falso
Falso
AND
Verdadero
Falso
Falso
AND
Falso
Falso
Este tipo de tablas son las conocidas tablas de verdad. Es importante saber que no es necesario memorizarlas, sino más bien aprender la forma en la que las generamos. Veamos unos ejemplos:
¿Los gatos son felinos AND tienen 4 patas? El resultado es Verdadero, pues ambas afirmaciones son verdaderas.
<?php# Ejemplo en PHP# ----------------# Declaración de variables:
$gatos_felinos = true;
$gatos_tienen_4_patas = true;
var_dump( $gatos_felinos and $gatos_tienen_4_patas ); # Se imprimirá en consola/navegador el tipo de dato y valor de la evaluación.echo"\n"; # Salto de línea.# ----------------# Impresión en consola/navegador:# bool(true)
¿Los gatos son aves AND tienen 4 patas? Es Falso, pues, los gatos no son aves, por tanto, basta que una afirmación sea falsa para que el resultado sea Falso.
<?php# Ejemplo en PHP# ----------------# Declaración de variables:
$gatos_aves = false;
$gatos_tienen_4_patas = true;
var_dump( $gatos_aves and $gatos_tienen_4_patas ); # Se imprimirá en consola/navegador el tipo de dato y valor de la evaluación.echo"\n"; # Salto de línea.# ----------------# Impresión en consola/navegador:# bool(false)
¿Los gatos vuelan AND programan con PHP? Es Falso, pues, los gatos no vuelan. Basta que una afirmación no sea verdad para decir que nuestro resultado será falso. Esto a pesar de que puede haber gatos muy cool que programen en PHP 😎 (¡Es broma! 😅).
<?php# Ejemplo en PHP# ----------------# Declaración de variables:
$gatos_vuelan = false;
$gatos_programan_con_PHP = false;
var_dump( $gatos_vuelan and $gatos_programan_con_PHP ); # Se imprimirá en consola/navegador el tipo de dato y valor de la evaluación.echo"\n"; # Salto de línea.# ----------------# Impresión en consola/navegador:# bool(false)
O (Or)
Se usa para verificar si al menos una afirmación es cierta. Si al menos una de ellas es cierta, entonces la oración es cierta, de lo contrario, es falsa.
Operador O (Or) en PHP
En PHP se puede representar usando or o también ||:
// Las siguientes líneas son para visualización mas no para que las ejecutes en tu PC# Opción 1:
$valor_1 or $valor_2
# Opción 2:
$valor_1 || $valor_2
Tabla de verdad con el operador OR
Si evaluamos 2 variables con el operador lógico O (OR) podremos obtener estos posibles resultados dependiendo del valor que almacenen estas:
Valor 1
Valor Operador
Valor 2
Resultado
Verdadero
OR
Verdadero
Verdadero
Verdadero
OR
Falso
Verdadero
Falso
OR
Verdadero
Verdadero
Falso
OR
Falso
Falso
Veamos unos ejemplos empleando este operador OR:
¿Los gatos son felinos OR tienen 4 patas? Es Verdadero, pues ambas afirmaciones son verdaderas.
<?php# Ejemplo en PHP# ----------------# Declaración de variables:
$gatos_felinos = true;
$gatos_tienen_4_patas = true;
var_dump( $gatos_felinos or $gatos_tienen_4_patas ); # Se imprimirá en consola/navegador el tipo de dato y valor de la evaluación.echo"\n"; # Salto de línea.# ----------------# Impresión en consola/navegador:# bool(true)
¿Los gatos son aves OR tienen 4 patas? Si bien es cierto que los gatos no son aves, sí tienen 4 patas, por tanto, al tener una afirmación verdadera, el resultado será Verdadero.
<?php# Ejemplo en PHP# ----------------# Declaración de variables:
$gatos_aves = false;
$gatos_tienen_4_patas = true;
var_dump( $gatos_aves or $gatos_tienen_4_patas ); # Se imprimirá en consola/navegador el tipo de dato y valor de la evaluación.echo"\n"; # Salto de línea.# ----------------# Impresión en consola/navegador:# bool(true)
¿Los gatos vuelan OR tienen 6 colas? Al ser ambas afirmaciones falsas, el resultado esta evaluación es Falso.
<?php# Ejemplo en PHP# ----------------# Declaración de variables:
$gatos_vuelan = false;
$gatos_tienen_6_colas = false;
var_dump( $gatos_vuelan or $gatos_tienen_6_colas ); # Se imprimirá en consola/navegador el tipo de dato y valor de la evaluación.echo"\n"; # Salto de línea.# ----------------# Impresión en consola/navegador:# bool(false)
No (Not)
Se emplea para invertir el valor de una afirmación. Por ejemplo, si una afirmación es verdadera, al negarlo el resultado será Falso, lo mismo pasa a la inversa.
Operador No (Not) en PHP
Usamos el signo de exclamación ! antes de la variable que queremos negar:
// La siguiente línea es para visualización mas no para que las ejecutes en tu PC
!$valor
Tabla de verdad con el operador NOT
Los posibles resultados de la tabla de verdad usando este operador serían:
Operador
Valor
Resultado
NOT
Verdadero
Falso
NOT
Falso
Verdadero
Comprobémoslo con unos ejemplos:
¿NOT los gatos son aves? La afirmación es falsa, pues los gatos no son aves, pero como tenemos el operador Not negando esto, el resultado cambia a ser Verdadero. Otra forma de leer esto sería: ¿Los gatos NO son aves? Y obtendremos el mismo resultado.
<?php# Ejemplo en PHP# ----------------# Declaración de variables:
$gatos_aves = false;
var_dump( !$gatos_aves ); # Se imprimirá en consola/navegador el tipo de dato y valor de la evaluación.echo"\n"; # Salto de línea.# ----------------# Impresión en consola/navegador:# bool(true)
¿NOT los gatos tienen 4 patas? Los gatos Sí tienen 4 patas; sin embargo, tenemos al operador Not negando nuestra afirmación, por tanto, el resultado será Falso. Una vez más, otra forma de leer esto sería: ¿Los gatos NO tienen 4 patas?
<?php# Ejemplo en PHP# ----------------# Declaración de variables:
$gatos_tienen_4_patas = true;
var_dump( !$gatos_tienen_4_patas ); # Se imprimirá en consola/navegador el tipo de dato y valor de la evaluación.echo"\n"; # Salto de línea.# ----------------# Impresión en consola/navegador:# bool(false)
Reto: análisis de operadores lógicos
¿Cuál es el resultado de estas operaciones? ¡Déjalo en la sección de aportes de la clase!
Son los operadores que nos ayudan a combinar dos o mas afirmaciones para definir si una oración es cierta o falsa. Su uso esta basado en tablas de verdad.
AND (y)
Se usa para verificar si dos afirmaciones son ciertas, entonces la oración completa es cierta. Si una de ellas es falsa, entonces, la oración completa es falsa.
true AND true = True
false AND true = False
true AND false = False
false AND false = False
Se escribe así:
$valor_1 and $valor_2
$valor_1 && $valor_2
OR (o)
Si una de las 2 afirmaciones es cierta, entonces la oración completa es cierta. Si solo una de ellas es falsa, entonces, la oración completa es cierta.
true OR true = True
false OR true = True
true OR false = True
false OR false = False
Se escribe así:
$valor_1 or $valor_2
$valor_1 || $valor_2
NOT (no)
Se usa para invertir el significado de una oración
En PHP los operadores tienen un orden para ejecutarse, igual que pasa en matemáticas donde la multiplicación se resuelve primero que la suma. Lo que pasa en el experimento que nos hizo volar la cabeza es que el operador and se ejecuta después del operador de asignación =
($resultado = $michis_4_patas) and $michis_programan_con_PHP;
La parte que dejé entre paréntesis se ejecuta primero que el and porque el operador = tiene la prioridad, entonces la variable solo está tomando el valor de $michis_4_patas. Si usamos && funciona de la manera esperada por tiene mayor prioridad (precedencia) que and.
Aquí podemos ver el orden de los operaciones de PHP:
Los Operadores Lógicos son elementos usados para la evaluación de Expresiones, confirmando si estas son verdaderas o falsas. Una Expresión
consta de al menos dos Afirmaciones, como podría ser «Los seres humanos no
pueden vivir sin oxígeno» o «One-Punch Man tiene una frondosa cabellera».
Una Afirmación no es mas que una oración que puede contener una verdad o una
falsedad.
La evaluación de expresiones se pueden reducir a las tablas de verdad; las
cuales operan sobre expresiones de dos afirmaciones. PHP usa los operadores and y or para las tablas de verdad ‘y’ y ‘o’ respectivamente.
Tabla de verdad ‘y’ (and)
Use el operador and para comprobar, sí ambas afirmaciones en una expresión
son verdad toda la expresión es verdad, pero sí una de las afirmaciones es
falsa toda la expresión es falsa.
Valor
Operador
Valor
Resultado
true
and
true
true
true
and
false
false
false
and
true
false
false
and
false
false
Tabla de verdad ‘o’ (or)
Use el operador or para comprobar, sí al menos una de las afirmaciones en una
expresión es verdad toda la expresión es verdad, pero sí ambas afirmaciones son
falsas toda la expresión es falsa.
Valor
Operador
Valor
Resultado
true
or
true
true
true
or
false
true
false
or
true
true
false
or
false
false
PHP también soporta los operadores && y || para las evaluaciones y y o
respectivamente.
Tabla de verdad ‘y’ (&&)
Valor
Operador
Valor
Resultado
true
&&
true
true
true
&&
false
false
false
&&
true
false
false
&&
false
false
Tabla de verdad ‘o’ (||)
Valor
Operador
Valor
Resultado
true
||
true
true
true
||
false
true
false
||
true
true
false
||
false
false
Operador de negación (not)
Para negar o invertir el valor de una afirmación se usa el operador ‘no’ (!).
Pero es un poco complejo saber por qué dio false, realmente ocurre porque se empieza a comparar de izquierda a derecha y esto se podría interpretar como:
En este ejempolo sea como sea y pongase donde se pongan los parentesis va a dar falso, pero para que como humanos lo podamos entender debería quedar asi:
if (
($tiene_2_patas && $le_gusta_comer)
|| !$sabe_volar
){…}
en el experimento estás asignando 2 variables a la variable resultado, no se está comparando, se esta agregando michis_4_patas y michis_programan_con_PHP a resultado
Para los que quedan con la duda sobre la diferencia entre usar ‘AND’ o ‘&&’ consegui este codigo.
<?php// Expression to use && operator$bool = TRUE && FALSE;
// Display the result of && operationecho ($bool ? 'TRUE' : 'FALSE'), "\n";
// Expression to use AND operator$bool = TRUEandFALSE;
// Display the result of AND operationecho ($bool ? 'TRUE' : 'FALSE'), "\n";
?>
Se debe a la precedencia que tenga el operador (alta / baja). Se entiende mejor con el siguiente ejem.
1 + 5 * 3 , la respuesta es 16 y no 18 porque el operador de multiplicación ("*") tiene una precedencia mayor que el operador de adición ("+").
Reto de operadores lógicos como resultado tendremos operaciones boleanas con su respectivo true || false.
reto_operadores.php
<?php$es_un_michi_grande = true;
$le_gusta_comer = true;
$sabe_volar = false;
$tiene_2_patas = false;
// ¿Caul es el resultado?
var_dump($es_un_michi_grande && $le_gusta_comer); //bool(true)
var_dump($es_un_michi_grande || $sabe_volar); //bool(true)
var_dump($sabe_volar || $tiene_2_patas); //bool(false)
var_dump(!$le_gusta_comer); //bool(flase)
var_dump($le_gusta_comer || $es_un_michi_grande); //bool(true)/* referencias.
&& operador and(y) también conocido como conjunción.
|| operador or (o) también conocido como disyunción.
! operador not (no) también conocido como negación.
== es igual
!= es distinto
<,<=,>,>= menor, menor o igual, mayor, mayor o igual
*/
fue interesante ver como en el minuto 8:26 , evaluó una variable inexistente y al ser con | | se evaluó sin problema ni error , también quedo esperando la diferencia del uso de && y el and del ultimo ejemplo.
$es_un_michi_grande && $le_gusta_comer; Es true$es_un_michi_grande || $sabe_volar; Es true$sabe_volar || $tiene_2_patas; Es false
!$le_gusta_comer; // Es false
!$le_gusta_comer || $es_un_michi_grande; Es true
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.