
                 FUN
  Imagine that you're running for President against Calvin 
Coolidge. To win, you must pass Cal in the polls.
  You must pass Cal. ``Pass Cal'' is the correct way to pronounce 
``PASCAL'', the name of the computer language that programmers 
are falling in love with.
  PASCAL is harder to learn than BASIC. But once you've learned 
PASCAL, you have amazing power: you can write fancy programs more 
easily in PASCAL than in BASIC because PASCAL helps organize your 
thinking; and your programs will run faster, too!
  American teachers require kids to master LOGO in elementary 
school, BASIC in high school, and PASCAL in college. Gifted kids 
are given the opportunity to start BASIC and PASCAL even sooner 
___ and so are kids in progressive schools.
  Many high-school seniors take a PASCAL test given by the 
College Board. Seniors who pass can get ``advanced placement'' 
college credit and skip the college's first year of computer 
courses.
  The nicest kinds of PASCAL are Quick PASCAL (published by 
Microsoft) and Turbo PASCAL (published by Borland). They're easy 
to understand, run quickly, and cost little.
  Quick PASCAL runs on the IBM PC and lists for just $99. 
Discount dealers sell it for just $42.
  Turbo PASCAL is available for the IBM PC, Mac, and computers 
using the CP/M operating system. The newest version of Turbo 
PASCAL for the IBM PC is Turbo PASCAL 7, which discount dealers 
sell for $99.
  If you're on a tight budget, which should you buy ___ Quick 
PASCAL or Turbo PASCAL? Since they're very similar to each other, 
you'll probably buy Quick PASCAL because it costs less. Another 
advantage of Quick PASCAL is that it lets you edit your programs 
more easily than Turbo PASCAL. On the other hand, Turbo PASCAL 
runs your programs faster, consumes less RAM and disk space, 
comes with instruction manuals that are larger and more thorough, 
provides on-screen tutorials that are easier to use, understands 
better commands for advanced programming, and is the standard 
against which all other versions are judged. (Quick PASCAL was 
invented just to imitate Turbo PASCAL more cheaply.)
  This chapter explains how to use Quick PASCAL and the most 
common versions of Turbo PASCAL (versions 4, 5.5, and 6).
  If you have Turbo PASCAL 7, follow the instructions for Turbo 
PASCAL 6, which is similar. If you have Turbo PASCAL version 5, 
follow the instructions for version 5.5.
  I'll comment on how other versions of PASCAL differ.
                                               Copy to the hard disk
                                         Quick PASCAL and Turbo 
PASCAL come on a pile of floppy disks. You should copy those 
disks to your hard disk. Here's how.
                                         Quick PASCAL Turn on the 
computer without any floppy in drive A.
                                         The original version of 
Quick PASCAL comes on five 5-inch floppy disks. When you see the 
C prompt, put the Quick PASCAL Setup/Utilities Disk in drive A 
and type ``a:''. The computer will display an A prompt. Type 
``setup''. The computer will say ``Microsoft Quick Pascal Setup 
Program''.
                                         Press ENTER twice. The 
computer will say ``Easy Setup Menu''. Type the letter I. Press 
ENTER four times.
                                         Put the Quick PASCAL 
Program Disk in drive A, and press ENTER. Put the Quick PASCAL 
Advisor Disk in drive A, and press ENTER. Put the Quick PASCAL 
Libraries Disk in drive A, and press ENTER. Put the Quick PASCAL 
Express Disk in drive A; press ENTER twice.
                                         Press R, so that the 
computer says ``Setup Main Menu''. Press X, so that you exit to 
DOS. You'll see an A prompt.
                                         Turn off the computer, 
so you can start fresh.
                                         Turbo PASCAL 4 Turn on 
the computer without any floppy in drive A.
                                         After the C prompt, type 
``md turbo'' (so you're making a subdirectory called TURBO). 
After the next C prompt, type ``cd turbo'' (so you're changing to 
the TURBO subdirectory).
                                         Turbo PASCAL 4 comes on 
three floppy disks. Put one of those disks in drive A, and type 
``copy a:*.*'' (which copies all the floppy's files onto the hard 
disk); follow the same procedure for the other two disks.
                                         Turn off the computer, 
so you can start fresh.
                                         Turbo PASCAL 5.5 and 6 
Turn on the computer without any floppy in drive A.
                                         Your Turbo PASCAL comes 
on four 5-inch floppy disks. When you see the C prompt, put the 
Install/Compiler disk in drive A, and type ``a:install''. The 
computer will say ``Turbo PASCAL Installation Utility''.
                                         Press ENTER four times. 
You'll see ``C:\TP''. Press the BACKSPACE key, then type URBO so 
you see ``C:\TURBO''. At the end of the URBO, press ENTER.
                                         Press the F9 key.
                                         If you're using version 
6, put the Turbo Vision/Tour disk in drive A, press ENTER, put 
the Help disk in drive A, press ENTER, put the BGI/Utilities disk 
in drive A, and press ENTER twice. (If you're using version 5.5, 
put the Tour/Online Help disk in drive A, press ENTER, put the 
OOP/Demos/BGI/Doc disk in drive A, press ENTER, put the 
Utilities/Misc disk in drive A, and press ENTER twice.)
                                         You'll see an A prompt. 
Turn off the computer, so you can start fresh.
            Start PASCAL
  To start using PASCAL, turn on the computer without any floppy 
in drive A.
  If you've put the DO.BAT file onto your hard disk (as I 
recommended in the MS-DOS chapter), your life is easy! Just type 
``do qp'' to do Quick PASCAL; type ``do turbo'' to do Turbo 
PASCAL.
  If you have not put DO.BAT onto your hard disk, your life is 
harder! You must type ``cd qp'' and then ``qp'' to do Quick 
PASCAL; you must type ``cd turbo'' and then ``turbo'' to do Turbo 
PASCAL.
  Press the CAPS LOCK key, so the computer will automatically 
capitalize everything you type (and your typing will look like 
the examples in this chapter).
  Here's what to do next.
  Quick PASCAL You don't have to do anything!
  Turbo PASCAL 4 Press the E key (which means ``Edit''). Make 
sure the cursor is at a blank part of the screen. (If it's not, 
press the DELETE key several times.)
  Turbo PASCAL 5.5 Press the F6 key (so the cursor moves to the 
bottom of the screen). Then press the F6 key while holding down 
the Alt key (so the bottom of the screen says ``Output''). Then 
tap the F6 key without the Alt key (so the cursor moves to the 
top part of the screen).
  Turbo PASCAL 6 Press F10 then W then the letter O (so the 
cursor moves to the bottom of the screen). Press F10 again then W 
then T. Press F6.

           How to program
  For example, type this PASCAL program:
BEGIN;
WRITELN('I WOULD LIKE TO KISS');
WRITELN('YOUR BOTTLE OF WINE');
END.
  The program begins with the word BEGIN and ends with the word 
END. Every line ends with a semicolon, except that the bottom 
line ends with a period. The middle lines say WRITELN, which 
tells the computer to WRITE a LiNe.
  Naming the program If you wish, you can put an extra line at 
the top of the program, to give the program a name. The name can 
be up to 8 letters long. For example, if you want to name the 
program WINE, you can begin the program by saying PROGRAM WINE, 
like this:
PROGRAM WINE;
BEGIN;
WRITELN('I WOULD LIKE TO KISS');
WRITELN('YOUR BOTTLE OF WINE');
END.
  Colors If your screen can display colors, here's what you see. 
