Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben
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.

Geschrieben

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?

Geschrieben
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 ist
Prozedural 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.
Geschrieben

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? ;)

java_3_00.png

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.

Geschrieben
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.

Geschrieben

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.

Geschrieben
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.

Geschrieben (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 von Cleriker
Geschrieben
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.

Geschrieben
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?

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...