# Dringend Hilfe gesucht für Struktogramm



## blackdesperate (15. Aug 2012)

Hallo, 

Stehe momentan echt aufn Schlauch bei den folgenden Struktogramm.

Ich kenne zwar die Lösung aber ich kann es nicht Nachvollziehen und bitte dringend um Hilfe bzw nen kurzen Rechen Weg für den sogenannten Sturktogramm.

Die Aufgabe beinhaltet 2 Hinweise 

Hinweis 1 : -16%5 = -1
Hinweis 2 : X ist eine globale Variable vom Typ Integer, ist also außerhalb der folgende Methode "TesteZeichen(char Zeichen)" deklariert!

heraus kommt das Ergebnis :   0 und -1

Hier das Struktogramm : ImageShack® - Online Photo and Video Hosting


Bitte um schnelle Hilfe, möchte das unbedingt verstehen.

Danke im vorraus


----------



## J7Dev (15. Aug 2012)

1) Es gibt hier eine Attachment-Funktion. Bitte diese nutzen und NICHT von externen Hostern einbinden.
2) Das Strukturdiagram ist so leider nur schwer bis gar nicht zu verstehen und auch ein wenig widersprüchlich.


----------



## blackdesperate (15. Aug 2012)

Hallo, ich hab nun mal das Komplette Aufgaben Blatt eingescannt und hoffe nun auf besseres Verständnis, bitte entschuldigt meine Kritzelein darauf hab versucht es "normal" durch zu rechnen aber bringt ja nix da ich andauernd stecken bleib.

Es geht hier um Block b & c den ich nicht raffe

Die Lösung von b = 0 , -1
und c = -12

Blatt ist im Anhang


----------



## pappawinni (15. Aug 2012)

Also entweder versteh ich nichts von Struktogrammen,
oder das Struktogramm ist n ziemlicher Käse.
[EDIT]
ich meine damit das zuerst gepostete - fremdgehostete
[/EDIT]
[EDIT]
Das zweite schaut zwar jetzt nach nem richtigen Struktogramm aus,
aber das ist ja eine ganz miese Qualität und das ganze Geschmiere darauf macht die Geschichte nicht eben einfacher.
Mit ein bischen Mühe geht das sicher besser.
Du scannst dir das, bearbeitest es zur Not, so dass deutlich wird, was da steht und nicht noch irgend ein Gekritzel drauf ist. Dann kann auch geholfen werden.
[/EDIT]


----------



## blackdesperate (15. Aug 2012)

Für die Fälle a und default ist das ja noch Nachvollziehbar bzw

a =

Zahl = 7

solange 7 < 53 addiere + 3 wie "Zahl" kleiner als 53 ist.

Da es sich hier um eine Kopfgesteuerte Schleife handelt ist der letze Vergleich bei 52 danach erfolgt nochmal +3 da Kopfgesteuert und es ergibt sich Zahl = 55.

Danach fallen alle Bedingungen aus da 55 größer als 0 ist daher Zahl = 55 am ende und ist auch richtig

Bei default ists halt ne Leeranweisung wo 0 gleich festgelegt wird und da 0 nicht kleiner als 0 ist gehts zur Ausgabe auch recht simpel bloß die anderen beiden sind knackig


----------



## pappawinni (15. Aug 2012)

Fall c:
5 -30 = -25, ist kleiner 0, aber größer - 40,
-25+1 = -24, modulo 10 = -4, 
-4 * 3 = -12

Fall b:
-3 *2 * 2 * 2 .... -96
ist kleiner 0 und kleiner - 40, damit wird die 
ganze Methode mit "h" aufgerufen, also "default"
und was da raus kommt, ist ja bekannt.
dann noch -1


----------



## blackdesperate (15. Aug 2012)

So hab das Bild etwas "Sauber" gewischt, hoffe das es nun Klar und Leserlich ist.

Zum Verständnis hoffe ich das mir jemand die Hinweise Verklickern kann, bzw der erste Verwirrt mich schon und den 2ten raff ich erst recht nicht.

Hinweis 1 : -16%5 = -1

Für mich klingt das nach nem Hinweis der darauf hindeutet das Integer keine Dezimalzahlen aufnimmt, was eigentlich selbstverständlich da es hier Double gibt. Zudem deute ich den Hinweis das bei einer Dezimalzahl der Wert von "Zahl" auf -1 Zurückgesetzt wird oder Verstehe ich das Falsch ?


----------



## blackdesperate (15. Aug 2012)

und warum kommt es bei der Ausgabe im Fall B zu 0 und -1 ? Edit : Ok hat sich erledigt bzw Methode führt sich ja neu aus und damit wird die Ausgabe ja im nächsten Durchlauf nochmals ausgeführt daher 0 und wie de sagtest 0 und -1 ok macht sinn^^ aber inwiefern bedeutet TesteZeichen("h") das er automatisch den default nimmt ?

könntest du mir die Hinweise erklären bzw richtig deuten ?


----------



## pappawinni (15. Aug 2012)

weil die Methode sich selbst aufruft, der zurückgelieferte Wert (default-Fall) wird dann um eins reduziert und liefert dann letztlich -1.

testeZeichen kennt eben nur a, b, c , alles andere ist default.


----------



## pappawinni (16. Aug 2012)

Mit dem Hinweis 1 soll wahrscheinlich erkärt werden, wie Modulo bei negativen Zahlen funktioniert.
Mit Hinweis 2 wird letztlich nur gesagt, dass "Zahl" global gültig ist, also nicht explizit an die Methode übergeben oder von dort zurückgeliefert werden muss.
TesteZeichen("h") übergibt, wie man sieht, dann auch nur das "h".


----------



## blackdesperate (16. Aug 2012)

Alles klar, nun macht es auch Sinn.

Mein großer Fehler war das ich die Rechnung von Modulo komplett falsch angegangen bin und daher stetig auf Falsche ergebnisse gekommen bin bzw Modulo konnt ich nicht recht Einordnen.

Aber digges danke, ich war schon schier am Verzweifeln und mit einer ungelößten Aufgabe schläft man schlecht^^

Wobei ich da noch eine kleine Frage hätte zum TesteZeichen("h"), er führt sich Quasi selbst nochmal aus mit dem Default Wert der = 0 ist, das alte Prog hat ja die Zahl -96 noch im Puffer , gesagt wird das die Variable Zahl typ Integer Global ist, demnach müsst er doch folglich mit der -96 als Zahl weiterhin aggieren bzw dann -1 

d.h -97 als Ausgabe.

mit dem Aufruf  führt er also Default aus kommt auf 0 dann Ausgabe und dann wäre Ende bzw er gibt dem altem Prog doch gar kein Return wert was Zahl nun Aktuell für einen Wert hat, müsste er dann nicht mit der vorher -96 weiter arbeiten oder sieht man im Stuktogrammen mit Methodenübergabe einen return automatisch an bzw als Teil eines großen ganzen.


----------



## pappawinni (16. Aug 2012)

GLOBAL bedeutet soviel wie allgemeingültig, hier also, dass die Variable ausserhalb der Methode deklariert wurde. Innerhalb der Methode wird immer auf die gleiche Variable zugegriffen es gibt daher auch keine Übergabe der Variablen "Zahl". Die Methode arbeitet immer auf der gleichen Variablen. Da ist also nichts mit "hat er noch im Puffer". Welchen Puffer denn auch? 
Die -96 werden durch die default-Methode also schlicht mit 0 überschrieben und anschliessend wird 1 subtrahiert.


----------

