Expresiones y Operadores
José Luis Vera Vidal
Programación
Instituto IACC
05/09/2021
Desarrollo
1. Utilizando operadores de comparación y lógicos, resuelva el siguiente caso, con
PHPtester:
Declare una variable que guarde la edad de una persona. Luego, si la edad es menor de 18
años, aparecerá el siguiente mensaje: “Eres menor de edad, no podemos contratarte”.
Si es mayor de 18 años y menor o igual de 60 años, le saldrá el mensaje: “Es posible que
usted sea un candidato al cargo”.
Si es mayor de 60 años, le saldrá el mensaje: “Lo sentimos, pero usted no cumple el perfil
del cargo”.
Pruebe su programa en tres casos: una persona de 17 años, una de 64 y una de 35. Muestre las
evidencias respectivas en cada caso.
Para el presente ejercicio se utilizaron los operadores relacionales de acuerdo al contenido
página 7 y para la prueba del programa se hizo con servidor local con wampserver.
<?php
// tabla de criterios
$rango1 = "0 a 17";
$rango2 = "18 a 60";
$rango3 = "61 y mas";
$resultado1 = "Eres menor de edad, no podemos contratarte";
$resultado2 = "Es posible que usted sea un candidato al cargo";
$resultado3 = "Lo sentimos, pero usted no cumple el perfil del cargo";
//Ingreso de la variable
$edad = 17;
echo "<b>Valida edad con operadores de comparacion y logicos</b>";
echo "<p>";
// tabla por pantalla
echo "<table border=1>";
echo " <TH>Rango Edad</TH> <TH>Mensaje Resultado</TH>";
echo " </TR> ";
echo " <TR> ";
echo " <TD>$rango1</TD> <TD>$resultado1</TD>";
echo " </TR> ";
echo " <TD>$rango2</TD> <TD>$resultado2</TD>";
echo " </TR> ";
echo " <TD>$rango3</TD> <TD>$resultado3</TD>";
echo " </TR> ";
echo "<table>";
echo "<p>";
echo "Edad: <b>$edad</b>";
echo "<p>";
$valida_edad = ($edad<18);
if($valida_edad===true){
echo "Resultado: <b>$resultado1";
} elseif ($edad>=18 and $edad<=60) {
echo"Resultado: <b>$resultado2";
} else {
echo "Resultado: <b>$resultado3";
}
?>
Prueba del programa con persona de 17 años
Prueba del programa con persona de 64 años
Prueba del programa con persona de 35 años
2. Dada las siguientes expresiones, ingréselas en PHPTester e indique el resultado
respectivo.
Considere las siguientes variables:
A = 4 B = 5 C = 10 D = 3 E = 7 F= 9
A partir de lo anterior, determine el valor de:
a) X = (A<B) OR (NOT(A<>C) AND (A+B<D OR A<F))
Y=D*B+F–A/B*F
3. Pruebe los siguientes programas en PHPTester y mencione las diferencias al evaluar las
expresiones:
Programa 1
<?php
$var1 = true;
$var2 = false;
$todo = $var1 && $var2;
if ($todo) {
print "<p>verdadero</p>\n";
} else {
print "<p>falso</p>\n";
}
?>
Programa 2
<?php
$var1 = true;
$var2 = false;
$todo = $var1 and $var2;
if ($todo) {
print "<p>verdadero</p>\n";
} else {
print "<p>falso</p>\n";
}
?>
Respuesta:
Al analizar los códigos del Programa 1 y el Programa 2, se puede ver que son exactamente
iguales, excepto por la línea 5 por el operador lógico en la variable $todo, && y and
Respecto del programa 1 al utilizar el operador lógico && el sistema da como resultado “falso”
debido a que la variable $var1 y la variable $var2 son distintas, por lo que PHP al evaluar la
condición salta al “else” al no encontrar un valor verdadero.
Del programa 2 con el operador lógico “and” no ocurre lo mismo y da como resultado
“verdadero”, esto debido a la precedencia o jerarquía que aplica en programación. PHP evalúa
que antes de “and” se encuentra el signo “=”, por lo que deduzco no está evaluando las variables
$var1 y $var2.
Ahora bien, para que PHP evalúe la condición con su respectivo operador sería necesario aplicar
paréntesis, quedando de esta manera: ($var1 and $var2). De esta manera le estamos diciendo a
PHP que evalúe el operador lógico que está dentro del paréntesis y que no considere así el signo
“=” que le precede para no alterar el resultado.
Con este cambio el resultado quedaría en “falso”
Bibliografía
IACC (2018). Expresiones y Operadores. Programación. Semana 3.