comp.lang.ada
 help / color / mirror / Atom feed
From: "chad" <crmeiners@hotmail.com>
Subject: Re: checking a loop execution
Date: 2000/04/20
Date: 2000-04-20T00:00:00+00:00	[thread overview]
Message-ID: <38fece05.0@silver.truman.edu> (raw)
In-Reply-To: 8dl76u$etf$1@nnrp1.deja.com

The following code does what you want:

  declare
      Index      : Integer := 1;
      Interupted : Boolean := False;
  begin

      loop

          Interupted := <Condition>;

          exit when  Interupted or else (Index = 10);

          Index      := Index + 1;

      end loop;

      if Interupted then
          Put_Line("Loop interupted at :" & Integer'Image(Index));
      else
          Put_Line("Loop was not interupted.");
      end if;

end;

Although the above code seems a little verboes, I feel that it makes the
logic clearer.

<pumilia@my-deja.com> wrote in message news:8dl76u$etf$1@nnrp1.deja.com...
> Is there a way to check if a loop has been exited before completion or
> if all iterations have been performed?
> In fortran the loop index is increased one last time, at the end of
> the loop, but in Ada that trick cannot be exploited; the index is not
> even defined outside the loop.
> I could add a control variable (ivar, in my example) to take care of the
> iteration number when exiting, but that would decrease the peformance
> of my algorithm
>
> Example
>
> procedure loop_test  is
>
> ivar : integer;
>
> begin
>  for i in 1 .. 10 loop
>  if <condition>  then
>   ivar := i;
>   exit ;
>  end if ;
>  end loop;
>  put(ivar,2);
> end loop_test;
>
>
>
> thank you for your suggestions
>
> Pol
>
>
> Sent via Deja.com http://www.deja.com/
> Before you buy.






  parent reply	other threads:[~2000-04-20  0:00 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-04-19  0:00 checking a loop execution pumilia
2000-04-19  0:00 ` DuckE
2000-04-20  0:00 ` Geoff Bull
2000-04-20  0:00 ` chad [this message]
2000-04-21  0:00   ` Robert Dewar
2000-04-22  0:00     ` Chad R. Meiners
2000-04-23  0:00       ` Robert Dewar
2000-04-24  0:00         ` Ehud Lamm
2000-04-24  0:00           ` Ehud Lamm
2000-04-24  0:00       ` Bill Greene
2000-04-21  0:00   ` Robert Dewar
2000-04-20  0:00 ` tmoran
2000-04-20  0:00   ` Charles Hixson
2000-04-20  0:00 ` Andreas Schulz
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox