Introduction
                                                      WHAT IS C++


THE ORIGIN OF C++
_________________________________________________________________

The C programming language was developed at AT&T for the purpose
of writing the operating system for the PDP-11 series of computers
which ultimately became the unix operating system.  C was developed
with the primary goal of operating efficiency.  Bjarne Stroustrup,
also of AT&T, developed C++ in order to add object oriented
constructs to the language.  Because object oriented technology was
new at the time and all existing implementations of object oriented
languages were very slow and inefficient, the primary goal of C++
was to maintain the efficiency of C.

C++ can be viewed as a procedural language with some additional
constructs, some of which are added for object oriented programming
and some for improved procedural syntax.  A well written program
will reflect elements of both object oriented programming style and
classic procedural programming.  C++ is actually an extendible
language since we can define new types in such a way that they act
just like the predefined types which are part of the standard
language.  C++ is designed for large scale software development.



HOW TO GET STARTED IN C++
_________________________________________________________________

The C programming language was originally defined by the classic
text authored by Kernigan and Ritchie, "The C Programming
language", and was the standard used by all C programmers until a
few years ago.  The ANSI standard for C was finally approved in
December of 1989 and has become the official standard for
programming in C.  Since the ANSI standard adds many things to the
language which were not a part of the Kernigan and Ritchie
definition, and changes a few, the two standards are not absolutely
compatible and some of the more experienced C programmers may not
have studied the newer constructs added to the language by ANSI-C.

This tutorial will assume a thorough knowledge of the C programming
language and little time will be spent on the fundamental aspects
of the language.  However, because we realize that many programmers
have learned the dialect of C as defined by Kernigan & Ritchie,
some sections will be devoted to explaining the newer additions as
provided by the ANSI-C standard.  As the ANSI-C standard was in
development, many of the newer constructs from C++ were included
as parts of C itself, so even though C++ is a derivation and
extension of C, it would be fair to say that ANSI-C has some of its
roots in C++.  An example is prototyping which was developed for
C++ and later added to C.

                                                         Page I-1

                                       Introduction - What is C++

The best way to learn C++ is by using it.  Almost any valid C
program is also a valid C++ program, and in fact the addition of
about 12 keywords is the only reason that some C programs will not
compile and execute as a C++ program.  There are a few other subtle
differences but we will save the discussion of them until later. 
Since this is true, the best way to learn C++ is to simply add to
your present knowledge and use a few new constructs as you need
them for each new program.  It would be a tremendous mistake to try
to use all of the new constructs in your first C++ program.  You
would probably end up with an incomprehensive mixture of code that
would be more inefficient than the same program written purely in
C.  Add a few new constructs to your toolkit each day, and use them
as needed while you gain experience with their use.

As an illustration of the portability of C to C++, all of the
example programs included in the Coronado Enterprises C tutorial
compile and run correctly when compiled as C++ programs with no
changes.  None of the C++ programs will compile and execute
correctly with any C compiler however, if for no other reason than
the use of the new style of C++ comments.



HOW TO USE THIS TUTORIAL
_________________________________________________________________

This tutorial is best used while sitting in front of your computer. 
It is designed to help you gain experience with your own C++
compiler in addition to teaching you the proper use of C++. 
Display an example program on the monitor, using whatever text
editor you usually use, and read the accompanying text which will
describe each new construct introduced in the example program. 
After you study the program, and understand the new constructs,
compile and execute the program with your C++ compiler.

After you successfully compile and execute the example program,
introduce a few errors into the program to see what kind of error
messages are issued.  If you have done much programming, you will
not be surprised if your compiler gives you an error message that
seems to have nothing to do with the error introduced.  This is
because error message analysis is a very difficult problem with any
modern programming language.  The most important result of these
error introduction exercises is the experience you will gain using
your compiler and understanding its nuances.

In the text of the preprinted version of this tutorial, keywords,
variable names, and function names will be written in bold type as
an aid when you are studying the example programs.  It is
impossible to include the bold words in a pure ASCII file which
must be used for the shareware version, but the context will
indicate which words are keywords, variable names, or function
names.


                                                         Page I-2

                                       Introduction - What is C++

