home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Hack-Phreak Scene Programs
/
cleanhpvac.zip
/
cleanhpvac
/
TPTUTR~1.ZIP
/
PASCAL01.TXT
< prev
next >
Wrap
Text File
|
1996-03-21
|
11KB
|
263 lines
Pascal Tutorial: Learning Pascal
by Glenn Grotzinger
Part 1 -- Starting Out.
all parts copyright (c) 1995-1996 by Glenn Grotzinger.
I am writing this tutorial as a means for people to start out and
learn a great deal about Pascal. I write this part with the understanding
that you have looked at the compiler, and have figured out how to use it to
enter a program, how to compile and run a program within the IDE, save a
source code file, or compile at the DOS prompt, or in the IDE to create an
EXE file; but do not have any understanding of Pascal programming as a whole.
Any subsequent parts will be written assuming that you have read prior parts, and fully understand all the examples. Please work through
the examples, entering them in yourself, to get used to programming in Pascal.
I also recommend that you print all parts out, so you may have reference
for any future parts that we see.
As I am writing each part as we go, for right now, I will try
to have each part written and posted on a weekly basis.
About this part
===============
This will be a lengthy part, since we are trying to introduce enough material
to get to the point of writing a simple program.
The basics
==========
My intent in this section is to familiarize you with the proper
starting structure to remember for to get ready to write a program. Let's
look at the short example below. (I numbered the lines with {}'s for purposes
of this explanation.)
{1} program tutorial1; uses crt;
{2} var
{3} world_stmt: string;
{4} begin
{5} world_stmt := 'Hello world!';
{6} writeln(world_stmt);
{7} end.
This is a relatively simple program for starting out. Let us run through
what each line has.
{1} this is the programID, and the uses clause.
program <identifer>; uses <library>;
is the syntax. <identifier> may be anything that we may decide to
call the program. <library> is a specification of additional libraries,
or *units* of commands that we may want to use.
crt is the name of one library we will use a lot in our programming.
The commands that can be accessed in this library will be detailed later
on in the tutorial. If we want to use any of the commands in a library,
we must tell the compiler to use the library, and the uses statement
does this. I will specify if any commands we use will come out of a
unit.
{2} var is a signal we use at the beginning of a program block to tell the
compiler that we want to start defining variables.
{3} This is a definition of a string, or sequence of text. Variable defs.
will be covered later in this part. We are defining a variable named
world_stmt to be a string.
{4} begin says we want to begin a block of code.
{5} & {6} are some program commands. We will explain them later.
{7} end; ends a program block.
A few basic commands
====================
I will now discuss variable definitions.
string: a section of text. "Hello world!" would be a string.
integer: a number which does not have a decimal part. 12 is an integer.
char: one part of a string. "G" is a character, while "GG" is not.
real: a number which has a decimal part. 3.25 would be a real.
Comments.
If you wish to make some text as a remark to what something does,
use the { key or (* to start and the } or *) to end it.
The assign.
We use the := to assign a value to a variable.
Examples of that would be such as:
world_stmt := 'Hello world.'; { a definition of a string. The
' s must be there on each side }
choice_char := 'a'; { a definition of a character The
' s must be there on each side }
money := 3.25; { a definition of a real }
coins := 10; { a definition of an integer }
Arithmetic computations.
We often have to do arithmetic to program and solve a problem. I will
illustrate addition, subtraction, multiplication, and division.
sum := 3 + 2; { we're telling the computer to add 3 and 2 and then
place 5 in an integer called sum. Assignments can
also work with this way }
sub := 10 - 7; { we're telling the computer to subtract 7 from 10
and then place 3 in an integer called sub. }
mult := 3 * 2; { we're telling the computer to multiply 3 by 2. }
divisn := 10 / 2; {dividing 10 by 2 }
Any of these can be combined in one statement, with the order of
operations being /, *, -, +. ('s may be used to force one group of
numbers. For example:
answer := 3 + (2 + 6) * 4;
Rules: We must use the following idea to determine whether things are
OK to do for arithmetic.
1) If we perform an arithmetic operation with anything with a real
in it, the receiving variable in the assign must be defined as
a real.
2) If we perform a division with two integers that have a chance
of dividing to become a real, we must use a real for a receiving
variable. 12 / 7 would be an example and be 1.71 (rounded to 2
decimal places).
Note: dividing and getting a real or using a real in the other stuff
will result in answers such as 3.232133412E+02. I will cover later
the way to make that look readable and normal.
We will now look at an example of some of the stuff above.
program tutorial2;
var
first_number, second_number: integer;
result: integer;
begin
first_number := 3;
{assign first number the value of 3}
second_number := first_number * 2;
{assign 2nd number-multiply first number by 2}
first_number := second_number - 5;
{assign 1st number-old value of 1st number - 5}
result := first_number + second_number;
{assign result to be 1st number + 2nd number}
end.
A question to understand what is going on. Answer this one, and you
understand everything up to this point. What is the value of each and
every one of the integer variables as listed in the tutorial2 after all
the statements execute? (Answer will appear in the next part).
DIV and MOD
These are special operators. Div places the whole number of a division
in the receiving variable, and MOD places the remainder. For example:
whole := 12 div 7; {whole becomes 1}
remainder := 12 mod 7; {remainder becomes 5}
7 goes into 12 one time with a remainder of five.
reading and writing information.
We will stick to use of the keyboard for reading information, and
the monitor for writing information right now. Remember for any
variable, we must not define it to be the name of a command, when we
do this.
read(a_number);
This command stops the program and waits for the user to input data
which will be placed in a_number and does NOT produce a movement to
a new line.
readln(a_number);
This command does exactly as read, but produces a movement to a new
line.
write(a_number);
This command writes the contents of a_number to the screen without a
new line.
writeln(a_number);
This command does exactly as write, but produces a movement to a new
line on the screen.
These commands can be used with any combination of literal, variable,
or arithmetic expression. A literal is a defined statement.
3 is a literal in write(3);. write(3); will write a 3 on the monitor.
program tutorial3;
var
some_text: string;
begin
write('Type some text and press ENTER when done: ');
readln(some_text);
writeln('You just typed the following: ', some_text);
end.
Proper events in this program will be (as it will appear on the screen):
Type some text and press ENTER when done: <input text here>
You just typed the following: <text here>
The readln prompts you to enter text which is rewritten with the last
writeln command. If you type the examples in and compile them up to this
point (as I recommend -- it will help you learn), you will see exactly
how tutorial3 is supposed to work.
The End of Part 1
=================
All of my tutorial parts will be formatted much like this one. First
I will cover some new topics, giving examples, then as the final act will
always be a programming problem, which I will leave you, the reader, to
solve, learning on your own. The best thing to learn and get competent in
any language is to actually sit down and program. Any of the programming
problems I leave you will not involve concepts that I have not covered in
previous text, though I will try my best to make them challenging to further
the reader's programming ability. A solution to each of the problems in each
part will be presented in the next part. My rules to you. These are for
your benefit.
1) Do not ask anyone else to help you in any programming sub, or anywhere
in programming these little practice programs I give. You will not
learn anything, if at all, and your time looking through this will be
wasted.
2) Anyone who does know, please do not help anyone who is going through
this tutorial. They will not learn if someone else gives them the answer!
3) Try and at least attempt the practice programming problem. Do not just
sit and wait until I present a solution. The syntax is easy to learn
from having notes and such, but the logic of actually programming some-
thing is only gotten by practice.
If you wish me to give your code from the practice programming problems in
this tutorial a quick look, send 'em to me at ggrotz@2sprint.net.
Practice Programming Problem for Tutorial Part 1
================================================
Write a Pascal program (and entirely Pascal) which will accept
two integers from the keyboard, presenting the user with a prompt to
enter a number for each integer. Then print out statements which tell us
what the two digits add up to, subtract to, and multiply to.
To be correct, you must act on the first number and then the second
number in your computations. For example, 14 and 7 (in that order) would
be treated as 14+7, 14-7, and 14*7.
Example Monitor Screen (using 14 and 7):
------------------------------------------------------------------------
Please enter the 1st number: 14
Please enter the 2nd number: 7
Adding 14 and 7 gives 21.
Subtracting 7 from 14 gives 7.
Multiplying 14 and 7 gives 98.
Good luck! And a solution to this problem will appear in part two!
Next Time
=========
Next time, we will discuss the use of decision-making (IF statements) in
Pascal programming, as well as loops which repeat a defined, set number of
times (FOR loops). Eventually, when the tutorial is over, we will have
covered most, if not all of the data and control structures, and a few
special topics of interest to you (in Pascal). If you have any comments
please send them to ggrotz@2sprint.net.