Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: pedro,, en 21 de Enero 2016, 23:14

Título: bind JavaScript. Conversor de grados centígrados a farenheit Ejercicio CU01178E#
Publicado por: pedro,, en 21 de Enero 2016, 23:14
Otro más. Ejercicio CU01178E del curso JavaScript desde cero:

Citar
EJERCICIO
Escribe este código, ejecútalo y responde a las preguntas que aparecen a continuación.
Código: [Seleccionar]
function conversor(toUnit, factor, offset, input) {
    offset = offset || 0;
    return [((offset+input)*factor).toFixed(2), toUnit].join(" ");
}
 
var milesToKm = conversor.bind(undefined, 'km', 1.60936, 0);
var poundsToKg = conversor.bind(undefined, 'kg', 0.45460, 0);
var farenheitToCelsius = conversor.bind(undefined, 'gradosC',0.5556, -32);
 
alert(milesToKm(10));           
alert(poundsToKg(2.5));         
alert(farenheitToCelsius(98));

Citar
a) ¿Cuántas funciones ligadas (copias parametrizadas) de la función conversor se crean en este código?
Hay 3, milesTokm poundsToKg y farenheitToCelsius.
         
Citar
b) ¿Qué es lo que devuelve la función conversor?
Devuelve el resultado de la conversión de una unidad de medida a otra.
         
Citar
c) ¿Qué objeto actúa como this en la función milesToKm?
No está definido, así que ninguno.
         
Citar
d) ¿Qué tarea cumple y con qué fórmula trabaja la función milesToKm?
Crea una copia de la función conversor y le pasa los argumentos necesarios para que se ejecute.
         
Citar
e) ¿Qué tarea cumple y con qué fórmula trabaja la función poundsToKg?
Crea una copia de la función conversor y le pasa los argumentos necesarios para que se ejecute.
         
Citar
f) ¿Qué resultado devuelve milesToKm(10) y qué significa este resultado?
16.09 km, Es el resultado de transformar millas en kilómetros.
         
Citar
g) ¿Qué resultado devuelve poundsToKg(2.5) y qué significa este resultado?
1.14 kg, Es el resultado de transformar libras a kilos.
         
Citar
h) ¿Qué resultado devuelve farenheitToCelsius(98) y qué significa este resultado?
36.67 gradosC, Es el resultado de transformar grados farenheit en grados Centígrados.
         
Citar
i) ¿Qué significado tiene la expresión offset = offset || 0;?
Si offset no tiene ningún valor, valdrá 0.
         
Citar
j) ¿Cuál es la finalidad del uso de toFixed(2)?
Devuelve un String con el número o variable sobre el que se invoca el método con 2 decimales.
         
Citar
k) ¿Por qué crees que se usa el parámetro offset en la función conversor?
Porque hay funciones que para poder realizar la conversión necesitan un tercer dato.
         
Citar
l) Modifica el código para ampliar la información que se nos muestra: introduce un parámetro fromUnit en la función conversor de modo que el resultado nos informe del dato de origen, sus unidades, y el dato convertido y sus unidades.

Código: [Seleccionar]
function conversor(toUnit, factor, offset, fromUnit, input) {
offset = offset || 0;
return [input, fromUnit, 'son', ((offset+input)*factor).toFixed(2), toUnit].join(" ");
}
var milesToKm = conversor.bind(undefined, 'km', 1.60936, 0, 'millas');
var poundsToKg = conversor.bind(undefined, 'kg', 0.45460, 0, 'libras');
var farenheitToCelsius = conversor.bind(undefined, 'gradosC',0.5556, -32, 'gradosF');
alert(milesToKm(10));           
alert(poundsToKg(2.5));         
alert(farenheitToCelsius(98));

Saludos.
Título: Re:bind JavaScript. Conversor de grados centígrados a farenheit Ejercicio CU01178E
Publicado por: Ogramar en 27 de Enero 2016, 09:23
Buenas Pedro

a) Bien

b) Bien además podríamos decir que se espera que devuelva un valor numérico

c) Bien (al no existir this actúa el this por defecto, es decir, el objeto window)

d) En este caso la copia (referencia) a la función conversor lleva ligados unos parámetros con un fin específico, ese fin es que la función devuelva el resultado de convertir un valor en millas (miles) a kilómetros (km), por tanto su tarea es convertir millas a kilómetros. La función milesToKm no crea una copia, mejor diríamos que es una referencia parametrizada a la funnción conversor. La fórmula con que trabaja la función milesToKm es valorRecibido*1.60936 con redondeo a dos decimales.

e) Se responde como he indicado para la d pero viendo lo que hay que aplicar en este caso

f) Bien

g) Bien

h) Bien

i) Bien

j) Bien

k) Bien, por ejemplo la fórmula para convertir grados centígrados a farenheit no es una simple multiplicación. La fórmula es gradosCent = (gradosFarenh - 32) * (5/9)

l) Bien para quien quiera probar el código que guarde esto como ejemplo.html y lo vea en el navegador

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>
function conversor(toUnit, factor, offset, fromUnit, input) {
offset = offset || 0;
return [input, fromUnit, 'son', ((offset+input)*factor).toFixed(2), toUnit].join(" ");
}
var milesToKm = conversor.bind(undefined, 'km', 1.60936, 0, 'millas');
var poundsToKg = conversor.bind(undefined, 'kg', 0.45460, 0, 'libras');
var farenheitToCelsius = conversor.bind(undefined, 'gradosC',0.5556, -32, 'gradosF');
alert(milesToKm(10));           
alert(poundsToKg(2.5));         
alert(farenheitToCelsius(98));

</script>
</head>
<body>
Prueba del código
</body>
</html>


Salu2