^I ^I Input and Output; the complete program ^P 4.1 INPUT AND OUTPUT OF DATA ^p So far we have seen how to write constant definitions, variable declarations and assignment statemments. The latter can be used to compute new values from values which have been computed previously and from constants. These program elements allow us to specify computations of a restricted kind but they provide no means to vary the data on which the commputations are performed. ^p ^N Example 4.1 ^N ^N ^I Assuming the variable declaration ^p A, D, N, SUM : INTEGER ^P the following statements, obeyed in sequence, compute the sum of the first N terms of the arithmetic series A, A+D, A+2*D, ...., given the values 1 for A, 2 for D and 10 for N: ^p A := 1 ^N ^I D := 2 ; ^N ^I N := 10 ; ^N ^I SUM := N * (2*A + (N-1)*D DIV 2 ^p If we wish to compute the series sum for different values of A, D and N, we have no alternative but to modify the "program" itself, specifically its first three statements. ^N ^N 4.2 BASIC INPUT ^P The role of an input instruction is to read an item of data and store it in a variable, so that subsequently it can be used in some computation. In PASCAL this role is performed by the READ statement. ^N ^N Example 4.1 (continued) ^P We can vary the data on which our "program" works by replacing the first three assignment statements by READ statements: ^P READ (A) ^N ^I READ (D) ^N ^I READ (N) ^N ^I SUM := N * (2*A + (N-1)*D) DIV 2 ^P Now if we supply the following input data, for example: ^P -3 4 100 ^N ^P The data item -3 will be read and assigned to A, then the data 4 will be read and assigned to D, then the data item 100 will be read and assigned to N. We can make the "program" perform a different calculation simply by running it again with different input. ^P In general, the effect of the READ statement READ(V), where V is an INTEGER variable, is to scan forwards through the input data (skipping blank characters) until a data item (which must be an integer number, possible signed) is then assigned to V. ^P The three consecutive READ statements in Example 4.1 could be combined into a single READ statement with the same effect: ^P READ (A, D, N) ^P A, D and N are called parameters of the READ statement. A READ statement may have any number of parameters, all of which must be variables, and for each of these variables one data item is read. ^N ^N 4.3 BASIC OUTPUT ^P The role of an output instruction is to get results out of the computer in some suitable form, eg. printed on paper or displayed on a screen. In PASCAL this role is performed by the WRITE statement. ^N ^N Example 4.2 ^P Continuing from Example 4.1, we could write out the value of the series sum by the following WRITE statement: ^P WRITE (SUM) ^P The following statements, executed in sequence, will read values for A, D and N, compute the series sum, and write out the values of A, D, N and the series sum: ^P READ (A, D, N) ^N ^I SUM := N * (2*A + (N-1)*D) DIV 2 ^N ^I WRITE (A, D, N, SUM) ^P For example, if the input data is: ^P 10 -2 8 ^P then the output would look like this: ^P ........10........-2.........8........24 ^P Observe that a WRITE statement, like a READ statement, may have any number of parameters. However, each parameter of WRITE may be an expression, not necessarily a simple variable and it is the value of this expression which is written. ^N ^N ^P Assuming that M and N are INTEGER variables and that values have been assigned to them, the following statement writes the values of M and N followed by their sum, difference and product: ^P WRITE (M, N, M+N, M-N, M*N) ^N ^N ^N 4.4 THE COMPLETE PROGRAM ^p To buld a complete Pascal program, we must collect together all the necessary definitions, declarations and statements. ^P ^N Example 4.4 ^P Here is an example of a complete Pascal program which performs a simple tax calculaton: ^p ^n ^n ^I PROGRAM COMPUETAX ; ^p ^n ^n Now let us try Exercise 4.2 with a short program. ^P ^P You may terminate this exercise by entering 9 9 9 ^N ^N ^$