Programming in Ada

Ada is a powerful and extensive programming language well suited for
large projects. It has safety features which designed to minimise
the occurrence of common programming errors, allowing complex software
to be developed with more confidence. It is used extensively by
the military and defence organisations, and other large organisations
such as those in the banking sector.

Prerequisites

The student should have some programming experience.

Course Objectives

On completion of this course, the student should be able to

Understand the design goals of the language

Write and understand moderately complex Ada programs

Select and design appropriate data types

Utilise the Ada tasking features

Write and use generic Ada units

Length

5 Days

Format

Instructor-led course, with practical computer-based exercises.

Course Outline

1. Introduction

2. Overview of Ada

Text of an Ada Program

Notation for Ada Syntax

Overview of the Ada Language

3. Elementary Ada Programming

Structure of a simple program

Object Declarations

Enumeration Type Declarations

Statements

Using Separate Compilation

Predefined Facilities

4. Data Types

Type Declarations

Introduction to User Defined Types

The Form of a Type Declaration

Integer Type Declarations

Discrete Types

Floating Point Type Declarations

Fixed Point Type Declarations

Named Numbers and Universal Expressions

Array Type Declarations

Record Type Declarations

Discriminated Records

Complex Numbers

More about Enumeration Types

Evaluation of Expressions in Declarations

One of a kind arrays

Subtypes vs Distinct Types

Derived Types

Exercises

5. Expressions

Expressions

Elementary Expressions

Compound Expressions

Subprograms

6. Access Types and Packages

Access Types

Aliased Objects

Dynamically Allocated Objects

Access to Objects Declarations

Access to subprogram declarations

Recursive Data Structures

Packages

Placement of Packages

Child Packages

Example Package Fractions

Use Clauses

Renames

Packages without bodies

An Abstract State Machine Example

7. Private Types and Generics

Private and Limited Private Types

The need for Private Types

Declaration of Private Types

Children Packages with Private Parts

Deferred Constants

Programmer Defined Equality

Limited Types

Returning Objects By Reference

Generic Units

Templates and Instances

Generic Formal Parameters

Generic Child Units and Children of Generic Units

Defaults for Generic Parameters

8. Tasking

Introduction to Tasks

Reasons for Concurrent Programming

Example: A simple example in concurrent programming

Simple time diagrams

Example: A Simple controller

Example: Processing several files

Concurrent Processes

Familiar examples of concurrent programming

Task Types

Task Objects

Task activation

Shared Objects

Task Communications

Elementary Rendezvous

Entries

The Accept Statement

Entry Calls: Putting it All Together

9. Task Communication

Basic Data Protection

Elementary Protected Objects

Protected Operations

Call-backs and Protected Types

Advanced Forms of the Rendezvous

The Select Statement

The Type Time and the Package Ada.Calendar

The Delay Statement

Timed Select Alternatives

The Terminate Alternatives

Conditional and Timed Entry Call

Aborting Actions of a Task

The abort statement

Requeuing

Entry Families

Task identification

Controlling Real-Time Behaviour

Priorities

10. Exceptions and Classwide Types

Exceptions

Handling Exceptions

Propagation of Exceptions

Predefined Exceptions

User Defined Exceptions

Exception Occurences

Other Topics on Exceptions

Classwide Programming

Object Oriented Concepts

Derived Types

Type Extension

Classwide Types

Controlled Types

Appendix 1: The History of Ada

Appendix 2: Coding Projects

Appendix 3: Ada 2005 Changes

Interfaces

New Method Call Syntax

Overriding and Not Overriding Keywords

Not Null Pointers

Additions to With Clause

String Handling

Other Language Additions

Ada.Containers

Other Library Additions

Hardware and Software Requirements

The course requires an Ada 95 compliant compiler. No particular development
environment is required.

Oracle and Java are registered trademarks of Oracle and/or its affiliates.
PL/SQL and SQL*Plus are trademarks or registered trademarks of Oracle
Corporation. Microsoft is either a registered trademark or trademark of Microsoft
Corporation in the United States and/or other countries. MVS is a registered
trademark of the International Business Machines Corp. in the U.S. or other
countries or both. Motif, OSF/1, UNIX, and the "X Device" are registered
trademarks and IT DialTone and The Open Group are trademarks of The Open Group
in the U.S. and other countries. All other trademarks are the property of
their respective owners.

For God so loved the world that he gave His only begotten son, that whoever believes in Him should not perish, but have everlasting life - John 3:16