Labor Software-Entwicklung 1 Übereinkunft zu Programmablaufplänen PAP - Grundlagen Wintersemester 2015/2016 Seite 1 von 9
Inhalt DIN 66 001: Sinnbilder für Programmablaufplan... 3 Grenzstelle... 3 Ablauflinie... 3 Operation, Verarbeitung... 3 Unterprogrammaufruf... 3 Ein-/Ausgabe... 4 Sequenz... 4 Einfache Auswahl... 5 Zweifache Auswahl... 5 Mehrfachauswahl... 6 Fallauswahl... 7 Wiederholung mit vorausgehender Bedingungsprüfung... 7 Wiederholung mit nachfolgender Bedingungsprüfung... 8 Zählergesteuerte Schleife... 8 Kommentar... 9 Wintersemester 2015/2016 Seite 2 von 9
DIN 66 001: Sinnbilder für Programmablaufplan Ein Programmablaufplan (PAP) ist ein Ablaufdiagramm für ein Computerprogramm, das auch als Flussdiagramm (engl. flowchart) oder Programmstrukturplan bezeichnet wird. Die Symbole für Programmablaufpläne sind in der DIN 66001 genormt. Dort werden auch Symbole für Datenflusspläne definiert. Flussdiagramme werden oft unabhängig von Computerprogrammen zur Darstellung von Prozessen und Tätigkeiten eingesetzt. Grenzstelle kennzeichnet Anfang/Ende oder eine Unterbrechung des Programmes Ablauflinie versinnlicht Übergang zum nächsten Element bevorzugte Richtung ist von oben nach unten bzw. von links nach rechts Vergessen Sie bitte nie den Pfeil; in der Prüfung wird es zu Punktabzug führen. Operation, Verarbeitung wird verwendet für allgemeine Operationen i = i + 5; // addiere 5 zu i Unterprogrammaufruf verzweigt zu einem Unterprogramm, das durch einen weiteren Programmablaufplan beschrieben ist fak = fakultaet(5); // Aufruf der Funktion fakultaet // (Parameter gibt an für welches Argument die Fakultät bestimmt werden soll) // mit Parameter 5 // Rückgabewert/Ergebnis wird in fak gespeichert Wintersemester 2015/2016 Seite 3 von 9
Ein-/Ausgabe kennzeichnet Ein- oder Ausgabe von Daten, z. B. auf dem Bildschirm printf("beliebige Ganzzahl eingeben: "); scanf("%i", &zahl); printf("die Zahl war %i.\n", zahl); // Beliebige Ganzzahl eingeben: // Zahl von Tastatur einlesen // Ausgeben der Eingelesenen Zahl mit dem Satz // Die Zahl war HIER DIE ZAHL dann einen Zeilenumbruch Sequenz jede Anweisung wird in einen eigenen Block geschrieben die Anweisungen werden nacheinander von oben nach unten abgearbeitet die Strukturblöcke werden mit Ablauflinien verbunden i = i + 5; i = i * i; erg = i + 100; // addiere 5 zu i // quadriere i //addiere 100 zu i und speichere das Ergebnis in erg Wintersemester 2015/2016 Seite 4 von 9
Einfache Auswahl nur wenn Bedingung wahr ist, wird Ja-Pfad durchlaufen Ja-Pfad kann Anweisung oder Sequenz beinhalten ist Bedingung nicht wahr, wird Durchlauf ohne Abarbeitung des Ja-Pfades fortgesetzt, also der Nein-Pfad if(5 < i) // Ist der Wert von i größer als 5? // true i -= 1; // dekrementiere den Wert von i und weise diesen i zu // false Zweifache Auswahl wenn Bedingung wahr ist, wird Ja-Pfad ausgeführt wenn Bedingung nicht wahr ist, wird Nein-Pfad ausgeführt jeder Pfad kann aus einer Sequenz von Anweisungen bestehen if(5 < i) // Ist der Wert von i größer als 5? // true i -= 1; // dekrementiere den Wert von i und weise diesen i zu else // false i = 0; // weise i den Wert 0 zu Wintersemester 2015/2016 Seite 5 von 9
Mehrfachauswahl verschachtelte Auswahl if(5 < i) // Ist der Wert von i größer als 5? // true if (10 < i) // Ist der Wert von i größer als 10? // true i--; // dekrementiere den Wert von i und weise diesen i zu else // false ++i; // inkrementiere den Wert von i und weise diesen i zu else // false i = 0; // weise i den Wert 0 zu Wintersemester 2015/2016 Seite 6 von 9
Fallauswahl eignet sich besonders, wenn mehr als 3 Auswahloptionen möglich sind es sollte ein Default-(hier: sonst) Zweig berücksichtigt werden switch(auswahl) // Auswahl =? case 0: // 0 i += 1; // addiere den Wert von i mit 1 und weise diesen i zu break; case 1: // 1 i += 2; // addiere den Wert von i mit 2 und weise diesen i zu break; case 2: // 2 i += 4; // addiere den Wert von i mit 4 und weise diesen i zu break; case 3: // 3 i += 8; // addiere den Wert von i mit 8 und weise diesen i zu break; default: // sonst (alle anderen Fälle) Wiederholung mit vorausgehender Bedingungsprüfung solange der Ausdruck der Bedingung wahr ist, wird der nachfolgende Anweisungsblock ausgeführt ist Bedingung nicht erfüllt, wird der Programmfluss nach dem Anweisungsblock fortgesetzt in C: while-schleife while (10 > i) // Ist der Wert von i kleiner als 10? sum += i; // addiere den Wert von sum mit dem Wert von i und weise diesen sum zu ++i; // inkrementiere den Wert von i und weise diesen i zu Wintersemester 2015/2016 Seite 7 von 9
Wiederholung mit nachfolgender Bedingungsprüfung Anweisungsblock wird mindestens einmal durchlaufen erst nach dem ersten Durchlauf wird Bedingung überprüft wenn Bedingung erfüllt, wird Anweisungsblock wiederholt, sonst wird mit der ersten Anweisung nach dem Block fortgefahren in C: do while-schleife do sum = sum + i; // addiere den Wert von sum mit dem Wert von i und weise diesen sum zu i = i + 1; // inkrementiere den Wert von i und weise diesen i zu while (10 > i); // Ist der Wert von i kleiner als 10? Zählergesteuerte Schleife in C: for-schleife die Anzahl der Iterationen ist schon vor dem Eintritt in die Schleife bekannt werden mehrere Schleifen ineinander geschachtelt, empfiehlt es sich die einzelnen Schleifen mit jeweils eindeutigen Labels zu versehen, um die Übersicht beim PAP zu bewahren (siehe Beispiel unten: kleines Einmaleins) for (i = 1; i <= 10; i = i+1) sum = sum + i; // Anfangswert:1; Bedingung: Solange Wert kleiner gleich 10; Anweisung: // inkrementiere Wert // addiere den Wert von sum mit dem Wert von i und weise diesen sum zu Wintersemester 2015/2016 Seite 8 von 9
for(i=1; i<=10; ++i) // siehe obiges Bild for(j=1; j<=10; ++j) // siehe obiges Bild temp = i*j; // siehe obiges Bild printf("%i", temp); // siehe obiges Bild // Ende LOOP2 printf("\n"); // siehe obiges Bild // Ende LOOP1 Kommentar Sie haben auch in einem PAP die Möglichkeit Kommentare zu schreiben. Wintersemester 2015/2016 Seite 9 von 9