elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  [Resuelto] Ayuda, para un ejercicio de javascript para la facultad.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Resuelto] Ayuda, para un ejercicio de javascript para la facultad.  (Leído 4,027 veces)
MaxiGanar

Desconectado Desconectado

Mensajes: 3


Ver Perfil
[Resuelto] Ayuda, para un ejercicio de javascript para la facultad.
« en: 23 Julio 2015, 19:21 pm »

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.

Código
  1. <html>
  2.      <head>
  3.           <title>hola mundo</title>
  4.           <script language="javascript">
  5.  
  6.        {
  7.           M1(3);        
  8.           var x = 1;
  9.           alert(x);
  10.           }
  11.           function M1(t,r){
  12.                   if (1<t){
  13.                    var x = 1;
  14.                    M1 (t-1 , M2);        
  15.                    }
  16.                    else {
  17.                         r(t+1);
  18.                         }
  19.  
  20.           function M2(y){
  21.                    x= t + y;
  22.                    }
  23.                    alert (x);
  24.                    }
  25.  
  26.           </script>
  27.      </head>
  28.  
  29.      <body>
  30.  
  31.      </body>
  32. </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
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda, para un ejercicio de javascript para la facultad.
« Respuesta #1 en: 23 Julio 2015, 19:33 pm »

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 Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda, para un ejercicio de javascript para la facultad.
« Respuesta #2 en: 23 Julio 2015, 19:47 pm »

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda, para un ejercicio de javascript para la facultad.
« Respuesta #3 en: 23 Julio 2015, 19:51 pm »

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 Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda, para un ejercicio de javascript para la facultad.
« Respuesta #4 en: 23 Julio 2015, 20:23 pm »

Muchisimas gracias por la ayuda, ya entendi el ejercicio!! y lo pude resolver! =D. Saludos!.
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Ayuda, para un ejercicio de javascript para la facultad.
« Respuesta #5 en: 23 Julio 2015, 20:37 pm »

Por partes:

Código
  1. M1(3);        
  2. var x = 1;
  3. alert(x);

Tu programa básicamente empieza por llamar M1 con el valor de 3

Código
  1. function M1(t, r) {
  2.    if (1 < t) {
  3.        var x = 1;
  4.        M1(t - 1, M2);
  5.    } else {
  6.        r(t + 1);
  7.    }
  8.  
  9.    function M2(y) {
  10.        x = t + y;
  11.    }
  12.    alert(x);
  13. }

Al llamar M1(3), caemos en el if del condicional.
Código
  1.    if (1 < t) {
  2.        var x = 1;
  3.        M1(t - 1, M2);
  4.    }

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.
Código
  1.    function M2(y) {
  2.        x = t + y;
  3.    }
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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda para Validar W3C una Web. (RESUELTO)
Desarrollo Web
MA40 4 4,798 Último mensaje 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 Último mensaje 8 Junio 2012, 07:40 am
por durasno
Ejercicio resuelto. Gracias por la ayuda.
Ejercicios
Droigor 3 5,730 Último mensaje 22 Marzo 2014, 19:29 pm
por Mitsu
ejercicio para novatos de javascript
Desarrollo Web
AlexKurban 6 3,992 Último mensaje 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 Último mensaje 29 Agosto 2019, 21:09 pm
por MinusFour
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines