From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fac41,9a0ff0bffdf63657 X-Google-Attributes: gidfac41,public X-Google-Thread: 103376,4b06f8f15f01a568 X-Google-Attributes: gid103376,public X-Google-Thread: f43e6,9a0ff0bffdf63657 X-Google-Attributes: gidf43e6,public X-Google-Thread: 1108a1,9a0ff0bffdf63657 X-Google-Attributes: gid1108a1,public From: olczyk@interaccess.com (Thaddeus L. Olczyk) Subject: Re: Software landmines (was: Why C++ is successful) Date: 1998/08/15 Message-ID: <35d534c3.42590371@nntp.interaccess.com>#1/1 X-Deja-AN: 381356481 References: <6qfhri$gs7$1@nnrp1.dejanews.com> <35cb8058.645630787@news.ne.mediaone.net> <902934874.2099.0.nnrp-10.c246a717@news.demon.co.uk> <6r1glm$bvh$1@nnrp1.dejanews.com> X-Complaints-To: newsabuse@supernews.com X-Trace: 903165356 Z.COWSAII52EBCC94C usenet52.supernews.com Organization: http://www.supernews.com, The World's Usenet: Discussions Start Here Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada Date: 1998-08-15T00:00:00+00:00 List-Id: On Fri, 14 Aug 1998 14:13:10 GMT, dennison@telepath.com wrote: >In article , > dewar@merv.cs.nyu.edu (Robert Dewar) wrote: >> Andy said >> >> <> goto in C and Pascal in certain rare cases, but I have always found clearer >> ways to code these cases in Ada. >> >> >> >> The two obvious uses vfor gotos in Ada are >> >> 1) to get a loop "continue" mechanism > >for a simple loop, embedding the rest of the loop code in the body of the if >statement is clearer. For nested loops where you want to "continue" an outer >loop, I can see it. Not that I'd do such a thing. As a "goto-holic" who has >been straight for 10 years, the best bet is abstinence. One day at a time. :-) > Most experienced C programmers will tell you that continue is just a glorified goto. >> For example, I find the following perfectly clear: >> >> <> for J in 1 .. N - 1 loop >> if D (J) > D (J + 1) then >> Swap (D(J), D(J + 1)); >> goto Sort; >> end if; >> >> It is a little tricky to program this without the goto and not make it >> less clear. Actuallky many people who try this end up with a different >> algorithm (hint: the above sort is cubic, it is NOT a quadratic bubble sort >:-) Assuming I've read your code correctly, a better way would be for J in 1 .. N - 1 loop continue=true; if D (J) > D (J + 1) then Swap (D(J), D(J + 1)); continue=false; end if; if continue then