4. Vaiable, Lebensdaue Temen dieses Kapitels: Vaiablenbegiff und Zuweisung untesciedlice Lebensdaue von Vaiablen Laufzeitkelle als Speicestuktu fü Vaiablen in Aufufen GPS-4-1 Volesung Gundlagen de Pogammiespacen SS 2014 / Folie 401 Übesict zu diesem Kapitel Eläuteungen dazu 2005 bei Pof. D. Uwe Kastens Vaiable in impeativen Spacen Vaiable: wid im Pogamm bescieben, z. B. duc Deklaation (statisc), wid bei de Ausfüung im Speice ezeugt und vewendet (dynamisc), wid caakteisiet duc das Tipel (Name, Speicestelle, Wet). Einem Namen im Pogamm weden (bei de Ausfüung) eine ode meee Stellen im Speice zugeodnet. GPS-4-2 Das Ausfüen von Zuweisungen ändet den Wet de Vaiablen (Inalt de Speicestelle). Bei de Ausfüung eines impeativen Pogamms wid so de Pogammzustand veändet. Volesung Gundlagen de Pogammiespacen SS 2014 / Folie 402 Vaiablenbegiff vesteen Eläuteungen zu Namen, Stelle, Wet De Deklaation eine globalen (static) Vaiable ist genau eine Stelle zugeodnet. De Deklaation eine lokalen Vaiablen eine Funktion wid bei jede Ausfüung eines Aufufes eine neue Stelle zugeodnet. im Pogamm: int betag = 0;... betag = 50; im Speice bei de Ausfüung: β 50 0 Speicestelle β
Veändelice und unveändelice Vaiable In impeativen Spacen kann de Wet eine Vaiablen gundsätzlic duc Ausfüen von Zuweisungen veändet weden. int betag = 0;... betag = 50; GPS-4-2a Volesung Gundlagen de Pogammiespacen SS 2014 / Folie 402a Vaiablenbegiff vesteen Eläuteung de untesciedlicen Vaiablenbegiffe. In mancen impeativen Spacen, wie Java, kann fü bestimmte Vaiable veboten weden, nac ie Initialisieung an sie zuzuweisen. In funktionalen Spacen wid bei de Ezeugung eine Vaiablen i Wet unveändelic festgelegt. final int ekto = 100; val seczen = (s 4); Veständnisfagen: Vegleicen Sie: In Java ist de Wet eine "Vaiable" mit de Eigenscaft final nict veändeba. In Ada kann man einen Zugiffsweg auf eine Vaiable auf lesenden Zugiff bescänken. In Pascal definiet "const ekto = 100;" einen Namen fü einen Wet - nict eine Vaiable! In matematiscen Fomeln wid ein Wet unveändelic an den Namen eine Vaiablen gebunden. (Die Fomel kann mit vesciedenen solcen Name-Wet-Bindungen ausgewetet weden.) x, y R: y = 2 * x - 1 definiet eine Geade im R 2 Zuweisung: Zuweisung LinkeSeite = RecteSeite; Beispiel GPS-4-3 Volesung Gundlagen de Pogammiespacen SS 2014 / Folie 403 Zuweisungen vesteen Ausfüen eine Zuweisung: 1. Ausweten de linken Seite; muss die Stelle eine Vaiablen liefen. 2. Ausweten de ecten Seite liefet einen Wet. In Ausdücken steen Namen von Vaiablen fü ien Wet, d.. es wid implizit eine Inaltsopeation ausgefüt. 3. De Wet de Vaiablen aus (1) wid duc den Wet aus (2) esetzt. im Pogamm: im Speice: b = 42; c = b + 1; i = 3; a[i] = c; Speicestelle zu b c i a 42 43 3 Eläuteung de Begiffe und de Ausfüung. a[3] 43
Stellen als Wete von Vaiablen In objektoientieten Spacen, wie Java ode C++, liefet die Ausfüung von new C(...) die Stelle (Refeenz) eines im Speice ezeugten Objektes. Sie kann in Vaiablen gespeicet weden. GPS-4-3a Java: Cicles ci = new Cicles(0, 1.0); x = ci.getradius(); C++: Cicles *ci = new Cicles(0, 1.0); x = ci->getradius(); Volesung Gundlagen de Pogammiespacen SS 2014 / Folie 403a Stellen als Wete von Vaiablen vesteen Eläuteung de Opeationen In C können Pointe-Vaiable Stellen als Wete aben (wie in C++). Die Ausfüung von malloc (sizeof(cicles)) liefet die Stelle (Refeenz) eines im Speice ezeugten Objektes. C: Cicles *ci = malloc(sizeof(cicle)); ci->adius = 1.0; 2014 bei Pof. D. Uwe Kastens De Ausduck &i liefet die Stelle de deklaieten Vaiable i, d.. de &-Opeato untedückt die implizite Inaltsopeation. De Ausduck *i bewikt eine Inaltsopeation - zusätzlic zu de impliziten. int i = 5, j = 0; int *p = &i; j = *p + 1; p = &i; Lebensdaue von Vaiablen im Speice Lebensdaue: Zeit von de Bildung (Allokation) bis zu Venictung (Deallokation) des Speices eine Vaiablen. Begiff de dynamiscen Semantik! At de Vaiablen Lebensdaue ist die Ausfüung... Untebingung im Speice globale Vaiable... des gesamten Pogamms globale Speice Klassenvaiable Paametevaiable,... eines Aufufes Laufzeitkelle lokale Vaiable Objektvaiable... des Pogamms von de Ezeugung Halde, ggf. mit bis zu Venictung des Objekts Speicebeeinigung GPS-4-4 Volesung Gundlagen de Pogammiespacen SS 2014 / Folie 404 Untesciedlice Lebensdauen Eläuteungen dazu, siee SWE-40 Vaiable mit gleice Lebensdaue weden zu Speiceblöcken zusammengefasst. (Bei Spacen mit gescactelten Funktionen kommen auc Funktionsepäsentanten dazu.) Speiceblock fü Klassenvaiable eine Klasse einen Aufuf mit den Paametevaiablen und lokalen Vaiablen ein Objekt eine Klasse mit seinen Objektvaiablen
Laufzeitkelle De Laufzeitkelle entält fü jeden noc nict beendeten Aufuf einen Speiceblock (Scactel, activation ecod) mit Speice fü Paametevaiable und lokale Vaiable. Bei Aufuf wid eine Scactel gekellet, bei Beenden des Aufufes entkellet. Pogamm mit Funktionen (Metoden) float a; (); int i; if (..) (); (); a: GPS-4-5 Laufzeitkelle bei de Aufuffolge,,,, Volesung Gundlagen de Pogammiespacen SS 2014 / Folie 405 Das Speicemodell "Laufzeitkelle" vesteen Eläuteung des Pinzips, des Beispiels. Bei ekusiven Aufufen liegen meee Scacteln zu selben Funktion zugleic auf dem Laufzeitkelle. Die folgende PDF-Datei zeigt die Entwicklung des Laufzeitkelles Übungsaufgaben: Geben Sie Pogamme an, deen Ausfüung vogegebene Laufzeitkelle ezeugt. int b; b=...; b: b=... kellen, entkellen 2014 bei Pof. D. Uwe Kastens Laufzeitkelle bei gescactelten Funktionen Bei de Auswetung von Ausdücken kann auf Vaiablen aus de Umgebung zugegiffen weden. Das sind die Speiceblöcke zu den Pogammstuktuen, die den Ausduck umfassen. in Pascal, Modula-2, in funktionalen Spacen: gescactelte Funktionen in Java: Metoden in Klassen, gescactelte Klassen GPS-4-6 Im Laufzeitkelle wid die aktuelle Umgebung epäsentiet duc die aktuelle Scactel und die Scacteln entlang de Kette de statiscen Vogänge. De statisce Vogänge zeigt auf die Scactel, die die Definition de aufgeufenen Funktion entält. float a; Pogamm mit gescactelten int i; Funktionen int b; b=i+1; (); if(..) (); (); Laufzeitkelle bei Aufuf von kellen, entkellen a: : : : : b: b=i+1; statisce Vogänge Volesung Gundlagen de Pogammiespacen SS 2014 / Folie 406 Laufzeitkelle fü gescactelte Funktionen vesteen Eläuteung des Umgebungsbegiffs de Bedeutung de statiscen Vogänge des Beispiels. Jede Scactel zu Funktion ist eine Definition von zugeodnet. Sie sind zu Vedeutlicung in den Scacteln des Laufzeitkellebildes eingezeicnet (:), obwol sie dot nict wie Vaiable gespeicet sind. Ebenso ist die Zuweisung in de Scactel zu nu angegeben, um zu vedeutlicen, in welce Umgebung sie ausgefüt wid. Die folgende PDF-Datei zeigt die Entwicklung des Laufzeitkelles Übungsaufgaben: Geben Sie Pogamme mit gescactelten Funktionen an, deen Ausfüung vogegebene Laufzeitkelle ezeugt. Veständnisfagen: Tüftele Änden Sie in dem abgebildeten Laufzeitkelle, den statiscen Vogänge de Scactel zum Aufuf von auf die este Scactel von. Wie müssen Sie das Pogamm modifizieen, damit es solc einen Kelle ezeugt? Sie müssen die Funktion als Paamete übegeben.
Zusammenfassung zum Kapitel 4 Mit den Volesungen und Übungen zu Kapitel 4 sollen Sie nun Folgendes vestanden aben: GPS-4-7 Volesung Gundlagen de Pogammiespacen SS 2014 / Folie 407 Ziele des Kapitels ekennen Eläuteungen dazu Vaiablenbegiff und Zuweisung Zusammenang zwiscen Lebensdaue von Vaiablen und ie Speiceung Pinzip des Laufzeitkelles Besondeeiten des Laufzeitkelles bei gescactelten Funktionen 2005 bei Pof. D. Uwe Kastens