Strukturierte Programmierung

Strukturierte Programmierung ist ein Programmierparadigma, das bei der Besserung der Klarheit, Qualität, und Entwicklungsdauer eines Computerprogramms durch das Bilden umfassenden Gebrauches von Unterprogrammen, Block-Strukturen und dafür gerichtet ist, und während Schleifen - im Gegensatz zum Verwenden einfacher Tests und Sprünge wie die goto Behauptung, die "zu Spaghetti-Code" führen konnte, der sowohl schwierig ist, zu folgen als auch aufrechtzuerhalten.

Es ist in den 1960er Jahren, besonders von der Arbeit von Böhm und Jacopini und einem berühmten Brief erschienen, "Gehen zur Behauptung Überlegt Schädlich", von Edsger Dijkstra 1968 - und wurde theoretisch durch den strukturierten Programm-Lehrsatz, und praktisch durch das Erscheinen von Sprachen wie Algol mit angemessen reichen Kontrollstrukturen ausgepolstert.

Auf niedriger Stufe Struktur-Programmierung

An einer niedrigen Stufe werden strukturierte Programme häufig aus einfachen, hierarchischen Programm-Fluss-Strukturen zusammengesetzt. Das sind Folge, Auswahl und Wiederholung:

  • "Folge" bezieht sich auf eine bestellte Ausführung von Behauptungen.
  • In "der Auswahl" wird eine mehrerer Behauptungen abhängig vom Staat des Programms durchgeführt. Das wird gewöhnlich mit Schlüsselwörtern solcher als ausgedrückt, oder.
  • In "der Wiederholung" wird eine Behauptung durchgeführt, bis das Programm einen bestimmten Staat erreicht, oder Operationen auf jedes Element einer Sammlung angewandt worden sind. Das wird gewöhnlich mit Schlüsselwörtern solcher als ausgedrückt, oder. Häufig wird es empfohlen, dass jede Schleife nur einen Zugang-Punkt haben sollte (und in der ursprünglichen Strukturprogrammierung, auch nur ein Ausgangspunkt, und einige Sprachen das geltend machen).

Eine Sprache, wird wie Block-strukturiert, beschrieben, wenn sie eine Syntax hat, um Strukturen zwischen eingeklammerten Schlüsselwörtern wie eine Wenn-Behauptung einzuschließen, die durch als im Algol 68, oder eine Codeabteilung eingeklammert ist, die durch, als in PL/I - oder die lockigen geschweiften Klammern von C und vielen späteren Sprachen eingeklammert ist.

Strukturierte Programmiersprachen

Es ist möglich, strukturierte Programmierung auf jeder Programmiersprache zu tun, obwohl es vorzuziehend ist, etwas wie eine Verfahrensprogrammiersprache zu verwenden. Einige der für strukturierte Programmiersprachen am Anfang verwendeten Sprachen schließen ein: Algol, Pascal, PL/I und Ada - aber neueste Verfahrensprogrammiersprachen haben seit dieser Zeit Eigenschaften eingeschlossen, um strukturierte Programmierung zu fördern, und manchmal absichtlich Eigenschaften ausgelassen, die unstrukturierte Programmierung leicht machen würden.

Geschichte

Theoretisches Fundament

Der strukturierte Programm-Lehrsatz schafft die theoretische Grundlage der strukturierten Programmierung. Es stellt fest, dass drei Weisen, Programme-sequencing, Auswahl und Wiederholung zu verbinden - genügend sind, jede berechenbare Funktion auszudrücken. Diese Beobachtung ist mit der strukturierten Programmierbewegung nicht entstanden; diese Strukturen sind genügend, um den Instruktionszyklus einer in einer Prozession gehenden Haupteinheit, sowie die Operation einer Maschine von Turing zu beschreiben. Deshalb führt ein Verarbeiter immer ein "strukturiertes Programm" in diesem Sinn durch, selbst wenn die Instruktionen, die es auswendig liest, nicht ein Teil eines strukturierten Programms sind. Jedoch kreditieren Autoren gewöhnlich das Ergebnis einem 1966-Vortrag von Böhm und Jacopini vielleicht, weil Dijkstra dieses Papier selbst zitiert hat. Der strukturierte Programm-Lehrsatz richtet nicht, wie man schreibt und ein nützlich strukturiertes Programm analysiert. Diese Probleme wurden während des Endes der 1960er Jahre und Anfang der 1970er Jahre, mit Hauptbeiträgen von Dijkstra, Robert W. gerichtet. Floyd, Tony Hoare und David Gries.

