Kurz: procedure Main is type Ampel is (Rot, Gelb, Gruen); Feld : array (1 .. 4) of Integer := (1, 2, 3, 4); begin Put_Line (Ampel’Image (Ampel’First) & ” ” & Ampel’Image (Ampel’Last)).
Teil des Kurses Ada
Attribute (Auswahl)
| Attribut | Bedeutung |
|---|---|
T'First, T'Last | kleinster/größter Wert |
T'Image (X), T'Value (S) | Wert ↔ Text |
T'Succ, T'Pred | Nachfolger/Vorgänger |
T'Pos, T'Val | Position ↔ Wert |
A'Length, A'Range | Array-Größe und Indexbereich |
T'Min, T'Max | Minimum/Maximum |
T'Size | Größe in Bits |
with Ada.Text_IO; use Ada.Text_IO;
procedure Main is
type Ampel is (Rot, Gelb, Gruen);
Feld : array (1 .. 4) of Integer := (1, 2, 3, 4);
begin
Put_Line (Ampel'Image (Ampel'First) & " " & Ampel'Image (Ampel'Last));
Put_Line (Ampel'Image (Ampel'Val (1)) & Integer'Image (Ampel'Pos (Gruen)));
Put_Line (Integer'Image (Integer'Min (3, 7)) & Integer'Image (Integer'Max (3, 7)));
Put_Line (Integer'Image (Feld'Length) & Integer'Image (Feld'First) & Integer'Image (Feld'Last));
Put_Line (Integer'Image (Integer'Size) & Integer'Image (Character'Size));
Put_Line (Boolean'Image (Boolean'Succ (False)));
Put_Line (Integer'Image (Integer'Value (" 12 ")));
end Main;Ausgabe:
ROT GRUEN
GELB 2
3 7
4 1 4
32 8
TRUE
12Operatoren
| Art | Operatoren |
|---|---|
| Arithmetik | + - * / mod rem ** abs |
| Vergleich | = /= < <= > >= |
| Logik | and or xor not, and then, or else |
| Zugehörigkeit | in, not in |
| Verkettung | & |
Typische Fehler
procedure Main is
X : Integer := "text";
begin
null;
end Main;Fehlermeldung:
expected type "Standard.Integer"procedure Main is
begin
Put_Line ("x");
end Main;Fehlermeldung:
"Put_Line" is undefinedAchtung
Ada vergleicht nur gleiche Typen.
IntegerundFloatmischt man nur mit expliziter Umwandlung (Float (N)). Der Compiler liefert außerdem viele nützliche Warnungen: lies sie ernst.
Weiterführende Quellen
- learn.adacore.com: interaktive Kurse (Introduction to Ada, SPARK)
- adaic.org: Ada Information Clearinghouse und Referenzhandbuch (Ada 2022 RM)
- alire.ada.dev: Paketmanager mit hunderten Bibliotheken
Merke
- Ada: starke Typisierung, Laufzeitprüfungen, Tasks und Verträge für zuverlässige Software
- Wertebereiche (
range) und Subtypen verhindern ganze Fehlerklassen - GNAT, Alire und SPARK bilden das moderne Ökosystem
Übungsaufgabe
Portiere ein kleines C-Programm nach Ada und beobachte, welche Fehler der Compiler früher meldet.
Quiz zur Selbstkontrolle
Wo wird Ada besonders oft eingesetzt?
- In sicherheitskritischen Systemen (Luftfahrt, Bahn) (richtig)
- In Webseiten
- In Spielen
- In Tabellenkalkulationen
Was ist Alire?
- Ein Paketmanager für Ada (richtig)
- Ein Debugger
- Ein Compiler
- Eine Bibliothek
Was ist der Unterschied zwischen mod und rem?
- mod hat das Vorzeichen des Divisors, rem das des Dividenden (richtig)
- Kein Unterschied
- mod ist für Floats
- rem ist veraltet
Weiter im Kurs
Zurück: Praxisbeispiele
Alle Kapitel: Ada im Überblick