In Turbo PASCAL, the program is yellow. In Quick PASCAL, most of 
the program is white, but the keywords (PROGRAM, BEGIN, and END) 
turn purple and the strings (`I WOULD LIKE TO KISS' and `YOUR 
BOTTLE OF WINE') turn light blue.
                                         Run the program When you 
finish typing the program, tell the computer to run it. Here's 
how. For Turbo PASCAL 4, press F10 then R. For Turbo PASCAL 5.5 & 
6, press F10 then type RR. For Quick PASCAL, press F5; and if the 
computer asks ``Rebuild?'', press ENTER.
                                         If you typed the program 
correctly, the computer will write:
I WOULD LIKE TO KISS
YOUR BOTTLE OF WINE
                                         If you typed the program 
incorrectly, the computer will say:
Error
(If you're using Quick PASCAL, then press ENTER.) The computer 
will put the cursor near your error. Correct the error (by using 
the arrow keys, DELETE key, and other word-processing keys), then 
tell the computer to run the program again.
                                         After a good run After 
the computer has run the program successfully, do the following: 
for Quick PASCAL, press ENTER; for Turbo PASCAL 4, press ENTER 
then E; for Turbo PASCAL 5.5 and 6, you don't have to do 
anything!
                                         You'll see the program 
again. If you wish, edit the program again and run the edited 
version.
                                          Other versions Some 
versions of PASCAL require you to say PROGRAM WINE at the top of 
the program; if you don't say PROGRAM WINE, those versions gripe.
                                         Ancient versions require 
the top line to say this:
PROGRAM WINE(INPUT,OUTPUT);
                                         Some Apple 2 and Mac 
versions automatically indent all lines between BEGIN and END and 
force you to omit the semicolon next to the word BEGIN.

                                                 Advanced editing
                                         While typing and editing 
your program, you can edit faster by using these tricks. . . . 
                                         To delete a whole line, 
move to that line. Then tap the Y key (which means ``Yank it 
out'') while holding down the CONTROL key.
                                         To insert an extra line 
in the middle of your program, move to where you want the extra 
line to begin. Press the ENTER key, then the up-arrow.
                                         Here's how to delete or 
move a block of text. . . . 
                                         Turbo PASCAL 6 and Quick 
PASCAL Put the cursor at the block's beginning. Hold down the 
SHIFT key while moving to the block's end, so the entire block 
changes color.
                                         Then say what you want 
to do to the block. If you want to delete the block, press the 
DELETE key for Quick PASCAL; press CONTROL with DELETE for Turbo 
PASCAL 6. If you want to move the block instead, press SHIFT with 
DELETE, then point where you want the block to appear and press 
SHIFT with INSERT.
                                         Turbo PASCAL 4 and 5.5 
Put the cursor at the block's beginning. Press CONTROL with K 
(which means ``kommand''), then press B (which means ``block'').
                                         Point at the character 
after the block's end. Press CONTROL with K, then press K (which 
means ``klose''). The entire block changes color.
                                         Then say what you want 
to do to the block. If you want to delete the block, press 
CONTROL K then Y (``which means ``yank''). If you want to move 
the block instead, point where you want the block to appear and 
press CONTROL K then V (which means ``visible'').
          Save your program
  Here's how to copy your program onto the hard disk.
  Quick PASCAL Press the Alt key. Say ``File Save'' by typing FS. 
If the computer says ``File Name'', type a name for the program 
(such as WINE) and press ENTER.
  Turbo PASCAL 4 and 5.5 Press the F2 key. If the computer says 
``Rename'', type a name for the program (such as WINE) and press 
ENTER.
  Turbo PASCAL 6 Press the F2 key. If the computer says ``Save 
file as'', type a name for the program (such as WINE) and press 
ENTER.

           Switch programs
  Here's how to switch to other programs.
  Quick PASCAL Press CONTROL with F4. If the computer asks ``Do 
you want to save?'', press N. The screen becomes blank. Press the 
Alt key.
  If you want to invent a new program, say ``File New'' (by 
typing FN). If instead you want to retrieve a saved program, do 
this: say ``File Open'' (by typing FO), type the program's name 
(such as WINE), and press ENTER.
  Turbo PASCAL 4 and 5.5 If you want to invent a new program, 
press F10 then type FN (which means File New). If instead you 
want to retrieve a saved program, do this: press F3 and ENTER; 
point at the program you want to use (by using the arrow keys and 
PAGE DOWN key) and press ENTER.
  If the computer asks ``Save?'', press N.
  Turbo PASCAL 6 Press Alt with F3. If the computer asks 
``Save?'', press N.
  If you want to invent a new program, press F10 then type FN 
(which means File New). If instead you want to retrieve a saved 
program, do this: press F3 and ENTER; point at the program you 
want to use (by using the arrow keys) and press ENTER.

          Multiple writing
  This program belongs in your bathroom:
BEGIN;
WRITELN('FAR','TIN','G');
END.
The computer will write FAR, TIN, and G all on the same line, 
like this:
FARTING

                Exit
  When you finish using PASCAL, here's how to return to the DOS 
prompt.
  Quick PASCAL Press the Alt key. Say ``File eXit'' (by typing 
FX). If the computer asks ``Do you want to save?'', press N.
  If you're using a fancy color monitor (such as VGA), you'll 
discover that Quick PASCAL has changed the monitor's colors. To 
reset the colors, turn the computer off and then back on.
  Turbo PASCAL Press Alt with X. If the computer asks ``Save?'', 
press N.
                                                     EXE files
                                         The computer can't 
really understand PASCAL. Whenever you tell the computer to run a 
PASCAL program, the computer secretly creates a second version of 
your program. The second version is written in machine language 
instead of PASCAL. (Machine language is the only language the 
computer really understands.) Then the computer runs the 
machine-language version of your program.
                                         The program you typed 
(in PASCAL) is called the source code. The program the computer 
runs (in machine language) is called the object code.
                                         When the computer is 
translating your program from PASCAL to machine language (from 
source code to object code), the computer is said to be compiling 
your program. Since Quick PASCAL and Turbo PASCAL make the 
computer compile your PASCAL programs, Quick PASCAL and Turbo 
PASCAL are called PASCAL compilers.
                                         Example Suppose you type 
a PASCAL program, then tell the computer to save it on the hard 
disk and call it WINE. The computer will copy it to your hard 
disk's PASCAL subdirectory, where it will be called ``WINE.PAS''. 
The ``.PAS'' means ``source code written in PASCAL''.
                                         When you tell the 
computer to run the WINE.PAS program, the computer translates it 
to machine language. The machine-language version (the object 
code) is called ``WINE.EXE''. The ``.EXE'' means ``executable 
object code written in machine language''.
                                         If you're using Quick 
PASCAL, the computer automatically puts WINE.EXE in your disk's 
PASCAL subdirectory. If you're using Turbo PASCAL instead, the 
computer puts WINE.EXE in the RAM but not on disk ___ unless you 
give a special ``Destination Disk'' command.
                                         After the computer has 
run your program and put WINE.EXE on disk, you can run the 
WINE.EXE machine-language program without using PASCAL. Here's 
how: quit PASCAL, then do a ``cd'' to the PASCAL subdirectory, 
then type ``wine''.
                                         Experiment Try the 
following experiment. . . . 
                                         Step 1: type a PASCAL 
program.
                                         Step 2: tell the 
computer to save the program and call it WINE. The computer will 
call your program WINE.PAS and copy it to PASCAL's subdirectory. 
(If you're using Turbo PASCAL, the computer will rename a 
previous WINE.PAS to WINE.BAK.)
                                         Step 2: if you're using 
Turbo PASCAL, say ``Destination Disk''. Here's how. Press F10 
then C. If you see ``Destination Memory'' instead of 
``Destination Disk'', press D. Then return to the editor (by 
pressing F6 for version 4, Esc for version 5.5).
                                         Step 3: run the program. 
The computer will invent WINE.EXE (a machine-language version of 
WINE) and put it in PASCAL's subdirectory. Then the computer will 
run that machine-language program. (If you're using Quick PASCAL, 
the computer will also produce a WINE.QDB to help the Quick 
DeBugger.)
                                         Step 4: exit from 
PASCAL, so you see the DOS prompt.
                                         Step 5: notice that you 
can run WINE.EXE without using PASCAL. Specifically, go into 
PASCAL's subdirectory (by typing ``cd \qp'' for Quick PASCAL, or 
``cd \turbo'' for Turbo PASCAL), then type ``wine'' (which runs 
the WINE.EXE program).

                MATH
  PASCAL distinguishes between integers and real numbers. Here's 