Debatte

P. J. Plauger, ein früher Adoptierender der strukturierten Programmierung, hat seine Reaktion zum strukturierten Programm-Lehrsatz beschrieben:

:Us-Bekehrte haben diese interessante Neuigkeit unter den Nasen der wieder unaufgebauten mit dem Zusammenbau sprachigen Programmierer geschwenkt, die fortgesetzt haben, hervor gewundene Bit der Logik und des Ausspruchs traben zu lassen, 'Ich betcha das nicht strukturieren kann.' Weder der Beweis durch Böhm und Jacopini noch unsere wiederholten Erfolge beim Schreiben des strukturierten Codes haben ihnen ungefähr einen Tag eher gebracht, als sie bereit waren, sich zu überzeugen.

Donald Knuth hat den Grundsatz akzeptiert, dass Programme mit provability im Sinn geschrieben werden müssen, aber er hat nicht übereingestimmt (und noch nicht übereinstimmt) mit dem Abschaffen der GOTO Behauptung. In seiner 1974-Zeitung, "Die strukturierte Programmierung mit Goto Behauptungen" hat er Beispiele angeführt, wo er geglaubt hat, dass ein direkter Sprung zu klarerem und effizienterem Code führt, ohne provability zu opfern. Knuth hat eine losere Struktureinschränkung vorgeschlagen: Es sollte möglich sein, eine Fluss-Karte eines Programms mit allen Vorwärtszweigen links, alle rückwärts gerichteten Zweige rechts und keine Zweige zu ziehen, die einander durchqueren. Viele von denjenigen, die in Bearbeitern und Graph-Theorie kenntnisreich sind, haben empfohlen, nur reduzierbare Fluss-Graphen zu erlauben.

Strukturierte Programmiertheoretiker haben einen Hauptverbündeten in den 1970er Jahren gewonnen, nachdem Forscher von IBM Harlan Mills seine Interpretation der strukturierten Programmiertheorie zur Entwicklung eines Indexieren-Systems für die Forschungsdatei der New York Times angewandt hat. Das Projekt war ein großer Technikerfolg, und Betriebsleiter an anderen Gesellschaften haben es zur Unterstutzung des Übernehmens der strukturierten Programmierung zitiert, obwohl Dijkstra die Weisen kritisiert hat, wie sich die Interpretation von Mills von der veröffentlichten Arbeit unterschieden hat.

Erst 1987 war es noch möglich, die Frage der strukturierten Programmierung in einer Informatik-Zeitschrift aufzubringen. Frank Rubin hat so in diesem Jahr mit einem Brief getan, "'GOTO hat als schädlich betrachtet', hat als schädlich betrachtet." Zahlreiche Einwände sind einschließlich einer Antwort von Dijkstra gefolgt, der scharf sowohl Rubin als auch die Zugeständnisse andere gemachte Schriftsteller kritisiert hat, als er ihm geantwortet hat.

Ergebnis

Am Ende des 20. Jahrhunderts waren fast alle Computerwissenschaftler überzeugt, dass es nützlich ist, die Konzepte der strukturierten Programmierung zu erfahren und anzuwenden. Programmiersprachen auf höchster Ebene, die ursprünglich an Programmierstrukturen, wie FORTRAN, COBOL, und GRUNDLEGEND Mangel gehabt haben, haben sie jetzt.

Allgemeine Abweichungen

Das Ausnahme-Berühren

Obwohl es fast nie einen Grund gibt, vielfache Punkte des Zugangs zu einem Unterprogramm zu haben, werden vielfache Ausgänge häufig verwendet, um zu widerspiegeln, dass ein Unterprogramm keine Arbeit mehr haben kann, um zu tun, oder auf Verhältnisse gestoßen sein kann, die es davon abhalten weiterzugehen.

