Presentation is loading. Please wait.

Presentation is loading. Please wait.

ITEC 320 Lecture 11 Application Part Deux Look Ahead.

Similar presentations


Presentation on theme: "ITEC 320 Lecture 11 Application Part Deux Look Ahead."— Presentation transcript:

1 ITEC 320 Lecture 11 Application Part Deux Look Ahead

2 Applications / Look ahead Review In-class coding What did you learn?

3 Applications / Look ahead Outline Look ahead

4 Applications / Look ahead Input What are the problems with ADA input? What would need to be added to solve this?

5 Applications / Look ahead Example EOL: Boolean; c: Character; -- Caution: This example ignores EOL begin lookAhead(c, EOL); put(c); -- Output is 'H' lookAhead(c, EOL); put(c); -- Output is 'H' get(c); lookAhead(c, EOL); put(c); -- Output is 'e’ end example; Assumes input Hello

6 Applications / Look ahead Motivation Allows you to figure out how to read next bit of input lookAhead(c, EOL); -- Use get to input if Ada.Characters.Handling.Is_Digit(c) then Ada.Integer.Text_io.get(n); -- Get an integer else Ada.Text_io.get(c); -- Get a character end if;

7 Applications / Look ahead Motivation Allows multiple portions of code to access the same input Loop conditionals loop LookAhead(c, EOL); exit when is_Something(c); -- do something with c get(c); end loop; For example, when reading 123+456 This can be used to help a compiler How else could this be accomplished?

8 Applications / Look ahead Issue What happens when you hit the end of line? Value returned depends on which way the wind blows EOL: Boolean; c: Character; begin loop lookAhead(c, EOL); if EOL then – End of line Ada.text_IO.Skip_line; else if is_digit(c) then -- do a numeric get else -- do a character get end if; end if; end loop;

9 Applications / Look ahead Review EOL false –Doesn’t advance input stream –Will return same value until some form of get is called EOL true –What it returns doesn’t matter

10 Applications / Look ahead Longer examples Web examples

11 Applications / Look ahead White space What is white space? Code to skip white space?

12 Applications / Look ahead Others Java –java.io.PushbackInputStream(InputStream) - constructs a stream that can be used to push back one byte –java.io.PushbackInputStream(InputStream, int size) - constructs a stream that can be used to push back size bytes –void unread(int b) pushes back the byte b which will be input again by the next read. Only one byte can be pushed back at a time. C++ –unget and putback C –ungetc

13 Applications / Look ahead Example Given a string, compute recursively (no loops) the number of times lowercase "hi" appears in the string.

14 Applications / Look ahead Summary Application coding Other languages


Download ppt "ITEC 320 Lecture 11 Application Part Deux Look Ahead."

Similar presentations


Ads by Google