Programmablaufplan, Zweige zusammenführen?



  • (Wie) kann man mit Struktogrammen nach einer IF Verzweigung die Pfade wieder zusamenführen?
    Unser PAP-Tool "Structed" lässt das nicht zu und auch unter wikipedia lässt sich kein passendes Sinnbild finden.



  • bsp.

    if(bA)
    {
        if(bA1_B)
        {
            ; // A1_B1
        }
        else
        {
            ; // A1_B0
        }
    }
    else
    {
        if(bA0_C)
        {
            ; // A0_C1
        }
        else
        {
            ; // A0_C0
        }
    }
    

    jetzt willst du, dass es zB nach A1_B0 und A0_C1 mit dem selben code weiter geht? wie soll das gehen?
    es gibt in c++ keine* sprungbefehle, und erst recht nicht in einem struktogramm...

    du könntest höchstens das programm umschreiben...in diesem fall:

    if( (bA && !bA1_B) || (!bA && bA0_C) )
    {
        if(bA) // bA1_B ist hier logischerweise falsch
        {
            ; // A1_B0
        }
        else // bA ist falsch, bA0_C ist logischerweise wahr
        {
            ; // A0_C1
        }
        ;// gemeinsamer code von A1_B0 und A0_C1
    }
    else
    {
        if(bA) // bA1_B ist hier logischerweise wahr
        {
            ; // A1_B1
        }
        else // bA0_C ist hier logischerweise falsch
        {
            ; // bA0_C0
        }
    }
    

    lw

    * pst 😉

    edit:

    Kernel_Panic schrieb:

    Unser PAP-Tool "Structed"

    seit "ihr" informatik-lehrer? ^^ 😃



  • In nem PAP kann man doch "springen", einfach den Pfeil dort hin zeichnen wo man ihn haben möchte. Nur weil ein Programm da zu beschränkt ist, heißt das nicht, dass es nicht geht.
    Und in C++ kann man springen:

    int main()
    {
     int i = 0;
    
     ausgabe: cout << i;
             if( i++ < 10 )
                 goto ausgabe;
    }
    

    Für ne Hochsprache würde ich im übrigen nen Struktogramm nehmen, mit PAPs lassen sich leicht Assembler-Programme darstellen, aber für Hochsprachen sind die Elemente einfach zu low-lvl.



  • ahhhh goto

    das gehört nicht in c++, gibt es zwar, aber man sollte es lassen, es geht _immer_ anders. Mit goto kommt man an so basic-zeiten ran, if a goto 10 if b goto 20 ....a hhhh

    also, kein goto verwenden



  • Maxi schrieb:

    ahhhh goto

    das gehört nicht in c++, gibt es zwar, aber man sollte es lassen, es geht _immer_ anders. Mit goto kommt man an so basic-zeiten ran, if a goto 10 if b goto 20 ....a hhhh

    also, kein goto verwenden

    Danke, für diesen unnützen Beitrag...


Anmelden zum Antworten