Autor
|
Tema: [Resuelto] Ayuda, para un ejercicio de javascript para la facultad. (Leído 4,027 veces)
|
MaxiGanar
Desconectado
Mensajes: 3
|
Hola gente del elhacker.net, mi nombre es Maxi y soy estudiante de ingenieria en sistemas, necesito su ayuda en un ejercicio de javascript. El ejercicio consiste, en que me dan un codigo, y yo tengo que decir, que numero/s va a aprecer por pantalla. el codigo es el siguiente. <html> <head> <title>hola mundo</title> <script language="javascript"> { M1(3); var x = 1; alert(x); } function M1(t,r){ if (1<t){ var x = 1; M1 (t-1 , M2); } else { r(t+1); } function M2(y){ x= t + y; } alert (x); } </script> </head> <body> </body> </html>
Necesito que me ayuden, como PASO A PASO, se van creando las variables y como van teniendo dicho valor, por que me pierdo mucho en el momento que se llaman las subrutinas. (por cierto me olvide mencionar, que pueden usar compilador para saber sus valores, pero la idea es que me expliquen como se va llegando a esos valores). Gracias por su ayuda. Mod: Los códigos deben ir en etiquetas GeSHi, tema movido, el título debe ser descriptivo al problema, modifícalo
|
|
« Última modificación: 24 Julio 2015, 13:08 pm por #!drvy »
|
En línea
|
|
|
|
engel lex
|
el código está malo... en M1, en la linea 14, se pasa M2 como una variable, pero M2 es una función, en la linea 17 es lo contrario, se para 8 como función pero r es variable, a demás M2, está incluido dentro de M1, y queda de más decir que es mala practica anidar funciones por otro lado si usas google chrome, el te puede ayudar con eso... tiene un debugger de jscript integrado aquí todo lo que necesitas saber sobre el https://developer.chrome.com/devtools/docs/javascript-debugging
|
|
« Última modificación: 23 Julio 2015, 19:38 pm por engel lex »
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
MaxiGanar
Desconectado
Mensajes: 3
|
Gracias por tu respuesta, pero aun que no lo creas, no hay errores. Te explico mas o menos el por que, en la linea 14, se pasa como argumento M2 como argumento ya que, se utiliza la tecnica "Subrutinas como parametros". Y este se pone en juego los 2 terminos de Vinculacion Profunda y Vinculacion Superficial. Para explicarlo mas o menos cada uno se definen asi,
Vinculacion Profunda: Vincula al ambiente de referencia, en el momento que el procedimiento se pasa como argumento.
Vinculacion Superficial: Vincula al ambiente de referencia, en el momento que el procedimiento, REALMENTE se llama.
|
|
|
En línea
|
|
|
|
engel lex
|
ya! pasas M2 como referencia para que r se pueda ejecutar como función, se me había pasado eso, igual con el debugger de chrome podrías ver eso claramente
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
MaxiGanar
Desconectado
Mensajes: 3
|
Muchisimas gracias por la ayuda, ya entendi el ejercicio!! y lo pude resolver! =D. Saludos!.
|
|
|
En línea
|
|
|
|
MinusFour
|
Por partes: M1(3); var x = 1; alert(x);
Tu programa básicamente empieza por llamar M1 con el valor de 3 function M1(t, r) { if (1 < t) { var x = 1; M1(t - 1, M2); } else { r(t + 1); } function M2(y) { x = t + y; } alert(x); }
Al llamar M1(3), caemos en el if del condicional. if (1 < t) { var x = 1; M1(t - 1, M2); }
Declaras X con el valor de 1 (en el contexto de la llamada M1(3)) Se vuelve a llamar M1 con (3-1, M2) (x y t en el contexto de M2 es x, t en el contexto de M1(3), 3, 1). Caes de nuevo en el if del condicional. Declaras X con el valor de 1. (en el contexto de la llamada M1(2)) Se vuelve a llamar M1 con (2-1, M2) (x, t en el contexto de M2 es x, t en el contexto de M1(2), 2, 1). Ya no caes en el if del condiciona. Llamas a r (M2) con 2. function M2(y) { x = t + y; }
x (de M1(2)) es 4. Imprimes x (no esta definida en el contexto de M1(1) ni en el contexto global). Regresas a la llamada M1(2). Imprimes x (4). Regresas a la llamada M1(1). Imprimes x (1). Regresas a tu programa. Defines x como 1. Imprimes x (1).
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda para Validar W3C una Web. (RESUELTO)
Desarrollo Web
|
MA40
|
4
|
4,798
|
15 Octubre 2010, 11:46 am
por MA40
|
|
|
Ejercicio con matrices resuelto en un 90% (necesito ayuda)
Programación C/C++
|
Beaustyle
|
1
|
3,428
|
8 Junio 2012, 07:40 am
por durasno
|
|
|
Ejercicio resuelto. Gracias por la ayuda.
Ejercicios
|
Droigor
|
3
|
5,730
|
22 Marzo 2014, 19:29 pm
por Mitsu
|
|
|
ejercicio para novatos de javascript
Desarrollo Web
|
AlexKurban
|
6
|
3,992
|
2 Agosto 2015, 01:39 am
por AlexKurban
|
|
|
[Resuelto] Sitios para saltarme CORS desde javascript o algún workaround?
« 1 2 »
Desarrollo Web
|
@XSStringManolo
|
10
|
4,822
|
29 Agosto 2019, 21:09 pm
por MinusFour
|
|