Cleriker Geschrieben 8. Mai 2008 Geschrieben 8. Mai 2008 huhu, hat zwar nix mit der prüfung zu tun aber ins off-topic wollt ichs nicht packen hier wird mir denk ich auch am ehesten geholfen. situation: ich programm in excel vba eine sprungmarke. meinetwegen schreib ich vor eine schleife einfach.... Anker: for x = 0 to 10 step 2 etc weiter unten hab ich ne if-abfrage, da steht im else-zweig dann einfach nur "GoTo Anker" und schwups bin ich wieder oben. Die Frage ist, wie stell ich das im Struktogramm (structorizer) dar? ich hab da zwei symbole die mir sehr sinnvoll erscheinen, einmal ein call und einmal ein jump als element. wie sieht das im struktogramm also aus? grüße Zitieren
Klotzkopp Geschrieben 8. Mai 2008 Geschrieben 8. Mai 2008 Die Frage ist, wie stell ich das im Struktogramm (structorizer) dar?Gar nicht. Struktogramme dienen dazu, Algorithmen in Strukturierter Programmierung darzustellen. In Strukturierter Programmierung sind Sprünge gar nicht erlaubt (oder zumindest stark eingeschränkt). Das Programm ist nicht strukturiert, also kannst du es auch nicht als Struktogramm darstellen. Zitieren
Cleriker Geschrieben 8. Mai 2008 Autor Geschrieben 8. Mai 2008 halt ich für etwas abwegig, wenn structorizer call- und jumpelemente beinhaltet. zumal alles prozedural geschrieben ist und eine struktur vorhanden ist. der jump in dem fall ist an sich ja auch nur eine abkürzung, ich hätte das auch als schleife-programmieren können mit einem boolean. oder irr ich mich so stark damit? Zitieren
Klotzkopp Geschrieben 8. Mai 2008 Geschrieben 8. Mai 2008 halt ich für etwas abwegig, wenn structorizer call- und jumpelemente beinhaltet.Ich weiß nicht, welche Zusätze dieses Tool da eingebaut hat, aber es gibt keine Jumps in Struktogrammen. Ein Call ist etwas Anderes. Da geht es nämlich hinterher an der Stelle weiter, die hinter dem Call folgt. zumal alles prozedural geschrieben istProzedural heißt nicht zwangsläufig strukturiert. ich hätte das auch als schleife-programmieren können mit einem boolean.Dann solltest du das tun, wenn du ein strukturiertes Programm haben willst. Zitieren
Cleriker Geschrieben 8. Mai 2008 Autor Geschrieben 8. Mai 2008 wieso sollte ich eine unübersichtliche, komplizierte schleife schreiben wenn ich nen ganz einfachen jump in zwei zeilen haben kann? es kann wohl kaum im sinne der performanceorientierten anwendungsentwicklung liegen so etwas zu tun, nur damit man irgendeinem standard entspricht oder? das symbol rechts oben wäre der jump, links daneben der call. jetzt mal ein code-beispiel, denn letztenendes such ich ne möglichkeit das korrekt darzustellen: If a = b Then GoTo KeinUser End If If a <> b Then MsgBox "fooooooo!", vbCritical, "Fehler!" Exit Sub End If KeinUser: If blubb = true Then MsgBox "blubb" Exit Sub Else sinn davon ist, dass alles nach kein-user trotzdem ausgeführt wird, auch wenn oben das goto nicht angenommen wird. es ist halt wie im html ein ancor zum rauf- und runterspringen. Zitieren
Klotzkopp Geschrieben 8. Mai 2008 Geschrieben 8. Mai 2008 wieso sollte ich eine unübersichtliche, komplizierte schleife schreiben wenn ich nen ganz einfachen jump in zwei zeilen haben kann?Keine Ahnung. Die Anforderung, das in einem Struktogramm darzustellen, kommt doch von dir. es kann wohl kaum im sinne der performanceorientierten anwendungsentwicklung liegen so etwas zu tun, nur damit man irgendeinem standard entspricht oder? Niemand hat behauptet, dass Strukturierte Programmierung performanceorientiert ist. Hier must du eben Prioritäten bei deinen Anforderungen setzen. jetzt mal ein code-beispiel, denn letztenendes such ich ne möglichkeit das korrekt darzustellen:In diesem Beispiel ist der Sprung überflüssig, weil alles, was übersprungen wird, sowieso in einem if-Block steht, dessen Bedingung genau das Gegenteil der Sprungbedingung ist. Allgemein lässt sich ein bedingter Vorwärtssprung durch eine Verzweigung mit derselben Bedingung ersetzen, deren Wahr-Zweig leer ist, und deren Falsch-Zweig den übersprungenen Code enthalt. Zitieren
Cleriker Geschrieben 8. Mai 2008 Autor Geschrieben 8. Mai 2008 ja in meinem beispiel ist es überflüssig, nicht aber in meinem programm. denn es geht darum, dass wenn a = b ist, soll der danach folgende if-block übersprungen werden. das hat schon durchaus seinen sinn. das problem ist, ich kann ja schlecht mein funktionierendes programm ändern, nur um in einem struktogramm dies darzustellen. Zitieren
Klotzkopp Geschrieben 8. Mai 2008 Geschrieben 8. Mai 2008 denn es geht darum, dass wenn a = b ist, soll der danach folgende if-block übersprungen werden. das hat schon durchaus seinen sinn.Einen Vorwärtssprung kannst du wie beschrieben durch eine Verzweigung ersetzen. Laut deinem ersten Beitrag ist es aber ein Sprung nach oben. Was denn nun? das problem ist, ich kann ja schlecht mein funktionierendes programm ändern, nur um in einem struktogramm dies darzustellen.Warum kannst du das schlecht? Wenn du die Anforderung hast, dass das Programm in einem Struktogramm darstellbar sein soll, musst du dein Programm ändern. Zitieren
Cleriker Geschrieben 8. Mai 2008 Autor Geschrieben 8. Mai 2008 (bearbeitet) in erster linie hab ich die anforderung das programm so einfach wie möglich (weil ich ja vielleicht nicht immer hier bin) und so performant zu schreiben wie möglich. das olle struktogramm brauch ich dann halt einfach also entweder änder ich das struktogramm dahingehend ab dass es formell betrachtet korrekt ist aber in sachen sprungmarke nicht meinem code entspricht oder ich schreib das ganze programm anders, nur damit ich das eben auch so hab. ich hab in 2 oder 3 modulen eine sprungmarke. in meinem beispiel spring ich nach unten, in einem anderen modul muss ich nochmal nach oben springen bei einer bestimmten bedingung, um ein makro erneut auszulösen. //edit: anmerkung noch: ein anderes beispiel ist in VB(A) folgender vorgang: am anfang einer prozedur befehle ich ihm "on error goto err_handler", welcher dann unterhalb der sub geschrieben ist. das muss ja auch irgendwie darstellbar sein ohne mit einem if zu lügen Bearbeitet 8. Mai 2008 von Cleriker Zitieren
Klotzkopp Geschrieben 8. Mai 2008 Geschrieben 8. Mai 2008 ein anderes beispiel ist in VB(A) folgender vorgang: am anfang einer prozedur befehle ich ihm "on error goto err_handler", welcher dann unterhalb der sub geschrieben ist. das muss ja auch irgendwie darstellbar sein ohne mit einem if zu lügen Wie kommst du darauf? Nur Programme, die den Anforderungen der Strukturierten Programmierung genügen, lassen sich als Struktogramm darstellen. Viele Programmiersprachen bieten Funktionen, die nicht in das starre Schema der Strukturierten Programmierung passen. Das "On Error"-Feature von VB lässt sich damit genausowenig vereinbaren wie beispielsweise Exceptions in C++ oder Java. Zitieren
Cleriker Geschrieben 8. Mai 2008 Autor Geschrieben 8. Mai 2008 Wie kommst du darauf? Nur Programme, die den Anforderungen der Strukturierten Programmierung genügen, lassen sich als Struktogramm darstellen. Viele Programmiersprachen bieten Funktionen, die nicht in das starre Schema der Strukturierten Programmierung passen. Das "On Error"-Feature von VB lässt sich damit genausowenig vereinbaren wie beispielsweise Exceptions in C++ oder Java. was empfielst du mir dann zur darstellung meines programms? entweder entsprechende teile weglassen oder andere diagrammart? Zitieren
SoL_Psycho Geschrieben 8. Mai 2008 Geschrieben 8. Mai 2008 (bearbeitet) *weint* Sprungmarken... :old Programmablaufplan eignet sich auch für sowas imho... Bearbeitet 8. Mai 2008 von SoL_Psycho Zitieren
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.