Article View: es.comp.os.linux.programacion
Article #6877Re: Romper 2 bucles a la vez en C
From: Samuel
Date: Fri, 02 May 2003 07:44
Date: Fri, 02 May 2003 07:44
57 lines
3401 bytes
3401 bytes
El Fri, 2 May 2003 04:30:34 +0200, desorden
<nedrosed@yahoo.es> dijo:
> En el siguiente art�culo, Seba F escribi�:
>>
>> No estoy de acuerdo con esto de tomar como un pecado mortal el uso del
>> goto, ademas como dijeron en el mail anterior el uso del break, es un
>> uso del goto camuflado. En algunos tipos de algoritmos un buen uso del
>> goto disminuye considerablemente la cantidad de lineas de codigo y
>> hasta hace mucho mas comprensible al algoritmo.
>> Siempre y cuando tengamos en cuenta que el uso de case, break y goto
>> no son eficientes a nivel compilacion, en determinadas situaciones su
>> uso es razonable y pr�ctico.
>>
>
> Depende del tipo de programaci�n, �no? En programaci�n estructurada los
> bloques de c�digo se tienen que recorrer desde la primera l�nea hasta la
> �ltima.
>
> Programar usando la sentencia goto est�... �anticuado?
>
> Un saludo...
No si ya sab�a yo que �sto iba a salir ;-) ...
Lo que est� anticuado es decir que "el goto est� anticuado" (ya ha
llovido desde el "goto" considered "harmful"). Es l�gico
que cada funci�n o bucle tenga _un solo punto de entrada_, pero lo que
no lo es, es que tambi�n tenga que tener _un solo punto de salida_. De
hecho en estos dos casos se usa return y break para salir y es m�s
claro, m�s sencillo(KISS) y m�s eficiente.
Para el caso de los dos bucles la soluci�n ideal es la de Perl, que te
permite etiquetar los bucles y usarlos desde el next y last(equivalentes
a continue y break).
OUTER: for(;;){
INNER: for(;;){
...
last OUTER;
}
}
El otro caso donde se suele usar el goto (y mucho), es en el manejo de
situaciones de error (situaci�n que el propio Dijikstra admite en su
"Goto Considered Harmful"). De nuevo, las situaci�n que resuelve eso de
manera adecuada son las excepciones...
Pero C no tiene ninguna de estas dos posibilidades, as� que o usas goto,
o haces virguer�as. Es mi opini�n.
Saludos
Samuel
--
Samuel Mo�ux Salvador
PGP Key pgp.rediris.es ----- KeyID 0x822583C2
Technical Details
Message-ID:
<slrnbb48en.si.444398NOSPAM@tizona.dummy.net>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!nsnmpen1-lo.nuria.telefonica-data.net!nsnmpen2-lo.nuria.telefonica-data.net!not-for-mailReferences:
<b8n8kd$bm3re$1@ID-146085.news.dfncis.de> <slrnbaur1q.ih.444398NOSPAM@tizona.dummy.net> <20030430205521.487.2.NOFFLE@BlackSpark.local> <403d26cd.0305011347.576e901e@posting.google.com> <slrnbb3m2a.q4.nedrosed@debianedrosed.org>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,d2bd500edfc3d6fa X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2003-05-02 00:44:26 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!nsnmpen1-lo.nuria.telefonica-data.net!nsnmpen2-lo.nuria.telefonica-data.net!not-for-mail From: Samuel <444398NOSPAM@celes.unizar.es> Newsgroups: es.comp.os.linux.programacion Subject: Re: Romper 2 bucles a la vez en C Date: Fri, 2 May 2003 07:44:24 +0000 (UTC) Organization: Telefonica Data Espagna Lines: 57 Message-ID: <slrnbb48en.si.444398NOSPAM@tizona.dummy.net> References: <b8n8kd$bm3re$1@ID-146085.news.dfncis.de> <slrnbaur1q.ih.444398NOSPAM@tizona.dummy.net> <20030430205521.487.2.NOFFLE@BlackSpark.local> <403d26cd.0305011347.576e901e@posting.google.com> <slrnbb3m2a.q4.nedrosed@debianedrosed.org> NNTP-Posting-Host: 80-25-246-165.uc.nombres.ttd.es Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: nsnmpen2-gest.nuria.telefonica-data.net 1051861464 5067 80.25.246.165 (2 May 2003 07:44:24 GMT) X-Complaints-To: usenet@nsnmpen2-gest.nuria.telefonica-data.net NNTP-Posting-Date: Fri, 2 May 2003 07:44:24 +0000 (UTC) User-Agent: slrn/0.9.7.4 (FreeBSD)