DIE KLINGEL

Es gibt diejenigen, die diese Nachrichten vor Ihnen lesen.
Abonnieren Sie, um die neuesten Artikel zu erhalten.
Email
Name
Nachname
Wie willst du The Bell lesen?
Kein Spam

Beschreibung und Verwendung

Ein Aufzählungstyp wird aus Sicht der Sprache als eine Reihe von Bezeichnern definiert, die dieselbe Rolle spielen wie gewöhnliche benannte Konstanten, jedoch diesem Typ zugeordnet sind. Die klassische Beschreibung eines Aufzählungstyps in Pascal lautet wie folgt:

Typ Cardsuit \u003d (Keulen, Diamanten, Herzen, Pik);

Hier erfolgt die Deklaration des Cardsuit-Datentyps (Card Suit), dessen Werte eine der vier aufgelisteten Konstanten sein können. Eine Variable vom Typ Cardsuit kann einen der Werte Clubs, Diamanten, Herzen, Pik annehmen. Es ist zulässig, Werte des Aufzählungstyps auf Gleichheit oder Ungleichheit zu vergleichen und sie auch in Auswahlanweisungen (im Pascal-Fall) als Werte zur Identifizierung von Optionen zu verwenden.

Mit Aufzählungen können Sie dies tun quellcodes Programme sind besser lesbar, da Sie damit "magische Zahlen", die bestimmte Werte codieren, durch lesbare Namen ersetzen können.

Auf der Grundlage von Aufzählungen in einigen Sprachen können Mengenarten erstellt werden. In solchen Fällen wird die Menge als ungeordnete Menge verstanden (und beschrieben) einzigartige Werte Aufzählungstyp.

Ein Aufzählungstyp kann in Deklarationen von Variablen und formalen Parametern von Funktionen (Prozeduren, Methoden) verwendet werden. Aufzählungswerte können entsprechenden Variablen zugewiesen und Parameter der entsprechenden Typen in der Funktion übergeben werden. Darüber hinaus werden Gleichheits- und Ungleichheitsvergleiche von Aufzählungswerten immer unterstützt. Einige Sprachen unterstützen auch andere Vergleichsoperationen für Aufzählungswerte. Das Ergebnis des Vergleichs zweier aufgezählter Werte in solchen Fällen wird in der Regel durch die Reihenfolge dieser Werte in der Typdeklaration bestimmt. Der Wert, der früher in der Typdeklaration auftritt, wird als "kleiner" angesehen als der Wert, der später auftritt. Manchmal kann ein Aufzählungstyp oder ein Wertebereich eines Aufzählungstyps auch als Indextyp für ein Array verwendet werden. In diesem Fall gibt es ein Element im Array für jeden Wert des ausgewählten Bereichs, und die tatsächliche Reihenfolge der Elemente entspricht der Reihenfolge der Werte in der Typdeklaration.

Implementierung

