Strukturiertes Programmieren

Definition

Struktur ist der innere Bau, die (innere) Anordnung einer sache. Im allgemeinen Gebrauch wird Struktur auch verwendet, um einen logischen, übersichtlichen und klaren Aufbau zu bezeichnen.

Strukturierte Programmierung beinhaltet auch diese beiden Aspekte. Die Grundlegenden Strukturen sind Blöcke (Anweisungsfolgen), Verzweigungen (if then else) und Wiederholungen (While for). Der hauptsächlich bezeichnende Aspekt aber, ist der letztere, eine klare und logische Strukturierung:

Nach Edsger Wybe Dijkstra (11. Mai 1930 - 6. August 2002), unter anderem Schöpfer des Dijkstra-Algorithmus, ist in Strukturierter Programmierung die Logik eines Programmes eine Struktur zusammengesetzt aus ähnlichen Unterstrukturen in einer begrenzten Anzahl von Variationen. So erfolgt die Programm-Ablauf-Steuerung durch diese hierarchische Struktur und nicht durch Sprünge (Goto), deren Unnötigkeit Dijkstra sogar in einer wissenschaftlichen Arbeit behandelt. Dies ist so fundamental, dass moderne Hochsprachen wie Java bewusst ganz darauf verzichten, bzw. ihre Funktion einschränken.

Beispiele

FALSCH                         RICHTIG

int y;                           int y;
int x=0;                         int x=0;
punkt1                           while x = 0 { 
input y;                           input y; 
if x>0 then goto punkt2;           for(x=0 to 10 step 1) 
for(x=0 to 10 step 1)                 {
  {                                   if x>y x=10; 
  if x>y goto punkt1;                 "x <= y";
  "x <= y";                           } 
  }                                x=x-1;
punkt2                             }
END;                             END;

Die beiden kleinen Psydocode-Programme überprüfen (auf einem sehr umständlichen Weg), ob der eingegebene Wert y > 0 ist. Bei der Linken Lösung wird das Programm im Falle von x>y einfach aus der For-Schleife gerissen. In diesem wenig Komplexen Beispiel mag das noch gehen, aber wenn in komplexen Programmen willkürlich hin und her gesprungen wird, kann es sein, dass an irgend einem Punkt ein Vorgang an einer kritischen Stelle unterbrochen wird. Und das kann unter umständen verherende Folgen haben. Und obwohl gleich formatiert, wirkt das Linke im Vergleich zu Rechten, klar und hierarchisch Strukturierten, viel unübersichtlicher.

Einbettung und Abgrenzung

Strukturiertes Programmieren ist aus der Welt der Softwareentwicklung nicht weg zu denken. Wenn viele Leute an einem Projekt arbeiten, dann muss es jedem möglich sein, dass Programm schnell zu überschauen. Hierzu dienen auf die grundlegenden Programmierrichtlinien. Eine klare Strukturierung hilft ausserdem bei Fehlersuche und Fehlervermeidung. Durch die hierarchische Struktur wird das verstehen des Programms auf das Verstehen der einzellnen Unterprogramme reduziert, bis hin zum kleinsten Baustein. Durch dieses hierarchische System wird Strukturierte Programmierung auch zu einem Eckpfeiler der Objektorientierten Programmierung. Ausserdem ist Strukturiertes Programmieren ein fester Bestandteil der modernen Programmiersprachen, was es quasi unentbehrlich für die Softwareentwicklung macht. Eine Abgrenzung gibt es dabei nicht wirklich. Wo ist eine klare und logiche Struktur schon unerwünscht? Ausnahmen bilden hier die Maschienen nahen Sprachen, die Goto, oder J(u)mp benutzen um auf unterprogramme zu greifen. Dies gründet aber eher in ihrer Einfachheit und Hardware nähe.

Historische Anmerkung

Strukturiertes Prgrammieren, in beiden Aspekten, gibt es, seit es das Programmieren gibt. Natürlich wuchs das Interesse mit der Größe der Programme, aber bedenkt man, dass Dijkstra Go To Statement Considered Harmful Ende der 60er Jahre veröffentlichte und die ersten koplexen Programmiersprachen Ende der 50er entstanden und es auch einen gewissen Zeitraum brauchte, Erfahrungen zu Thema zu sammeln, kann man davon ausgehen, dass die Informatik sich mit diesem Thema seit der Entstehung des Programmierens beschäftigt.

Kritische Betrachtung

Strukturierter Programmierung ist nicht negatives abzugewinnen, wie schon gesagt, wo ist Logik und Ordnung schon fehl am Platz? Verständliche Programmcodes, Fehlerfreiheit uns Sicherheit sind Aspekte die einfach nicht zu ignorieren sind. Ausserdem hilft ein Herangehen im Sinne Dijkstras dabei ein Problem zu erfassen, indem man es in viele kleine Teile zerlegt. Und das Ergebnis ist mehr als die Summe seiner Teile.

Quellen

http://de.wikipedia.org/wiki/Edsger_Wybe_Dijkstra

http://en.wikipedia.org/wiki/Structured_programming

http://www.its.bldrdoc.gov/fs-1037/dir-035/_5154.htm

http://www.cs.utexas.edu/users/EWD/transcriptions/EWD02xx/EWD268.html

http://www.imn.htwk-leipzig.de/~waldmann

Kommentar

ok


Warning: fopen(wiki.d/.flock) [function.fopen]: failed to open stream: Permission denied in /home/weicker/public_html/pmwiki/pmwiki.php on line 416

PmWiki can't process your request

Cannot acquire lockfile

We are sorry for any inconvenience.