• Keine Ergebnisse gefunden

Ubungen zu ¨

N/A
N/A
Protected

Academic year: 2021

Aktie "Ubungen zu ¨"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Technische Universit¨at M¨unchen WS 2006/07 Institut f¨ur Informatik

Prof. Manfred Broy 29. Januar 2007

A. Gruler, B. Spanfelner Ubungsblatt 11¨

Ubungen zu ¨

” Formale Methoden“

Aufgabe 1 Referenzen

Gegeben ist das folgende Programm zur Erl¨auterung des Konzepts der Referenzen anhand verketteter Listen.

(a) Erkl¨aren Sie anhand einer Skizze was beim Einf¨ugen bzw. Entfernen eines Knotens passiert.

(b) Was passiert im Speicher, wenn ein Knoten eingef¨ugt bzw. entfernt wird ?

(c) Erl¨autern Sie mit Hilfe dieses Programms das Konzept der Referenzen, wie es in der Vorlesung eingef¨uhrt wurde.

#include<stdio.h>

#include<stdlib.h>

struct NODE {

int nodevalue;

struct NODE *next;

}

struct NODE *list, *target;

main() {

/*initialisation*/

int delval;

list := (struct NODE *)malloc(sizeof(NODE));

tail := list

/*tail is a pointer to move within list’s tail*/

..

/*Here some nodes are added to the List*/

..

tail := list;

..

/*Again some nodes are added to the List*/

..

/*tail is assigned, some how, the position number 2*/

(2)

addnode(48,tail);

..

/*tail is assigned, some how, the position number 5*/

addnode(34,tail);

..

..

/*tail is assigned, some how, the position number 2*/

delval := deletenode(tail);

..

/*tail is assigned, some how, the position number 5*/

delval := deletenode(tail);

..

..

createlist(48);

..

createlist(34);

..

..

}

createlist(int value) /*our algorithm starts here*/

{

struct NODE *new;

if(list != NULL ) {

list->nodevalue := value;

list->next := NULL;

} else {

if(new=(struct NODE*)malloc(sizeof(NODE))) {

new->nodevalue := value;

new->next := NULL;

list->next := new;

list := new;

} else

printf("Memory shortage");

} }

addnode(int value, struct NODE *position) {

struct NODE *new;

if(new == (struct NODE*)malloc(sizeof(NODE))) {

new->nodevalue := value;

2

(3)

new->next := position->next;

position->next := new;

} else

printf("Memory shortage");

}

int deletenode(struct NODE *position) {

int deletedvalue := position->nodevalue;

struct NODE *curr := list;

while(current->next != position) current := current->next;

current->next := position->next;

free(position);

return(deletedvalue);

}

Aufgabe 2 Object Store

Schreiben Sie folgendes Programm in einer Notation, die den Objectstore verwendet.

x: var Nat = 10;

y: var Nat = 20;

if x >= y then x:= x * 10;

else y:= y*10;

var Ref var Nat r;

var Ref var Nat s;

New(r);

New(s);

deref(s) := 12;

deref(r) := 15;

x:= deref(s) * deref(r);

3

(4)

Aufgabe 3 (Hausaufgabe) Terminierung von Schleifen (4 Punkte; Abgabe bis sp¨atestens 05.02.2007 zu Beginn der ¨Ubung.)

In Aufgabe 1, Blatt 10, haben Sie bereits die partielle Korrektheit des folgenden Program- mes P gezeigt.

i, s var N at;

i, s := 1, b[0];

do (i <11) then i, s:=i+1, s+b[i];

od

Beweisen Sie nun noch die Terminierung vonP.

(a) Geben Sie hierzu einen passenden Terminierungsausdruck (Terminierungsfunktion) E an.

(b) Beweisen Sie mit Hilfe von E die Terminierung von P.

4

Referenzen

ÄHNLICHE DOKUMENTE

Will man andererseits zulassen, dass Verstehen auch ohne Bezug auf nomo- thetische Aussagen m¨ oglich ist, so kann dies zu einer Relativierung des Be- griffs des Verstehens f¨

Was versteht man unter nachfrageorientierter Beschäftigungspolitik und welche Instrumente können im Rahmen nachfrageorientierter Beschäftigungspolitik eingesetzt werden.. Welche

• Das Higgs kann nicht direkt nachgewiesen werden, schon allein aufgrund seiner Lebensdauer; je nach Masse zwischen 10 −43 s und 10 −46 s. • Je nach Masse werden ganz

Heißt das nun, dass doch dynamische intonatorische Ereignisse bedeutungsvoller sind als die Extrempunkte (innerhalb der Sprechererkennung). Achten Sprecher während der

Berechnen Sie die absoluten und relativen Kon- ditionszahlen der folgenden Funktionen und geben Sie an, wo die Funktionsauswertung qualitativ gut bzw.. schlecht

Die Forschung im Umfeld von großen Internetfirmen hat ergeben, dass relationale Datenbanksysteme diesen Anforde- rungen nicht gen¨ ugen, da diese an die Grenzen ihrer

Du kannst das Bisektionsverfahren anhand des erarbeiteten Taschenrechnerpro- gramms erkl¨ aren und geeignete Nullstellen mit diesem