13
Programmablaufpläne Vorgehen zur Erstellung eines lauffähigen C-Programms Dieser Leitfaden soll eine Einführung in das Erstellen von Programmablaufplänen (kurz: PAP) geben. PAP erleichtern das Erstellen von (C-)Prorammen und den Prozess von der Idee zum Code strukturierter machen. Programmablaufpläne dienen als Orientierung, sowohl beim Implementieren des Codes als auch bei dessen Debugging. Das Vorgehen zum Erstellen eines lauffähigen C- Programms mit Hilfe von PAP kann in vier Schritte gegliedert werden: 1.) Design des Programmablaufs mit Hilfe von PAP 2.) Implementierung des Programmablaufs in C-Code 3.) Test und Debugging 4.) (Gegebenenfalls) Anpassung des PAP (zurück zu Schritt 1) Sollte sich nach Schritt Nr. 3 herausgestellt haben, dass das Programm nicht wie konzipiert funktioniert, sollte zu Schritt 1 zurückgekehrt werden, um den Programmablauf anzupassen und anschließend die Verbesserungen erneut in Code zu implementieren. Dieser Ablauf zur Progammerstellung lässt sich nun selbst beispielhaft als PAP realisieren, wie in der folgenden Abbildung zu sehen ist.

Vorgehen zur Erstellung eines lauffähigen C-Programmskrre0001/MCT_Labor/PAP_Tutorial_und_Uebung.pdf · Programmablaufpläne Vorgehen zur Erstellung eines lauffähigen C-Programms

  • Upload
    dongoc

  • View
    233

  • Download
    0

Embed Size (px)

Citation preview

Programmablaufpläne

Vorgehen zur Erstellung eines lauffähigen C-Programms

Dieser Leitfaden soll eine Einführung in das Erstellen von Programmablaufplänen (kurz: PAP) geben.

PAP erleichtern das Erstellen von (C-)Prorammen und den Prozess von der Idee zum Code

strukturierter machen. Programmablaufpläne dienen als Orientierung, sowohl beim Implementieren

des Codes als auch bei dessen Debugging. Das Vorgehen zum Erstellen eines lauffähigen C-

Programms mit Hilfe von PAP kann in vier Schritte gegliedert werden:

1.) Design des Programmablaufs mit Hilfe von PAP

2.) Implementierung des Programmablaufs in C-Code

3.) Test und Debugging

4.) (Gegebenenfalls) Anpassung des PAP (zurück zu Schritt 1)

Sollte sich nach Schritt Nr. 3 herausgestellt haben, dass das Programm nicht wie konzipiert

funktioniert, sollte zu Schritt 1 zurückgekehrt werden, um den Programmablauf anzupassen und

anschließend die Verbesserungen erneut in Code zu implementieren.

Dieser Ablauf zur Progammerstellung lässt sich nun selbst beispielhaft als PAP realisieren, wie in der

folgenden Abbildung zu sehen ist.

Die Elemente eines Programmablaufplans

Wie im vorherigen Beispiel zu sehen, bedient sich ein Programmablaufplan verschiedener grafischer

Elemente. Diese Elemente sind in der DIN 66001 standardisiert.

Start und Ende eines Programms

Der Start und das Ende eines Programms wird mit einem

Rechteck mit abgerundeten Ecken symbolisiert. Dieses Element

wird auch Terminator genannt. Terminatoren werden sowohl in

der main-Routine, als auch in anderen Funktionen verwendet. In

diesen Fällen symbolisieren sie den Anfang und das Ende der

aufgerufenen Funktion.

Verbindungen zwischen den Elementen

Die Verbindung zwischen den Elementen geschieht mit Hilfe von

Pfeilen. Ob hierbei Pfeile mit geschlossenem oder offenem Pfeil

genutzt werden, ist dem Nutzer freigestellt.

Ausführen einer Tätigkeit

Das Ausführen einer Tätigkeit wird mit einem Rechteck

symbolisiert. Dies beinhaltet einfache Tätigkeiten, jedoch nicht

das Aufrufen einer Funktion. Dies kann beispielsweise das Prüfen

eines vorher eingelesenen Wertes sein. Ebenso wird dieses

Symbol beispielsweise zum Initialisieren von Variablen oder der

Durchführung von Rechnungen genutzt.

Ein- und Ausgabe

Um Ein- und Ausgaben klarer zu kennzeichnen, können diese mit abgeschrägten Rechtecken

dargestellt werden. In diesem Fall werden in der linken unteren Ecke Eingaben mit „E“ und Ausgaben

mit „A“ gekennzeichnet.

Funktionsaufruf

Innerhalb eines PAP können weitere Funktionen

aufgerufen werden. Diese Funktionsaufrufe

besitzen wiederum einen eigenen PAP. Um den

Aufruf einer Funktion vom Ausführen einer

Tätigkeit unterscheiden zu können, besitzt das

Symbol doppelte vertikale Linien. Nach dem

Wechsel in den PAP der aufgerufenen Funktion

wird dessen Programmablauf durchlaufen. Ist

diese beendet springt der Programmfluss zu dem

aufrufenden PAP zurück.

Zwischen den vertikalen Linien kann der Name

