Sassy Geschrieben 4. Dezember 2010 Teilen Geschrieben 4. Dezember 2010 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lilith2k3 Geschrieben 4. Dezember 2010 Teilen Geschrieben 4. Dezember 2010 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]. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sassy Geschrieben 8. Dezember 2010 Autor Teilen Geschrieben 8. Dezember 2010 Danke das bringt mich schon ein wenig weiter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.