how PASCAL defines them. . . . 

              Integers
  An integer contains no decimal point and no exponent.
IntegerNot an integerComment
-27   -27.0     An integer contains no decimal point.
50000 5E4       An integer contains no exponent.

            Real numbers
  A real number contains a decimal point or the letter E. For 
example, it can be 0.37 or 5.0 or 6E24. If it contains a decimal 
point, you should put digits before and after the decimal point.
CorrectIncorrect
0.37  .37
5.0   5.
   Other versions Old versions of PASCAL require you to put a 
decimal point in every real number; so instead of saying 6E24, 
you must say 6.0E24.

             Arithmetic
  Like BASIC, PASCAL lets you do arithmetic by using the symbols 
+, -, *, and /.
  If you combine real numbers, the answer is real:
4.9+2.1 is the real number 7.0 (not 7)
5.0-5.0 is the real number 0.0 (not 0)
  If you combine a real with an integer, the answer is still 
real:
3.5*2 is the real number 7.0 (not 7)
3/.5  is the real number 6.0 (not 6)
  If you combine integers, the answer is an integer, except for 
division:
7+4 is the integer 11
7-4 is the integer 3
7*4 is the integer 28
7/4 is the real number 1.75
This program makes the computer do all that arithmetic:
BEGIN;
WRITELN(7+4);
WRITELN(7-4);
WRITELN(7*4);
WRITELN(7/4);
END.
The computer will write:
11
3
28
 1.7500000000E+00
(Quick PASCAL writes extra zeros, like this: 
1.75000000000000E+0000.)
                                         Let's try writing all 
those numbers on the same line:
BEGIN;
WRITELN(7+4,7-4,7*4,7/4);
END.
The computer will write:
11328 1.7500000000E+00
                                         Like BASIC, PASCAL lets 
you use parentheses to indicate order of operations.
                                          Other versions Some 
versions of PASCAL automatically write blank spaces in front of 
integers.
                                         Some versions of PASCAL 
write 1.75 instead of 1.7500000000E+00. Some Apple 2 and Mac 
versions automatically round the answer and write 1.8e+0.

                                                     Functions
                                         PASCAL lets you use 
these functions:
Function                                       Meaning
ABS(-6)                                        the absolute value 
of -6; it's 6
SQR(3)                                         the square of 3; 
it's 9
SQRT(9)                                        the square root of 
9; it's 3.0
SIN(2)                                         the sine of 2 
radians
COS(2)                                         the cosine of 2 
radians
ARCTAN(2)                                      the arctangent of 
2, in radians
EXP(5)                                         e5, where e is 
2.71828182845904523536
LN(9)                                          the natural 
logarithm of 9; it's loge 9
The number in parentheses can be either an integer or a real. The 
computer's answer is usually a real (exception: for ABS and SQR, 
the computer's answer is an integer if the number in parentheses 
is an integer).
                                         For example, this 
program computes the square root of 9:
BEGIN;
WRITELN(SQRT(9));
END.
The computer will write:
 3.0000000000E+00
                                         Don't confuse SQR with 
SQRT. The SQR means square; the SQRT means square root. To find 
the square of 3, say SQR(3) or 3*3. In BASIC, you could say 3^2; 
but in PASCAL, you can't use the symbol ^; use SQR instead.
                                         To turn a real number 
into an integer, use these functions:
Function                                       Meaning
ROUND(3.9)                                     3.9 rounded to the 
nearest integer;                                                 
it's 4
TRUNC(3.9)                                     3.9 truncated (by 
deleting the .9);                                                
it's 3
                                          Other versions For 
UCSD PASCAL, say ATAN instead of ARCTAN.
                                         If you're using UCSD 
PASCAL on an Apple and want to use the functions SQRT, SIN, COS, 
ATAN, EXP, and LN, you must insert this line immediately under 
the line that says PROGRAM:
USES TRANSCEND;


          SIMPLE VARIABLES
  You can use variables:
