Child pages
  • Imperative Programme

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Das Problem wurde gelöst, indem bei der Kantenzeichnung den einzelnen Knoten ihre Vorgänger mitgeteilt werden. Bezogen auf des obige Beispiel bedeutet das nun folgendes. Das Assignment i = k selbst hat (hier) keine Vorgänger. Es wird deshalb auch keine weitere Kante gezeichnet. Als nächstes wird die Kante für den If-Knoten gezeichnet werden. Der Vorgänger des If-Knoten ist das Assignment (i=k). Es wird die Kante 1 gezeichnet. Der rekursive Abstieg führt nun die Kantenzeichnung im False-Statement fort. Der Vorgänger vom Assignment i=1 ist das If-Statement. Es wird Kante 2 gezeichnet. Im True-Fall haben wir das Problem das der Block (hier) leer ist. Das bedeutet es gibt keinen Knoten innerhalb des True-Statements, von dem aus ein Pfeil zum If-Statement gezeichnet werden kann. Deshalb darf die Kante jedoch nicht vergessen werden.

BILD MIT KANTEN 

Image Added

Denn die Vorgänger das Assignments k=24 setzen sich wie folgt zusammen: Enthalten True- und False-Statement eines If-Statements Statements (welches keinen leeren Blöcke sind), so sind jeweils die letzten Statements innerhalb der beiden Fälle, die Vorgänger von k=42. Da hier jedoch das True-Statement einen leeren Block enthält, ist der Vorgänger (wie in der Abbildung zu sehen) das If-Statement selber. Das Assignment k=42 hat somit zwei Vorgänger (i=1 und if i>10). Das Assignment muss somit zwei Kanten (3 und 4) zeichnen.

...