EMZETT.
Login

Kurz: Ada (benannt nach Ada Lovelace) wurde in den 1980ern im Auftrag des US-Verteidigungsministeriums entwickelt; der aktuelle Standard ist Ada 2022. Ada ist auf Zuverlässigkeit ausgelegt.

Teil des Kurses Ada

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

Was ist Ada?

Ada (benannt nach Ada Lovelace) wurde in den 1980ern im Auftrag des US-Verteidigungsministeriums entwickelt; der aktuelle Standard ist Ada 2022. Ada ist auf Zuverlässigkeit ausgelegt: starke Typisierung, Prüfungen zur Laufzeit, eingebaute Nebenläufigkeit (Tasks) und Verträge (Vor-/Nachbedingungen). Eingesetzt wird Ada im Airbus und in der Boeing-777-Flugsoftware, in Zügen und Metros (z. B. Pariser Metro-Linie 14), in Satelliten und im Flugverkehr. Die Teilmenge SPARK erlaubt sogar mathematische Beweise der Fehlerfreiheit.

Dieser Kurs nutzt GNAT, den GCC-Ada-Compiler.

Ausführen

gnatmake main.adb          # übersetzen und binden, erzeugt ./main
./main
gnatmake -gnat2022 -gnata main.adb   # Ada 2022 und Zusicherungen
gprbuild -P projekt.gpr    # Projektdatei
alr init --bin demo        # Alire: Paketmanager für Ada

Die Quelldatei heißt wie das Hauptprogramm (main.adb → procedure Main).

Das erste Programm

with Ada.Text_IO; use Ada.Text_IO;
 
procedure Main is
begin
   Put_Line ("Hallo, Welt!");
   Put ("ohne Zeilenumbruch");
   New_Line;
   Put_Line ("1 + 2 =" & Integer'Image (1 + 2));
end Main;

Ausgabe:

Hallo, Welt!
ohne Zeilenumbruch
1 + 2 = 3

with macht ein Paket verfügbar, use erlaubt kurze Namen. Ada unterscheidet nicht zwischen Groß- und Kleinschreibung. Anweisungen enden mit ;, Text steht in doppelten Anführungszeichen, & verkettet.

Variablen und Typen

Deklarationen stehen vor begin:

with Ada.Text_IO; use Ada.Text_IO;
with Ada.Float_Text_IO; use Ada.Float_Text_IO;
 
procedure Main is
   Alter  : Integer := 17;
   Preis  : Float := 9.99;
   Name   : String := "Mia";
   Ok     : Boolean := True;
   Zeichen : Character := 'z';
   Gross  : Long_Long_Integer := 9_000_000_000;
   Pi_Wert : constant Float := 3.14159;
begin
   Put_Line (Name & " ist" & Integer'Image (Alter) & " Jahre alt");
   Put (Preis, Fore => 1, Aft => 2, Exp => 0);
   New_Line;
   Put_Line (Boolean'Image (Ok) & " " & Character'Image (Zeichen));
   Put_Line (Long_Long_Integer'Image (Gross));
   Put_Line (Float'Image (Pi_Wert));
   Put_Line (Integer'Image (Integer'First) & Integer'Image (Integer'Last));
end Main;

Ausgabe:

Mia ist 17 Jahre alt
9.99
TRUE 'z'
 9000000000
 3.14159E+00
-2147483648 2147483647

Zahlen formatiert ausgeben

Für Ganzzahlen und Fließkommazahlen gibt es eigene Pakete:

with Ada.Text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
with Ada.Float_Text_IO; use Ada.Float_Text_IO;
 
procedure Main is
   X : Float := 10.0 / 3.0;
begin
   Put (42, Width => 6);          New_Line;
   Put (X, Fore => 2, Aft => 3, Exp => 0); New_Line;
   Put (7 / 2);                    New_Line;
   Put (7 mod 3);                  New_Line;
   Put (-7 rem 3);                 New_Line;
   Put (2 ** 10);                  New_Line;
   Put (abs (-5));                 New_Line;
   Put (Float (7) / 2.0, Fore => 1, Aft => 1, Exp => 0); New_Line;
   Put (Integer (3.6));            New_Line;
   Put (Integer'Max (3, 9));       New_Line;
end Main;

Ausgabe:

42
 3.333
          3
          1
         -1
       1024
          5
3.5
          4
          9

Typumwandlungen sind in Ada immer explizit: Float (7), Integer (3.6) (rundet).

Merke

  • with bindet Pakete ein; procedure Main is ... begin ... end Main; ist das Grundgerüst
  • Ada ist nicht case-sensitiv, aber streng typisiert; Umwandlungen sind explizit
  • Put_Line, Put, New_Line stammen aus Ada.Text_IO; Zahlen brauchen Ada.Integer_Text_IO/Ada.Float_Text_IO
  • Attribute wie Integer'Image, Integer'First, Integer'Last liefern Informationen zu Typen

Übungsaufgabe

Berechne die Fläche eines Kreises mit Radius 2,5 und gib sie auf zwei Nachkommastellen aus.

Quiz zur Selbstkontrolle

Weiter im Kurs

Weiter: Kontrollfluss, Prozeduren und Funktionen

Alle Kapitel: Ada im Überblick