Buenas tardes.
Vengo a presentar la solucion de los siguientes ejercicios JavaScript de la entrega CU01117E del tutorial gratuito de programación web de aprenderaprogramar. En este capítulo se presentan 2. El primero nos pide lo siguiente:
Dadas las variables de tipo entero con valores A = 5, B = 3, C = -12 indicar si la evaluación de estas expresiones daría como resultado verdadero o falso:
a) A > 3 b) A > C c) A < C
d) B < C e) B != C f) A == 3
g) A * B == 15 h) A * B == -30 i) C / B < A
j) C / B == -10 k) C / B == -4 l) A + B + C == 5
m) (A+B == 8 ) && (A-B == 2) n) (A+B == 8 ) || (A-B == 6)
o) A > 3 && B > 3 && C < 3 p) A > 3 && B >= 3 && C < -3
Crea un script donde declares estas variables, les asignes valores y muestres por pantalla el valor de verdad que tienen cada una de las expresiones antes indicadas. ¿Coincide lo que se muestra con pantalla con lo que tú esperarías que se mostrara?
Aquí va mi script
<script>
var A=5,B=3,C=-12;
alert(A>3);
alert(A>C);
alert(A<C);
alert(B<C);
alert(B!=C);
alert(A==3);
alert(A*B==15);
alert(A*B==-30);
alert(C/B<A);
alert(C/B==-10);
alert(C/B==-4);
alert(A+B+C==5);
alert((A+B == 8 )&&(A-B==2));
alert((A+B == 8 )||(A-B==6));
alert(A>3&&B>3&&C<3);
alert(A>3&&B>=3&&C<-3);
</script>
Ok... vamos a responder cada comparación:
a)Nos arrojaría un
true, ya que 5 es mayor que 3.
b)Nos arrojaría un
true, ya que 5 es mayor que -12.
c)Nos arrojaría un
false, ya que -12 no es mayor que 5.
d)Nos arrojaría un
false, ya que -12 no es mayor que 3.
e)Nos arrojaría un
true, ya que 5 es distinto de 3.
f)Nos arrojaria un
false, ya que 5 no es igual a 3.
g)Nos arrojaría un
true, ya que la multiplicación de 5 por 3 nos daría 15.
h)Nos arrojaría un
false, ya que la multiplicación de 5 por 3 no es -30.
i)Nos arrojaría un
true, ya que el resultado de dividir -12 y 3 es un resultado negativo (-4), por lo tanto es menor que 5.
j)Nos arrojaría un
false, ya que -4 no es igual a -10.
k)Nos arrojaría un
true, ya que -4 si es igual a -4.
l)Nos arrojaría un
false, ya que la suma de 5+3+(-12) viene siendo -4, por lo tanto no es igual a 5.
m)Nos arrojaría un
true, ya que ambas expresiones son true. (5+3 = 8 y 5-3 = 2)
n)Nos arrojaría un
true, ya que la primera expresión es cierta. (5+3 = 8 )
o)Nos arrojaría un
false, ya que la segunda expresión, 3 es mayor que 3 no es cierta.
p)Nos arrojaría un
true, ya que las 3 expresiones si se cumplen (o son true); 5 es mayor que 3, 3 es mayor o igual a 3 y -12 es menor que -3.
Comprobé los resultados ejecutando el script en mi navegador, y al parecer, todos se han cumplido como lo había pensado. Ahora vamos con el ejercicio dos que dice asi:
Crea un script donde declares dos variables a y b y fuerces a que ambas contengan valor NaN. Ahora realiza las comparaciones a == b, a === b, a !== a ¿Qué resultados obtienes? ¿A qué crees que se debe este resultado?
Bien, aqui les presento el script:
<script type="text/javascript">
var A=5*Math.random,B=3*"garbanzo";
alert(A == B);
alert(A === B);
alert(A !== A);
</script>
Las dos primeras comparaciones me devuelven como resultado
false, pero la ultima... es
true.
Ok, la verdad que esto que preguntan es algo totalmente nuevo para mi.
En lecciones anteriores, se comento que JavaScript asigna automáticamente
NaN cuando se intenta realizar una operación con un valor que no es un número. Primero por los resultados que arrojaba, pense que se trataba de un valor tipo objeto. Pero decidi investigar: Nos encontramos ante un valor
primitivo númerico de JavaScript... sep, un vulgar número del montón. Lo que mas curiosidad me causa, es que el valor NaN esta hecho para ser
distinto de cualquier valor, incluso hasta
si misma. También descubri que el valor NaN es una propiedad de un objeto global. La verdad que esta ultima parte no la entendi muy bien, Es de una clase en especifico? o pertenece a varias?.
Respondiendo a las preguntas:
A) Las primeras comparaciones siempre devuelven false, ya que los valores NaN nunca van a poder igualarse a otras.
B) La ultima comparación devuelve true, porque siempre un valor NaN sera distinto de todo.
Salu2!