Ein typisches Beispiel eines einfachen Verfahrens würde Daten von einer Datei lesen und es bearbeiten:

offene Datei;

während (nicht beendet lesend), {\

lesen Sie einige Daten;

wenn (Fehler) {\

hören Sie das Unterprogramm auf und informieren Sie Rest des Programms über den Fehler;

}\

}\

bearbeiten Sie gelesene Daten;

beenden Sie das Unterprogramm;

Der "Halt und zeigt an" kann durch das Werfen einer Ausnahme, der zweiten Rückkehr aus dem Verfahren erreicht werden, hat Schleife-Brechung oder sogar einen goto etikettiert. Da das Verfahren 2 Ausgangspunkte hat, bricht es die Regeln der strukturierten Programmierung von Dijkstra. Das Codieren davon in Übereinstimmung mit dem einzelnen Punkt der Ausgangsregel würde sehr beschwerlich sein. Wenn es möglichere Fehlerbedingungen mit verschiedenen Reinigungsregeln gäbe, würde einzelnes Ausgangspunkt-Verfahren äußerst hart sein, zu lesen und sehr wahrscheinlich noch mehr zu verstehen, als ein unstrukturiertes mit der durch goto Behauptungen behandelten Kontrolle.

Die meisten Sprachen haben die vielfachen Punkte der Ausgangsform der Strukturprogrammierung angenommen.

C erlaubt vielfache Pfade zu einem Ausgang einer Struktur (solche, die "weitergehen", und "Rückkehr" "brechen"), haben neuere Sprachen auch Brechungen" (ähnlich dem ersteren "etikettiert, aber erlaubend, aus mehr brechend, als gerade die innerste Schleife) und Ausnahmen.

Staatsmaschinen

Einige Programme, besonders parsers und Kommunikationsprotokolle, haben mehrere Staaten, die einander in einem Weg folgen, der auf die grundlegenden Strukturen nicht leicht reduziert wird. Es ist möglich, diese Systeme durch das Bilden jeder Zustandsänderung ein getrenntes Unterprogramm und das Verwenden einer Variable zu strukturieren, um den aktiven Staat anzuzeigen (sieh Trampolin). Jedoch ziehen einige Programmierer (einschließlich Knuth) es vor, die Zustandsänderungen mit einem Sprung zum neuen Staat durchzuführen.

Siehe auch

  • Kontrollfluss (mehr Detail von Kontrollstrukturen auf höchster Ebene)
  • Minimale Einschätzung
  • Objektorientierte Programmierung
  • Nassi-Shneiderman Diagramm
  • Programmierung von Paradigmen
  • Strukturierte Ausnahme, die behandelt
  • Struktur-Karte
  • Schalter-Behauptung, ein Fall von vielfachem GOTOs
  1. Edsger Dijkstra, Zeichen auf der Strukturierten Programmierung, pg. 6
  2. Böhm, C. und Jacopini, G.: Flussschemen, Maschinen von Turing und Sprachen mit nur zwei Bildungsregeln, CACM 9 (5), 1966.
  3. Michael A. Jackson, Grundsätze des Programm-Designs, der Akademischen Presse, Londons, 1975.
  4. O.-J. Dahl, E. W. Dijkstra, C. A. R. Hoare Strukturierte Programmierung, Akademische Presse, London, 1972 internationale Standardbuchnummer 0-12-200550-3
  5. *this-Volumen schließt eine ausgebreitete Version der Zeichen auf der Strukturierten Programmierung oben einschließlich eines verlängerten Beispiels ein, die strukturierte Annäherung zu verwenden, um einen denselben Weg zurückverfolgenden Algorithmus zu entwickeln, um das 8 Königin-Problem zu beheben.
  6. *a pdf Version ist in der ACM Klassischen Buchreihe
  7. * Zeichen, dass das dritte Kapitel dieses Buches, durch Dahl, eine Annäherung beschreibt, die als Gegenstand Orientierte Programmierung leicht anerkannt wird. Es kann als ein anderer Weg zu "nützlich Struktur" ein Programm gesehen werden, um in der Vertretung zu helfen, dass es richtig ist.

Links

,

Teufel / Halbleiter-Gerät-Herstellung
Impressum & Datenschutz