Sign in Join
Wiki copytemporary

Basic Pascal Tutorial/Chapter 2/Input: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Basic Pascal Tutorial/Chapter 2/Input

OldNewLine
1+2A - Input (author: Tao Yue, state: changed)
2+
3+Input is what comes into the program. It can be from the keyboard, the mouse, a file on disk, a scanner, a joystick, etc.
4+
5+We will not get into mouse input in detail, because that syntax differs from machine to machine. In addition, today's event-driven windowing operating systems usually handle mouse input for you.
6+
7+The basic format for reading in data is:
8+
9+``` pascal
10+read (Variable_List);
11+```
12+
13+`Variable_List` is a series of variable identifiers separated by commas.
14+
15+`read` treats input as a stream of characters, with lines separated by a special end-of-line character. `readln`, on the other hand, will skip to the next line after reading a value, by automatically moving past the next end-of-line character:
16+
17+``` pascal
18+readln (Variable_List);
19+```
20+
21+Suppose you had this input from the user, and `a, b, c,` and `d` were all integers.
22+
23+`45 64 97`\
24+`1 2 3`
25+
26+Here are some sample `read` and `readln` statements, along with the values read into the appropriate variables.
27+
28+| Statement(s) | a | b | c | d |
29+|-------------------------------|-----|-----|-----|-----|
30+| read (a); read (b); | 45 | 64 | | |
31+| readln (a); read (b); | 45 | 1 | | |
32+| read (a, b, c, d); | 45 | 64 | 97 | 1 |
33+| readln (a, b); readln (c, d); | 45 | 64 | 1 | 2 |
34+
35+When reading in integers, all spaces are skipped until a numeral is found. Then all subsequent numberals are read, until a non-numeric character is reached (including, but not limited to, a space).
36+
37+`8352.38`
38+
39+When an integer is read from the above input, its value becomes `8352`. If, immediately afterwards, you read in a character, the value would be '`.`' since the read head stopped at the first alphanumeric character.
40+
41+Suppose you tried to read in two integers. That would not work, because when the computer looks for data to fill the second variable, it sees the '`.`' and stops since it couldn't find any data to read.
42+
43+With real values, the computer also skips spaces and then reads as much as can be read. However, many Pascal compilers place one additional restriction: a real that has no whole part must begin with `0.` So `.678` is invalid, and the computer can't read in a real, but `0.678` is fine.
44+
45+Make sure that all identifiers in the argument list refer to variables! Constants cannot be assigned a value, and neither can literal values.
46+
47+---
48+*From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 2/Input", as it stood on 2022-08-20 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history