Ada - numerische Typen

In vielen Programmiersprachen stehen Programmierern eine Reihe von vordefinierten Ganzzahltypen zur Verfügung, die zum Beispiel 8, 16, 32 und 64 Bit einnehmen (in der Regel gibt es noch Varianten mit oder ohne Vorzeichen). Andere Wertebereiche sind nicht möglich.

Stellenmarkt
  1. IT Generalist Business Innovation (m/w/d)
    ALDI SÜD Dienstleistungs-SE & Co. oHG, Mülheim an der Ruhr
  2. IT Inhouse Consultant CAD (m/w/d)
    MTU Aero Engines AG, München
Detailsuche

In Ada hingegen können Programmierer ihre eigenen Ganzzahltypen völlig frei definieren, so dass sie am besten zum Anwendungsbereich passen. Ist zum Beispiel ein Winkel in Grad gefragt, kann der Typ so definiert werden:

          Type Angle is range 0 .. 359;

Werte außerhalb dieses Bereichs sind für Variablen dieses Typs nicht zulässig. Eine Zuweisung, die diese Eigenschaft verletzen würde, zum Beispiel


          X : Angle := 365;     -- das ist ein Fehler
          Y : Angle := 359;
          Y := Y + 1;           -- hier entsteht ein Fehler

erzeugt entweder einen Fehler zur Laufzeit oder der Fehler wird, in einfachen Fällen wie diesem, sofort vom Compiler entdeckt.

Golem Akademie
  1. Webentwicklung mit React and Typescript: virtueller Fünf-Halbtage-Workshop
  2. ITIL 4® Foundation: virtueller Zwei-Tage-Workshop
    24.–25. Januar 2022, virtuell
Weitere IT-Trainings

Ein Fehler ist es ebenfalls, zu einem Winkel von 359 Grad ein Grad zu addieren, denn man würde ja den Wertebereich verlassen. Aber wäre es nicht praktischer, wieder bei 0 Grad anzukommen? Das kann in Ada mit sogenannten modularen Typen erreicht werden:


          Type Mod_Angle is mod 360;

Diese Deklaration definiert wieder einen Typ mit einem Wertebereich von 0 bis 359, jetzt werden aber Berechnungen mit diesem Typ modular ausgeführt:

          X : Angle := 365;	     --  das ist immer noch ein Fehler
          Y : Angle := 359;
          Y := Y + 1;                --  das ist OK, Y ist nun 0

Diese numerischen Typen sind ein Beispiel dafür, wie Ada es ermöglicht, näher an der zu lösenden Aufgabenstellung zu sein als mit vielen andere Programmiersprachen. Natürlich kann für einen Winkel einfach eine 16-Bit-Variable verwendet werden, dann muss aber überall überprüft werden, dass Berechnungen korrekt sind und keine unsinnigen Winkel berechnet werden.

Ada ermöglicht es Programmierern zu dokumentieren, was diese 16-Bit-Variable (denn auch in Ada wird der Compiler vermutlich 16 Bit für unseren Winkel reservieren) darstellen soll; der Compiler beziehungsweise die Laufzeitchecks nehmen die nötigen Überprüfungen automatisch vor.

Diese numerischen Typen sind ein Beispiel dafür, wie Ada es Programmierern leichter macht, in der Problemdomäne zu bleiben, in der die Begriffe des zu lösenden Problems verwendet werden (Winkel, Temperatur, Geschwindigkeit und so weiter), statt gleich in die Lösungsdomäne zu wechseln, wo andere Begriffe wichtig sind, zum Beispiel die Auswahl zwischen 8 Bit oder 16 Bit für den Winkel. Der nächste Abschnitt ist ebenfalls ein Beispiel dafür.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Ada und Spark: Mehr Sicherheit durch bessere ProgrammiersprachenAda - Representation Clauses 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6.  


demon driver 25. Jun 2019

Von "unabgängiger" kann sich niemand was kaufen, und konsequent dürfte man dann nur noch...

demon driver 24. Jun 2019

Nix

SirFartALot 13. Jun 2019

das mag ja fuer Auftragsprogrammierer oder Freelancer normal zu sein, die...

\pub\bash0r 12. Jun 2019

Wobei ausgerechnet Java (und Applets) eigentlich ein sehr gutes Sicherheitsmodell haben...

kayozz 12. Jun 2019

Ja, C# bzw. .NET hat auch Schwächen. Aber das Argument würde ich so nicht stehen...



Aktuell auf der Startseite von Golem.de
Gesichtsbilder
Polizei-Behörden erhalten europaweit mehr Datenzugriff

Über 60 Millionen biometrische Fotos sollen Polizei-Behörden im Schengen-Raum zugänglich gemacht werden. Auch ein zentraler Datenspeicher ist geplant - und mehr.
Ein Bericht von Matthias Monroy

Gesichtsbilder: Polizei-Behörden erhalten europaweit mehr Datenzugriff
Artikel
  1. Rauchgranate: Tesla zeigt Versuch mit Biowaffen-Abwehrmodus des Model Y
    Rauchgranate
    Tesla zeigt Versuch mit Biowaffen-Abwehrmodus des Model Y

    Mit einer Rauchgranate hat Tesla den Effekt des Biowaffen-Abwehrmodus im Model Y auf die Insassen veranschaulicht.

  2. Apple: iPhones sollen zu Bezahlterminals werden
    Apple
    iPhones sollen zu Bezahlterminals werden

    Apple soll an einer Möglichkeit arbeiten, Zahlungen per Kreditkarte direkt an iPhones leisten zu können. Separate Terminals wären nicht mehr nötig.

  3. Steam Deck: Valve nennt Termin für offiziellen Verkaufsstart
    Steam Deck
    Valve nennt Termin für offiziellen Verkaufsstart

    Nachdem Valve die Veröffentlichung des Steam Deck zuletzt um zwei Monate verschoben hatte, steht nun der offizielle Release-Termin fest.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • RX 6900 XTU 16GB 1.449€ • Intel i7 3,6Ghz 399€ • Alternate: u.a. Acer Gaming-Monitor 119,90€ • Logitech Gaming-Headset 75€ • iRobot Saugroboter ab 289,99€ • 1TB SSD PCIe 4.0 128,07€ • Razer Gaming-Tastatur 155€ • GOG New Year Sale: bis zu 90% Rabatt • LG OLED 65 Zoll 1.599€ [Werbung]
    •  /