SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für...

22
Institute for Software Technology SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie [email protected]

Transcript of SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für...

Page 1: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology

SWP-Assignment Sprachen

Bernhard Aichernig Institut für Softwaretechnologie [email protected]

Page 2: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 2

Inhalt

!  Semantik: !  Einfache Assignmentsprachen !  Assignmentsprachen mit Pointerkonzept

Semantik

Page 3: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 3

Funktionale vs. Assignmentsprachen

!  Funktionale Sprachen !  Kein Zuordnungsbegriff !  Variablen werden interpretiert !  Variablenwerte werden nicht verändert !  Rekursive, mathematische Definition

!  Assignmentsprachen (AL) / Imperative Sprachen !  Basierend auf dem Zuordnungsprinzip !  Variablen werden Terme zugeordnet, die deren Wert

verändern.

Page 4: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 4

Syntax von AL über ℜ 1.  Ist v∈IVS und ist t ein Term über ℜ, dann

ist v := t ∈ AL 2.  Sind a1,a2 ∈ AL dann ist

begin a1;a2 end ∈ AL 3.  Ist B ∈ PL0(ℜ) (= Menge der

quantorenfreien Formeln aus PL(ℜ)) und sind a1,a2 ∈ AL dann ist if B then a1 else a2 ∈ AL

4.  Ist B ∈ PL0(ℜ) und ist a1 ∈ AL dann ist while B do a1 ∈ AL

Page 5: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 5

Anmerkung

!  AL ist (derzeit) auf 2-elementige begin-end Blöcke limitiert.

Page 6: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 6

Beispiel - Multiplikation Datentyp: Natürliche Zahlen (inkl. 0) begin

z := 0; while ¬=(y,0) do begin

z := + (z,x); y := -(y,1)

end end

Page 7: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 7

Semantikfunktion für AL •  IAL: ENV×AL → ENV (über Datentyp ℜ) !  Um IAL zu definieren brauchen wir

Evaluierungsfunktionen der !  Prädikatenlogischen Ausdrücke IPL :

ENV×PL(ℜ) = {T,F} !  Terme IT: ENV×T(ℜ) = A

!  Diese Evaluierungsfunktionen wurden bereits behandelt.

Page 8: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 8

Semantikdefinition !  IAL(ω,v := t) = ω‘

mit ω‘(v)=IT(ω,t) und ω‘(w)= ω(w) für w≠v !  IAL(ω, begin a1;a2 end ) = IAL(IAL(ω,a1),a2) !  IAL(ω, if P then a1 else a2) = IAL(ω, a1) wenn

IPL(ω,P)=T !  IAL(ω, if P then a1 else a2) = IAL(ω, a2) wenn

IPL(ω,P)=F !  IAL(ω, while P do a1) = IAL(IAL(ω, a1), while P

do a1) wenn IPL(ω,P)=T !  IAL(ω, while P do a1) = ω wenn IPL(ω,P)=F

Page 9: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 9

Anmerkungen zu AL

!  Syntax und Semantik sind sehr einfach !  Keine Prozeduraufrufe !  Keine Unterscheidung zwischen

Variablenwert und Speicher !  Keine Seiteneffekte

!  z.B. in C: if (x=y+1)==2 then x=x-1;

Page 10: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 10

Verifikation

!  Durch Hoare-Logik (siehe Einführung in die Informatik)

Page 11: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology

POINTER (ZEIGER)

11

Page 12: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 12

Problemstellung !  Bisherige Definition der Semantik (von AL):

!  Abbildung ENV x AL auf ENV !  ENV war die Menge aller Funktionen von

Variablen auf deren Werte !  Pro Variable wird ein Wert gespeichert !  Kein Konzept von Speicherstelle vorhanden

!  In realen Programmiersprachen ist es wichtig auf Speicherstellen zugreifen zu können !  Einführung von Datentypen (Listen, Bäume,...) !  Effizienz (Übergabe großer Strukturen,...)

Page 13: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 13

Speicherstellen

!  Trennung von Speicher und Variablen

1 2 3 4 5 ..

x

y [ ]

Adresse Wert

Page 14: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 14

Formale Betrachtungsweise !  Neue Definition von Variablenenvironments

notwendig. !  Ein Variablenenvironment ist eine Abbildung

von Variablen auf Locations. ω∈ENV, ω: IVS → LOC

!  Ein State ist eine Funktion von Locations auf deren Werte. σ∈STATE, σ: LOC → A

!  LOC (= Menge aller Locations) selber stellen wir als Menge von Adressen {1,2,..} dar.

Page 15: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 15

Anmerkungen !  Zeigt eine Variable x auf eine

Speicherstelle (=Location) s, dann sagen wir, dass x auf s gebunden ist (Binding).

!  Eine Speicherstelle in unserer Definition hält Werte aus dem gewählten Datentyp!

!  Die Semantik von AL muss abgeändert werden.

Page 16: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 16

Semantik von ALP

!  Semantikfunktion IALP: ENV×STATE×AL → ENV×STATE

!  z.B.: Für Assignments IALP(ω,σ,v := t) = (ω,σ‘)

mit σ‘(ω(v))=IT(ω,σ,t) und σ‘(ω(w))=σ(ω(w)) für w≠v

! ⇒ Semantikfunktion von Termen muss ebenfalls abgeändert werden

Page 17: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 17

Abgeänderte Semantik von T

!  IT(ω,σ,c) = c0 für c∈Γ und ω∈ENV, σ∈STATE

!  IT(ω,σ,v) = σ(ω(v)) für v∈IVS und ω∈ENV, σ∈STATE

!  IT(ω,σ,f(t1,..,tn)) = f0(IT(ω,σ,t1),..,IT(ω,σ,tn)) für ti∈T und ω∈ENV, σ∈STATE

Page 18: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 18

Semantik von ALP

!  Adaption des begin-end-Blocks: IALP(ω,σ, begin a1;a2 end ) = IAL(ω‘,σ‘,a2) mit (ω‘,σ‘) = IAL(ω,σ,a1)

!  Die anderen Änderungen in der Semantik geschehen analog.

Page 19: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 19

Erweiterte Syntax von ALP

!  Einführung eines Statements, das es erlaubt ein Variablenbinding auf andere Variablen zu übertragen.

!  Syntaxregel: Sind v und w Variablen, dann ist der Ausdruck ref v := ref w ∈ AL

!  Dieser Ausdruck erlaubt es, die Referenz von w auf v zu übergeben. Nach der Ausführung des Ausdrucks sollen beide Variablen auf die selbe Location zeigen.

Page 20: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 20

Erweiterung der Semantik

!  IAL(ω,σ,ref v := ref w) = (ω‘,σ) mit ω‘(v)=ω(w) und ω‘(u)=ω(u) für u≠v

Page 21: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 21

Beispiel (Vergleich)

begin x := 1; begin

y := x; y := 2

end end

begin x := 1; begin

ref y := ref x; y := 2

end end

Page 22: SWP-Assignment Sprachen · SWP-Assignment Sprachen Bernhard Aichernig Institut für Softwaretechnologie aichernig@ist.tugraz.at . Institute for Software Technology 2 Inhalt ! Semantik:

Institute for Software Technology 22

Zusammenfassung AL

!  Zustandsänderungen aufgrund von Befehlausführungen

!  Semantik mit und ohne Zeiger !  Wertkopien vs. Bindings !  Seiteneffekte möglich