Advanced Journey With Ada: A Flight In Progress
Warning
This is work in progress!
Information in this document is subject to change at any time without prior notification.
Note
The code examples in this course use a 50-column limit, which
greatly improves the readability of the code on devices with a small
screen size. This constraint, however, leads to an unusual coding
style. For instance, instead of calling Put_Line
in a single
line, we have this:
Put_Line
(" is in the northeast quadrant");
or this:
Put_Line (" (X => "
& Integer'Image (P.X)
& ")");
Note that typical Ada code uses a limit of at least 79 columns. Therefore, please don't take the coding style from this course as a reference!
This course will teach you advanced topics of the Ada programming language. The Introduction to Ada course is a prerequisite for this course.
This document was written by Gustavo A. Hoffmann, with major contributions from Robert A. Duff. The document also includes contributions from Franco Gasperoni, Gary Dismukes, Patrick Rogers, and Robert Dewar.
These contributions are clearly indicated in the document, together with the original publication source.
Special thanks to Patrick Rogers for all comments and suggestions. In particular, thanks for sharing the training slides on access types: many ideas from those slides were integrated into this course.
This document was reviewed by Patrick Rogers and Tucker Taft.
CHANGELOG
Changes are being tracked on the CHANGELOG page.
- Data types
- Types
- Types and Representation
- Records
- Aggregates
- Arrays
- Strings
- Numerics
- Control Flow
- Expressions
- Statements
- Subprograms
- Exceptions
- Modular programming
- Resource Management
- Access Types
- Access types: Terminology
- Access types: Allocation
- Discriminants as Access Values
- Parameters as Access Values
- Self-reference
- Mutually dependent types using access types
- Dereferencing
- Ragged arrays
- Aliasing
- Accessibility Levels and Rules: An Introduction
- Unchecked Access
- Unchecked Deallocation
- Null & Not Null Access
- Design strategies for access types
- Access to subprograms
- Accessibility Rules and Access-To-Subprograms
- Access and Address
- Anonymous Access Types
- Named and Anonymous Access Types
- Anonymous Access-To-Object Types
- Access discriminants
- Self-reference
- Mutually dependent types using anonymous access types
- Access parameters
- User-Defined References
- Anonymous Access Types and Accessibility Rules
- Anonymous Access-To-Subprograms
- Accessibility Rules and Anonymous Access-To-Subprograms
- Limited Types
- Assignment and equality
- Limited private types
- Explicitly limited types
- Subtypes of Limited Types
- Deriving from limited types
- Immutably Limited Types
- Limited Types with Discriminants
- Record components of limited type
- Limited types and aggregates
- Constructor functions for limited types
- Return objects
- Building objects from constructors
- Limited types as parameter
- Controlled Types
- Access Types