Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Fede on January 08, 2011, 08:40:58 PM

Title: Duda interpretando if-else anidados.
Post by: Fede on January 08, 2011, 08:40:58 PM
Hola de nuevo.

Ante todo aclarar que cuando posteo una duda intento hacerla con la mínima expresión.

Es por eso que me salen en funciones aparentemente pequeñas y simples.

Particularmente esta duda me ha surgido en una función de unas 300 líneas con un comportamiento totalmente caótico.

Tras reducirla a la mínima expresión la duda se ha convertido en esto:

import "mod_say";


function main()

begin
if (true)
say("1");
if (false)
say("2");
else
say("3");
end
else
say("4");
end
end


Que produce como salida 1 y 3.

Pero si hacemos esto:

import "mod_say";


function main()

begin
if (true)
say("1");
if (false)
say("2");
else
say("3");
//end Tan sólo quito está línea.
else
say("4");
end
end


Tenemos como salida 1,3,4.

Lo que no entiendo es que es lo que interpreta en la segunda forma y por qué no da error de compilación.

Saludos,
Title: Re: Duda interpretando if-else anidados.
Post by: FreeYourMind on January 08, 2011, 08:49:24 PM
Lo que veo es que si no pones el 'end' el segundo 'else' se ignora y su 'end' pasa a ser el end del primero. Deberia dar error de compilación como dices, pero ya veremos que dice el Maestro que estos dias ha tocado el corazón del compilador.
Title: Re: Duda interpretando if-else anidados.
Post by: Fede on January 08, 2011, 09:00:30 PM
Gracias Free. ¡Que rápido eres!  :D
Title: Re: Duda interpretando if-else anidados.
Post by: DCelso on January 08, 2011, 09:35:14 PM
Con esto parece que un if pudiera tener infinitos elses mientras no le pongas un end. :D, habría que probar que salida da esto :D

if (false)
         say("2");
      else
         say("3");
      else
         say("4");
      else
         say("5");
      else
         say("6");
end
Title: Re: Duda interpretando if-else anidados.
Post by: FreeYourMind on January 08, 2011, 09:40:06 PM
Quote from: Fede on January 08, 2011, 09:00:30 PM
Gracias Free. ¡Que rápido eres!  :D

(http://aula.elmundo.es/media/fotos/superlopez_dentro.jpg)
Title: Re: Duda interpretando if-else anidados.
Post by: Fede on January 08, 2011, 09:43:45 PM
Esto da: 1,3,4

import "mod_say";


function main()

begin
if (true)
say("1");
if (false)
say("2");
else
say("3");
//end
else
say("4");
else
say("5");
end
end


Y esto:

import "mod_say";


function main()

begin
if (true)
say("1");
if (false)
say("2");
else
say("3");
//end
else
say("4");
else
say("5");
else
say("6");
end
end


Error de compilación.

Title: Re: Duda interpretando if-else anidados.
Post by: SplinterGU on January 08, 2011, 11:28:16 PM
Quote from: DCelso on January 08, 2011, 09:35:14 PM
Con esto parece que un if pudiera tener infinitos elses mientras no le pongas un end. :D, habría que probar que salida da esto :D

if (false)
         say("2");
      else
         say("3");
      else
         say("4");
      else
         say("5");
      else
         say("6");
end

esto es asi... lamentablemente es un "feature" conocido, creo que pasa lo mismo con case con mismos valores.

lo otro ahora lo chequeo... puede que los else se interpreten como end...

va, no se necesita chequear, esta clarito en los ejemplos...

lo del else else else, sabia que lo tomaba sin dar mensaje de error, pero no sabia que lo interpretaba como END, en realidad no me puse a pensarlo aun, lo tome como un error heradado y lo deje como un pendiente.

ahora se lo que es, vere cuando lo corrijo... ahora estoy dejando a punto los nuevos scripts de compilacion y estoy intentando generar una version dingux.
Title: Re: Duda interpretando if-else anidados.
Post by: FreeYourMind on January 09, 2011, 12:44:57 AM
Eso, eso, que estoy loco por desenpolvorar mis Dingoo's :)
Title: Re: Duda interpretando if-else anidados.
Post by: Noivern on January 09, 2011, 02:10:54 AM
Ánimos con la versión Dingux. Será un notición cuando tengas una version lista!!
Title: Re: Duda interpretando if-else anidados.
Post by: Windgate on January 10, 2011, 12:23:36 AM
Hará como un año o más que Pixel comentó por ahí el problema de los ELSE infinitos...
Title: Re: Duda interpretando if-else anidados.
Post by: SplinterGU on January 10, 2011, 03:01:01 AM
la verdad que no lo recuerdo