comp.lang.ada
 help / color / mirror / Atom feed
From: Paul Colin Gloster <Colin_Paul_Gloster@ACM.org>
Subject: Re: Trouble with loop in Ada
Date: Fri, 4 Jan 2013 12:44:25 +0000 (UTC)
Date: 2013-01-04T12:44:25+00:00	[thread overview]
Message-ID: <kc6ir9$o6u$1@dont-email.me> (raw)
In-Reply-To: kc5m0s$tth$1@speranza.aioe.org

On 2013-01-04, Derek Wyss <udot7@yahoo.com> sent:
|--------------------------------------------------------------------------|
|"Hello,                                                                   |
|                                                                          |
|I'm new to Ada"                                                           |
|--------------------------------------------------------------------------|

Welcome.

|--------------------------------------------------------------------------|
|" and I'm trying to write a toy unix command shell just to                |
|explore the programming language.  So far I have a very small program,    |
|but I am confused about its behavior.                                     |
|                                                                          |
|If I comment line number 11, with the Put procedure, the program loops    |
|through as I would expect.  However, with that line in the program, I     |
|have to manually press enter twice before I enter the loop.  Similarly, I |
|have to hit enter one more time after the character I enter is displayed  |
|in order for the program to loop again.                                   |
|                                                                          |
|Can anyone offer an explanation as to why I need to press enter?"         |
|--------------------------------------------------------------------------|

Whether or not that line was commented out did not affect how many
times I pressed enter.

|--------------------------------------------------------------------------|
|"  I                                                                      |
|suspect it has to do with my use of End_Of_File and the way it "looks     |
|ahead" but I'm not really sure.                                           |
|                                                                          |
|I'm running Linux Mint Debian Edition with the 3.2.0-4-686-pae kernel.    |
|I'm also using gnat, the Gnu Ada Compiler, version 4.6.  When I compile,  |
|I type at the command prompt:                                             |
|                                                                          |
|gnatmake -gnato -fstack-check -gnatE toy_shell.adb                        |
|                                                                          |
|1  with Ada.Text_IO;                                                      |
|2  use Ada.Text_IO;                                                       |
|3                                                                         |
|4  procedure toy_shell is                                                 |
|5                                                                         |
|6    input_char: Character;                                               |
|7                                                                         |
|8  begin                                                                  |
|9                                                                         |
|10   while not (End_Of_File) loop                                         |
|11     Put("Enter a character> ");                                        |
|12     Get(input_char);                                                   |
|13     Put("you entered: " & input_char);                                 |
|14     New_line;                                                          |
|15   end loop;                                                            |
|16                                                                        |
|17 end toy_shell;                                                         |
|                                                                          |
|I hope that is enough info.  Any help would be greatly appreciated        |
|                                                                          |
|Thanks,                                                                   |
|                                                                          |
|Derek"                                                                    |
|--------------------------------------------------------------------------|


Maybe what you want is . . .

  with Ada.Text_IO;
  use Ada.Text_IO;

  procedure Adapted_Toy_Shell is

     input_char: Character;

  begin

   loop
     Put_Line("Enter a character> ");
     exit when End_Of_File(Standard_Input);
     Get(input_char);
     Put("you entered: " & input_char);
     New_line;
   end loop;

 end Adapted_Toy_Shell;

Maybe instead what you want is:

with Ada.Text_IO;
use Ada.Text_IO;

procedure Adapted_Toy_Shell is

   input_char: Character;

begin
   Loop
      Put_Line("Enter a character> ");
      begin
         Get_Immediate(input_char);
      exception
         when End_Error =>
            exit;
      end;
      Put("you entered: " & input_char);
      New_line;
   end loop;
end Adapted_Toy_Shell;



  parent reply	other threads:[~2013-01-04 12:44 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-04  4:32 Trouble with loop in Ada Derek Wyss
2013-01-04 10:59 ` Brian Drummond
2013-01-04 11:11   ` Brian Drummond
2013-01-04 12:44 ` Paul Colin Gloster [this message]
2013-01-04 21:27   ` Derek Wyss
2013-01-05  5:33     ` Randy Brukardt
replies disabled

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