oder die Beschreibung der aufzurufenden

Funktion stehen. Diese Besonderheit dient der

Übersichtlichkeit zwischen den verschiedenen

Programmen.

Datenfluss im PAP anhand von Beispielen

if-else-Verzweigungen

Eine Verzweigung wird mit Hilfe einer Raute modelliert werden. Von der Raute führen jeweils zwei

Pfeile weg. Ein Pfeil, falls die Bedingung der Verzweigung zu true evaluiert wird und ein Zweiter für

den Fall false. Es müssen immer beide Fälle modelliert werden müssen.

Ein Beispiel für eine Verzweigung wäre beispielsweise die if-Verzweigung. Der folgende PAP hat

zudem ein Code Snippet angefügt, wie eine äquivalente Umsetzung in C-Code aussehen könnte.

else if-Verzweigungen

Die folgenden Grafiken zeigen den PAP im Falle einer else if-Verzweigung. Anhand der Pfeile wird

hier deutlich, dass im Falle einer erfolgreichen if-Verzweigung die else if-Verzweigung nicht mehr

ausgewertet wird.

Verschachtelte if-Verzweigung

Das folgende Beispiel zeigt den Programmablauf bei dem Einsatz verschachtelter if-Verzweigungen.

while-Schleife

Die while-Schleife ist eine kopfgesteuerte Schleife. Nach der Prüfung der Bedingung wird der

Schleifenrumpf entweder ausgeführt oder übersprungen. Im Falle einer erfolgreichen Evaluation

kehrt das Programm nach dem Ausführen des Inhalts wieder zur Kopfbedingung zurück und evaluiert

diese erneut.

do-while-Schleife

Bei der do-while-Schleife wird der Schleifenrumpf ausgeführt bevor die Bedingung überprüft wird.

Die do-while-Schleife ist daher eine fußgesteuerte Schleife. Bei dieser Schleife wird somit der Rumpf

in allen Fällen mindestens einmal ausgeführt.

for-Schleife

Die for-Schleife ist eine kopfgesteuerte Schleife. Eine for-Schleife nutzt eine Schleifenvariable. Nach

Prüfung der Bedingung wird der Schleifenrumpf entweder ausgeführt oder übersprungen. Nach

Durchlaufen des Schleifenrumpfs wird eine Schleifenvariable in- oder dekrementiert. Im Falle einer

erfolgreichen Evaluation kehrt das Programm nach dem Ausführen des Inhalts wieder zur

Kopfbedingung zurück und evaluiert diese erneut. Die Abbruchbedingung ist im Regelfall das

Erreichen eines Grenzwertes der Schleifenvariable.

Das folgende Code-Snippet zeigt den Code einer simplen for-Schleife mit der äquivalenten

Implementierung als while-Schleife.

Inbetriebnahme PAP-Designer

Das für die Erstellung der hier gezeigten PAP wurde der PapDesigner genutzt. Dieser ist für private

Nutzung kostenlos unter folgender Adresse zu beziehen:

http://friedrich-folkmann.de/papdesigner/Hauptseite.html

Natürlich können PAP auch mit Hilfe von Tools wie Microsoft Visio oder Inkscape erstellt werden. Der

PapDesigner bietet jedoch eine unkomplizierte Möglichkeit dies ohne größere Vorarbeiten zu tun.

Programmablaufpläne Übung

Erstellen eines PAP

Diese Übung basiert auf der Aufgabe A2 im Abschnitt 5.4 aus dem Buch Embedded Programming –

Basiswissen und Anwendungsbeispiele der Infineon XC800-Familie von Prof. Dr.-Ing. Reiner Kriesten.

Aufgabe 1.)

Erstellen Sie den PAP für die main-Funktion.

Verteiltes Arbeiten mit mehreren Modulen und deren Ablaufpläne

Übung: Stoppuhr

Diese Übung basiert auf der Aufgabe A2 im Abschnitt 10.7 aus dem Buch Embedded Programming –

Basiswissen und Anwendungsbeispiele der Infineon XC800-Familie von Prof. Dr.-Ing. Reiner Kriesten.

Aufgabe 1.)

Lesen Sie die Aufgabenstellung und bestimmen Sie die Anzahl der notwendigen PAPs um das zu

erstellende Programm zu modellieren. Nennen Sie zudem den Abschnitt des Programms, den der

jeweilige PAP modelliert. Hinweis: Das Update der 7-Segment-Anzeige ist ein separater PAP und

muss in dieser Übung nicht erstellt werden

Aufgabe 2.)

Was ist der Unterschied zwischen dem PAP einer Interrupt Service Routine (ISR) und der eines

Funktionsaufrufs?

Aufgabe 3.)

Der folgende PAP zeigt die main-Funktion der Stoppuhr. In ihm sind einige Blöcke des PAPs jedoch

entfernt und mit Platzhaltern ersetzt. Zeichnen Sie die fehlenden Blöcke und nummerieren Sie diese.

Aufgabe 4.)

Der folgende PAP zeigt das Skelett der ISR Timer 0. Vervollständigen Sie den PAP zwischen den Start-

und Endpunkten. Der benötigte Code zur Lösung der Aufgabe ist nebenan abgedruckt.