The way this tutorial is written, you are not required to compile
and execute every program.  At the end of each example program,
listed in comments, you will find the result of execution of that
program.  Some of the constructs are simple and easy for you to
understand, so you may choose to ignore compilation and execution
of that example program, depending upon the result of execution to
give you the output.  Some students have used these results of
execution to study several chapters of this tutorial on an airplane
by referring to a hardcopy of the example programs.



DIFFERENT C++ IMPLEMENTATIONS
_________________________________________________________________

There are primarily two standards for naming C++ files, one using
the extension CPP and the other using the extension CXX.  All files
in this tutorial use the CPP extension for naming files.  If your
compiler requires the CXX extension it will be up to you to rename
the files.  Even though we have tried to use the most generic form
of all constructs, it is possible that some constructs will not
actually compile and run with some C++ compilers.  As we find new
implementations of C++, and acquire copies of them, we will compile
and execute all files in an attempt to make all example programs
as universal as possible.

The C++ language is very new and is changing rapidly.  The
developer of the language, AT&T, has changed the formal definition
several times in the last few years and the compiler writers are
staying busy trying to keep up with them.  For this reason, we have
included the following notes on some of the more popular compilers
and how they fare with the example programs in this tutorial.

Zortech C++ version 1.07 - This compiler is based on C++ version
     1.2, an earlier version defined by AT&T.  Most of the files
     will compile correctly if the #include file is changed from
     "iostream.h" to "stream.hpp".

Borland TURBO C++ version 1.0 - This compiler is based on C++
     version 2.0.  All example programs will compile without error
     using this compiler.

Zortech C++ version 2.1 - This compiler is based on C++ version
     2.0.  None of the files have been tested with this compiler 
     yet.



PRINTING OUT THE EXAMPLE PROGRAMS
_________________________________________________________________

Some students prefer to work from a hardcopy of the example
programs.  If you desire to print out the example programs, there
is a batch file on the distribution disk to help you do this.  Make

                                                         Page I-3

                                       Introduction - What is C++

the distribution disk the default drive and type PRINTALL at the
user prompt and the system will print out about 150 pages of C++
programs, all of the example programs in this tutorial.

The PRINTALL batch file calls the program named LIST.EXE once for
each example program on the distribution disk.  LIST.EXE was
written in TURBO Pascal and compiled for your use in listing any
program with line numbers and the date the program was last
modified, the date and time of the file.  TURBO Pascal was used
because Borland does not require a licensing fee for distributing
copies of the resulting run time files.



PROGRAMMING EXERCISES
_________________________________________________________________

There are programming exercises given at the end of each chapter
to enable you to try a few of the constructs given in the chapter. 
These are for your benefit and you will benefit greatly if you
attempt to solve each programming problem.  If you merely read this
entire tutorial, you will have a good working knowledge of C++,
but you will only become a C++ programmer if you write C++
programs.  The programming exercises are given as suggestions to
get you started programming.

An answer for each programming exercise is given in the ANSWERS
directory on the distribution disk.  The answers are all given in
compilable C++ source files named in the format CHnn_m.CPP, where
nn is the chapter number and m is the exercise number.  If more
than one answer is required, an A, B, or C, is included following
the exercise number.



RECOMMENDED ADDITIONAL READING
_________________________________________________________________

Richard S. Wiener & Lewis J. Pinson.  "An Introduction to Object-
     Oriented Programming and C++".  Addison-Wesley, 1988.  This
     is the first book recommended since it covers both object
     oriented programming and C++ in depth.  It is clearly written
     and well organized.

Brad Cox.  "Object Oriented Programming, An Evolutionary Approach". 
     Addison-Wesley, 1986.  This book is excellent for a study of
     object oriented programming and what it is, but since it is
     based on Objective-C, it covers nothing of the C++ language
     or how to use it.

John Berry.  "The Waite Group's C++ Programming".  Howard W. Sams,
     1988.  This book covers the fundamentals of the language well
     and includes a significant amount of information on the
     application of object oriented programming techniques.


                                                         Page I-4

                                       Introduction - What is C++


Bjarne Stroustrup. "The C++ Programming Language".  Addison-Wesley,
     1986.  This is the definitive book on C++, but it would be
     difficult for a beginner to learn the language from this book
     alone.

Note that the C++ culture is in rapid change and by the time you
read this, there will be additional well written texts available
as aids to your learning the syntax and proper use of the C++
programming language.













































                                                         Page I-5

1