



                                                        Chapter 1
                                                  GETTING STARTED


WHAT IS ADA?
_________________________________________________________________

Ada is a relatively new programming language developed by the
United States Department of Defense in an attempt to solve the
software muddle as it existed in the mid 1970's.  It was felt that
the 2000 or so programming languages in use at that time could be
replaced in large part by one well planned language for use in
embedded Real-Time systems.  Following a major effort on the part
of the DOD, which is well documented in many other places, Ada was
developed as a solution to the software problem.

Ada is a very well planned and precisely defined language that can
be used throughout a wide area of software applications.  The
language has existed long enough that a relatively large number of
capable compilers exist for use on mainframe computers, as well as
minicomputers, and even microcomputers.  An Ada compiler has a big
job to do which you will see as we progress through our study of
the language.  It is therefore not a trivial effort to bring a
validated Ada compiler to market.  In spite of this, at least five
companies have developed fully validated Ada compilers that run
under MS-DOS on a PC.  Although some of these will run on a minimal
PC, nothing less than a PC with an 80386 is recommended for use
with any Ada compiler due to the time required for compilation.

The Ada programming language was designed in such a way that many
of the trivial errors, which we humans are very capable of
generating, are detected and reported at compile time rather than
after execution of the program is begun.  It is at this point that
errors are most easily repaired since a good compiler can give the
programmer a very good hint at just what the error is.

This chapter will give you some definitions so we can begin
discussing the use of Ada in chapter 2.  The definitions will be
very broad in nature because they are used in many places in an Ada
program, but they are extremely important.



WHAT IS AN IDENTIFIER?
_________________________________________________________________

An identifier is a name we use to refer to any object in Ada and
it must be formed by following some fairly rigid rules.  We will
list the rules for forming a valid identifier, then make up a few
for illustrative purposes.

1.   An identifier must start with a letter of the alphabet.

                                                         Page 1-1

                                      Chapter 1 - Getting Started


2.   Following the initial letter, the identifier can be made up
     of as many letters, numbers, and underlines as desired
     provided that the underlines occur only singly, and an
     underline is not the last character.

3.   Case of letters is not significant.

4.   There is no limit to the length of an identifier but each
     identifier must fit on one line of text and the writer of the
     compiler may impose a line length limit.

5.   No blanks or special characters can be used as part of an
     identifier.

With these rules in mind, lets make up a few good identifiers and
a few invalid identifiers.

     Ada                -- A perfectly valid identifier
     ADA                -- The same one, case doesn't matter
     Ada_Compiler       -- A very descriptive identifier
     The_Year_1776      -- Another descriptive identifier
     a1b2c3d4e5f6       -- Very nondescript, but valid
     12_times_each      -- Can't start with a number
     This__is__neat     -- Multiple underlines illegal
     This is neat       -- blanks illegal
     Ada_"tutorial"     -- special characters illegal

By this time you should get the idea of what a valid Ada identifier
is.  It may seem like a lot of effort to define just what an
identifier is, but you will be very busy naming everything you use
in Ada, so you must know how to name things before you can do
anything meaningful with the language.


IDENTIFIER SELECTION
_________________________________________________________________

In addition to an identifier being correct, it should also be
usable and meaningful.  As an example, consider the following list
of valid identifiers and see which convey to you some idea of what
they refer to.

     Time_Of_Day
     Final_Score
     Get_the Present_Temperature
     X12
     Ztx
     t

Ada was designed to be written once and read many times.  This is
truly what happens with any non-trivial program designed and
developed by a group of persons.  As such, little attention is paid
to the fact that it may be a bit tedious to key in long identifiers

                                                         Page 1-2

                                      Chapter 1 - Getting Started

when the program is being written.  The extra effort pays off when
it is read repeatedly, since it is so easy to follow the logic of
the program.  The first three identifiers above are preferred
because of the information they convey to the reader, and the last
three are to be considered of little value in defining the program
logic.  Of course, if you were using a mathematical relationship
that used the variable named "t" in its calculations, that
particular name for a variable might be a good choice.


WHAT ARE RESERVED WORDS?
_________________________________________________________________

