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;
next prev 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