                     Chapter 1 - What is a computer program?


             If  you  are a complete novice to computers,  you  will
        find  the information in this chapter useful.   If you  have
        some experience in computer use, and especially programming,
        you can completely ignore this chapter.  It will deal with a
        few  of  the most fundamental topics of computers  and  will
        have nothing to do with the Modula-2 programming language.

                        WHAT IS A COMPUTER PROGRAM?

             A computer is nothing but a very dumb machine that  has
        the  ability to perform mathematical operations very rapidly
        and very accurately,  but it can do nothing without the  aid
        of  a program written by a human being.   Moreover,  if  the
        human  being  writes  a program that turns  good  data  into
        garbage, the computer will very obediently, and very rapidly
        turn  good  data into garbage.   It is possible to  write  a
        large  program with one small error that will do just  that.
        In some cases the error will be obvious, but if the error is
        subtle,  the  answers may appear to be right,  and the error
        will go unnoticed.   It is up to you,  the human programmer,
        to write a correct program to tell the computer what to  do.
        You  can  think of the computer as your very obedient  slave
        ready to do your every whim.   It is up to you to tell  your
        slave what you want it to do.

             A  computer  program is a "recipe" which  the  computer
        will  use  on  the input data to derive the  desired  output
        data.   It is similar to the recipe for baking a cake.   The
        input data is comparable to the ingredients,  including  the
        heat supplied by the oven.  The program is comparable to the
        recipe instructions to mix,  stir, wait, heat, cool, and all
        other possible operations on the ingredients.  The output of
        the  computer  program  can be compared to  the  final  cake
        sitting  on  the  counter ready to be  cut  and  served.   A
        computer then is composed of two parts,  the data upon which
        the program operates,  and the data.   The data and  program
        are inseparable as implied by the last sentence.

                            WHAT ARE CONSTANTS?

             Nearly  any computer program requires some numbers that
        never  change throughout the program.   They can be  defined
        once and used as often as needed during the operation of the
        program.   To  return to the recipe analogy,  once you  have
        defined  how  big  a tablespoon is,  you can  use  the  same
        tablespoon without regard to what you are measuring with it.
        When writing a computer program, you can define the value of
        PI  =  3.141592,  and continue to use it wherever  it  makes
        sense knowing that it is available, and correct.




                                    Page 5









                     Chapter 1 - What is a computer program?



                            WHAT ARE VARIABLES?

             In addition to constants,  nearly any computer  program
        uses  some  numbers  that  change in  value  throughout  the
        program.   They can be defined as variables, then changed to
        any  values that make sense to the proper operation  of  the
        program.   An  example  would be the number of eggs  in  the
        above  recipe.   If a single layer of cake required 2  eggs,
        then  a triple layer cake would require 6 eggs.   The number
        of eggs would therefore be a variable.

                  HOW DO WE DEFINE CONSTANTS OR VARIABLES?

             All  constants and variables have a name and  a  value.
        In  the last example,  the name of the variable was  "eggs",
        and  the value was either 2 or 6 depending on when we looked
        at  the stored value.   In a computer program the  constants
        and variables are given names in much the same manner, after
        which  they  can store any value within the  defined  range.
        Any  computer  language has a means by which  constants  and
        variables can be first named,  then assigned a  value.   The
        means of doing this in Modula-2 will be given throughout the
        remainder of this tutorial.

                      WHAT IS SO GOOD ABOUT MODULA-2?

             Some  computer languages allow the programmer to define
        constants and variables in a very haphazard manner and  then
        combine data in an even more haphazard manner.  For example,
        if you added the number of eggs, in the above recipe, to the
        number  of  cups  of  flour,  you would arrive  at  a  valid
        mathematical  addition,  but a totally  meaningless  number.
        Some  programming languages would allow you to do just  such
        an addition and obediently print out the meaningless answer.
        Since  Modula-2  requires you to set up your  constants  and
        variables in a very precise manner,  the possibility of such
        a meaningless answer in minimized.   A well written Modula-2
        program has many cross checks to minimize the possibility of
        a completely scrambled and meaningless output.

             Notice  however,  in the last statement,  that a  "well
        written" Modula-2 program was under discussion.  It is still
        up  to the programmer to define the data structure in such a
        way that the program can prevent garbage generation.  In the
        end,  the  program will be no better than the analysis  that
        went into the program design.

             If you are a novice programmer,  do not be  intimidated
        by any of the above statements.  Modula-2 is a well designed



                                    Page 6









                     Chapter 1 - What is a computer program?


        tool  that  has  been  used successfully  by  many  computer
        novices and professionals.  With these few warnings, you are
        ready to begin.


















































                                    Page 7

