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.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,66144fcff23c0cc6 X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit X-Received: by 10.180.86.201 with SMTP id r9mr13760678wiz.4.1357303465885; Fri, 04 Jan 2013 04:44:25 -0800 (PST) Path: o9ni726wio.1!nntp.google.com!feeder1-2.proxad.net!proxad.net!feeder1-1.proxad.net!ecngs!feeder2.ecngs.de!feeder.erje.net!eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!mx04.eternal-september.org!.POSTED!not-for-mail From: Paul Colin Gloster Newsgroups: comp.lang.ada Subject: Re: Trouble with loop in Ada Date: Fri, 4 Jan 2013 12:44:25 +0000 (UTC) Organization: A noiseless patient Spider Message-ID: References: Mime-Version: 1.0 Injection-Date: Fri, 4 Jan 2013 12:44:25 +0000 (UTC) Injection-Info: mx04.eternal-september.org; posting-host="d92aebbb4b3e01995552231cf3b30fbc"; logging-data="24798"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19/+auQ3q/OsLk3guSLCPUaJ1ZaCjbctA5wokyvIY1EWA==" User-Agent: slrn/0.9.9p1 (Linux) Cancel-Lock: sha1:2acIOAmF1mfF8MtC0nbQXmipvnk= Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Date: 2013-01-04T12:44:25+00:00 List-Id: On 2013-01-04, Derek Wyss 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;