Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern und Felder von Feldern (Literaturquelle: David Gries, The Science of Programming,

Slides:



Advertisements
Ähnliche Präsentationen
Heute Mathe, morgen DLR! Dr. Margrit Klitz
Advertisements

Wissenschaftliche Methodik
3. Schafft das Internet neue Transaktionsdesign?
3 Elektrochemische Wandler
Elektro-Skateboards Teil I Grundlagen
Einführung in die Wahrscheinlichkeitsrechnung
Motoremissionen mobiler Anlagen – Stand der Technik
Lieber Leser, liebe Leserin,
Industrie 4.0 für die Ausbildung 4.0
Das Verdauungssystem Präsentiert von Theresa
MasterBAV© Die neue Generation BAV
Rehwild die richtige Altersbestimmung
Pflege & Finanzierung 01. Juni 2017 Dr. Sonja Unteregger
Betriebliche Gesundheitsförderung 2
Neue Unterrichtsmaterialien zur Teilchenphysik Philipp Lindenau CERN | Herzlich willkommen! Präsentation mit Notizen hinterlegt!
Aktuelle Themen aus dem KVJS-Landesjugendamt Referat 44
Einführung in die Benutzung des Einkaufportals der Eckelmann AG
Eine kleine Einführung in das Projekt „Mausefallenauto“
Mathematik 12.
Generative Posenschätzung
Innovation durch Genie
LOGICON Caries Detector Software Beispielanalysen
Mikroökonomie 1 Tausch
WOOD VETIA.

TU Chemnitz. WS 2006/2007 Philosophische Fakultät
Analyse des Energie-Autarkiegrades unterschiedlich großer Bilanzräume mittels integrierter Energiesystemmodellierung Institut für Energiewirtschaft und.
JAHRESABSCHLUSS 2016 REGION NORDEN
Ostern in Deutschland.
„Die richtige Fährte legen“ – zur Bedeutung der Fachkompetenz von MathematiklehrerInnen in der Sekundarstufe 1 Franz Pauer Institut für Fachdidaktik und.
Industrie 4.0 für Auszubildende
Projekt 01: LCR-Meter Jonas Krieger und Armin Zörkler SS 2017
Micro Vertex Detector of PANDA Strip Detector
Vorlesung Wasserwirtschaft & Hydrologie I
Algorithmen und Datenstrukturen
Non-Standard-Datenbanken
Komplexe Wechselstromrechnung
Neue Verfahren zur Messung der Fließeigenschafften von Frischbeton
Seismologie Und Seismik
Abiturprüfung Mathematik 2017 Baden-Württemberg Allgemeinbildende Gymnasien Wahlteil Stochastik Aufgabe C 1 - Lösungen
Abiturprüfung Mathematik 2017 Baden-Württemberg Allgemeinbildende Gymnasien Pflichtteil Lösungen
Vorlesung Wasserwirtschaft & Hydrologie II
Massenwirkungsgesetz
Bestimmung des Lasterhöhungsbeiwertes mithilfe des Sektormodells
„Controlled Foreign Company“ (CFC) - Regelungen
Kapitel 4 Entwicklungsunterschiede und internationaler Handel
Michael Schart Keio Universität Tokio/Yokohama
Mikroelektronische und optische Bauelemente
Slavische Sprachen für (Computer-) Linguisten
Ewigkeit-01 PPS starten und einfach laufen lassen … nur lesen und hören (Dauer nur 3 Minuten + 00 Sekunden)
Haushalt 2018 – Entwurf – Haushaltsrede von Kämmerer Dirk Meussen am zur Einbringung des Etats und des Stellenplans.
Laos Fastenopfer In Laos tut die Regierung alles, damit das Land bis 2020 nicht mehr zu den ärmsten Ländern dieser Erde zählt. Deshalb gibt sie ihr Einverständnis.
Der Personalrat … … Personalratsvorsitzende/r und Stellvertretung
Adrien Merkt, Anna Lisa Kreissel
Algorithmen für geographische Informationssysteme
Systematisches Troubleshooting von Trennwandkolonnen
Übungsblatt 6 – Aufgabe 1 Elektrisches Feld einer dickwandigen Hohlkugel Betrachten Sie eine dickwandige, nicht-leitende Hohlkugel mit dem Innenradius.
ПЕРИОД САВРЕМЕНЕ МАТЕМАТИКЕ
Übungsblatt 2 – Aufgabe 1 Federschwingung mit konstanter Gleitreibung
Warum Big-Data den Spiegel der Wünsche (erstmal) zerstört
Stochastik Wahrscheinlichkeit Bedingte Wahrscheinlichkeit
Heute: Das schwache Gesetz der großen Zahl
Algorithmen und Datenstrukturen
Normalenform einer Ebene
Thema: Terme und Variablen Heute: Terme aufstellen mit Platzhaltern
Schnitt von Gerade und Ebene
Mathematische Grundkenntnisse
Stromversorgung Michael Funke – DL4EAX.
 Präsentation transkript:

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern und Felder von Feldern (Literaturquelle: David Gries, The Science of Programming, Springer- Verlag) Mathias Kadolsky Proseminar für Programmiermethodik

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Definition von Feldbereichen: var b: array[0:n-1] of integer b[0:n-1] kennzeichnet ganzes Feld b[i:j] für 0i j<n kennzeichnet das Feld bestehend aus b[i], b[i+1],....,b[j] für i>j bezieht sich b[i:j] auf einen leeren Bereich Bereiche von Feldern - Felder von Feldern1 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Formalisierung von logischen Aussagen: Bereiche von Feldern - Felder von Feldern Alle Elemente von b sind kleiner als x (Ai:0i<n:b[i]<x) Feld b enthält nur Nullen (Ai:0 i<n:b[i]=0) var b: array[0:n-1] of integer Verkürzte Schreibweise: b<x =(b[0]<x)... (b[n-1]<x) b=0 =(b[0]=0)... (b[n-1]=0) 2 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat var b: array[0:n-1] of integer KurzschreibweiseLangschreibweise b[1:5]=x (Ai:1 i 5:b[i]=x) b[6:10] x(Aj:6 j 10:b[j] x) b[0:k-1]<x< b[k:n-1] (b[0:k-1] x) (Ai:0 i<k:b[i]<x) (Ai:k i<n:x< b[i]) Bereiche von Feldern - Felder von Feldern Von der verkürzten Schreibweise zur Langschreibweise: 3 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat (Ap,q:i p j q k :b[p] b[q]) (Ap,q:i p j q k :b[p] ) (Ap :i p j :b[p] ) var b: array[0:n-1] of integer KurzschreibweiseLangschreibweise b[i:j] b[j:k] b 0i-1ij-1jj+1kk+1n-1 Bereiche von Feldern - Felder von Feldern Von der verkürzten Schreibweise zur Langschreibweise: 4 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat var b: array[0:n-1] of integer KurzschreibweiseLangschreibweise (b[6:10] x) = ((b[6] x) (b[7] x)... (b[10] x)) = ((b[6]=x) (b[7]=x)... (b[10]=x)) (Aj:6 j 10:b[j] x) =(Ej:6 j 10: (b[j] x)) =(Ej:6 j 10:b[j] =x) Bereiche von Feldern - Felder von Feldern Von der verkürzten Schreibweise zur Langschreibweise: 5 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat var b: array[0:n-1] of integer KurzschreibweiseLangschreibweise Bisher kennengelernte Relationen: =,,,, Neue Relation: x b (Ei:i domain(b):x=b[i]) Bereiche von Feldern - Felder von Feldern Von der verkürzten Schreibweise zur Langschreibweise: 6 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Public boolean kleiner(int[] b,int x){ int i=0; int n=b.lenght; while (i<b.lenght){ if (b[i]>=x) return false; i++; } return true; (Ai:0i<n:b[i]<x)b<x Bereiche von Feldern - Felder von Feldern Die Kurzschreibweise als Form von Abstraktion: 7 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Programm: Sortieren eines Feldes b[0:n-1]; Initialisierung des Feldes b mit dem Feld B[0:n-1], also b=B; Erfüllen der folgenden drei Bedingungen: 1) b[0:k-1] ist sortiert und alle seine Elemente sind höchstens x; 2) der Wert, der zu b[k] gehört, ist x; 3) jeder Wert in b[k+1:n-1] ist mindestens x; Beispiel: B b für x=3 b k=3 Bereiche von Feldern - Felder von Feldern Die Bild-Notation als Darstellungsform von Feldern: 8 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Programm: Sortieren eines Feldes b[0:n-1]; Initialisierung des Feldes b mit dem Feld B[0:n-1], also b=B; Erfüllen der folgenden drei Bedingungen: 1) b[0:k-1] ist sortiert und alle seine Elemente sind höchstens x; 2) der Wert, der zu b[k] gehört, ist x; 3) jeder Wert in b[k+1:n-1] ist mindestens x; b[0:k-1]xb[k+1:n-1] 0k<n b[0:k-1]xb[k+1:n-1]0k<n b[0:k-1]xb[k+1:n-1] b[k]=x0k<n ordered(b[0:k-1]) perm(b,B) b[0:k-1]xb[k+1:n-1] b[k]=x 0k<n ordered(b[0:k-1]) perm((b;k:x),B) b[0:k-1]xb[k+1:n-1] b[k]:=x b:=(b;k:x) 0k<n ordered(b[0:k-1]) b[0:k-1]xb[k+1:n-1] b[k]=x Bereiche von Feldern - Felder von Feldern Die Bild-Notation als Darstellungsform von Feldern: 9 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat 0k<n ordered(b[0:k-1]) perm((b;k:x),B) b[0:k-1]xb[k+1:n-1] perm(x,y):= Feld x ist Premutation von y ordered(b[0:k-1]):=(Ai:0i<k-1:b[i]b[i+1]) Darstellung mit Hilfe der Bild-Notation: b 0k-1kk+1n-1 ordered, x x perm((b;k:x),B)0k<n Feldname Eigenschaften der Feldpartition obere und untere Bereichsgrenze Bereiche von Feldern - Felder von Feldern Die Bild-Notation als Darstellungsform von Feldern: 10 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat b 0k-1kk+1n-1 ordered, x x perm((b;k:x),B)0k<n Bereiche von Feldern - Felder von Feldern Die Bild-Notation als Darstellungsform von Feldern: Weglassen von Bereichsgrenzen bei Eindeutigkeit: b 0k-1k+1n-1 ordered, x x b 0k ordered, x x n-1 11 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat b 0k-1kk+1n-1 ordered, x x perm((b;k:x),B)0k<n Bereiche von Feldern - Felder von Feldern Die Bild-Notation als Darstellungsform von Feldern: Leere Bereiche: b kn-1 x für k=0 für k=n b 0k-1n ordered, x b[i:j] für 0i j<n kennzeichnet das Feld bestehend aus b[i], b[i+1],....,b[j] für i>j bezieht sich b[i:j] auf einen leeren Bereich 12 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern - Felder von Feldern Zwischenfazit: Definition von Feldbereichen Kurzschreibweise, Langschreibweise und Bild-Notation um logische Aussagen zu Formalisieren Relationen: =,,,,, Anweisungen: domain(b), ordered(b) und perm(b,B) 13 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern - Felder von Feldern Definition von Feldern von Feldern: var b: array[0:1] of array[1:3] of integer(Pascal-Deklaration) b[0][1]b[0][2]b[0][3] b[1][1]b[1][2]b[1][3] 14 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern - Felder von Feldern Selector-Term: N={Bezeichner, selector}Menge der Nichtterminale T={, є, b, [a]}Menge der Terminalzeichen BezeichnerStartsymbol Bezeichner::= b selectorb kann einfache Variable oder Feldvariable sein, drückt eine Konkatenation aus selector::= є | [a] selectora ist eine Unterbeschreibung, є ist der Null-selector Syntaktische Definition des selector-Terms: Beispiel: b[i][j][k]der Bezeichner b wird konkateniert mit einem selector der Länge drei, der die Folge von geklammerten Unterbeschreibungen (i,j,k) beschreibt 15 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern - Felder von Feldern Selector-Term: Bedeutung des selector-Terms: b є = b var b: array[0:1] of array[1:3] of integer(Pascal-Deklaration) b[0] = (b[0][1],b[0][2],b[0][3]) b[i][j] = integer-Wert b[0][1]b[0][2]b[0][3] b[1][1]b[1][2]b[1][3] 16 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern - Felder von Feldern Referenzen: Definition von Referenz: Jede Referenz zu einer Variable -einfache oder Feldvariable- besteht aus einem Bezeichner mit einem selector. b є = bdie Referenz zum kompletten Feld b ist b є oder b є referenziert das komplette Feld b oder das komplette Feld b wird durch b є referenziert var b: array[0:1] of array[1:3] of integer(Pascal-Deklaration) b[0][1]b[0][2]b[0][3] b[1][1]b[1][2]b[1][3] Beispiel: 17 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern - Felder von Feldern Referenzen: Definition von Referenz: var b: array[0:1] of array[1:3] of integer(Pascal-Deklaration) b[0] = (b[0][1],b[0][2],b[0][3]) b[0] referenziert zu einem Feld bestehend aus (b[0][1],b[0][2],b[0][3]) b[i][j] = integer-Wert b[i][j] referenziert zu einem einfachen integer-Wert b[0][1]b[0][2]b[0][3] b[1][1]b[1][2]b[1][3] Jede Referenz zu einer Variable -einfache oder Feldvariable- besteht aus einem Bezeichner mit einem selector. Beispiel: 18 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern - Felder von Feldern Erweiterung der Notation (b;i:e): Definition: Sind b und g Funktionen oder Variablen vom selben Typ und ist s passender selector für b, dann ist die Notation (b;s:e) für einen passenden Ausdruck e definiert durch: b:=(b;є:g) = g { b[j]:=(b;[i] s:e)[j]= i j b[j] i=j (b[j];s:e) c[i]:=2 c:=(c;i:2) b[i][j]:=2 b:=(b;[i][j]:2) 19 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern - Felder von Feldern Erweiterung der Notation (b;i:e): b:=(b;є:g) = g c[i]:=2 c:=(c;i:2) b[i][j]:=2 b:=(b;[i][j]:2) b є:=g b:=g 20 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern - Felder von Feldern Erweiterung der Notation (b;i:e): c[i]:=2 c:=(c;i:2) b[i][j]:=2 b:=(b;[i][j]:2) b[j]:=(b;[i] s:e)[j]= i j b[j] b:=(b;[i] s:e) b[i] s:=e var b: array[0:1] of array[1:3] of integer(Pascal-Deklaration) b[0][1]b[0][2]b[0][3] b[1][1]b[1][2]b[1][3] 21 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern - Felder von Feldern Erweiterung der Notation (b;i:e): c[i]:=2 c:=(c;i:2) b[i][j]:=2 b:=(b;[i][j]:2) b:=(b;[j] s:e) b[j] s:=e b[j]:=(b[j];s:e) b[j]:=(b;[i] s:e)[j]= i=j (b[j];s:e) 22 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern - Felder von Feldern Erweiterung der Notation (b;i:e): c[1:3]=(6,7,8); b[0:1][1:3]=((0,1,2),(3,4,5)) Beispiele: c:=(c;є:b[1])=b[1]=(3,4,5) c:=(c;є:b[1])[2]=b[1][2]=4 Definition: Sind b und g Funktionen oder Variablen vom selben Typ und ist s passender selector für b, dann ist die Notation (b;s:e) für einen passenden Ausdruck e definiert durch: b:=(b;є:g) = g { b[j]:=(b;[i] s:e)[j]= i j b[j] i=j (b[j];s:e) 23 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern - Felder von Feldern Erweiterung der Notation (b;i:e): c[1:3]=(6,7,8); b[0:1][1:3]=((0,1,2),(3,4,5)) Beispiele: c[1]:=(c;1:3)[1]=(c;[1] є:3)[1]=(c[1];є:3)=3 c[2]:=(c;1:3)[2]=(c;[1] є:3)[2]=c[2] =7 Definition: Sind b und g Funktionen oder Variablen vom selben Typ und ist s passender selector für b, dann ist die Notation (b;s:e) für einen passenden Ausdruck e definiert durch: b:=(b;є:g) = g { b[j]:=(b;[i] s:e)[j]= i j b[j] i=j (b[j];s:e) 24 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern - Felder von Feldern Erweiterung der Notation (b;i:e): c[1:3]=(6,7,8); b[0:1][1:3]=((0,1,2),(3,4,5)) Beispiele: b[0]:=(b;[1][3]:9)[0]=b[0]=(0,1,2) b[1]:=(b;[1][3]:9)[1]=(b[1];[3]:9)=(3,4,9)b[1]:=(b[1];[3]:9) b[1][3]=9 Definition: Sind b und g Funktionen oder Variablen vom selben Typ und ist s passender selector für b, dann ist die Notation (b;s:e) für einen passenden Ausdruck e definiert durch: b:=(b;є:g) = g { b[j]:=(b;[i] s:e)[j]= i j b[j] i=j (b[j];s:e) 25 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern - Felder von Feldern Erweiterung der Notation (b;i:e): (((b;[i][j]:e);[j]:f);[k][i]:g) (b;[i][j]:e;[j]:f;[k][i]:g) Beispiel: Weglassen von inneren Klammern: 26 / 27

Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern - Felder von Feldern Zusammenfassung: Definition von Feldbereichen Kurzschreibweise, Langschreibweise und Bild-Notation um logische Aussagen zu Formalisieren Relationen: =,,,,, Anweisungen: domain(b), ordered(b) und perm(b,B) Definition von Feldern von Feldern Selector-Term Referenzen Erweiterung der Notation (b;i:e) 27 / 27