Program             Meaning
VAR                 Here are the variables. . . . 
   FRED,MARTHA: INTEGER;  FRED & MARTHA integers;
   JILL,TOM: REAL;    JILL & TOM are reals.
BEGIN;              Now let's begin the program.
FRED:=2;            FRED (an integer) is 2.
MARTHA:=4+5;        MARTHA (an integer) is 9.
JILL:=9.2;          JILL (a real) is 9.2.
TOM:=1.4+2.3;       TOM (a real) is 3.7.
WRITELN(FRED*MARTHA,JILL+TOM);Write 18 and 1.2900000000E+01.
  The top line says VAR. The word VAR doesn't have a semicolon 
after it; the lines underneath VAR are indented. The indentation 
is optional but a good habit. To indent easily, tap the TAB key.
  For Quick PASCAL, the TAB key indents 8 spaces. For Turbo 
PASCAL, the TAB key indents just enough to get past the word 
above (VAR).
  On the indented lines, say which variables are integers and 
which are reals.
  Once you've indented a line, the computer automatically indents 
all the lines underneath it. If the computer automatically 
indents a line that you don't want to indent, here's how to undo 
the indentation: for Turbo PASCAL 5.5, press the BACKSPACE key 
once; for Turbo PASCAL 4, press the left-arrow key several times; 
for Quick PASCAL, tap the TAB key while holding down the SHIFT 
key.
  In PASCAL, a variable's name can be as long as you like: the 
name can be FRED or WASHINGTON or even 
SUPERCALIFRAGILISTICEXPIALIDOCIOUS. The name can consists of 
letters and digits, but must begin with a letter.
  In PASCAL, you must put a colon in front of the equal sign. . . 
. 
CorrectIncorrect
FRED:=2;FRED=2;
  If you want to add a line saying PROGRAM WINE, put that line 
above the VAR line.
  You can't set an integer variable equal to a real. For example, 
if you say ___ 
VAR
   ANN: REAL;
   BILL: INTEGER;
BEGIN;
ANN:=3.9;
you cannot then say:
BILL:=ANN;
Instead, you must say ___ 
BILL:=ROUND(ANN);
or
BILL:=TRUNC(ANN);
   Other versions Some versions of PASCAL do not automatically 
indent the lines for you.
  Old versions of PASCAL look at just the first 8 characters of a 
variable's name, and ignore the rest of the name.
                                                      READLN
                                         Instead of saying INPUT, 
PASCAL says READLN.
VAR
   X: REAL;
