Eigenschaften strukturierter Datentypen

Ähnliche Dokumente
3. Die Konzepte einer Programmiersprache: Modula-2

Taschenrechner Version 6.1

Aufzählungs- und Unterbereichstypen Aufzählungstyp ( enumeration ) (cont d)

Teil VI: Prozeduren Feld-Parameter & Typen. 1. Offene ARRAY-Parameter 2. Prozedurtypen und -variablen

Beispiele elementarer Datentypen Ganze Zahlen (integer) Unterbereiche Gleitkommazahlen Festkommazahlen

15 Der strukturierte Datentyp»set«(Mengen)

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen

1953/54 (USA) PS FORTRAN (FORmula TRANslating system) 1958/60 (Europa) ALGOL (ALGOrithmic Language)

INHALTSVERZEICHNIS. 1 Strukturierte Datentypen. 1.1 String. 1.2 Array (Feld) 1.3 Record. 1.4 Set. 2. Erweiterungen in Pascal

Informationsverarbeitung im Bauwesen

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings

16 Der strukturierte Datentyp "record"

Physische Datenstrukturen

Informatik. Strukturen und Aufzählungstypen. Vorlesung

Vorkurs Mathematik für Informatiker. 1 Potenzen. Michael Bader, Thomas Huckle, Stefan Zimmer Oktober Kap.

H. Pudlatz. Einführung in die Programmiersprache Modula-2

Rückblick Speicherverwaltung

2.2 Einfache Datenstrukturen

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Wiederholungsanweisungen. fußgesteuert kopfgesteuert Zählschleife

INP (07) Prof. Dr.-Ing. S. Gössner. University of Applied Sciences Lippe & Höxter

Klausur zur Wirtschaftsinformatik II im Grundstudium

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

Informatik I (D-ITET)

Einführung Pointer. C-Kurs 2013, 2. Vorlesung. Nico Andy

Algorithmen & Datenstrukturen

2. Programmierung in C

Kurs 1575, Musterlösung der Klausur vom

Einstieg in die Informatik mit Java

1. Allgemeine Datei (Binärdatei mit formatierten Inhalt)

Konzepte benutzerdefinierter Datenstrukturen

Einstieg in die Informatik mit Java

C- Kurs 07 Höhere Datentypen

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.

Damit lockert Modula an dieser Stelle sein Typstrenge etwas. Nehmen wir die zwei Felder a und b:

\\//_. 18. Mai Goethe-Gymnasium Sebnitz. Datenstrukturen und Datentypen \\//_. Datentypen und. Datenstrukturen. einfache Datentypen

VHDL - Objekte und Typen

Felder. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

4.Grundsätzliche Programmentwicklungsmethoden

Boolean Wertemenge: Wahrheitswerte {FALSE,TRUE}, auch {0,1} Deklaration:

Algorithmen und Datenstrukturen II

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe

Einstieg in die Informatik mit Java

Datenstrukturen. InE1 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert

Konzepte der Programmiersprachen

ÜBUNGS-BLOCK 7 LÖSUNGEN

Erste Java-Programme (Arrays und Schleifen)

Die verschiedenen Programmierparadigmen von C++ Software-Technik: Vom Programmierer zur erfolgreichen

Wertebereich und Genauigkeit der Zahlendarstellung

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

10. Felder (Arrays) Teil 2. Java-Beispiele: Echo.java Primzahlen.java Monate.java. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Syntax der Sprache PASCAL

9. Vektoren. (auch Felder/array)

Propädeutikum. Dipl.-Inf. Frank Güttler

Paritäts-Bit- Generator

Semistrukturierte Daten

Grundlagen und Konzepte von C Datenstrukturen

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 1

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme

Programmiersprachen Einführung in C

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08

Integritätsbedingungen für komplexe Objekte in objektrelationalen Datenbanksystemen

Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung

ALGOL 68 im Aspekt einer modernen Programmiersprache???

2. Übung. Systemobjektmodell. TU Dresden - Institut für Bauinformatik Folie-Nr.: 1

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Modul 122 VBA Scribt.docx

Reihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang

Programmieren mit PASCAL

Kapitel

Programmierkurs C++ Variablen und Datentypen

Java: Grundlagen der Sprache: Beispiele aus der Praxis. 3.6 Beispiele aus der Praxis 3-1

Ulrich Stein

tdaten=record name : string; alter: integer; groesse:real; end;

Tag 4 Repetitorium Informatik (Java)

3. Grundlegende Sprachkonstruktionen imperativer Programme

Grundlagen der Objektorientierten Programmierung - Statische Arrays

Einführung in die Informatik I

Datentypen: integer, char, string, boolean

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 1

Grundlagen der Informatik 6. Arrays I

VHDL Objekte und Typen

Informatik I Übung, Woche 38

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Datenstrukturen -- die komplexe Welt in FileMaker Feldern beschreiben

