Thema: StruktogrammDatum: 03.01.2013

Source-Tutorial
Grundlagen der Programmierung.

Vorwort
Die strukturierte Programmierung ermöglicht es uns, Programme zu schreiben. Doch bis zum fertigen Programm ist es ein langer Weg und wenn man gerade erst anfängt zu programmieren, kann man schnell die Übersicht verlieren. Wir der Sourccode dann mit der Zeit komplexer und man hat sich einige Zeit, nicht mehr mit einem Projekt auseinandergesetzt, so kann eine vereinfachte Übersicht des Sourcecodes wahre Wunder bewirken. Doch wie stellt man den Code vereinfacht dar und vorallem wie lauten die Befehle welche ich später in meinem Programm verwenden muss? Dies wird euch hier hoffentlich einfach und verständlich erklärt.

Struktogramm-Elemente und ihre Code Zugehörigkeit
In diesem Abschnitt schauen wir uns die grundlegenden Elemente eines Struktogramms an und verknüpfen diese mit passenden Code-Beispielen aus Java.

Der Programmrahmen


Wie der Name schon vermuten lässt, umschließt der Programmrahmen unser komplettes Programm, welches wir als Struktogramm darstellen wollen. In den oberen Teil des Programmrahmen wird der Name unseres Programm vermerkt. Innerhalb dieses Rahmen, stehen alle weiteren Struktogramm-Elemente welche wir verwenden wollen.

In Java gibt es ebenso einen Programmrahmen, der dafür zuständig ist den Sourcecode zusammenzuhalten.

                  public class namedesprogramm {
                    public static void main(String[] args) {
                  
                    }
                  }
                

Wobei man hier die "public class..." und die "public static..." nochmal auseinanderhalten muss. Bei der "public class..." handelt es sich um eine Klasse die mehrere Methoden (public static...) beinhalten kann.
Achtung: Für Klassen und Methoden gibt es keine unterschiedliche Darstellung, da ein Struktogramm eine für alle Programmiersprachen eindeutige Darstellung sein soll. So werden Methoden die man aus dem Hauptprogramm bei einem Struktogramm auslagert und sozusagen nur teilweise ein eigenes Programm darstellen, auch mit einem Programmrahmen gezeichnet.

Ausgelagertes Programm


Sofern man einen Programmabschnitt mehrmals benötigt ist es sinnvoll, diesen in einem extra Struktogramm bzw. in Java in einer extra Methode, auszulagern. Somit spart man sich die Zeit, einen bestimmten Abschnitt immer wieder komplett zu schreiben. Als Struktogramm-Element wird dies mit einem Kasten, der eine Elipse beinhaltet, in welcher der Name des Programms steht, ermöglicht.

                  public class namedesprogramm {
                    public static void main(String[] args) {
                      pruefe();
                    }
                    public static void pruefe() {

                    }
                  }
                

In folgendem Beispiel, haben wir unsere Main Methode sowie eine weitere Methode "pruefe()" welche sich in unserer angegebenen Klasse befindet. Wie können nun unsere "pruefe()" Methode innerhalb unserer Main Methode an jeder beliebigen Stelle aufrufen ohne den kompletten Sourcecode der ausgelagerten Methode nochmal schreiben zu müssen.

Unbedingte Anweisung


Die unbedingte Anweisung stellt einen einfachen Befehl dar, wie das Ausgeben eines Textes oder die Initialisierung bzw. das hochzählen einer Variablen. Im Struktogramm wird dies als einfacher rechteckiger Kasten dargestellt in dem die Anweisung allgemein beschrieben wird. Z.B. "Ausgabe: "Heute ist ein schöner Tag" oder "Rechnung := Var1 + Var2"

                  System.out.print("Heute ist ein schöner Tag");
                

Dies ist ein Beispiel in Java, für die Ausgabe "Heute ist ein schöner Tag". Realisiert wird dies über den System.out.print(); Befehl, den es in verschiedenen Variationen gibt.

Bedingte Verzweigung

Bei der bedingten Verzweigung hat man eine Abfrage, die entweder Wahr oder Falsch sein kann. Je nachdem folgen dann weitere Struktogramm Elemente. Als kleines Beispiel hierfür, "Ist das Wetter schön? - Wahr: Ausgabe: Raus gehen - Falsch: Ausgabe: Drinne bleiben"
 

                  if (Wetter == "schön") {
                    System.out.print("Raus gehen");
                  } else {
                    System.out.print("Drinne bleiben");
                  }
                

In Java wäre dies die if/else Anweisung die dem am nächsten kommt. Sie überprüft eine Gegebenheit auf ihre Richtigkeit und führt dementsprechend einen gegebenen Befehl aus.

