Zum Inhalt springen

Unterschied prozedurale und strukturierte Programmierung


Sassy

Empfohlene Beiträge

Hallo liebe Community,

ich versuche gerade herauszufiltern, was die konkreten Unterschiede zwischen der prozeduralen und strukturierten Programmierung sind.

Ich habe schon ein wenig gegoogelt aber irgendwie verwirrt mich das mehr.

Soweit ich das verstanden habe, unterteilen beide Programmierparadigmen die Programme in kleinere Teile bzw Teilprobleme.

Bei Wikipedia steht auch, dass die strukturierte Programmierung das Paradigma der prozeduralen enthält. Baut als quasi darauf auf.

Aber was kommt bei der Strukturierten dann noch hinzu? Ich kann mir das nicht beispielhaft vorstellen.

Strukturierte Programmierung ist ein programmiersprachenübergreifendes Programmierparadigma, das Anfang der 1970er Jahre auch aufgrund der Softwarekrise populär wurde. Es beinhaltet zum einen die baumartige Zerlegung eines Programms in Teilprogramme (Prozeduren) und enthält somit das Paradigma der prozeduralen Programmierung. Zudem verlangt die strukturierte Programmierung auf der untersten Ebene die Beschränkung auf lediglich drei Kontrollstrukturen:

* Sequenz (hintereinander auszuführende Programmanweisungen)

* Auswahl (Verzweigung)

* Wiederholung (Schleifen)

Heißt das konkret, dass es bei der prozeduralen Programmierung keine ifs und while/fors gibt (Verzweigung und Schleifen)?

Aber wieso steht dort nichts von Funktionen? Bei welchem Paradigma gibt es diese?

Wäre lieb wenn jemand dort den Überblick hätte und mir weiterhelfen könnte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich bin jetzt kein Fachmann, aber für mich liest sich das so, dass der generelle Ansatz der prozeduralen Programmierung, ersteinmal nur heißt, dass man ein Problem modularisiert betrachtet; e.g. einen vereinfachten Cola-Automaten:

Ein Ansatz (der aber nicht unbedingt "prozedural" wäre), wäre es jetzt quasi alles in eine einzige main-Funktion zu schreiben. Die Übergänge von einem Zustand in einen anderen erfolgen durch einen unbedingten Sprung - in Assembler etwa mittels JMP oder in C mittels goto.

Prozedurale Programmierung würde dann zwischen den unterschiedlichen Zuständen genauer differenzieren, so dass quasi jeder Zustand durch eine Prozedur gekennzeichnet wäre:


for(;
{
WarteAufGeldEingang();
PrüfeGeldEingang();
GebeWareAus();
WennNötigGebeWechselGeld();
}
[/PHP]

Das obige Beispiel dürfte grob gesehen sowohl prozedural, als auch strukturiert durchgehen (einen Automaten würde man anders programmieren, aber für's Beispiel taugt's *g*).

Der wesentliche Unterschied, wenn ich das recht verstanden habe, liegt jetzt darin, dass man bspw. darauf verzichtet mittels [i]goto[/i] bspw. im Fehlerfall komplett aus dem Kontext herauszuspringen und an irgendeiner, quasi x-beliebigen Stelle im Programm weiterzumachen.

Als unbedingter Sprung erlaubt ist nachwievor [i]break;[/i]. Warum? Weil ein break lediglich den Kontext der aktuellen Schleife verlässt und in die übergeordnete Struktur zurückwechselt, bzw. bei einem switch-Statement wird die Fallunterscheidung verlassen.

Eine abgemilderte Form des "goto" im Fehlerfall sind die [i]Exceptions[/i]. Zwar wird auch der aktuelle Kontext verlassen; allerdings ist dies äußerst kontrolliert möglich - Fehlerobjekte können geworfen werden; es kommt zum sog. [i]Stack-Unwinding[/i] etc.

Strukturierte Programmierung ist nichts anderes als konsequent angewandte (prozedurale) Programmierung unter Vermeidung von Gotos und Reduktion der elementaren Prozeduren auf kleine bzw. kleinste Kontrollstrukturen/Vorgänge, quasi eine Art Vorläufer des [i]Single Responsibility Principle[/i].

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...