BKTM Programmieren leicht gemacht. + Struktogramm Das Struktogramme ist eine Entwurfsmethode für die strukturierte Programmierung. Es ist nach der DIN 66261 genormt. Es ist 1972/73 von Dr. Isaac Nassi und Dr. Ben Shneiderman entwickelt worden und ist auch als NassiShneiderman Diagramm bekannt. Mit dieser Methode lassen sich Gesamtprobleme (der gewünschte Algorithmus) in kleiner Teilprobleme unterteilen, bis schließlich nur noch Grundelemente (Einzelanweisungen, Alternativen, Schleifen,...) zur Lösung des Problems übrig bleiben. Diese Elemente können durch einzelne Sinnbilder im NassiShneidermanDiagramm dargestellt werden. Damit ist jeder Algorithmus ohne unbedingte Sprunganweisung (Goto) darstellbar. mospagebreak title= * linearer Ablauf Linearer Ablauf (Sequenz) Jede Anweisung wird in einen eigenen rechteckigen Strukturblock geschrieben. Die Strukturblöcke werden der Reihenfolge von von oben nach unten abgearbeitet. Leere Strukturblöcke sind in linearen Abläufen nicht erlaubt (nur in Verzweigungen). mospagebreak title= * Verzweigungen Verzweigung (Alternative) Einfache Auswahl (bedingte Verarbeitung) Nur wenn die formulierte Bedingung wahr ist, wird der Anweisungsblock 1 durchlaufen. Ein Anweisungsblock kann aus einer Anweisung oder einer Sequenz bestehen. http://www.bktmoers.de/joomla Powered by Joomla! Generated: 28 January, 2017, 04:38
BKTM Programmieren leicht gemacht. Ist die Bedingung nicht wahr (falsch), wird der Durchlauf ohne Abarbeitung des Anweisungsblock fortgeführt (Austritt unten). Zweifache Auswahl (Selektion alternative Verarbeitung) Wenn die formulierte Bedingung wahr ist, wird der Anweisungsblock 1 ausgeführt. Ist die Bedingung nicht wahr (falsch), wird der Anweisungsblock 2 ausgeführt. Ein Anweisungsblock kann aus einer Anweisung oder einer Sequenz bestehen. Austritt unterhalb der Abarbeitung des jeweiligen Anweisungsblocks. Mehrfachauswahl Wird auch "verschachtelte" Auswahl genannt, da eine weitere Bedingung folgt. Eine Verschachtelung ist ebenso im NeinFall (noch) möglich. http://www.bktmoers.de/joomla Powered by Joomla! Generated: 28 January, 2017, 04:38
BKTM Programmieren leicht gemacht. Fallauswahl Ist besonders bei mehr als drei unterschiedliche Bedingungen geeignet. Der Wert von "Variable" kann bedingt auf Gleichheit wie auch auf Bereiche (größer/kleiner bei Zahlen) geprüft werden. Der entsprechend zutreffende "Fall" mit dem zugehörigen Anweisungsblock wird durchlaufen. Eine Fallauswahl kann manchmal in eine Mehrfachauswahl umgewandelt werden, wenn die Programmiersprache Fallauswahlen nicht kennt. mospagebreak title= * Schleifen Schleifen (Wiederholung, Iteration) Zählergesteuerte Schleife Ist eine Schleife, bei der die Anzahl der Durchläufe bekannt ist. Als Bedingung muss eine Zählvariable angegeben sein http://www.bktmoers.de/joomla Powered by Joomla! Generated: 28 January, 2017, 04:38
BKTM Programmieren leicht gemacht. der Startwert muss initialisiert werden ein Endwertmuss angegeben sein eine Schrittweite angegeben werden. Nach jedem Durchlauf der gesamten Schleife (Anweisungsblock 1) wird die Zählvariable um die Schrittweite erhöht (bzw. vermindert) und mit dem Endwert verglichen. Ist der Endwert überschritten, wird die Schleife verlassen. Kopfgesteuerte (vorprüfende abweisende) Schleife Schleife mit vorausgehender Bedingungsprüfung. Die gesamte Schleife (Anweisungsblock 1) wird nur durchlaufen, wenn (und solange) die formulierte Bedingung wahr ist. Diese Symbolik wird auch für die Zählschleife (Anzahl der Durchläufe bekannt) benutzt. http://www.bktmoers.de/joomla Powered by Joomla! Generated: 28 January, 2017, 04:38
BKTM Programmieren leicht gemacht. Fußgesteuerte (nachprüfende nicht abweisende ) Schleife Wiederholungsstruktur mit nachfolgender Bedingungsprüfung. Die gesamte Schleife (Anweisungsblock 1) wird mindestens einmal durchlaufen, auch wenn die Bedingung von Anfang an nicht zutreffend (falsch) war. Danach wird sie solange wiederholt wie die Bedingung wahr ist. EndlosSchleife Kann allenfalls durch einen Aussprung (break) verlassen werden. Aussprung (break) Der Aussprung (break) stellt die Beendigung eines Programmteils dar und sollte nicht als das verstanden werden, was Nassi und Shneiderman mit den Struktogrammen eigentlich vermeiden wollten: Die Sprunganweisung (siehe oben: unbedingter Sprung Goto). http://www.bktmoers.de/joomla Powered by Joomla! Generated: 28 January, 2017, 04:38
BKTM Programmieren leicht gemacht. Aufruf Symbolik zum Aufruf eines Unterprogramms bzw. einer Prozedur oder Funktion. Nach Abarbeitung des Unterprogramms (Prozedur, Funktion) wird genau zu der aufrufenden Stelle zurückgesprungen und der nächstfolgende Strukturblock durchlaufen. mospagebreak title= * Arbeitsregeln Arbeitsregeln Allgemeingültigkeit Struktogramme sollten keine programmiersprachenspezifische Befehle enthalten. Sie sollen programmiersprachenunabhängig formuliert werden, so dass die dargestellte Logik einfach zu verstehen ist und als Programmiervorschrift in jede beliebige Programmiersprache umgesetzt werden kann. Deklaration Einfaches Struktogramm ist ursprünglich für prozedurale Programmiersprachen entwickelt worden und bildete im Struktogrammen nur die Prozedur und keine Deklarationsbereiche von Variablen und Konstanten ab. Erweiterte Struktogramme Dadurch ist jedoch nicht sofort deutlich, welcher Datentyp einer Variablen zugeordnet werden muss. Die Deklaration von Variablen und Konstanten ist im ersten Anweisungsblock vorzunehmen Exklusivität Jede Anweisung erhält einen eigenen Strukturblock (Sinnbilder nach DIN 66261). http://www.bktmoers.de/joomla Powered by Joomla! Generated: 28 January, 2017, 04:38
BKTM Programmieren leicht gemacht. Selbst mehrere Anweisungen gleicher oder ähnlicher Art dürfen nicht in einem Strukturblock zusammengefasst werden. Jede Anweisung muss mindestens aus einer Zuweisung bestehen. Das Ziel einer Anweisung steht immer links vom Zuweisungszeichen. Rechts davon steht die Quelle. Über jedes Struktogramm gehört ein Name, um die Identifikation durch Ereignis oder (Unter)Programmaufrufe gewährleisten zu können. mospagebreak title= * Beispiele 1 Beispieldiagramme 1. Einfaches Struktogramm Das folgende Beispiel zeigt ein Diagramm für die Berechnung des größten gemeinsamen Teilers mit dem euklidischen Algorithmus. NassiShneidermanDiagramm #include <iostream.h> void main () int a,b; cout << "a= "; cin >> a; cout << "b= "; cin >> b; while (a>0 && b>0) http://www.bktmoers.de/joomla Powered by Joomla! Generated: 28 January, 2017, 04:38
BKTM Programmieren leicht gemacht. if (a>b) a=ab; else b=ba; ; if (b == 0) cout << "Größter gemeinsamer Teiler" << a << endl ; else cout << "Größter gemeinsamer Teiler" << b << endl; CQuellcode Ausgabe für a=100 und b=224: a= 100 b= 224 Größter gemeinsamer Teiler: 4 mospagebreak title= * Beispiele 2 2. Erweitertes Struktogramm http://www.bktmoers.de/joomla Powered by Joomla! Generated: 28 January, 2017, 04:38
BKTM Programmieren leicht gemacht. Noteneingabe: Ein Programm soll für eine als Zahl eingegebene Zensur (von 1 bis 6) die Note in schriftlicher Form (sehr gut, gut, befriedigend,... ungenügend) auf dem Bildschirm ausgeben. Sollte eine andere Ziffer eingeben werden, soll das Programm den Begriff ungültig auf dem Bildschirm ausgeben. Das Programm benötigt dafür zwei Variablen intzensur (Datentyp: int) und strzensur (Datentyp char []). NassiShneidermanDiagramm #include <iostream.h> #include <string.h> void main () int intzensur; char strzensur[15]; cout << "Bitte geben Sie Ihre Note als Zahl ein: "; cin >> intzensur; switch (intzensur) case 1: strcpy( strzensur, "sehr gut"); break; case 2: strcpy( strzensur, "gut"); break; case 3: strcpy( strzensur, "befriedigend"); break; case 4: strcpy( strzensur, "ausreichend"); break; case 5: strcpy( strzensur, "mangelhaft"); break; case 6: strcpy( strzensur, "ungenügend"); break; default: strcpy( strzensur, "ungültig"); cout << "Ihre eingegebene Zensur in Worten: " << strzensur << endl; Ausgabe für die Eingabe 1 Bitte geben Sie Ihre Note als Zahl ein: 1 http://www.bktmoers.de/joomla Powered by Joomla! Generated: 28 January, 2017, 04:38
BKTM Programmieren leicht gemacht. Ihre eingegebene Zensur in Worten: sehr gut mospagebreak title= * Beispiele 3 3. Beispiel In Amerika wird die Temperatur nicht in Grad Celsius, sondern in Grad Fahrenheit gemessen. Es gilt: 0 C = 32 F; 100 C = 212 F Entwickeln Sie ein Programm, das nach Eingabe des Temperaturwertes in Grad Celsius den zugehörigen Wert in Grad Fahrenheit auf dem Bildschirm sauber geordnet und lesbar ausgibt. #include <stdio.h> #include <windows.h> void main (void) double cels, fahr; do system("cls"); printf("bitte geben Sie eine Temperatur in Grad Celsius ein: "); scanf("%lf", &cels); fahr = 32 + 1.8 * cels; printf("dies entspricht %5.2lf Fahrenheit\n", fahr); system("pause"); while((int)cels!= 0); http://www.bktmoers.de/joomla Powered by Joomla! Generated: 28 January, 2017, 04:38
BKTM Programmieren leicht gemacht. Bildschirmausgabe für die Eingabe 100 Bitte geben Sie eine Temperatur in Grad Celsius ein:100 Dies entspricht 212 Fahrenheit. http://www.bktmoers.de/joomla Powered by Joomla! Generated: 28 January, 2017, 04:38