140 likes | 281 Views
Einführung. Kapitel 1. Wat jibt´s denn? Mit Computa kenn´ ick mir aus!. Guten Tag, darf ich Ihnen mal eine Frage stellen?. integers, reals, arrays, records, stacks, files, characters,. Was ist ein „Datentyp“?. „Ein Datentyp
E N D
Einführung Kapitel 1 Wat jibt´s denn? Mit Computa kenn´ ick mir aus! Guten Tag, darf ich Ihnen mal eine Frage stellen?
integers, reals, arrays, records, stacks, files, characters, ... Was ist ein „Datentyp“?
„Ein Datentyp legt die Menge der Werte fest, die eine Variable annehmen kann.“ ( Pascal User Manual) Definition erforderlich! Beachte: Nutzerdefinierte Datentypen in vielen Programmiersprachen
Na ja, na ja, ... Zugriffsmechanismen: filo vs. fifo ? stacks = queues alles sequences
! Datentypen sind Algebren ? • Datentyp: • Menge von Objekten • Operationen über diesen Objekten • = Algebra
Mathematik Algebra = universelle Algebra = algebraische Struktur ------------------ Trägermenge Operationenfamilie Informatik z.B.:real arraybenötigt real, array, integer ------------------ Algebra => Begriff erweitern ! ------------------ mehrere Trägermengen Operationenfamilie Algebra und Informatik
Homogene oder einsortige Algebra Gruppe Monoid Ring Boolesche Algebra Verband Heterogene oder mehrsortige Algebra Datentyp Vektorraum endlicher Automat Syntax einer Programmiersprache Semantik - “ - Algebra und Informatik
Problem: Partialität vieler Operationen: Selektion, Division, Überlauf/Unterlauf, Lesen aus leerem Keller, Aufruf nichtdeklarierter Prozedur mehrsortige, partielle Algebren Theorie kompliziert partielle Operation totale Operation Algebra und Informatik error
Beispiel • Datentyp „Zeichenkeller“ (stacks of characters): • (mindestens) drei Trägermengen • Char= {a, b, c, ..., z} • Stack=Char* • Bool= {true, false} • vier Operationen zweckmäßig • push : Char StackStack • top : StackChar • pop : StackStack • empty? : StackBool
Beispiel (Forts.) Definition der Operationen: Sei - leerer Keller sx - Füllung (Verkettung) des Kellers s mit Zeichen x push(x,s) = sx top(sx) = x pop(sx) = s true , falls s = empty?(s) = false , falls s top() = ? pop() = ? Einführung von error-Elementen
Beispiel (Forts.) Definition der Operationen: Sei - leerer Keller sx - Füllung (Verkettung) des Kellers s mit Zeichen x push(x,s) = sx top(sx) = x pop(sx) = s top() = char-err pop() = stack-err true , falls s = empty?(s) = bool-err, falls s = stack-err false , sonst
Beispiel (Forts.) Trägermengen erweitern: Charp= {a, b, c, ..., z} Char=Charp {char-err} Stack=Charp* {stack-err} Bool= {true, false} {bool-err} Operationen - „strikt“ vervollständigen push : Char StackStack top : StackChar pop : StackStack empty? : StackBool
Beispiel (Forts.) • Erweiterung um Boolesche Operationen oft nützlich: • vel : Bool BoolBool • et : Bool BoolBool • non : BoolBool • (alle strikt vervollständigt) • Ergänzung des Datentyps „Zeichenkeller“ um neue Sorte • Int möglich, um z.B. die „Kellertiefe“ zu erfassen: • depth : StackInt • Dann evtl. zweckmäßig, Rechnen über Int hinzuzunehmen: • arithmetische ( +, - ) und Vergleichsoperationen<usw. Algebra mit vier Trägermengen und Operationen zwischen ihnen
Beispiel (Forts.) non empty? top vel Char Stack Bool pop push depth et < - Int + Zeichenkeller Signatur