Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Lehrstuhl für Software-TechnologieProf. Dr. E.-E. Doberkat Bereiche von Feldern und Felder von Feldern (Literaturquelle: David Gries, The Science of Programming,"—  Präsentation transkript:

1 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

2 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

3 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

4 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

5 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

6 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

7 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

8 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

9 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 012345 325140b 012345 325140 für x=3 b 012345 325140 k=3 Bereiche von Feldern - Felder von Feldern Die Bild-Notation als Darstellungsform von Feldern: 8 / 27

10 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

11 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

12 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

13 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

14 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

15 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

16 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

17 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

18 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

19 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

20 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

21 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

22 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

23 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

24 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

25 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

26 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

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

28 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


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

Ähnliche Präsentationen


Google-Anzeigen