Seite 1 von 13 Name: Aufgabe 1: Suchalgorithmen (a) (4 Punkte ) Gegeben ist folgendes Streckennetz:

C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue

Eine praktische Einführung in die Programmierung mit der Programmiersprache C

Einführung in die Programmierung für NF. Arrays

1 RPC-Protokoll-Definitionssprache (Protocol Definition Language )

Abgeleitete Datentypen

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Tag 4 Repetitorium Informatik (Java)

Algorithmen und ihre Programmierung

Repetitorium Programmieren I + II

Transkript:

Strukturierte Datentypen Eigenschaften strukturierter Datentypen Strukturierte Datentypen sind auf anderen, einfacheren Datentypen aufgebaut. ermöglichen Aggregation von Einzelelementen. Beispiele für strukturierte Datentypen in Modula-2 sind das Feld (Array) die Menge (Set) der Verbund oder die Struktur (Record) Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 119 Das Feld (Array) Ein Feld dient zur Aufnahme einer festen Anzahl von Informationen des gleichen Typs. Beispiel: Ein Vektor ist ein Feld von Integerzahlen. TYPE VektorTyp : ARRAY [1..10] OF INTEGER;... VAR Vektor : Vektortyp; Vektor 0 1 2 3 4 5 6 7 8 9 Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 120

Der Zugriff auf ein bestimmtes Elemente eines Arrays erfolgt über seinen Index. Vektor[5] := 42; Index des Feldelements 0 1 2 3 4 5 6 7 8 9 Vektor 42 Inhalt des Feldelements Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 121 Beispiel: Füllen des Vektors mit den 2er-Potenzen von 2 1 bis 2 10 : FOR Index := 1 TO 10 DO Vektor[Index-1] := Pot( 2,Index); Vektor 0 1 2 3 4 5 6 7 8 9 2 4 8 16 32 64 128 256 512 1024 Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 122

Ein Array kann über einem beliebigen Typ definiert werden. Da auch benutzerdefinierte Typen "Typen" sind, können rekursive Schachtelung definiert werden, z.b. ein Array von Vektoren. Beispiel: Struktur aus 4 Vektoren mit je 10 Integern ( 4 10-Matrix) TYPE Matrix4x10 = ARRAY[1..4] OF VektorTyp; 0 1 2 3 4 5 6 7 8 9 Vektor1 0 Vektor2 Vektor3 Vektor4 1 2 3 Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 123 Alternative Definition einer 4 10-Matrix : TYPE MatrixType = ARRAY [1..4] OF ARRAY [1..10] OF INTEGER; kürzere Schreibweise: TYPE MatrixType = ARRAY [1..4],[1..10] OF INTEGER; Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 124

Zugriff auf die Elemente einer Matrix VAR Matrix : MatrixType; Index : INTEGER;... Matrix[0,2] := 1; FOR Index := 0 TO 9 DO Matrix[1,Index] := Index; 0 1 2 3 4 5 6 7 8 9 Vektor1 1 0 Vektor2 0 1 2 3 4 5 6 7 8 9 1 Vektor3 Vektor4 2 3 Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 125 ArrayType 19, ARRAY SimpleType 18 OF Type 36 "SimpleType" gibt den Index-Typ. "Type" gibt den Element-Typ an. Auch mehrdimensionale Arrays sind möglich. Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 126

Beispiel: Indizes von Arrays - ganze Zahlen (INTEGER) MODULE array1; FROM InOut IMPORT WriteInt, WriteLn; CONST min=-3; max=3; TYPE feldtype = ARRAY [min..max] OF INTEGER; VAR i : INTEGER; feld: feldtype; BEGIN FOR i:=min TO max DO feld[i]:=2*i; WriteInt(feld[i]); WriteLn; END array1. Ausgabe: -6-4 -2 0 2 4 6 Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 127 Beispiel: Indizes von Arrays ASCII-Zeichen (CHAR) MODULE array2; FROM InOut IMPORT Write, WriteLn; CONST min="a"; max="e"; TYPE feldtype = ARRAY [min..max] OF CHAR; VAR feld:feldtype; i:char; BEGIN FOR i:= min TO max DO feld[i]:=i; Write(feld[i]); WriteLn; END array2. Ausgabe: a b c d e Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 128

Beispiel: Indizes von Arrays - Enumeration MODULE array3; FROM InOut IMPORT WriteInt, WriteLn; TYPE fische = (goldfisch,hai,karpfen,fugo,hecht); feldtype = ARRAY fische OF INTEGER; VAR i : fische; zahl : INTEGER; feld : feldtype; BEGIN zahl:=1; FOR i:=goldfisch TO hecht DO feld[i]:=zahl*2; zahl:=zahl+1; WriteInt(feld[i]);WriteLn; END array3. Ausgabe: 2 4 6 8 10 Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 129 Zusammenfassung: Die Indizes eines Feldes (Arrays) müssen von einem einfacher Typ sein. INTEGER CARDINAL CHAR BOOLEAN BITSET Aufzählungstypen (Enumeration), z.b. fische Unterbereiche (Subrange), z.b. [1..3] oder [hai..fugo]... NICHT möglich sind REAL Strukturierte Datentypen (Arrays, Records) Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 130

