[Sq10] LCSAJ und Leerzeilen
Wolfgang Runte
woru at informatik.uni-osnabrueck.de
Fre Dez 3 13:47:09 CET 2010
Hallo zusammen,
tpollmei at uni-osnabrueck.de schrieb:
> Mich würde mal interessieren, ob man bei der Erstellung der LCSAJ
> Leerzeilen berücksichtigen muss oder sie überspringen kann.
Leerzeilen werden berücksichtigt, insofern dass sie durchlaufen werden
wie normale Anweisungen auch. Ansonsten sollten sie unkritisch sein.
Relevant sind die Verzweigungs- und Schleifenbedingungen sowie das
jeweilige Ende eines Anweisungsblocks (im Beispiel unten also die
schließende Klammer vor der Leerzeile).
Ob man die schließende Klammer eines vorhergehenden Anweisungsblocks
oder die nächste Zeile in die LCSAJ aufnimmt (tatsächliche Anweisung
oder Leerzeile), sollte vom Prinzip her und für das Verfahren keinen
Unterschied machen.
> Als Beispiel nehme man den Fall, dass A in folgendem Code false ist:
>
> 01 if (A) {
> 02 m1()
> 03 }
> 04
> 05 while (B) {
> 06 m2()
> 07 }
>
> Für die Wiederholung der Schleife habe man auch schon (5,7,5).
> Müsste man dafür den LCSAJ der Verzweigung (1,1,4) nehmen und für den
> ersten Schleifendurchlauf noch (4,7,5)?
Ich würde mich an den Vorlesungsfolien (Satz, S.6, S.27/33) und
Liggesmeyer (2009, S.132 ff.) orientieren und mich auf die schließende
Klammer beziehen. Demnach wären es für das obige Beispiel z.B. die
LCSAJs (1,1,3) für die Verzweigung und (3,7,5) für den ersten
Schleifendurchlauf.
> Oder kann man auch für die Verzweigung (1,3,5) nehmen, wodurch man sich
> (4,7,5) sparen kann?
... hier stimmt etwas nicht: (1,3,5) ist keine gültige LCSAJ. Vom Ende
des Anweisungsblocks wird nicht zur nächsten Anweisung "gesprungen" (und
die genannte LCSAJ kann auch nicht "eingespart" werden). Von der
Verzweigung bis zur while-Schleife existieren aber außerdem noch die
LCSAJs (1,5,7) und (1,7,5).
Insgesamt komme ich für obiges Beispiel auf 7 LCSAJs:
1. (1,7,5)
2. (1,5,7)
3. (1,1,3)
4. (3,7,5)
5. (3,5,7)
6. (5,7,5)
7. (5,5,7)
Habe ich noch etwas übersehen?
Viele Grüße
Wolfgang
--
Dipl.-Inf. Wolfgang Runte woru at informatik.uni-osnabrueck.de
Institut für Informatik +49-541-969-2487 (Fon)
Universität Osnabrück +49-541-969-2799 (Fax)
Albrechtstraße 28, Raum 31/317 http://www.inf.uos.de/woru
D-49069 Osnabrück