Download Week5.2

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Positional notation wikipedia , lookup

Approximations of π wikipedia , lookup

Elementary mathematics wikipedia , lookup

Transcript
CMP 131
Introduction to Computer
Programming
Violetta Cavalli-Sforza
Week 5, Lecture 2 (Tuesday)
TODAY
• Input/Output and Formatting
• Your questions on everything before the
Quiz tomorrow
Input/Output (Read/Write) Procedures
• Definitions:
– Input Operation:
• An instruction that reads data into memory.
– Output Operation:
• An instruction that displays information stored
in memory.
– Procedure:
• A piece of code that is invoked from within the
program and returns control to the program
when finished
– I/O Procedure:
• Pascal procedure that performs I/O operation.
– Procedure Call Statement:
• An instruction that calls or activates a
procedure.
Input/Output (Read/Write) Procedures
• Data can be stored in memory in
three different ways:
– Associated as a constant
– Assigned to a variable
– Read into a variable
• Reading is used if the data varies
each time the program executes.
• Input/output procedures are supplied
as part of Pascal compiler. Their
names are standard identifiers.
The Same Identifier has Different
Meanings in Different Places
• When a variable name occurs in a read/readln and a
write/writeln statement, it has a different meaning:
– write(MyVar) : MyVar is an expression
The arguments to write are expressions (literals, constants,
variables, combinations) whose value is retrieved for display
– read(MyVar) : MyVar is interpreted as the address of a memory
location to read into.
You cannot have an expression as an argument to read
• Similarly, when a variable name occurs in an assignment
statement, it has a different value on the right hand side
(RHS) of the := and on the left hand side of the :=
– On the RHS, it is (part of) an expression whose value is being
retrieved
– On the LHS, it is the address of a memory location where the
RHS value will be stored.
Reading Data …
• Procedures: read, readln
• Read data from standard input device “input”
(e.g. keyboard)
• Syntax:
read/readln(inloc1,
inloc2,
…,
inlocN)
inlocX is a location where to store the data
• Examples:
read (SqMeters);
readln (Letter1, Letter2, Letter3);
read (Age, FirstInitial)
• Commas separate the variable names in input
list
Reading Data …
• Use write/writeln to display a prompt message when
the user is required to enter data
– Otherwise the program is waiting and you don’t know why or
what to enter.
• The order of data enter must correspond to the order of
variables in the input list
• Reading numeric data:
– Insert one or more blanks between numeric data items
• Reading character or string data:
– Don't insert any blanks between consecutive data items unless
the blank character is one of the data items being read
Read vs. Readline Procedure
• Read:
– Will read from input just as much as it needs for its
arguments and leave the rest to be consumed later.
– Extra characters on the data line after a read
operation are not read until the next read or readln
operation
• Readln
– Will read from input just as much as it needs for its
arguments
– It waits for a Return/Enter key character
– Extra characters on the data line between what is
needed and the end of line will be ignored after
ReadLn is finished
PROGRAM ReadTest;
VAR x,y: integer;
BEGIN
write('Type 2 integers separated by a space > ');
read(x); writeln; writeln('Read x ',x);
read(y); writeln; writeln('Read y ',y);
writeln('Type ENTER to exit program.'); readln;
END.
PROGRAM ReadLnTest;
VAR x,y,z: integer;
BEGIN
writeln('Type 2 or more integers separated by a space.');
writeln('Terminate your input by pressing ENTER.');
readln(x,y);
writeln('Read x ',x,' and y ',y);
read(z);
writeln('Read z ',z);
END.
Writing/Displaying Data
• Procedures: write, writeln
• Write data to standard output device “output” (e.g.
terminal)
• Syntax:
write/writeln(expr1, expr2, …, exprN)
where exprX is an expression, whose value is to be
written, with optional formatting information
• Examples:
writeln (Letter1, Letter2, Letter3);
write (‘Age = ’, Age, ‘First Initial = ’,FirstInitial)
write (SqMeters:10:2);
• Commas separate the variable names in output list
• Writes every argument in the output list in the order in
which it is given.
write vs. writeln Procedure
• writeln
– used to display a line of program output,
including a newline at the end; cursor
advances to the next line after the output is
displayed.
– without any output list instructs the output
device to advance by a blank line
• write
– Cursor doesn't advance to the next line after
the output is displayed.
Self-Check
• What is the output if the entered data are 5 7?
writeln (‘Enter two integers>’);
readln(M, N);
M := M + 5;
N := 3 + N;
writeln (‘M = ‘, M);
writeln (‘N = ‘, N);
• What of the output of this code?
write (‘My name is’);
writeln (‘Doe, Jane’);
writeln ;
write(‘I live in ‘);
write(‘Ann Arbor, MI’);
writeln (‘and my zip code is ‘, 48109);
No Formatting with write/writeln
• Integer values: take the space they need
• Real values: Most Pascal compilers use
scientific
notation
(floating-point
notation) to display real values, but you can
change that with formatting directives.
• Character values display as themselves,
without quotes
• Boolean values display as FALSE and TRUE
with no quotes
• String literals, the characters inside the
quotes are printed, but not the quotes
themselves
PROGRAM TestOutputNoFormat;
BEGIN
writeln('An integer with no formatting : ', 45);
writeln('A real with no formatting: ', 45.67);
writeln('A character with no formatting: ', '#');
writeln('Boolean values, no formatting : ', false, '
and ', true);
END.
Formatting Integer Output
 Formatting Integer Values – b stands for blank space
Value
234
-234
Format
:4
:5
:1
:Len
:4
:5
:1
Printed Output
b234
bb234
234
bb234 (if Len=5)
-234
b-234
-234
Formatting Integer Output
• Add the symbol ‘:n’ to the integer output list item,
where n specifies the number of digits to be
displayed (field width).
• The digits will be right-justified.
• For negative numbers, the minus sign is included in
the counts of digits displayed
 The format specification ‘:1’ can always be used to
display any integer values without leading blanks.
 The field width specification may be a variable, or
even an expression
 The syntax for each integer item in an output list is:
<integer expression>:<integer expression>
PROGRAM TestOutputIntFormat;
VAR Dollars, Cents : integer;
BEGIN
Dollars := 5; Cents := 33;
writeln('Your collection was worth ');
writeln(Dollars : 1, ' dollars', ' and ', Cents :1, ' cents. ');
writeln(Dollars : 2, ' dollars', ' and ', Cents :2, ' cents. ');
writeln(Dollars : 3, ' dollars', ' and ', Cents :3, ' cents. ');
writeln(Dollars : 4, ' dollars', ' and ', Cents :4, ' cents. ');
writeln(Dollars : 5, ' dollars', ' and ', Cents :5, ' cents. ');
Dollars := -2; Cents := 89;
writeln('but is now worth ');
writeln(Dollars : 1, ' dollars', ' and ', Cents :1, ' cents. ');
writeln(Dollars : 2, ' dollars', ' and ', Cents :2, ' cents. ');
writeln(Dollars : 3, ' dollars', ' and ', Cents :3, ' cents. ');
writeln(Dollars : 4, ' dollars', ' and ', Cents :4, ' cents. ');
writeln(Dollars : 5, ' dollars', ' and ', Cents :5, ' cents. ');
END.
Formatting Real Output
• Examples:
Value
3.14159
-3.14159
-124.3163
b stands for blank space
Format
:5:2
:4:2
:3:2
:5:1
:8:5
:9
:9
:4:2
Printed Output
b3.14
3.14
3.14
bb3.1
b3.14159
3.142E+00
-3.14E+00
-124.32
Formatting Real Output
• Total field width & desired number of decimal places
should be indicated.
• Add “:n:d“ to the integer.
– n = total field width
– d = number of decimal digits.
• Total field width should be large enough to
accommodate all digits before and after the decimal
point
– Pascal will use the extra space it needs anyhow so your nicely
formatted data may not look so well formatted after all.
• Decimal point & sign for negative numbers are included
in the count.
• It is possible to use the form “:n“ for real numbers. In
this case, the real value is printed in scientific notation
using a total of n print positions.
Formatting Real Output
• Eliminating Leading Blanks:
– Choose a format that will display the smallest value
expected without leading blanks..
– Examples:
29397 :1
is displayed as29397
99397.567 :3:1
is displayed as99397.6
– To display a real value without leading blanks, use format
specification ‘:3:1’ for one decimal place or ‘:4:2’ for two
decimal places.
– If you use ‘:n’, the scientific notation will be displayed.
Formatting Character & String
Output
• Formatting Strings:
– A string value is always printed right-justified in its field.
– If the field width is too small to accommodate the string value,
Pascal will take the space it needs.
• Examples:
String
'*'
'ACES'
b stands for blank space
Format
Printed Value
:1
*
:2
b*
:1
ACES
:2
ACES
:3
ACES
:4
ACES
:5
bACES
PROGRAM TestOutputStringFormat;
BEGIN
writeln('ACES':1);
writeln('ACES':2);
writeln('ACES':3);
writeln('ACES':4);
writeln('ACES':5);
writeln('ACES':6);
END.
Self-Check
• Show how the value -15.564 (stored in X)
would be displayed using the following formats
X :8:4
X:8:3 X:8:1
X:8:0
X:8
• Assuming X = 12.345 (type Real) and I = 100
(type Integer). What will the output of the
following statements look like?
writeln(‘X is ‘ :10, X :6:2, ‘I is ‘ :4, I :5);
write(‘I is ‘ :10, I : 1);
writeln(‘X is ‘ :10, X :2:1);