Verbunde (Records) Verbund (Record) Der Verbund dient der Zusammenfassung von Elementen beliebigen, auch verschiedenen Datentyps: Beispiele: Personendaten: Name, Adresse, Geb.-Datum, Geschlecht Datum: Tag, Monat, Jahr Schein: Name, Matr.-Nr., KlausurPunkte Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 131 Verbunde (Records) Beispiele: Datum und Schein TYPE Datum = RECORD Tag : INTEGER; Monat : INTEGER; Jahr : INTEGER; Schein = RECORD Name : ARRAY[1..10] OF CHAR; MatrNr : INTEGER; KlausurPunkte : INTEGER; Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 132

Verbunde (Records) Der Zugriff auf Komponenten von Strukturen erfolgt durch den Namen des RECORDS, an den ein Punkt und der Name der Komponente angehängt wird (dot notation): Beispiel: TYPE Datum = RECORD Tag Monat Jahr VAR Silvester : Datum; : Silvester.Tag := 31; Silvester.Monat := 12; Silvester.Jahr := 2002; : INTEGER; : INTEGER; : INTEGER; Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 133 Verbunde (Records) Durch die Wiederverwendung (Reuse) der definierten Typen ist der Aufbau komplexer Datentypen möglich: TYPE AnredeTyp = (Frau,Herr); String = ARRAY [0..40] OF CHAR; NameTyp = RECORD Vorname,Nachname : String; Anrede : AnredeTyp; Person = RECORD Name : NameTyp; GebDatum : Datum; Personal = ARRAY[1..20] OF Person; Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 134

Verbunde (Records) Zugriff auf komplexere Komponenten Beispiel: Personal[1].Name.Vorname Personal[1].Name.Nachname Personal[1].Name.Anrede := Herr; Personal[1].GebDatum.Tag := 1; Personal[1].GebDatum.Monat := 4; Personal[1].GebDatum.Jahr := 1960; Vereinfachung durch WITH... DO WITH Personal[1] DO WITH Name DO Vorname = 'Otto'; Nachname = 'Müller'; Anrede = Herr; := 'Otto'; := 'Müller'; Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 135 Verbunde (Records) Syntax zur Definition eines RECORD: RecordType 20 ; RECORD FieldList 21 END FieldList 21, Ident 1 : Type 36 VariantFieldList 22 "Type" kann ein beliebiger Typ (Elementartyp, Aufzählungstyp, Bereichstyp oder Strukturtyp) sein. Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 136

Mengen (Sets) Mengen (Sets) Mengen sind ungewöhnliche Typen für Programmiersprachen: beliebig viele Elemente beliebige Art der Elemente rekursive Mengenbildung (Mengen von Mengen) keine Ordnung zwischen den Elementen in der Menge keine Duplikate Diese nützliche Eigenschaften sind in Programmiersprachen sehr schwierig zu implementieren. In PASCAL und Modula-2 sind SETS nur magere Imitationen der mathematischen Mengen. Es gibt nur wenig verbreitete Programmiersprachen mit Mengen als Grundelementen (SETL, Set-Language). Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 137 Mengen (Sets) Mengen in Modula-2 Mengen an sich sind ungewöhnliche Typen für Programmiersprachen. In Modula-2 werden Mengen über einem bestimmten Basistyp definiert. Der Basistyp hat nur einen begrenzten Wertvorrat und muss ein Unterbereichstyp oder Aufzählungstyp sein. Die Größe der Mengen ist abhängig von der Implementierung (je nach Wortbreite des Rechners auf 16 bzw. 32 Werte beschränkt). Mathematische Mengen erlauben beliebig viele Elemente beliebigen Typs. Zusätzlich sind rekursive Mengenbildungen erlaubt. Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 138

Mengen (Sets) SetType 17 SET OF SimpleType 18 "SimpleType" gibt den Basistyp an (Aufzählungen, Bereichstypen). Beispiel einer Mengendefinition in Modula-2: TYPE Farben = (rot,gruen,blau,gelb); Farbmenge = SET OF Farben; Hierbei ist Farben der Basistyp der Menge Farbmenge. Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 139 Mengen (Sets) Modula-2 stellt Operatoren zur Aufnahme (Inklusion) und zum Ausschluss (Exklusion) von Elementen zur Verfügung: INCL(Set,Element) EXCL(Set,Element) Außerdem kann mit Hilfe des Operators IN geprüft werden, ob ein Element in einer Menge enthalten ist: Element IN Set Weitere Operatoren sind: + (Vereinigung ) * (Schnitt ) - (Differenz /) <= (Untermenge ) >= (Obermenge ) Praktische Informatik 1 R.Zicari / JWG-Universität Frankfurt Kap.3 - Modula-2 S. 140