Article View: es.comp.os.linux.programacion
Article #16139Re: [POLEMICA CON GOTO] (Era-->Re: Saltos en bash)
From: EstEl
Date: Thu, 04 May 2000 00:00
Date: Thu, 04 May 2000 00:00
74 lines
3622 bytes
3622 bytes
A ver si puedo decir algo a Ignacio Arenaza......
> batsman> La �nica vez que he visto un goto en un programa en C fue
> batsman> en el c�digo de megahal, un simulador de conversaci�n.
>�Que es mas claro y facil de entender _y mantener_ de los dos ejemplos
>siguientes? Supon que los pasos paso1, paso2, paso3, etc solo se
>pueden ejecutar si el paso anterior se ha llevado a cabo de forma
>correcta y podemos obtener los recursos necesarios para este paso. En
>caso contrario hay que deshacer todo lo hecho y liberar los recursos,
>vamos, una especie de sistema transaccional, o se hace todo, o no se
>hace nada.
Veamos solo soy un principiante en esto, pero antes de entrar en la facultad
ya hacia mis chorradas (con goto por supuesto) ahora poco a poco voy
aprendiendo y me doy cuenta que no necesito ningun goto si tengo las
estructuras condicionales basicas en el lenguaje.
>EJEMPLO_2: (la forma "pagana", pero mas "legible" y "mantenible" en mi
> opinion)
>
> if ( !reservar_cosas_para_1() ) goto liberar_1;
> hacer_cosas_de_1();
> if ( !reservar_cosas_para_2() ) goto liberar_2;
> hacer_cosas_de_2();
> if ( reservar_cosas_para_3() ) goto liberar_3;
> hacer_cosas_de_3();
> if ( reservar_cosas_para_4() ) goto libear_4;
> hacer_cosas_de_4();
>liberar_4:
> liberar_cosas_de_4();
>liberar_3:
> liberar_cosas_de_3();
>liberar_2:
> liberar_cosas_de_2();
>liberar_1:
> liberar_cosas_de_1();
>Creo que la segunda solucion se ajusta mas a la forma de pensar
>habitual a la hora de hacer las cosas: si tienes todo lo que te hace
>falta hasta ahora, sigues. Sino, limpias todo lo que has usado de una
>vez.
Mmm... me das 1 byte para un contador y te hago lo mismo
contador=1;
Mientras contador<>0 hacer
case of contador
1: hacer lo que sea;
2: hacer lo que sea;
3: hacer lo que sea;
4: hacer lo que sea;
contador=(contador * (-1)) -1 ; //o contador=-5 como quieras
-4: libera lo que sea;
-3: libera lo que sea;
-2: libera lo que sea;
-1: libera lo que sea;
fin case;
incrementa contador;
fin mientras;
Creo que tambien sigue siendo bastante mantenible no?? y solo hemos perdido
un byte de contador (por que 127 gotos ya son gotos jeje)
Por cierto tengo en cuenta que la condicion multiple es cerrada para cada
opcion (tipo Pascal, no C)
Bueno pues perdon por la intromision y el atrevimiento, pero parace que me
han lavado el coco para que aborrezca los gotos ;)
PD: En ensamblador si son utiles jeje...
--
Este mail esta en.......
( ( ( ( ( ( ((in Dolby Pro Logic)) ) ) ) ) ) )
Enrique(EstEl en irc.unionlatina.org:#berta)
Usuario registrado de Linux:140947
Si no se oye la musica configura bien windows y reinicia un par de veces...
Technical Details
Message-ID:
<nufse8.l7.ln@debian>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<slrn8gtnu0.pc.scandisk@localhost.localdomain> <aodne8.je1.ln@simpsons4ever> <871z3k4slh.fsf_-_@eb2ebu.ampr.org>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,e073e16083571582 X-Google-Attributes: gidf86c8,public From: Enrique@imladris.org (EstEl) Subject: Re: [POLEMICA CON GOTO] (Era-->Re: Saltos en bash) Date: 2000/05/04 Message-ID: <nufse8.l7.ln@debian> X-Deja-AN: 619235797 Content-Transfer-Encoding: 8bit References: <slrn8gtnu0.pc.scandisk@localhost.localdomain> <aodne8.je1.ln@simpsons4ever> <871z3k4slh.fsf_-_@eb2ebu.ampr.org> Content-Type: text/plain; charset=iso-8859-1 Organization: Telefonica Transmision de Datos Mime-Version: 1.0 User-Agent: slrn/0.9.5.3 (UNIX) Reply-To: estelANTISPAM@upseros.com Newsgroups: es.comp.os.linux.programacion