From: "David C. Hoos, Sr." <david.c.hoos.sr@ada95.com>
Subject: Re: Trivial Ada question
Date: Fri, 28 Jun 2002 06:33:32 -0500
Date: 2002-06-28T06:33:32-05:00 [thread overview]
Message-ID: <mailman.1025263922.21547.comp.lang.ada@ada.eu.org> (raw)
In-Reply-To: afhfkb$pj9$1@dolly.uninett.no
If N is not referenced within the loop you could do:
for I in A'Range loop
if not some condition (I) then
N := N - 1;
exit;
end if;
end loop;
N := N + 1;
----- Original Message -----
From: "Reinert Korsnes" <reinert.korsnes@chello.no>
Newsgroups: comp.lang.ada
To: <comp.lang.ada@ada.eu.org>
Sent: June 28, 2002 5:57 AM
Subject: Re: Trivial Ada question
> Correction below. It always happens :-)
>
> reinert
>
> Reinert Korsnes wrote:
>
> > Yes, maybe the simplest possible.
> > The example below is also somehow simple,
> > but I hoped for some "exit name" solution
> > which I have not yet noticed :-)
> >
> > reinert
> >
> > All_OK := 1;
> > for I in A'Range loop
> > if not some condition (I) then
> > All_OK := 1;
>
> obs, I mean All_OK := 0;
>
> > exit;
> > end if;
> > end loop;
> > N := N + All_OK;
> >
> >
> > David C. Hoos, Sr. wrote:
> >
> >> How about
> >>
> >> All_OK : Boolean;
> >> .
> >> .
> >> .
> >> All_OK := True;
> >> for I in A'Range loop
> >> if not some condition (I) then
> >> All_OK := False;
> >> exit;
> >> end if;
> >> end loop;
> >> if ALL_OK then
> >> N := N + 1;
> >> end if;
> >>
> >> ----- Original Message -----
> >> From: "Reinert Korsnes" <reinert.korsnes@chello.no>
> >> Newsgroups: comp.lang.ada
> >> To: <comp.lang.ada@ada.eu.org>
> >> Sent: June 28, 2002 4:07 AM
> >> Subject: Trivial Ada question
> >>
> >>
> >>> Hi,
> >>>
> >>> I would like to ask about a program construct:
> >>>
> >>> I want to test if some condition holds for all values
> >>> of I in A'range and in this case the variable
> >>> N should be incremented by one ( N := N + 1; ).
> >>> How can I do this most elegant and effective with Ada95
> >>> (without "goto") ?
> >>> Assume I do not want to make a separate subroutine for this.
> >>>
> >>> This example is simple but not computationally optimal (two tests):
> >>>
> >>> for I in A'range loop
> >>> exit when "not some condition(I);
> >>> if I = A'last then
> >>> -- Everything OK to the end:
> >>> N := N + 1;
> >>> end if;
> >>> end loop;
> >>>
> >>> This example is ugly but more computationally optimal (one test):
> >>>
> >>> for I in A'range loop
> >>> if "not some condition(i)" then
> >>> N := N - 1;
> >>> exit;
> >>> end if;
> >>> end loop;
> >>> N := N + 1;
> >>>
> >>> Tricks by "named loops" also seem ugly.
> >>>
> >>> reinert
> >>>
> >>> _______________________________________________
> >>> comp.lang.ada mailing list
> >>> comp.lang.ada@ada.eu.org
> >>> http://ada.eu.org/mailman/listinfo/comp.lang.ada
> >>>
> >>>
>
> _______________________________________________
> comp.lang.ada mailing list
> comp.lang.ada@ada.eu.org
> http://ada.eu.org/mailman/listinfo/comp.lang.ada
>
>
next prev parent reply other threads:[~2002-06-28 11:33 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-06-28 9:07 Trivial Ada question Reinert Korsnes
2002-06-28 10:10 ` David C. Hoos, Sr.
2002-06-28 10:54 ` Reinert Korsnes
2002-06-28 10:57 ` Reinert Korsnes
2002-06-28 11:33 ` David C. Hoos, Sr. [this message]
2002-06-28 11:44 ` Ted Dennison
2002-06-28 21:38 ` Steven Deller
2002-06-28 12:29 ` Steve Sangwine
2002-07-03 18:59 ` Robert I. Eachus
2002-07-03 19:41 ` Darren New
2002-07-04 8:28 ` Lutz Donnerhacke
-- strict thread matches above, loose matches on Subject: below --
2002-07-04 8:59 Grein, Christoph
2002-07-04 9:15 ` Lutz Donnerhacke
2002-07-05 22:25 ` Robert I. Eachus
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox