Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Lösung 5.1Schleifen 1.while (x < 5)if (x < 5) thenwhile Bif B then { do {{do { x = x + 1; x = x + 1; A A }}}} while (x < 5) while B do {x = x + 1;do {A.

Ähnliche Präsentationen


Präsentation zum Thema: "Lösung 5.1Schleifen 1.while (x < 5)if (x < 5) thenwhile Bif B then { do {{do { x = x + 1; x = x + 1; A A }}}} while (x < 5) while B do {x = x + 1;do {A."—  Präsentation transkript:

1 Lösung 5.1Schleifen 1.while (x < 5)if (x < 5) thenwhile Bif B then { do {{do { x = x + 1; x = x + 1; A A }}}} while (x < 5) while B do {x = x + 1;do {A x = x + 1; while (x < 5) { A while B { } x = x + 1;} A while (x < 5)}while B} 2.1: if x >= 5 goto 21: if !B goto 2 x = x + 1; A goto 1 goto 1 2:...2:... 3.1: x = x + 1; 1: A if x < 5 goto 1 if B goto 1 2:... 2:...

2 Lösung 5.2Spiel des Lebens: Aufgabe 1.Überlegen Sie sich Rahmenbedingungen für das Spiel des Lebens (Anhang B) 2.Formalisieren Sie dieses Problem Gegeben ist: Eine zweidimensionales Spielfeld Annahme:die Grenzen werden verbunden. Auch möglich:Unendliche Grenzen, abschneidende Grenzen Anfangszustand: beliebige Nöpelpositionen im Spielfeld Regeln: entsprechend der Spielregeln für Spiel des Lebens Gesucht: Zwischenzustand nach beliebigen Generation (entsprechend der Regeln) Optional: Erkennung von Endzuständen

3 Lösung 5.2Spiel des Lebens: Ansätze 3.Stellen sie einen umgangssprachlichen Lösungsansatz auf Entwurf der Datenstrukturen - zwei Ansätze: Der Spielfeldzustand wird als zweidimensionales Feld repräsentiert Der Spielfeldzustand wird über die Positionen der Nöpel präsentiert Entwurf des Algorithmus act_state = Startzustand solange kein Endzustand { get_next_state (act_state, next_state); } zwei entsprechende Ansätze: get_next_state (In: act_state, Out: next_state) Der Spielfeldzustand wird als zweidimensionales Feld repräsentiert: { durchlaufe Felder und setze Nöpel entsprechend } Der Spielfeldzustand wird über die Positionen der Nöpel präsentiert: { durchlaufe Nöpelliste und setze Nöpel entsprechend } Vor- / Nachteile ?

4 Lösung 5.2Spiel des Lebens: Feld 3.a) Der Spielfeldzustand wird als zweidimensionales Feld repräsentiert get_next_state (In: act_state, Out: next_state) { // determine survivors durchlaufe act_state // zweifach-verschachtelte Schleife { falls act_state[act_field] hat 2,3 Nachbarn in act_state setze next_state[act_field] } // determine babies durchlaufe next_state // zweifach-verschachtelte Schleife { falls next_state[act_field] hat 3 Nachbarn in act_state setze next_state[act_field] } } 0,1,4,5,6,7,8 2,3 3

5 Lösung 5.2Spiel des Lebens: Liste 3.b) Der Spielfeldzustand wird über die Positionen der Nöpel präsentiert get_next_state (In: act_state, Out: next_state) { durchlaufe act_state // einfache Schleife durch Nöpelliste { // determine survivors find_neighbors(act_nöpel, no_of_neighbors) falls no_of_neighbors = 2 oder 3 kopiere act_nöpel nach next_state // determine babies durchlaufe nachbar_nöpel von act_nöpel // max. 8 { find_neighbors(nachbar_nöpel, no_of_neighbors) falls no_of_neighbors = 3 kopiere nachbar_nöpel nach next_state } } } 0,1,4,5,6,7,8 2,3 3

6 Lösung 5.2Spiel des Lebens: Strukturen 3.Stellen sie einen umgangssprachlichen Lösungsansatz auf Entwurf der Datenstrukturen - zwei Ansätze: Der Spielfeldzustand wird als zweidimensionales Feld repräsentiert act_state: array [1..max_reihen][1..max_spalten] of boolean; Der Spielfeldzustand wird über die Positionen der Nöpel präsentiert typedef struct nöpel {reihe: int; spalte: int ; // next_nöpel: *nöpel } ; act_state: array [1..max_nöpel] of nöpel; 001000001110000010000... 1 3 2 2 2 3 2 4 3 3

7 Lösung 5.2Spiel des Lebens: Komplexität 6.Bewerten Sie den Algorithmus bezüglich seine Laufzeit und seines Platzbedarfes get_next_state (In: act_state, Out: next_state) { durchlaufe act_state // einfache Schleife durch Nöpelliste { // determine survivors find_neighbors(act_nöpel, no_of_neighbors) // Durchsuche // alle Nöpel falls no_of_neighbors = 2 oder 3 kopiere act_nöpel nach next_state // determine babies durchlaufe nachbar_nöpel von act_nöpel // max. 8 { find_neighbors(nachbar_nöpel, no_of_neighbors) falls no_of_neighbors = 3 kopiere nachbar_nöpel nach next_state } } // Zeit: Nöpel * ( Nöpel + ( 8 * Nöpel ) ) = 9 * Nöpel 2 } // Platz: 2 * Nöpel

8 Lösung 5.3Rekursion 1.Programmieren Sie die Fakultätsfunktion fakultaet (IN: n:integer, OUT: result:integer) { if (n == 0) then result = 1; else { fakultaet (n-1, result); result = result * n; } } fakultaet (IN: n:integer, OUT: result:integer) { result; old_result : int; // declaration result = 1; old_result = 1 // initialization for i=1 to n { result = i * old_result; old_result = result } } // Anzahl Multiplikationen in beiden Fällen proportional n

9 Lösung 5.4Acht Damen Problem 1.siehe Homepage


Herunterladen ppt "Lösung 5.1Schleifen 1.while (x < 5)if (x < 5) thenwhile Bif B then { do {{do { x = x + 1; x = x + 1; A A }}}} while (x < 5) while B do {x = x + 1;do {A."

Ähnliche Präsentationen


Google-Anzeigen