EMZETT.
Login

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

Kapitel 8 von 8 im Kurs Ada. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Attribute (Auswahl)

AttributBedeutung
T'First, T'Lastkleinster/größter Wert
T'Image (X), T'Value (S)Wert ↔ Text
T'Succ, T'PredNachfolger/Vorgänger
T'Pos, T'ValPosition ↔ Wert
A'Length, A'RangeArray-Größe und Indexbereich
T'Min, T'MaxMinimum/Maximum
T'SizeGröß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
 12

Operatoren

ArtOperatoren
Arithmetik+ - * / mod rem ** abs
Vergleich= /= < <= > >=
Logikand or xor not, and then, or else
Zugehörigkeitin, 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 undefined

Achtung

Ada vergleicht nur gleiche Typen. Integer und Float mischt 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

Weiter im Kurs

Zurück: Praxisbeispiele

Alle Kapitel: Ada im Überblick