Ada uses 63 identifiers which are called reserved words.  They are
reserved for specific uses within an Ada program and cannot be used
for any other purpose.  As you study the language, you will see
very clearly how to use each of the reserved words and why these
particular words were chosen.  Since Ada is such a large language
containing many options and cross checks, writing an Ada compiler
is an enormous job, but the use of reserved words simplifies the
compiler writers job.  The reserved words also make the final
program much easier to read and understand.

Don't worry about the reserved words at this point.  It was
necessary to mention that they do exist and constitute an
additional limitation to the naming of identifiers which we
discussed in the previous section.  It might be a good idea to
spend a few minutes looking through the list in section 2.9 of the
LRM (Language Reference Manual).  Note that all reserved words will
be listed in boldface type when used in the text portion of this
tutorial.


CASE CONVENTIONS USED IN THIS TUTORIAL
_________________________________________________________________

Ada allows you to use either case for alphabetic characters in an
identifier and you can freely mix them up in any way you desire.
Good programming practice, however, would lead you to select a
convention for where to use upper case and where to use lower case.
A good selection of case could be an aid to understanding the
program since it would convey some information about what the
identifier is.

In order to write the example programs in a standard format, the
author did a search of Ada programs to see if a standard exists
which would dictate which case should be used for alphabetic
characters.  The search was conducted by studying the code in the
three books mentioned in the Introduction to this tutorial and
about 12 other books.  No conformance to any standard was found,
so the following will be adopted for all of the sample programs in
this tutorial.  Since you are just beginning to study Ada, you may
not understand what each of the categories are.  After you complete


                                                         Page 1-3

                                      Chapter 1 - Getting Started

a few of the lessons, you can return here to review the alphabetic
case rules listed for the example programs.

reserved words - All reserved words will be written in lower case.
      This is the only consistency found in the search of the Ada
      programs.

Variables - All variables will be written with the initial letter
      capitalized, and all others in lower case.

TYPES - All types will be written in all capital letters.

CONSTANTS - All constants will be written in all capital letters.

ENUM VALUES - All enumerated values will be written in all capital
      letters.

ATTRIBUTES - All attributes will be written in all capital letters.

Procedure Names - All procedure names will be written with the
      initial letter capitalized and all others in lower case.

Function Names - Same as procedure names.

Package Names - Same as procedure names.

Note that all program identifiers will be listed in boldface type
when they are referred to in the text portion of this tutorial.


WHAT ABOUT PROGRAMMING STYLE?
_________________________________________________________________

Programming style can go a long way to aiding in the understanding
of a completed program and much discussion throughout this tutorial
will be given to style.  You have the freedom to add indentation
and blank lines to your program in your own way to improve
readability and at the same time make the program look like your
own work.  In the early lessons, however, it would be to your
advantage to follow the style given in the example programs and
adopt it as your own.  As you gain experience, you will develop
your own style of Ada source code formatting.


PRELIMINARY DEFINITIONS
_________________________________________________________________

Several topics, which are unique to Ada, are used in many places
throughout the language.  Since a full definition of these will be
impossible until we cover some of the earlier topics, we must delay
the full definition until later.  On the other hand, the use of
them becomes necessary fairly soon, so we will give a brief
definition of these here, and a complete definition later.  If you


                                                         Page 1-4

                                      Chapter 1 - Getting Started

don't fully understand these early definitions, don't worry about
it yet, because we will return for a fuller definition later.

Exceptions - When most languages find a fatal runtime error, they
      simply abort the program.  This is unacceptable for a real
      time language because it must continue running, correcting the
      error if possible.  An exception is an exceptional, or error,
      condition that arises during execution of the program.  An Ada
      program, if it is properly written, has the ability to define
      what to do for each of these error conditions, and continue
      operation.  Think of an exception as an error flag until we
      define it more properly.

Renaming - Ada gives you, the programmer, the ability to assign a
      new name to various entities in a program for your own
      convenience.  Ada permits the renaming of objects, exceptions,
      task entries, and subprograms.  It is simply an alias which
      can be used to refer to the entity which is renamed.

Overloading - Ada allows you to use the same name for several
      different items.  The system is smart enough to know which
      entity you are referring to, when you use the overloaded name,
      by the immediate context of its use.  For example, if I say,
      "Jack used a jack to change the flat tire.", you understand
      that there are two uses of the word "Jack", and you understand
      what each means by the way it is used in the statement.  Ada
      can also use the same name to refer to different things, and
      intelligently know what the various uses mean.


























                                                         Page 1-5