WikiDer > Strukturierte Programmierung

Gestructureerd programmeren

Strukturierte Programmierung kann als Teildisziplin von . angesehen werden Verfahrensprogrammierung, einer der wichtigsten Programmierparadigmen, und wahrscheinlich das beliebteste dafür Computerprogrammierung. Der Programmierer beschränkt sich bei diesem Konzept auf die vier grundlegenden Kontrollstrukturen im Programmablauf und wendet das Konzept der Abstraktion konsequent an, d.h. die Vermeidung langer Programmblöcke durch die häufige, hierarchische Anwendung relativ kleiner Unterprogramme.

Geschichte

Es war im sechziger Jahre allmählich klar, dass die Größe und Komplexität von Computerprogramme begann außer Kontrolle zu geraten. Softwareentwickler konnte den Wald vor lauter Bäumen nicht sehen. Strukturierte Programmierung und zum Beispiel die Wasserfallmethode wurden entwickelt, um dem entgegenzuwirken.

Gute Programmierer konnten durch strukturiertes Arbeiten viel leichter verständlichen Code erstellen und dessen Korrektheit leichter demonstrieren. Aufgefallen ist, dass vor allem erfahrene Programmierer viel weniger Sprunganweisungen, viel weniger GEHE ZUAussagen, verwendet und häufig verwendet Unterprogramme. Wissenschaftler in der Informatik, unter denen Edsger Dijkstraße und Michael A. Jackson, sah die Lösung in der strukturierten Programmierung, wo die Verwendung neuer Kontrollstrukturen in Programmiersprachen die Verwendung der überladenen Sprungbefehle überflüssig machen würde und die Lesbarkeit des Codes deutlich besser wäre.[1]

Dijkstra versuchte, die Korrektheit von Programmen nachzuweisen. Dies ist ihm teilweise gelungen. Ziel war es auch, paralleles Arbeiten in großen Teams an großen Projekten zu ermöglichen. Dieser Ansatz ist gelungen. Ein strukturiertes Vorgehen führt auch zu Software in denen Funktionen stärker voneinander getrennt aufgebaut sind. Dies macht die Wartung, sowohl korrigierend als auch adaptiv, erheblich einfacher und weniger riskant.

Als Alternative zum Flussdiagramm es wurde Programmstrukturdiagramm, auch als Nassi-Shneiderman-Diagramm bekannt. Die Einschränkungen dieser Arbeit zugunsten der Programmierung sind dieselben Einschränkungen, die man bei der strukturierten Programmierung anwenden muss.[2]

Strukturierte Programmierung führte zu einer neuen Generation Programmiersprachen. Fast alle diese Sprachen kennen noch die Sprunganweisung und das Label, die Zeilennummer in einem Computerprogramm, aber von ihrer Verwendung wird dringend abgeraten und durch zusätzliche Deklarationspflichten erschwert.

Die Essenz strukturierter Programmierung

Die vier grundlegenden Kontrollstrukturen in der strukturierten Programmierung sind:

  • Folge = Folge - (S1 S2)
  • Auswahl = Auswahlstruktur - (wenn B dann S1 sonst S2)
  • Probe oder Iteration = Wiederholung, mit der Wiederholungsbedingung vor oder nach - normalerweise (während B S macht) und (Do S bis B)
  • Rekursion = ständiges Aufrufen eines Unterprogramms von selbst, bis eine Endbedingung erreicht ist

Hier steht S für eine Zuordnung, von soAussage, und B für einen logischen Ausdruck, Boolean. Wichtig dabei ist, dass sowohl ein Befehl als auch ein logischer Ausdruck beliebig komplex sein können. Dies wurde in Befehlsprogrammiersprachen realisiert von Start Ende-Konstruktionen:

Die Anwendung des Konzepts der Abstraktion und mit dem der Subroutine ist schließlich ein wesentlicher Bestandteil des strukturierten Vorgehens.

Single-Choice-Struktur

Bei einer Auswahlstruktur wird vom Computer abhängig von einer Bedingung ein bestimmter Codeabschnitt ausgeführt.

StrukturBeschreibung
wenn v dann xxxxxx wird nur ausgeführt, wenn die Bedingung erfüllt ist
wenn v dann xxx sonst yyywenn die Bedingung erfüllt ist, xxx durchgeführt, wenn nicht yyy hingerichtet
wenn v1 dann xxx sonst v2 ...ist die erste Bedingung nicht erfüllt, werden Folgeaktionen von einer zweiten Bedingung abhängig dependent
Beispiel für ein wenn
<?$stimmung="Schlecht";wenn($stimmung=="Schlecht"){Echo("Ich bin mürrisch");}?>
Beispiel für ein elseif
<?$stimmung="gut";wenn($stimmung=="Schlecht"){Echo"Ich bin mürrisch";}sonst($stimmung=="gelangweilt"){Echo"Ich langweile mich";}sonst{Echo"Ich habe gute Laune";}?>

Multiple-Choice-Struktur

Bei einer Multiple-Choice-Struktur oder: Schalter, kann auf verschiedene Werte reagiert werden. Dies kann auch mit einigen Single-Choice-Strukturen implementiert werden, und es besteht eine gute Chance, dass es sonstAnweisungen, aber mit einem Schalter ist es einfacher:

<?$stimmung="gut";Schalter($stimmung){Fall"Schlecht":Echo"Ich bin mürrisch";Unterbrechung;Fall"gelangweilt":Echo"Ich langweile mich";Unterbrechung;Standard:Echo"Ich habe gute Laune";}?>

Bedingte Iterationsstruktur oder Iteration

Müssen Anweisungen bedingt wiederholt werden, gibt es zwei Möglichkeiten:

  • erst testen, dann den Befehl ausführen, dann erneut testen und schließlich den Befehl ausführen, erneut testen usw.
  • Führen Sie zuerst den Befehl aus, testen Sie dann, wiederholen Sie den Befehl, falls erforderlich, wiederholen Sie den Test usw.

Im ersten Fall kann es sein, dass der Befehl nie, keine Wiederholung oder mehrmals ausgeführt wird, im zweiten Fall wird der Befehl mindestens einmal ausgeführt.

PHP-Beispiel der ersten Möglichkeit
<?$Zähler=0;während($Zähler<=12){Echoder Zähler steht jetzt: $Zähler 
"
;$Zähler;}?>
PHP-Beispiel der zweiten Möglichkeit
<?$Zähler=0;tun{$Zähler;Echoder Zähler steht jetzt: $Zähler 
"
;}während($Zähler<=12);?>

Abstraktion und Unterprogramme

Unterroutinen sind abrufbare Einheiten wie Prozeduren, Funktionen oder Methoden, die verwendet werden, um mit einer einzigen Anweisung auf eine Folge von Anweisungen zu verweisen: die Anruf-Anweisung. Anrufanweisungen ein Unterprogramm aufrufen.

Die hierarchische Verwendung des Konzepts des Unterprogramms ähnelt dem Konzept von Abstraktion in dem Systemtheorie. Durch die Zusammenstellung vieler Unterprogramme, zuverlässig und komplex Informationssysteme gebaut werden, weil sie gegeneinander isoliert sind Unterprogramme gebaut werden, die separat gebaut und getestet werden können. Auf diese Weise detailliert Datenstrukturen, Algorithmen und Operationen, die vor Programmen auf höheren Systemebenen verborgen sind. Das heißt Daten verstecken oder Verkapselung.

Edsger Dijkstraße war der erste, der im August 1969 auf die Notwendigkeit dieses Ansatzes aufgrund der begrenzten Fähigkeiten des menschlichen Geistes hinwies:

"Es ist unmöglich, die Richtigkeit eines Programms mit vielen Seiten zu ergründen."

Er plädierte daher dafür, Computerprogramme und deren Unterprogramme immer in ihrer Größe zu begrenzen und ihnen eine klare, wohldefinierte, möglichst einfache Funktionalität zu geben. Später landete dieses Konzept der Abstraktion und Verwendung von Unterprogrammen in der objektorientierten Ansatz, bei dem Unterprogramme ersetzt werden durch Methoden, die auf Objekte und Klassen arbeiten.

Ole-Johan Dahl, E. W. Dijkstra und WAGEN. heiser veröffentlichten 1972 gemeinsam ein Buch, das die Grundlagen der Programmkorrektheit, der strukturierten Daten, der Programmhierarchie und der Abstraktionsschichten grundlegend behandelte. Hier wurde das Denken in Klassen mit Data Hiding und Encapsulation eingeführt. Diese drei frühen Informatiker legten damit den Grundstein für alle späteren wissenschaftlichen und kommerziellen Arbeiten zur strukturierten Programmierung und zum objektorientierten Ansatz.

Wikibooks hat mehr zu diesem Thema: Programmierung, Grundlagen/Die Kontrollstrukturen.