Bedingte Mehrfachverzweigung (Fallunterscheidung)


oder

Bei der Fallunterscheidung handelt es sich um eine erweiterte Form der einfachen bedingten Verzweigung. So können hier mehrere Unterscheidungen überprüft werden ohne mehrere bedingte Verzweigungen zu verschachteln. Verwendung findet diese Art der Fallunterscheidung bei der Überprüfung von Zahlenwerten. So zum Beispiel bei einem Rabatt, für eine bestimmte Anzahl an Gegenständen: "Haben wir X USB-Sticks? - Fall1: Wir haben 5 Ausgabe: "Es gibt 2 Euro Rabatt" - Fall2: Wir haben 10 Ausgabe: "Es gibt 3 Euro Rabatt" - Fall 3: Wir haben 15 Ausgabe: "Es gibt 4 Euro Rabatt" usw.

                  switch (anzahl) {
                    case 5: 
                      System.out.print("Es gibt 2 Euro Rabatt"); 
                      break;
                    case 10: 
                      System.out.print("Es gibt 3 Euro Rabatt"); 
                      break;
                    case 15: 
                      System.out.print("Es gibt 4 Euro Rabatt"); 
                      break;
                    default: 
                      System.out.print("Sie bekommen keinen Rabatt"); 
                      break;
                  }
                

Der passende Sourcecode dazu ist der switch() Befehl. Dieser überprüft die in der Klammer gegebene Variable auf die einzelnen Fälle und führt diese je nach Situation aus. Am Ende jeder case Anweisung muss ein break; stehen, da es sonst zu Problemen kommen kann. Die default: Situation beschreibt jede Situation, die nicht mit einer der case Anweisungen beschrieben ist.

Schleife (Kopfgesteuert)


Eine kopfgesteuerte Schleife muss, sofern die Bedingung nicht erfüllt ist, nicht durchlaufen werden. Verwendung finden Schleifen, um große Mengen an verwendeten Sourcecode z.B. für Überprüfungen oder einer sich mehrfach wiederholenden Aufgabe, zu verkleinern. Eine Schleife ermöglicht eine Automatisierung des Vorgang.

                  for(int i; i<=10; i++) {
                    System.out.print("*");
                  }
                

oder


                  while(stern <=10) {
                    System.out.print("*");
                    stern++;
                  }
                

Die kopfgesteuerte Schleife kann sowohl mit einer for-Schleife als auch mit einer while-Schleife erstellt werden. Der Unterschied hierbei ist, dass sich die for-Schleife eher für einen definierten Wert eignet, man die while Schleife aber auch für die Überprüfung ob ein Wert Wahr oder Falsch ist verwenden kann.

Schleife (Fußgesteuert)


Die fußgesteuerte Schleife wird mindestens einmal durchlaufen, selbst wenn die Bedingung der Schleife nicht eintrifft. Die Laufbedingung hierbei ist eine Überprüfung ob diese entsprechend Wahr oder Falsch ist.
 

                  do {
                    System.out.print("*");
                  } while (stern == true);
                

Hierbei benötigen wir neben dem while, noch ein do welches das komplette einschließt.

Allgemeine Informationen

- Java Befehle enden generell mit einem Semikolon ;
- Man unterscheidet in Java die Vergleichsoperatoren unter <= | >= | = = | != | < | > | = | && | ||
Von links nach rechts: Kleiner Gleich | Größer Gleich | Vergleich | Ungleich | Kleiner als | Größer als | Zuweisung | Und | Oder
- In einem Struktogramm ist der Vergleich ein = und die Zuweisung ein :=
- Durch ++ wird eine Variable hochgezählt und mit -- runter.
- Die Bedingungen einer if Anweisung werden immer von links nach rechts gelesen und sollten zur besseren Strukturierung mit Klammern entsprechend gekennzeichnet werden:
if(VarEins = = 1 && VarZwei = = 2 || VarDrei = = 3) ist etwas anderes als if(VarEins = = 1 && (VarZwei = = 2 || VarDrei = = 3))
- Variablen sollten auch in einem Struktogramm initialisiert werden.
- Ein Block wird durch geschweifte Klammern gekennzeichnet { }.

                  if(VarEins ==1) {
                    System.out.print("Eins");
                    System.out.print("Es funktioniert");
                  }
                
                  if(VarEins ==1)
                    System.out.print("Eins");
                    System.out.print("Es funktioniert");
                

Struktogramm Zahlenreihe


 

Schlusswort
Ich hoffe dieses Tutorial konnte euch einen etwas größeren Einblick in die Erstellung eines Struktogramms liefern sowie einen etwas kleineren in die Programmierung mit Java.