Foros aprenderaprogramar.com
		Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Dan_SB en 06 de Mayo 2018, 02:44
		
			
			- 
				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!
- 
				Hola, todo correcto. Lo más adecuado para el ejercicio 1 es primero escribir la respuesta sólo reflexionando (sin ejecutar ningún código) y luego si se quiere comprobar con código, como has hecho, así que comprobado está.
 
 Respecto a NaN copio un fragmento de la entrega CU01112E: Para JavaScript NaN (abreviatura de “Not-a-Number”) es un valor numérico especial, que representa “número ilegal o no representable”.
 
 Sobre que sea una propiedad de un objeto global, creo que es mejor avanzar en el curso antes de hablar sobre esto, porque a medida que se avanza se irá entendiendo mejor todo esto.
 
 Ciertamente es curioso que NaN comparado con sí mismo arroje "distinto", porque parece contradictorio. Una faceta más del lenguaje que conviene conocer...
 
 Saludos