In der Regel werden Aufzählungswerte während der Kompilierung mit Ganzzahlen dargestellt. Abhängig von der spezifischen Programmiersprache kann eine solche Darstellung entweder vollständig vor dem Programmierer verborgen sein oder ihm mithilfe einer "Problemumgehung" (z. B. erzwungene Konvertierung eines Aufzählungswerts in einen "ganzzahligen" Wert) zur Verfügung stehen oder sogar vom Programmierer gesteuert werden ( In solchen Fällen kann der Programmierer explizit angeben, welche Zahlen alle oder einige der Werte des Aufzählungstyps codieren. Alle Optionen haben ihre positiven und negativen Seiten. Einerseits macht die Möglichkeit, die numerischen Werte der Konstanten, aus denen ein Aufzählungstyp besteht, zu verwenden, insbesondere wenn sie missbraucht werden, die Verwendung dieser Typen bedeutungslos und birgt das Risiko von Fehlern (bei Verwendung numerischer Werte, für die es keine entsprechenden Konstanten im Typ gibt). Auf der anderen Seite bietet explizites Wertmanagement einige zusatzfunktionen... Beispielsweise können Aufzählungstypen verwendet werden, wenn eine Schnittstelle mit Modulen organisiert wird, die in anderen Sprachen geschrieben sind, wenn sie ganzzahlig codierte Werte aus einer vordefinierten Menge verwenden oder zurückgeben.

Eine weitere Möglichkeit, die aufgezählte Typen auf der Ebene der Sprachimplementierung bieten, ist das Speichern von Speicher. Bei einer kleinen Größe eines Aufzählungstyps reichen einige Bits aus, um einen Wert dieses Typs zu speichern (der obige Cardsuit-Typ erfordert nur zwei Bits pro Wert, während eine Standard-Ganzzahl bei den meisten verwendeten Architekturen 32 Bits benötigt - 16-mal mehr), und der Compiler kann sie verwenden diese Tatsache zum Komprimieren der Datenspeicherung im Speicher. Dies kann besonders wichtig sein, wenn mehrere Werte von Aufzählungstypen in einem Datensatz gespeichert sind. Durch die Komprimierung von Datensätzen bei der Verarbeitung einer großen Anzahl von Datensätzen kann viel Speicherplatz frei werden. Es ist zu beachten, dass Compiler diese Funktion normalerweise nicht implementieren, zumindest nicht vor kurzem, wenn computerspeicher deutlich gesunken.

Kritik

Der Aufzählungstyp ist in fortgeschrittenen Programmiersprachen traditionell, wird häufig verwendet und oft als selbstverständlich angesehen. Dieser Typ ist jedoch auch nicht ohne Kritik von Programmiertheoretikern und -praktikern. Bei der Entwicklung der Programmiersprache Oberon wurden also aufgezählte Typen in die Liste der Funktionen aufgenommen, die aus der Sprache entfernt wurden. Der Sprachentwickler Niklaus Wirth gab folgende Gründe an:

Auf der anderen Seite, zum Beispiel in Java, das ursprünglich keinen Aufzählungstyp enthielt, wurde dieser Typ später nicht nur aus Gründen der Bequemlichkeit, sondern auch der Zuverlässigkeit eingeführt: Das Problem bei der Verwendung benannter konstanter Gruppen anstelle von Aufzählungen besteht darin, dass es keine Compilersteuerung für die Eindeutigkeit von Werten gibt Konstanten und für die Möglichkeit der zufälligen Zuordnung variable Wertedie mit keiner dieser Konstanten übereinstimmen.

Beschreibung von Aufzählungen in verschiedenen Sprachen

Ada

Enum-Kartenanzug (CLUBS, DIAMONDS, HEARTS, SPADES);

Schwach typisierte dynamische Sprachen mit einer C-ähnlichen Syntax (z. B. Perl oder JavaScript) haben im Allgemeinen keine Aufzählungen.

C ++

C #

Enum Cardsuit (Keulen, Diamanten, Spaten, Herzen);

Java

Enum Cardsuit (Keulen, Diamanten, Spaten, Herzen)

Haskell

In einigen Programmiersprachen (z. B. in der Haskell-Sprache) ist es möglich, Aufzählungen mit algebraischen Typen zu emulieren. Auf diese Weise wird beispielsweise ein boolescher Typ codiert, der zwei Bezeichner zur Darstellung von Wahrheitswerten enthält:

Data Bool \u003d False | Wahr

Anmerkungen


Wikimedia Foundation. 2010.

Wikipedia

Aus technischen Gründen wird Bool hier umgeleitet. Sie können über Bool hier lesen: stdbool.h. Logischer, boolescher Datentyp (englischer boolescher oder logischer Datentyp) primitiver Typ Daten in der Informatik, die zwei mögliche nehmen können ... Wikipedia

In der Programmiertheorie wird jeder Typ, dessen Werte Werte einiger anderer Typen sind, von Konstruktoren eines algebraischen Typs "umbrochen". Mit anderen Worten, ein algebraischer Datentyp verfügt über eine Reihe von Typkonstruktoren, von denen jeder ... ... Wikipedia

Ganze, ganzzahliger Typ Daten (dt. Integer), in der Informatik einer der einfachsten und gebräuchlichsten Datentypen in Programmiersprachen. Dient zur Darstellung ganzer Zahlen. Viele Zahlen dieses Typs repräsentieren ... ... Wikipedia

Ein primitiver (eingebauter Basis-) Datentyp, der von einer Programmiersprache als grundlegende integrierte Einheit der Sprache bereitgestellt wird. Abhängig von der Sprache und ihrer Implementierung kann der Satz solcher Typen stark variieren. Es wird bestimmt von ... ... Wikipedia

Dieser Begriff hat andere Bedeutungen, siehe set (Bedeutungen). Eine Menge, ein Typ und eine Datenstruktur in der Informatik ist eine Implementierung einer mathematischen Objektmenge. Mit dem Datentyp können Sie eine begrenzte Anzahl von Werten speichern ... ... Wikipedia

Einige Programmiersprachen bieten einen speziellen Datentyp für komplexe Zahlen. Ein integrierter Typ erleichtert das Speichern und Berechnen komplexer Werte. Inhaltsverzeichnis 1 Arithmetik über Komplex 2 Unterstützung in Sprachen ... Wikipedia

Um diesen Artikel zu verbessern durch informationstechnologie es ist wünschenswert ?: Suchen und ordnen Sie in Form von Fußnoten Links zu maßgeblichen Quellen, die bestätigen, was geschrieben wurde. Fußnoten setzen, genauer machen ... Wikipedia

Variablensind die Größen, deren Werte kann sich ändernwährend der Programmausführung. Jede Variable hat einen eigenen eindeutigen Namen, der nach den am Anfang des Kapitels angegebenen Regeln erstellt wird. Die maximal mögliche Länge eines Namens hängt von der Pascal-Implementierung ab. Theoretisch können Sie Variablennamen mit einer Länge von bis zu 63 Zeichen angeben, was kaum relevant ist. In der Regel dürfen Namen nicht länger als 5 bis 10 Zeichen sein.

Da alle Daten im Computerspeicher in numerischer Form und im Binärzahlensystem gespeichert sind, muss zusätzlich zum Namen die Variable und zugewiesen werden eine Artdefinieren wertebereichvon der Variablen akzeptiert, und art und Weise der Verarbeitungmaschine. Lassen Sie uns dies anhand eines Beispiels erklären. Wie Sie in Anhang 1 sehen können, hat der lateinische Großbuchstabe "A" einen Dezimalcode von 65 oder 01000001 in Binärform. Keine weiteren Informationen zu artdaten, die in einer Speicherzelle gespeichert sind, kann der Computer nicht entscheiden, was genau diese Daten sind - die Nummer 65, der Zeichencode "A" oder etwas anderes. In jeder Programmiersprache, einschließlich Pascal, gibt es einen Standardsatz von Typen, denen der eine oder andere Satz von Speicherzellen zugewiesen werden kann. Es ist praktisch, Informationen zu den Datentypen von Pascal zu tabellieren. Die Zeilen dieser Tabelle werden nach sortiert dienstalter der Typenvom niedrigsten, für dessen Darstellung die kleinste Anzahl von Bytes erforderlich ist, und somit den kleinsten Bereich möglicher Werte darstellt, bis zum höchsten, der den größten Wertebereich darstellt. Die Tabelle zeigt nicht alle möglichen, sondern nur die grundlegenden Datentypen von Pascal.

Pascals Schlüsselwort

Typ Name und Beschreibung

Speichergröße, Bytes

Bereich möglicher Werte

Boolescher Wert: Speichert eine boolesche Variable

Symbolisch: Speichert den Code eines Zeichens aus einem Satz von ASCII-Codes

von 0 bis einschließlich 255 (2 8 \u003d 256)

Ganze Zahl

Ganzzahl ohne Vorzeichen

± 2 16 - Der Bereich ist doppelt so groß, da das 16. Bit nicht unter dem Vorzeichen der Zahl belegt ist

Lange Ganzzahl: Zur Darstellung großer Ganzzahlwerte

Eine reelle Zahl mit einer Darstellungsgenauigkeit von bis zu 11-12 Stellen im Bruchteil

~ 2.9*10 -39 - 1.7*10 38

Eine reelle Zahl mit einer Genauigkeit von 15-16 Stellen im Bruchteil

~ 5*10 -324 – 1.7*10 308

Eine Folge von Zeichen vom Typ Char mit einer Länge von 1 bis 255

2-256 (Zeichenfolgendaten + 1 Byte zum Speichern der Länge)

Alle Textzeilen, die aus druckbaren Zeichen bestehen

Theoretisch würde 1 Bit ausreichen, um eine Boolesche Variable zu schreiben, aber die minimal adressierbare Speichereinheit beträgt 1 Byte (siehe Anhang 1). Geben Sie im selben Anhang genau an, wie sich die für eine Variable zugewiesene Speichermenge in Bytes auf den Wertebereich auswirkt, den sie darstellt.

Ganzzahl- und Zeichentypen werden generisch aufgerufen ordinal-Dadurch wird betont, dass diese Typen eine endliche Menge von Werten haben, die geordnet oder aufgezählt werden können. Denken Sie daran, dass reale Werte anders als Ganzzahlen im Computerspeicher gespeichert werden - nämlich als Satz von Mantisse und Reihenfolge.

Die Aufgabe, die richtigen Datentypen auszuwählen, liegt natürlich ganz beim Programmierer. Wenn beispielsweise ein Zähler in Ihrem Programm ganzzahlige Werte von 1 bis 100000 annehmen kann, wäre es falsch, ihn als Variable vom Typ Integer zu beschreiben - schließlich 2 15 \u003d 32768, und wenn der Zähler diesen Wert erreicht, erfüllensein Wert, der -32768 wird. In diesem Fall wäre es sinnvoll, den Zähler als Variable vom Typ Longint zu beschreiben.

Variablen werden im Programm von einem Operator der folgenden Form beschrieben:

var List1: Type1;

Liste2: Typ2;

ListN: TypeN;

Hier aufführen- eine Reihe von Variablennamen, die durch Kommas (oder eine Variable) getrennt sind, und eine Art- einer der oben genannten Datentypen. Zum Beispiel die Konstruktion

beschreibt 2 reelle Variablen mit den Namen t und r sowie eine ganzzahlige Variable mit dem Namen i. Stichwortvar kann dupliziert werden, ist aber normalerweise nicht erforderlich. Die Abkürzung var leitet sich vom englischen Wort "Variable" ab.

In der Lektion wird der Algorithmus zum Erstellen von Benutzerdatentypen in Pascal (Typ) erläutert. Beispiele werden aussortiert.

Datentypen in Pascal sind in einfache und komplexe unterteilt.

Einfache Typen umfassen Standard, aufzählbar und begrenzt.

Zu komplexen Typen - Arrays, Sets, Datensätze, Dateien. Elemente komplexer Typen können einfache und komplexe Typen sein. Komplexe Datentypen werden wir später kennenlernen.

Einer der häufigsten Typen ist der ordinale Standardtyp.
Ordentlicher Standardtyp bezeichnet eine endliche lineare Menge von Werten. Es beinhaltet normalerweise ganzzahltypen, Byte, Zeichen und Boolescher Wert.

Neue (benutzerdefinierte) Datentypen werden in erster Linie aus Gründen der Klarheit und Bequemlichkeit benötigt:

Beispiel: Es wird eine 10 x 50-Matrix angegeben. Beschreiben Sie die Matrix anhand eines benutzerdefinierten Datentyps

prozedur p (a: Array von Integer);

Aber sollte Datentyp erstellen und schreibe es so:

1 2 Typ vector \u003d Array [1 .. 10] der Ganzzahl; var-Prozedur p (a: Vektor);

typ vector \u003d Array von Integer; var-Prozedur p (a: Vektor);

Beispiele für die Beschreibung von Arrays mit neuen Typen

typ vector \u003d Array von Integer; matritsa \u003d Array des Vektors;

  • 1 Typ matritsa \u003d Array [1 .. 8] von Array [1 .. 10] von Integer;

    typ matritsa \u003d Array des Arrays der Ganzzahl;

  • 1 Typ matritsa \u003d Array [1 .. 8, 1 .. 10] von Integer;

    typ matritsa \u003d Array von Ganzzahlen;

  • Im folgenden Beispiel die Variablen c und d werden gleich beschrieben:

    1 2 3 4 5 6 Typ vector \u003d Array [1 .. 10] der Ganzzahl; matritsa \u003d Array [1 .. 8] des Vektors; var a, b: Vektor; c: Matritsa; d: Array [1 .. 8] des Vektors;

    typ vector \u003d Array von Integer; matritsa \u003d Array des Vektors; var a, b: Vektor; c: Matritsa; d: Vektorarray;

    Typ 1: Die Arrays a, b und c sind angegeben. Finden Sie das arithmetische Mittel der minimalen Elemente eines Arrays (verwenden Sie Array Shaping und).
    Verwenden Sie zur Beschreibung von Verfahren benutzerdefinierte Typen Daten

    Aufzählungstyp und Intervalltyp in Pascal

    Aufzählungstyp

    Das Programm kann Variablen eines Typs verwenden, der keinem der Standardtypen entspricht.

    Beispielsweise kann ein Typ angegeben werden, indem bei der Deklaration Werte aufgelistet werden. Variable dieses Typs kann einen dieser Werte annehmen.

    Diese Werte können keine Zeichenfolgen sein, sie können nicht gedruckt und nicht in einen Computer eingegeben werden Verwenden der Anweisungen Lesen und Schreiben.

    Betrachten Sie ein Beispiel für das Erstellen eines Aufzählungstyps in Pascal:

    Typ pt \u003d (Wort1, Wort2, ... WortN); var w: pt;

    typ pt \u003d (Wort1, Wort2, ... WortN); var w: pt;

  • pt - Typkennung (beliebig),
  • word1, word2 ... - spezifische Werte, die eine Variable w vom Typ pt annehmen kann
  • werte dieses Typs werden als geordnet betrachtet, d.h. Die Typdeklaration führt gleichzeitig die Bestellung ein word1.
  • Intervalltyp

    Intervalltyp definiert eine bestimmte Teilmenge von Werten, die eine bestimmte Variable annehmen kann. Erstellt durch Angabe des niedrigsten und höchsten Werts ordnungszahl ... Als Konstanten (Minimal- und Maximalwerte) können beliebige Werte verwendet werden einfache Typen außer für echte Typen.

    Betrachten Sie ein Beispiel für eine Intervalltypdeklaration:

    a: min .. max;
  • ein - Intervallvariable
  • mindest - Endeffekt
  • max Ist die Obergrenze der Teilmenge
  • bereichsgrenzen sind durch zwei Punkte getrennt
  • rand mindestsollte immer weniger sein max
  • konstanten mindestund maxmuss vom gleichen Typ sein. Sie definieren den Basistyp einer Variablen ein.
  • Aufzählungs- und Intervalltypen zusammen verwenden

    Eine Intervalltypvariable kann mit einem Stamm auf den zugrunde liegenden Aufzählungstyp gesetzt werden... Betrachten wir ein Beispiel:

    Beispiel: Wenn die Variable b kann einen der Werte annehmen rot, gelb, gründann kann diese Variable wie folgt beschrieben werden: b: rot..grün; Basistyp für b ist der Typ farbe:

    Typ Farbe \u003d (rot, gelb, grün, blau); var b: rot .. grün; begin b: \u003d rot; writeln (b); b: \u003d gelb; writeln (b); b: \u003d grün; writeln (b); Readln Ende.

    typ Farbe \u003d (rot, gelb, grün, blau); var b: rot ... grün; begin b: \u003d rot; writeln (b); b: \u003d gelb; writeln (b); b: \u003d grün; writeln (b); Readln Ende.

    IM dieses Beispiel Farbtyp ist einfach. Die Variable b eines Intervalltyps wird unter Verwendung eines Basisaufzählungstyps definiert.

    Beispiel: Es ist bekannt, wie viele Tage es in jedem Monat des Jahres gibt. Wie viele Tage im Sommer?
    31,28,31,30,31,30,31,31,30,31,30,31

    Eine der Optionen zur Lösung dieses Problems sieht folgendermaßen aus:

      Lösung anzeigen:

      1 2 3 4 5 6 7 8 const dni: Array [1 .. 12] von Byte \u003d (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); var s, i: Ganzzahl; begin s: \u003d 0; für i: \u003d 6 bis 8 do s: \u003d s + dni [i]; (Sommermonate - 6, 7, 8) Schreiben Ende.

      const dni: Array von Byte \u003d (31,28,31,30,31,30,31,31,30,31,30,31); var s, i: Ganzzahl; begin s: \u003d 0; für i: \u003d 6 bis 8 do s: \u003d s + dni [i]; (Sommermonate - 6, 7, 8) Schreiben Ende.

      Der Code diese Entscheidung hat nicht die beste Klarheit, außerdem müssen Sie die Anzahl der Monate des Beginns und des Endes des Sommers (6 und 8) selbst berechnen.
      Der Komfort und die Sichtbarkeit solcher Programme können wie folgt verbessert werden:

      Lösung anzeigen:

      1 2 3 4 5 6 7 8 9 TYPE mes \u003d (Januar, Februar, März, April, Mai, Juni, Juli, August, September, September, Oktober, November, Dezember); CONST dni: Array [Januar .. Dezember] von Byte \u003d (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); VAR s: Integer; i: mes; (Die Schleifenzählervariable i ist vom Typ mes, nicht Integer) BEGIN s: \u003d 0; für i: \u003d Juni bis August do s: \u003d s + dni [i]; WriteLn (s) END.

      TYPE mes \u003d (Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, Oktober, November, Dezember); CONST dni: Array von Byte \u003d (31,28,31,30,31,30,31,31,30,31,30,31); VAR s: Integer; i: mes; (Die Schleifenzählervariable i ist vom Typ mes, nicht Integer) BEGIN s: \u003d 0; für i: \u003d Juni bis August do s: \u003d s + dni [i]; WriteLn (s) END.

    Typ 2: Bestimmen Sie anhand des Wochentags, ob es sich um ein Wochenende oder einen Arbeitstag handelt.

  • Definieren Sie einen Aufzählungstyp mit Wochentagswerten ( mon, di., heiraten, thu, fri, saß, sonne).
  • Weisen Sie im Programm einer Variablen einen Wert zu (z. B. aus Werten des Typs, z. mon).
  • Prüfvariable: Wenn der Wert Samstag oder Sonntag ist, drucken Sie eine Nachricht "Ausgabe!"Andernfalls "Wir arbeiten!".
  • Typ 3: Geben Sie je nach Monat des Jahres eine Nachricht aus "kalt" - wenn der Wintermonat und "herzlich" - Wenn Sommer.

  • Definieren Sie einen Aufzählungstyp mit den Werten der Namen der Monate des Jahres.
  • Deklarieren Sie eine Variable dieses Typs.
  • Weisen Sie im Programm einer Variablen einen Wert zu (aus Typwerten).
  • Prüfvariable: Wenn sich der Wert auf den Wintermonat bezieht, wird eine Meldung angezeigt "kalt" Andernfalls, - "herzlich".
  • Implementieren Sie auf verschiedene Arten.
  • Writeln (pribitie) Ende.

    var otpravlenie, pribitie: byte; beginne otpravlenie: \u003d 22; Pribitie: \u003d Otpravlenie + 10; Schreiben (Pribitie) Ende.

    das Programm gibt anstelle der Antwort "8" die Antwort "32" aus.
    Durch die Einführung eines Typs mit begrenztem Bereich wird das falsche Ergebnis vermieden, der Compiler gibt jedoch weiterhin einen Fehler aus:

    1 2 3 4 5 6 var otpravlenie, pribitie: 0 .. 24; beginne otpravlenie: \u003d 22; Pribitie: \u003d Otpravlenie + 10; writeln (pribitiedeva); var a: znak; begin a: \u003d lev; wenn ein<= strelets then writeln ("огонь" ) ; if (a>\u003d vesi) und (a<= bliznetsi) then writeln ("воздух" ) ; if (a>\u003d rak) und (a<= ribi) then writeln ("вода" ) ; if (a>\u003d kozerog) und (a<= deva) then writeln ("земля" ) ; end .

    typ znak \u003d (Ofen, Lev, Strelets, Vesi, Vodoley, Bliznetsi, Rak, Skorpion, Ribi, Kozerog, Telets, Deva); var a: znak; begin a: \u003d lev; wenn ein<=strelets then writeln("огонь"); if (a>\u003d vesi) und (a<=bliznetsi) then writeln ("воздух"); if (a>\u003d rak) und (a<=ribi) then writeln ("вода"); if (a>\u003d kozerog) und (a<=deva) then writeln ("земля"); end.

    Typ 5: Geben Sie je nach Name der Blume an, zu welcher Jahreszeit sie gehört:

  • Frühling: Schneeglöckchen, Iris, Narzissen
  • Sommer: Kamille, Löwenzahn, Mohn
  • Herbst: Aster, Chrysantheme, Phlox
  • Bei der Beschreibung einer Variablen müssen Sie ihren Typ angeben. Der Typ einer Variablen beschreibt die Werte, die sie annehmen kann, und die Aktionen, die für sie ausgeführt werden können. Die Typbeschreibung definiert einen Bezeichner, der den Typ angibt.

    Einfache Typen werden in Standardtypen (Ordnungszahlen) und Aufzählungstypen (eingeschränkte Typen) unterteilt.

    Standardtypen

    Turbo Pascal verfügt über vier integrierte Standardtypen: Integer, Real, Boolean und Char.

    Ganzzahliger Typ

    Turbo Pascal verfügt über fünf integrierte Ganzzahltypen: Shortint, Integer, Longint, Byte (Byte) und Word (Word). Jeder Typ bezeichnet eine bestimmte Teilmenge von Ganzzahlen, wie in der folgenden Tabelle gezeigt.

    Eingebaute Ganzzahltypen.

    Reichweite

    Format

    8 vorzeichenbehaftete Bits

    16 vorzeichenbehaftete Bits

    2147483648 +2147483647

    Signiert 32 Bit

    8 vorzeichenlose Bits

    16 vorzeichenlose Bits

    Arithmetische Operationen an Operanden eines ganzzahligen Typs werden gemäß den folgenden Regeln ausgeführt:

    1. Ein Integer-Konstantentyp ist der integrierte Integer-Typ mit dem kleinsten Bereich, der den Wert dieser Integer-Konstante enthält.
    2. Im Fall einer binären Operation (eine Operation, die zwei Operanden verwendet) werden beide Operanden in ihren gemeinsamen Typ konvertiert, bevor sie bearbeitet werden. Der gemeinsame Typ ist der integrierte Integer-Typ mit dem kleinsten Bereich, der alle möglichen Werte beider Typen enthält. Beispielsweise ist der gemeinsame Typ für eine Ganzzahl mit Byte-Länge und eine Ganzzahl eine Ganzzahl, und der gemeinsame Typ für eine Ganzzahl mit Wortlänge und eine Ganzzahl ist eine lange Ganzzahl. Die Aktion wird gemäß der Genauigkeit des generischen Typs ausgeführt, und der Typ des Ergebnisses ist der generische Typ.
    3. Der Ausdruck rechts in der Zuweisungsanweisung wird unabhängig von der Größe der Variablen links ausgewertet.

    Operationen, die mit ganzen Zahlen ausgeführt werden:

    "+" - Ergänzung

    “-“ - Subtraktion

    "*" - Multiplikation

    SQR - Quadrieren

    DIV - verwirft nach der Teilung den Bruchteil

    MOD - Erhalten eines ganzzahligen Restes nach der Division

    ABS - Nummernmodul

    RANDOM (X) - Erhalten einer Zufallszahl von 0 bis X.

    A: \u003d 100; b: \u003d 60; a DIV b Ergebnis - 1 a MOD b Ergebnis - 40

    Variablen vom Typ Integer werden wie folgt beschrieben:

    var Liste der Variablen: Typ;

    Zum Beispiel: var a, p, n: Ganzzahl;

    Realer Typ (real)

    Ein reeller Typ ist eine Teilmenge von reellen Zahlen, die im Gleitkommaformat mit einer festen Anzahl von Ziffern dargestellt werden können. Das Schreiben eines Gleitkommawertes umfasst typischerweise drei Werte - m, b und e -, so dass m * b e, wobei b immer 10 ist und m und e ganze Zahlen im realen Bereich sind. Diese Werte m und e definieren weiter den Bereich und die Genauigkeit des realen Typs.

    Es gibt fünf Arten von realen Typen: real, single, duble, exnende, comp. Reale Typen unterscheiden sich im Bereich und in der Genauigkeit der zugehörigen Werte

    Bereich und Dezimalstellen für reale Typen

    Reichweite

    Zahlen

    2,9 x 10E-39 bis 1,7 x 10E 38

    1,5 x 10E-45 bis 3,4 x 10E 38

    5,0 x 10E-324 bis 1,7 x 10E 308

    3,4 x 10E-493 bis 1,1 x 10E 403

    2E 63 bis 2E 63

    Operationen mit reellen Zahlen:

    • Alle Operationen gelten für ganze Zahlen.
    • SQRT (x) ist die Quadratwurzel der Zahl x.
    • Sünde (X), COS (X), ARCTAN (X).
    • LN (X) -natürlicher Logarithmus.
    • EXP (X) -Exponent X (ex x).
    • EXP (X * LN (A)) - Potenzierung (A x).
    • Typkonvertierungsfunktionen:
      • TRUNC (X) - verwirft den Bruchteil;
      • RUNDE (X) - Rundung.
    • Einige Regeln für arithmetische Operationen:
      • Wenn bei der arithmetischen Operation Zahlen vom Typ Real und Integer angetroffen werden, ist das Ergebnis vom Typ Real.
      • Alle Bestandteile des Ausdrucks werden in eine Zeile geschrieben.
      • Es werden nur Klammern verwendet.
      • Sie können nicht zwei Rechenzeichen hintereinander setzen.

    Variablen vom realen Typ werden wie folgt beschrieben:

    var Liste der Variablen: Typ;

    Zum Beispiel:

    var d, g, k: real;

    Zeichentyp (char)

    Jedes in Apostrophen eingeschlossene Zeichen ist vom Typ char. Um einen Apostroph als symbolische Variable darzustellen, müssen Sie ihn in einen Apostroph einschließen: '' '' '.

    Jedes Symbol hat einen eigenen Code und eine eigene Nummer. Die fortlaufende Anzahl der Ziffern 0.1..9 wird in aufsteigender Reihenfolge sortiert. Die Seriennummern der Buchstaben sind ebenfalls in aufsteigender Reihenfolge, folgen jedoch nicht unbedingt aufeinander.

    Vergleichszeichen gelten für Zeichendaten:

    > , < , >=, <=, <> .

    Zum Beispiel: 'A'< ‘W’

    Funktionen, die für symbolische Variablen gelten:

    1. ORD (X) - definiert die Ordnungszahl des X-Zeichens. Ord ('a') \u003d 97;
    2. CHR (X) - definiert ein Zeichen nach Nummer. chr (97) \u003d 'a';
    3. PRED (X) - Zeigt das Zeichen vor dem X-Zeichen an. Pred ('B') \u003d 'A';
    4. SUCC (X) - gibt das Zeichen nach dem Zeichen X zurück. Succ ('A') \u003d 'B';

    Aufzählungstyp

    Der aufgezählte Datentyp wird so genannt, weil er als Aufzählung von Konstanten in einer genau definierten Reihenfolge und in einer genau definierten Menge angegeben wird. Ein Aufzählungstyp besteht aus einer Liste von Konstanten. Variablen dieses Typs können den Wert jeder dieser Konstanten annehmen. Die Beschreibung des Aufzählungstyps lautet:

    Art<имя типа>\u003d (Liste der Konstanten); Var<имя переменной>:<имя типа>;

    wo<список констант> ist eine spezielle Art von durch Kommas getrennten Konstanten, die ihre eigene Seriennummer haben, beginnend mit 0.

    Zum Beispiel:

    Typ Richtung \u003d (Nord, Süd, West, Ost); Monat \u003d (Juni, Juli, August, Januar); Kapazität \u003d (Eimer, Fass, Kanister, Tank); var turn: Richtung; Abfahrt: Monat; Volumen: Kapazität; var turn: (Nord, Süd, West, Ost); Abfahrt: (Juni, Juli, August, Januar); Volumen: (Eimer, Fass, Kanister, Tank);

    Sie können die folgenden Zuweisungsoperatoren ausführen:

    Abbiegen: \u003d nach Süden; Abfahrt: \u003d August; Volumen: \u003d Tank;

    sie können jedoch keine gemischten Aufgaben ausführen:

    Abfahrt: \u003d Süden; Volumen: \u003d August;

    Die folgenden Funktionen gelten für aufgezählte Variablen:

    1. ORD - Seriennummer

    2. PRED ist das vorhergehende Element

    3. SUCC ist das nächste Element.

    PRED (Fass) \u003d Eimer; SUCC (Süd) \u003d West; ORD (Juli) \u003d 1;

    Variablen eines Aufzählungstyps können verglichen werden, da sie geordnet und nummeriert sind. Also Ausdrücke: Norden< юг, июнь < январь имеют значения TRUE, а юг>westen und Bock<бочка значение FАLSE.

    Begrenzter Typ

    Wenn eine Variable nicht alle Werte ihres Typs akzeptiert, sondern nur in einem bestimmten Bereich, kann sie als Variable eines begrenzten Typs betrachtet werden. Jeder eingeschränkte Typ wird angegeben, indem eine Einschränkung für die Basistypen erzwungen wird.

    Es wird so beschrieben:

    ART<имя типа>\u003d Konstante1 .. Konstante2

    In diesem Fall müssen folgende Regeln beachtet werden:

    1. Beide beschränkten Konstanten müssen vom gleichen Typ sein.
    2. Jeder einfache Typ kann als Basistyp verwendet werden, außer real (real).
    3. Der Anfangswert beim Definieren des begrenzten Typs darf nicht größer als der Endwert sein.
    typindex \u003d 0 ..63; Buchstabe \u003d 'a' .. 'z'; var char1, char2: Buchstabe; a, g: Index;

    Sie können es direkt im Abschnitt zur Variablenbeschreibung beschreiben:

    var a, g: 0 ..63; char1, char2: 'a' .. 'z'.

    Wessen Wertesatz ist eine begrenzte Liste von Bezeichnern.

    Enzyklopädisches YouTube

    • 1 / 5

      Ein Aufzählungstyp wird aus Sicht der Sprache als eine Reihe von Bezeichnern definiert, die dieselbe Rolle spielen wie gewöhnliche benannte Konstanten, jedoch diesem Typ zugeordnet sind. Die klassische Beschreibung eines Aufzählungstyps in Pascal lautet wie folgt:

      typ Cardsuit \u003d (Keulen, Diamanten, Herzen, Spaten);

      Hier erfolgt die Deklaration des Cardsuit-Datentyps (Card Suit), dessen Werte eine der vier aufgelisteten Konstanten sein können. Eine Variable vom Typ Cardsuit kann einen der Werte Clubs, Diamanten, Herzen, Pik annehmen. Es ist zulässig, Werte des Aufzählungstyps auf Gleichheit oder Ungleichheit zu vergleichen und sie auch in Auswahlanweisungen (im Pascal-Fall) als Werte zur Identifizierung von Optionen zu verwenden.

      Durch die Verwendung von Aufzählungen können Sie die Quellcodes von Programmen besser lesbar machen, da Sie damit die "magischen Zahlen", die bestimmte Werte codieren, durch lesbare Namen ersetzen können.

      Auf der Grundlage von Aufzählungen in einigen Sprachen können Mengenarten erstellt werden. In solchen Fällen wird eine Menge als eine ungeordnete Sammlung eindeutiger Werte eines Aufzählungstyps verstanden (und beschrieben).

      Ein Aufzählungstyp kann in Deklarationen von Variablen und formalen Parametern von Funktionen (Prozeduren, Methoden) verwendet werden. Aufzählungswerte können entsprechenden Variablen zugewiesen und Parameter der entsprechenden Typen in der Funktion übergeben werden. Darüber hinaus werden Gleichheits- und Ungleichheitsvergleiche von Aufzählungswerten immer unterstützt. Einige Sprachen unterstützen auch andere Vergleichsoperationen für Aufzählungswerte. Das Ergebnis des Vergleichs zweier aufgezählter Werte in solchen Fällen wird in der Regel durch die Reihenfolge dieser Werte in der Typdeklaration bestimmt. Der Wert, der früher in der Typdeklaration auftritt, wird als "kleiner" angesehen als der Wert, der später auftritt. Manchmal kann ein Aufzählungstyp oder ein Wertebereich eines Aufzählungstyps auch als Indextyp für ein Array verwendet werden. In diesem Fall gibt es ein Element im Array für jeden Wert des ausgewählten Bereichs, und die tatsächliche Reihenfolge der Elemente entspricht der Reihenfolge der Werte in der Typdeklaration.

      Implementierung

      In der Regel werden Aufzählungswerte während der Kompilierung mit Ganzzahlen dargestellt. Abhängig von der spezifischen Programmiersprache kann eine solche Darstellung entweder vollständig vor dem Programmierer verborgen sein oder ihm mithilfe einer "Problemumgehung" (z. B. erzwungene Konvertierung eines Aufzählungswerts in einen "ganzzahligen" Wert) zur Verfügung stehen oder sogar vom Programmierer gesteuert werden ( In solchen Fällen kann der Programmierer explizit angeben, welche Zahlen alle oder einige der Werte des Aufzählungstyps codieren. Alle Optionen haben ihre positiven und negativen Seiten. Einerseits macht die Möglichkeit, die numerischen Werte der Konstanten zu verwenden, aus denen ein Aufzählungstyp besteht, insbesondere wenn er missbraucht wird, die Verwendung dieser Typen bedeutungslos und birgt das Risiko von Fehlern (bei Verwendung numerischer Werte, für die der Typ keine entsprechenden Konstanten enthält). Andererseits bietet das explizite Wertmanagement einige zusätzliche Möglichkeiten. Beispielsweise können Aufzählungstypen verwendet werden, wenn eine Schnittstelle mit Modulen organisiert wird, die in anderen Sprachen geschrieben sind, wenn sie ganzzahlig codierte Werte aus einer vordefinierten Menge verwenden oder zurückgeben.

      Eine andere Möglichkeit, die aufgezählte Typen auf der Ebene der Sprachimplementierung bieten, ist das Speichern von Speicher. Bei einer kleinen Größe eines Aufzählungstyps reichen einige Bits aus, um einen Wert dieses Typs zu speichern (der obige Cardsuit-Typ erfordert nur zwei Bits pro Wert, während eine Standard-Ganzzahl bei den meisten verwendeten Architekturen 32 Bits benötigt - 16-mal mehr), und der Compiler kann sie verwenden diese Tatsache zum Komprimieren der Datenspeicherung im Speicher. Dies kann besonders wichtig sein, wenn mehrere Werte von Aufzählungstypen in einem Datensatz gespeichert sind. Durch die Komprimierung von Datensätzen bei der Verarbeitung einer großen Anzahl von Datensätzen kann viel Speicherplatz frei werden. Es ist zu beachten, dass Compiler diese Funktion normalerweise nicht implementieren, zumindest in jüngster Zeit, wenn der Computerspeicher erheblich billiger geworden ist.

      Kritik

      Der Aufzählungstyp ist in fortgeschrittenen Programmiersprachen traditionell, weit verbreitet und wird oft als selbstverständlich angesehen. Dieser Typ ist jedoch auch nicht ohne Kritik von Programmiertheoretikern und -praktikern. Bei der Entwicklung der Programmiersprache Oberon wurden aufgezählte Typen in die Liste der Funktionen aufgenommen, die aus der Sprache entfernt wurden. Der Sprachentwickler Niklaus Wirth gab folgende Gründe an:

      Auf der anderen Seite, zum Beispiel in Java, das ursprünglich keinen Aufzählungstyp enthielt, wurde dieser Typ später nicht nur aus Gründen der Bequemlichkeit, sondern auch der Zuverlässigkeit eingeführt: Das Problem bei der Verwendung benannter konstanter Gruppen anstelle von Aufzählungen besteht darin, dass es keine Compiler-Kontrolle über die Eindeutigkeit von Werten gibt Konstanten und die Möglichkeit der zufälligen Zuordnung zu Variablen von Werten, die keiner dieser Konstanten entsprechen.

      Beschreibung von Aufzählungen in verschiedenen Sprachen

      Enum-Kartenanzug (CLUBS, DIAMONDS, HEARTS, SPADES);

      Schwach typisierte dynamische Sprachen mit einer C-ähnlichen Syntax (wie Perl oder JavaScript) haben normalerweise keine Aufzählungen.

    DIE KLINGEL

    Es gibt diejenigen, die diese Nachrichten vor Ihnen lesen.
    Abonnieren Sie, um die neuesten Artikel zu erhalten.
    Email
    Name
    Nachname
    Wie willst du The Bell lesen?
    Kein Spam