BEGIN;
WRITELN('WHAT IS YOUR FAVORITE NUMBER?');
READLN(X);
WRITELN('ITS SQUARE ROOT IS',SQRT(X);
END.
When you run the program, the computer asks:
WHAT IS YOUR FAVORITE NUMBER?
Then the READLN(X) statement makes the computer wait for you to 
input a value of X. The computer expects you to input a real 
number; if you input an integer instead, the computer will 
automatically turn it into a real. For example, if you input 9, 
the computer will automatically turn it into 9.0 and will write:
ITS SQUARE ROOT IS 3.0000000000E+00
                                          Other versions For old 
versions of PASCAL, say READ instead of READLN.


                 IF
  The computer can criticize your age:
VAR
   AGE: INTEGER;
BEGIN;
WRITELN('HOW OLD ARE YOU?');
READLN(AGE);
IF AGE<18 THEN
   BEGIN;
   WRITELN('YOU ARE STILL A MINOR.');
   WRITELN('AH, THE JOYS OF YOUTH!');
   END;
WRITELN('GLAD TO MEET YOU.');
END.
  That program makes the computer ask:
HOW OLD ARE YOU?
If you input a number less than 18, the computer replies:
YOU ARE STILL A MINOR.
AH, THE JOYS OF YOUTH!
GLAD TO MEET YOU.
If you input a number that's at least 18, the computer says just 
this:
GLAD TO MEET YOU.
  In that program, the line that says ``IF'' is a heading (the 
lines underneath it are indented), so do not put a semicolon at 
the end of that line!

                ELSE
  To make your program fancier, insert the shaded lines:
VAR
   AGE: INTEGER;
BEGIN;
WRITELN('HOW OLD ARE YOU');
READ(AGE);
IF AGE<18 THEN
   BEGIN;
   WRITELN('YOU ARE STILL A MINOR.');
   WRITELN('AH, THE JOYS OF YOUTH!');
   END 
ELSE                                               
    BEGIN;                                         
    WRITELN('I AM GLAD TO HEAR YOU ARE AN ADULT!');
    WRITELN('NOW WE CAN HAVE SOME ADULT FUN!');    
    END;                                           
WRITELN('GLAD TO MEET YOU.');
END.
  If your age is less than 18, the computer will say:
YOU ARE STILL A MINOR.
AH, THE JOYS OF YOUTH!
GLAD TO MEET YOU.
If your age is not less than 18, the computer will say:
GLAD TO HEAR YOU ARE AN ADULT!
NOW WE CAN HAVE SOME ADULT FUN!
GLAD TO MEET YOU.
  In that program, the line that says ``ELSE'' is a heading, so 
do not put a semicolon after the ``ELSE''. Immediately above the 
word ELSE, you'll see the word END; do not put a semicolon after 
that END.
                                                      Symbols
                                         Like BASIC, PASCAL uses 
these symbols in the IF line:
<      >      =      <=      >=      <>      AND      OR
                                         In the IF line, the 
symbol for ``equals'' is ``=''; outside the IF line, the symbol 
for ``equals'' is ``:=''.
                                         Instead of saying ___ 
IF I=3 OR I=8 OR I=25 OR I=95 THEN
you can say:
IF I IN [3,8,25,95] THEN
That means ``If I is in this set of numbers ___ 3,8,25,95 ___ 
then . . . ''

                LOOPS
  To create a loop, say FOR or REPEAT or WHILE. Here's how to use 
those words.

                 FOR
  Like BASIC, PASCAL uses the word FOR. This program makes the 
computer get drunk:
VAR
   I: INTEGER;
BEGIN;
FOR I := 7 TO 10 DO
    BEGIN;
    WRITELN('I DRANK ',I,' BOTTLES OF BEER');
    WRITELN('HOORAY!');
    END;
WRITELN('NOW I AM DEAD DRUNK');
END.
  Since the FOR line is a heading, do not put a semicolon at the 
end of it. When you run the program, the computer will write:
I DRANK 7 BOTTLES OF BEER
HOORAY!
I DRANK 8 BOTTLES OF BEER
HOORAY!
I DRANK 9 BOTTLES OF BEER
HOORAY!
I DRANK 10 BOTTLES OF BEER
HOORAY!
NOW I AM DEAD DRUNK
  If you want the computer to count backwards ___ from 10 down to 
7 ___ change the FOR line to this:
FOR I := 10 DOWNTO 7 DO

               REPEAT
  This program plays a guessing game:
VAR
   GUESS: INTEGER;
BEGIN;
WRITELN('I AM THINKING OF A NUMBER FROM 1 TO 10');
REPEAT
      WRITELN('YOU HAVE NOT GUESSED MY NUMBER YET');
      WRITELN('WHAT IS MY NUMBER?');
      READLN(GUESS);
UNTIL GUESS=6;
WRITELN('CONGRATULATIONS! YOU GUESSED IT! MY NUMBER IS 6');
END.
  The computer begins the game by saying:
I AM THINKING OF A NUMBER FROM 1 TO 10
Then the computer REPEATs the following procedure several times: 
it says YOU HAVE NOT GUESSED MY NUMBER YET, asks WHAT IS MY 
NUMBER, waits for the human to input a guess, and checks whether 
the human guessed 6. It repeats that procedure again and again, 
UNTIL the human finally guesses 6. Then the computer says:
CONGRATULATIONS! YOU GUESSED IT! MY NUMBER IS 6
  In that program, the computer REPEATs the indented lines, UNTIL 
GUESS is 6.
  If a program contains the word REPEAT, it must also contain the 
word UNTIL. The lines between REPEAT and UNTIL are done 
repeatedly. After each time, the computer checks whether to 
repeat again.
  Since the REPEAT line's a heading, it has no semicolon.
  Like an IF line, the UNTIL line can contain these symbols:
<     >     =     <=     >=     <>     AND     OR     IN
  Here's another example. Let's make the computer start
with the number 3 and keep doubling it, like this:
3
6
12
24
etc.
Let's make the computer keep doubling but not go over 1000. So 
altogether, let's make the computer write:
3
6
12
24
48
96
192
384
768
THOSE ARE ALL THE NUMBERS BELOW 1000
                                         Here's the program:
VAR
   I: INTEGER;
BEGIN;
I:=3;                                              Start I at 3.
REPEAT                                             Repeat the 
indented lines until I>=1000.
      WRITELN(I);
      I:=I*2;
UNTIL I>=1000;
WRITELN('THOSE ARE ALL THE NUMBERS BELOW 1000');
END.

                                                       WHILE
                                         The word WHILE resembles 
the word REPEAT. For example, the previous program (which doubled 
3 repeatedly) can be rewritten to use WHILE:
VAR
   I: INTEGER;
BEGIN;
I:=3;                                              Start I at 3.
WHILE I<1000 DO                                    If I<1000, do 
the indented lines, and repeat them
      BEGIN;                                       again and 
again, as long as I remains below 1000.
      WRITELN(I);
      I:=I*2;
      END;
WRITELN('THOSE ARE ALL THE NUMBERS BELOW 1000');
END.
                                         The indented lines say 
to WRITELN(I) and then double I. The computer repeats those 
indented lines many times. Before each repetition, the computer 
checks to make sure I is still below 1000. When I passes 1000, 
the computer stops looping and proceeds to the next line, which 
writes THOSE ARE ALL THE NUMBERS BELOW 1000.
                                         These two structures 
resemble each other:
Using REPEAT                                       Using WHILE
REPEAT                                             WHILE I<1000 
DO
      etc.                                               BEGIN;
UNTIL I>=1000;                                           etc.
                                                         END;
Each of those structures makes the computer repeat the indented 
lines and check whether I is still below 1000. If you say REPEAT, 
the check is done at the loop's bottom, so the computer goes 
through the loop once before checking. If you say WHILE, the 
check is done at the loop's top, so the computer checks whether 
I<1000 before doing the loop the first time.

                  LOGIC TRICKS
  Every statement must end with a semicolon. You can put several 
statements on the same line:
Normal    Alternative
A:=3;     A:=3; B:=7.6; WRITELN(A+B);
B:=7.6;
WRITELN(A+B);
  You can continue a statement on the next line:
Normal    Alternative
A:=5-2+1; A:=
          5-2
          +1;
But do not divide a statement in the middle of a word, number, 
symbol, or string:
                            Wrong, because  Wrong, because    
Wrong, because
Normal           Okay       middle of word  middle of number  
middle of symbol
IF AGE>=18 THEN  IF AGE     IF AG           IF AGE>=1         IF 
AG>
                 >=18 THEN  E>=18 THEN      8 THEN            =18 
THEN

               Omitting semicolons
  You can omit the semicolon after BEGIN:
Normal    Alternative
BEGIN;    BEGIN
  You can omit a semicolon, if the next word is END:
Normal    Alternative
A:=3;     A:=3
END;      END;
  You can omit a semicolon, if the next word is UNTIL:
Normal    Alternative
      I=*2;      I=I*2
UNTIL I>=1000;UNTIL I>=1000;

             Omitting BEGIN and END
  If a heading heads just one indented line (besides BEGIN and 
END), you can put that indented line next to the heading (and 
omit the BEGIN and END).
Long way    Short cut
FOR I := 1 TO 9 DOFOR I := 1 TO 9 DO WRITELN(I);
    BEGIN;
    WRITELN(I);
    END;

WHILE A<100 DOWHILE A<100 DO A:=A+7;
      BEGIN;
      A=A+7;
      END;

IF AGE>=65 THENIF AGE>=65 THEN WRITELN('OLD');
   BEGIN;
   WRITELN('OLD');
   END;

IF WEIGHT>220 THENIF WEIGHT>220 THEN WRITELN('FAT') ELSE 
WRITELN('OKAY');
   BEGIN;
   WRITELN('FAT');
   END
ELSE
   BEGIN;
   WRITELN('OKAY');
   END;

REPEAT      REPEAT A:=A+7 UNTIL A>100;
      A:=A+7;
UNTIL A>100;


              Comments
  To put comments into your program, surround the comment by 
braces:
BASIC         PASCAL
10 'I HATE COMPUTERS{I HATE COMPUTERS}
  Do not put a semicolon after the comment.
  If your screen can display colors, Quick PASCAL makes the 
comments and braces turn green.
   Other versions If your keyboard is old and lacks braces, use 
parentheses and asterisks instead:
(*I HATE COMPUTERS*)

                GOTO
  You can say GOTO.
LABEL 10;
BEGIN;
WRITELN('MY DOG');
GOTO 10;
WRITELN('NEVER');
10: WRITELN('DRINKS WHISKEY');
END.
  The top line warns the computer that a future line will be 
labeled ``line 10''. The rest of the program makes the computer 
write MY DOG, then skip to line 10, which makes the computer 
write DRINKS WHISKEY. Altogether, the computer will write:
MY DOG
DRINKS WHISKEY
  Do not put a space between GO and TO.
  Here's another example:
LABEL 10;
BEGIN;
10: WRITELN('LOVE');
WRITELN('HATE');
GOTO 10;
END.
The computer will write LOVE and HATE repeatedly:
LOVE
HATE
LOVE
HATE
LOVE
HATE
etc.
To abort the program, tap the C key while holding down the 
CONTROL key. (For Quick PASCAL, then press ENTER.)
  If your program contains lines numbered 10, 20, and 100, put 
this statement at the top of your program:
LABEL 10,20,100;
Put that statement at the very top of your program: the only 
statement that should go above it is the one saying PROGRAM. The 
PROGRAM and LABEL lines go above all other lines ___ even above 
VAR and BEGIN.
  Each line number must be small: no higher than 9999.
  In PASCAL, you'll rarely need to say GOTO. Instead, try using 
the words IF, ELSE, FOR, REPEAT, and WHILE.
   Other versions In UCSD PASCAL, if you want to say GOTO, you 
must say (*$G+*) at the top of your program:
(*$G+*)
PROGRAM SKIPPER;
LABEL 10;
etc.

                                                    Procedures
                                         This program teases you, 
with the help of some insults:
PROGRAM INSULT;
BEGIN;
WRITELN('YOU ARE STUPID');
WRITELN('YOU ARE UGLY');
END;

{MAIN ROUTINE}
BEGIN;
WRITELN('WE ALL KNOW...');
INSULT;
WRITELN('...AND YET WE LOVE YOU');
END.

                                         That program begins by 
defining INSULT to be this procedure:
WRITELN('YOU ARE STUPID');
WRITELN('YOU ARE UGLY');
The main routine makes the computer write `WE ALL KNOW...', then 
do the INSULT procedure, then write `...AND YET WE LOVE YOU'; 
altogether, the computer will write:
WE ALL KNOW...
YOU ARE STUPID
YOU ARE UGLY
...AND YET WE LOVE YOU
                                         The PROCEDURE, called 
INSULT, is a subroutine. In PASCAL, subroutines come before the 
main routine. (In BASIC, subroutines come after the main routine 
instead.)
                                         Put a program's VAR 
above any procedures:
VAR                                                The program 
uses a variable,
   I: INTEGER;                                     called I, 
which is an integer.

PROCEDURE DOUBLE;                                  The subroutine 
is called DOUBLE.
BEGIN;
I:=2*I;                                            The subroutine 
doubles the value of I
WRITELN(I);                                        and writes the 
new value of I.
END;

{MAIN ROUTINE}                                     Here's the 
main routine. . . .
BEGIN;
I:=7;                                              I starts at 7.
DOUBLE;                                            Do subroutine 
DOUBLE, which writes 14.
DOUBLE;                                            Do DOUBLE 
again, which writes 28.
WRITELN(I+1);                                      Write 29.
END.


         ADVANCED VARIABLES
  You've seen that a variable can stand for a number. This 
section explains how to make a variable stand for a character, 
array, or string.

                CHAR
  A variable can stand for a character:
VAR
   ANN,JOAN: CHAR;ANN and JOAN will each be a character.
BEGIN;
ANN:='U';   ANN is the character `U'.
JOAN:='P';  JOAN is the character `P'.
WRITELN(ANN,JOAN);The computer will write `U' and `P'.
END.
The computer will write U and P like this:
UP
  You can put a character variable after the word FOR:
VAR
   I: CHAR;
BEGIN;
FOR I := 'A' TO 'E' DO WRITELN(I);
END.
The computer will write:
A
B
C
D
E

                ARRAY
  Let's make X be this list of real numbers: 4.2, 71.6, 8.3, 
92.6, 403.7, 1.4. Here's how:
VAR
   X: ARRAY [1..6] OF REAL;
BEGIN;
X[1]:=4.2;
X[2]:=71.6;
X[3]:=8.3;
X[4]:=92.6;
X[5]:=403.7;
X[6]:=1.4;
WRITELN(X[1]+X[2]+X[3]+X[4]+X[5]+X[6]);
END.
The computer will write the sum, 581.8.
  Subscripts can be negative:
VAR
   Y: ARRAY [-2..3] OF REAL;
BEGIN;
Y[-2]:=400.1;
Y[-1]:=274.1;
Y[0]:=9.2;
Y[1]:=8.04;
Y[2]:=0.6;
Y[3]:=-5.0;
WRITELN(Y[-2]+Y[-1]+Y[0]+Y[1]+Y[2]+Y[3]);
END.
The computer will write the sum, 687.04.
                                         Here's how to make Z be 
a table having 6 rows and 4 columns of reals:
VAR
   Z: ARRAY [1..6, 1..4] OF REAL;
The number in the 3rd row and 2nd column is called Z[3,2]. The 
entire first row of Z is called Z[1]; the second row is called 
Z[2]; etc. For example, if you say ___ 
Z[5]:=Z[3];
the computer will look at the real numbers in the 3rd row of Z, 
and copy them into the 5th row. Suppose W is another array that 
has 6 rows and 4 columns; if you say ___ 
W:=Z;
the computer will look at each real number in Z and copy it into 
W.
                                         You can have many kinds 
of arrays: you can have an array of REAL, an array of INTEGER, 
and even an array of CHAR.

                                                      STRING
                                         A variable can stand for 
a string:
VAR
   X: STRING;
BEGIN;
X:='I LOVE MY MOTH';
WRITELN(X,'ER');
END.
                                         The computer will write 
`I LOVE MY MOTH' and then `ER', like this:
I LOVE MY MOTHER
                                         You can make the 
computer read a string:
VAR
   X: STRING;
BEGIN;
WRITELN('WHAT IS YOUR NAME?');
READLN(X);
WRITELN('HELLO ',X,' THE BEAUTIFUL');
END.
When you run that program, the computer asks:
WHAT IS YOUR NAME?
Then the READLN(X) statement makes the computer wait for you to 
input a string. If you input the name MARILYN MONROE, the 
computer will write:
HELLO MARILYN MONROE THE BEAUTIFUL
                                          Other versions Instead 
of letting you say STRING, some versions of PASCAL require you to 
say STRING[80].
                                         The oldest versions of 
PASCAL require you to say PACKED ARRAY [1..80] OF CHAR instead. 
Some of those old versions can't read or write the whole array 
string at once: instead you must create FOR loops that read and 
write one character at a time.