Struktogramme-Buch mit 7 Siegeln

Dr Franke Ghostwriter
Struktogramme-Buch mit 7 Siegeln...

Hi Jasmin,

hier isser - der Hilferuf der Struktogramm-Geschädigten😀
Wenn Du irgendwelche Seiten weisst mit denen man üben kann oder IRGENDWAS!!, dann wäre das ganz toll. Ich find nämlich überhaupt nix, und was da noch als pdf von dem tollen LEHRSTUHL angeboten wird, bringt mich auch nicht wirklich viel weiter. Aufgaben a la "jeder Gast mit mind. 9 Übernachtungen muss nur 90% des Übernachtungspreises zahlen" gehen ja noch, aber wenn es um Kapitalwertberechnung o.ä. geht mit Variablen und so dann hörts echt schon wieder auf....😡

Sina
 
winke:

Welche Stukturblöcke benutzt ihr denn?
Schau mal auf der Seite https://de.wikipedia.org/wiki/Struktogramm was dir vom Aussehen her bekannt vorkommt 🙂.

Ich denke mal dass nicht mehr als:
Linearer Ablauf (Sequenz)
Verzweigung (Alternative)
Einfache Auswahl
Zweifache Auswahl
Mehrfachauswahl
Fallauswahl
Wiederholung (Iteration)
Zählergesteuerte Schleife
Abweisende (kopfgesteuerte) Schleife
Nicht abweisende (fußgesteuerte) Schleife in den KEs behandelt werden.

Mit den Gästen da würde ich eine Zweifache Auswahl nehmen, und dann in der Bedingung prüfen "Anzahl Übernachtungen >= 9?" und im Anweisungsblock "Ja" "Preis = Preis * 0,9" und im Nein-Zweig "Preis = Preis" berechnen.

Wie hast du das denn gelöst? Wenns hilft kann ich dazu auch mal eben ein Bild malen und hochladen, ist vielleicht leichter zu kapieren so 🙂.
 
Hm du kannst mir das PDF ja mal schicken. Wenn ich Zeit hab, bastel ich dir was schönes draus, du kannst dich in der Zwischenzeit ja mit SQL beschäftigen.

Hast du denn vorher schonmal was mit programmieren - so im Groben - gemacht? Struktogramme sind ja so eine Art Vorstufe vor dem Programmieren, etwas das man als Hilfsmittel einsetzt damit es dann später leichter geht.

Wichtig ist, dass du das was du im Kopf ausrechnest oder denkst, in logische Schritte packst und das dann eben aufschreibst. Was hälst du von dem Beispiel:

Führerscheintest: in Abhägigkeit von deinem Alter gibt das Programm aus: "Ja, du darfst den Führerschein machen." oder "Sorry, du bleibst in der Warteschleife!" Zeichne für dieses Problem ein Struktogramm

Angenommen du sprichst mit mir und willst genau das Durchspielen. Da wäre deine erste Frage sicher "Sag mir doch mal, wie alt du bist." Das ist eine Information die du brauchst, bevor du entscheiden kannst, ob ich den Führerschein machen darf. Und damit du das überhaupt kannst, musst du die Zahl die ich dir sage irgendwo speichern. Das ist auch meist der erste Schritt:

Du deklarierst Variablen und Konstanten.

In dem Fall wohl "Alter als ganze Zahl", ganze Zahl deshalb weil ich mit 17,9 keinen Führerschein machen darf, wohl aber mit 18. Und dich interessiert auch nur, ob ich schon 18 bin, ob ich 17,3, 17,4 oder 17,89 bin ist egal. (Bei einem DM-Euro Umrechner müssten wir eine Kommazahl nehmen 😉.) Eine Konstante haben wir auch, denn das Alter mit dem man den Führerschein machen darf ist 18. Der Wert ist konstant (ändert sich nicht täglich) und sollte er sich doch einmal ändern, müsstest du ihn lediglich an dieser einen Stelle ändern und nicht an allen Stellen im Code in denen du das Führerscheinalter prüfst.

Dann muss eine Eingabe des Users erfolgen und du musst den Wert in der Variable speichern.

Wenn du das hast, kannst du prüfen ob das eingegebene Alter < oder >= das Führerscheinalter ist. Und je nach Ergebnis gibt es eine Ausgabe wie "Ja, du darfst den Führerschein machen." oder "Sorry, du bleibst in der Warteschleife!"

Um das in ein Struktogramm zu packen muss ich mir nochmal das Ding anschauen, ist schon ein paar Jährchen her dass ich eins malen musste.

Wenn du die Aufgabe für die Kapitalwertberechnung hast, können wir die ja mal zusammen durchgehen. Ich glaub es ist gar nicht so einfach für jemand der das noch nie gemacht hat, sich in die Stuktur von den Dingern reinzudenken.

viele Grüße
Jasmin

(Ich hab grad mal geschaut, das sind ja ätzende Klausuren. Hoffentlich werden die nach der Überarbeitung besser. An die Stuktogramme in den Klausuren kriegen wir dich aber hingeführt, so schwer sind die auch nicht 🙂.)
 
Jasmin,

also das hört sich jetzt alles schon mal logisch an irgendwie - zumindest wenn man nicht selbst drauf kommen muss😀 Wir müssen ja eigentlich auch "nur" entscheiden was richtig ist und was falsch. Aber für mich sieht vieles einfach gleich aus, weil es auch nirgends richtig ausführlich erklärt ist. Es gibt ja auch welche die sind okay, aber wie gesagt, diese Kapitalwertdinger und so...Wär schon gut, wenn man das gut drauf hat, schliesslich gibts dafür ne ganze Menge Punkte!
Hast Du denn die Klausuren jetzt vorliegen? Mehr hab ich nämlich auch nicht. Ansonsten scann ich sie mal ein und schick sie Dir. Dann könnt ich Dir nämlich mal ein paar konkrete Fragen stellen?! Wenn das okay wäre😱???

LG, Sina
 
morgaeaen ,

ich hab mir das Zip-File kl_grund.zip vom Lehrstuhl runtergeladen. Wenn du das auch hast, können wir uns die mal zu Gemüte führen 🙂. Wie sieht das eigentlich mit Copyright aus? Können wir so ein Ding mal hochladen und hier reinstellen zum Nachvollziehen?

Habt ihr denn irgendwo eine Erklärung was die einzelnen Teile in den Struktogrammen tun? Also wie sie funktionieren? Und ein paar Aufgaben wie man den Text der dabei steht in Struktogramme umbastelt oder wie man die Dinger liest? Sonst würd ich nochmal so ein kleines schlaues Dokument basteln 😉.

Wir müssen ja eigentlich auch "nur" entscheiden was richtig ist und was falsch.
Also malen müsst ihr keins? Ist doch schonmal etwas 🙂. Die Dinger lesen ist einfacher als sie selbst zu malen.

Wenn das okay wäre???
Jup klar 🙂. Ich nehm deine Hilfe dann einfach mal in 'nem anderen Fach in Anspruch 😀.

viele Grüße
Jasmin
 
Beispiel: Klausur SS05 Aufgabe 3

Hast du das Ding vor dir? Oben im Text ist ein Problem beschrieben, das mit Hilfe eines Struktogramms gelöst werden soll. Es geht also erstmal darum, dem Text zu entnehmen, was überhaupt gemacht werden soll. In der Aufgabe ist das relativ ersichtlich, da geht’s um den euklidischen Algorithmus, der dann danach auch aufgeschrieben ist 🙂.

Damit das ein bisschen anschaulicher ist, setzten wir erstmal Zahlen ein und versuchen mit Hilfe des eukl. Algorithmusses den größten gemeinsamen Teiler zu finden:

a = 1071
b = 1029

Schritt 1
m = a = 1071
n = b = 1029

Schritt 2
m < n
1071 < 1029
=> Ergebnis: nein!
=> die Zahlen m und n müssen nicht miteinander vertauscht werden.

Schritt 3
r = m – n
r = 1071 – 1029
r = 42

Schritt 4:
m = n = 1029
n = r = 42

Wenn r ungleich 0, dann springe zurück zu Schritt 2!
Wenn r gleich 0, dann ist m der größte gemeinsame Teiler.

Da r ungleich 0 ist, müssen wir also wieder zurück zu Schritt 2:
m < n
1029 < 42
=> Ergebnis: nein!
=> die Zahlen m und n müssen nicht miteinander vertauscht werden.

Schritt 3:
r = m – n = 1029 – 42 = 987
r = 987

Schritt 4:
m = n = 42
n = r = 987

R ist immer noch ungleich 0 also müssen wir die Schritte 2-4 noch mal Wiederholen. Hier muss sich also irgendwo eine Schleife befinden, die so lange durchlaufen wird bis r = 0 ist. Den nächsten Durchlauf nehmen wir noch mit, da müssen wir nämlich Zahlen vertauschen 🙂.

Schritt 2:
m < n
42 < 987
=> Ergebnis: ja!
=> Zahlen vertauschen!

Das vertauschen von 2 Zahlen ist nicht so einfach. Wir können nicht einfach m = n und danach n = m sagen, denn mit der ersten Anweisung würden wir den Wert der in m steht einfach überschreiben. (Sicher eine Falle in der Aufgabe, das übersieht man leicht wenn man das Problem nicht kennt.) Deswegen brauchen wir eine Variable, die den Wert der vorher in m stand „zwischenspeichert“.

z = m => z = 42

jetzt haben wir den Wert der in m stand zwischengespeichert und können den Wert der vorher in n stand, m zuweisen:

m = n => m = 987

weil der Wert der in n stand schon an seinem Ziel m angekommen ist, können wir jetzt den Wert des Zwischenspeichers z in n schreiben also:

n = z = 42

Jetzt haben wir:
m = 987 und n = 42

Und dann geht’s weiter mit Schritt 3….

Und so weiter und so fort …. 😀


Aber wir sollen das Ding gar nicht ausrechnen, sondern entscheiden, welches der Struktogramme das Richtige dafür ist.
Schauen wir uns also Strutkogramm 1 an:
Erst werden die Variablen a und b eingelesen und dann m und n zugewiesen. Das ist das was wir oben in Schritt 1:

a = 1071
b = 1029

Schritt 1
m = a = 1071
n = b = 1029

gemacht haben. Bis dahin ist Struktogramm 1 also richtig 🙂.

Dann kommt eine do-while-Schleife. Die Bedingung für den Abbruch war, dass der Rest beim Teilen = 0 sein muss. Dann haben wir in einer der Variablen den größten gemeinsamen Teiler. Der Rest ist dann = 0, wenn die beiden Variablen gleich sind

Als Beispiel:
5:5 geht genau 1x rein, Rest 0
5:3 ist auch 1, Rest 2

Der Rest von 20:2 ist auch 0, nach dem euklidischen Algorithmus kommen wir da auch drauf, weil wir 20-2=18; 18-2=16 etc. rechnen bis wir bei 2-2 ankommen und der ist hier vorgegeben also können wir nicht rechnen ob m Rest n = 0 ist. Ich hoffe das ist verständlich was ich da erkläre, wenn man jeden Tag so denken muss ist das irgendwann normal – genauso mit dem Vertauschen von den 2 Zahlen 🙄.

Damit haben wir unser Schleifenkonstrukt.

Jetzt kommt Schritt 2. Wir prüfen ob m < n ist.

Im Struktogramm ist die Prüfung um m > n ist. Das entspricht nicht der Aufgabenstellung, daher ist Struktogramm 1 falsch.


Und jetzt mach du weiter und erkläre mir, welches der 3 anderen Struktogramme das Gesuchte ist! Versuch es auch erstmal so schritteweise (das geht mit Zeit und Übung schneller *versprech*). Wenn du hängen bleibst, helf ich dir weiter 🙂.

Danach können wir uns an das Struktogramm vom WS03/04 wagen, das ist ein bisschen komplizierter 🙂.

viele Grüße
Jasmin
 
Okay, dnan den ganzen text in kurzform: wir hatten diese Aufgabe jetzt als ea-aufgabe, und da hatten wir uns für richtig entschieden (gab dazu ne diskussion; da dachte ich ich habs und jetzt ist wieder alles weg😱)!
muss man nicht weiterprüfen weil es heisst dass das prinzip auch modifiziert sein kann??
 
Vorletzter abschnitt:" ...lalala...soll ihnen den zugang zur Aufgabe erleichtern. beachten sie, dass auch struktogramme richtig im sinne der aufgabenstellung sein können, die das prinzip modifizieren!"
ansonsten wäre ja nur das vierte richtig, weil hier steht m<n!
ODER???:confused
 
Hups hab ich nicht genau gelesen. Bei uns wurden die Dinger geprüft dass genau das was in der Aufgabe stand auch im Struktogramm abgebildet sein musste, modifizierungen wären dann eine andere Aufgabenstellung und die war nicht gefragt 🙄. Dann ist Struktogramm 1 auch richtig.

Kannst du denn aber begründen, warum 2 und 3 falsch sind oder sollen wir uns gleich dem ws03/04 widmen? Da werd ich dann auch alles lesen 🙄. (Jetzt vertausch ich auch schon die PDF_Files...)
 
Die 2 kann ich begründen - sogar ohne nochmal in meinem sauber aufgeschriebenen lösungsweg zu schauen * stolz*

falsch WEIL
wenn m> n- > 1071> 1029
wäre m = m-n = 1071-1029 = 48
damit wäre der ggT = m = 48
und das ist schon falsch!🙂

aber jetzt versuch ich mich grad an der ws 03/04 und da is schon wieder alles zu spät...
 
Die 2 kann ich begründen - sogar ohne nochmal in meinem sauber aufgeschriebenen lösungsweg zu schauen * stolz*

falsch WEIL
wenn m> n- > 1071> 1029
wäre m = m-n = 1071-1029 = 42
damit wäre der ggT = m = 42

und das ist schon falsch!🙂

aber jetzt versuch ich mich grad an der ws 03/04 und da is schon wieder alles zu spät...
 
Also ausrechnen selbst musst du gar nix, wenn ich das richtig weiß ist ein Taschenrechner nicht erlaubt in der Klausur und im Kopf kann das eher keiner. Ich hab mir zur Vereinfachung mal rausgeschrieben aus dem Text was ich für wichtig halte für die Aufgabe (im Jahresabschluss in BWL hab ich erstmal angefangen die Aufgaben bunt anzumalen und das wichtigste zu markieren, würde ich hier auch machen).

Anfang 2004: Aufnahme Kredit über 100.000 Euro
Jährlicher Zinssatz 6%
Kredit soll in 10 Jahren getilgt werden und jährlich soll der gleiche Betrag A gezahlt werden.

1. Jahr 100.000 Euro + Zinsen
2. Jahr 106.000 Euro + Zinsen
3. …. Bis Jahr 10

A berechnet sich aus K*q ^n * (q-1) / (q^n – 1)

Ich setz da gerne Zahlen ein um das besser nachvollziehen zu können:
i = 0,06 = 6%
q = 1 + i = 1,06
n = 10 Jahre Laufzeit

A (das soll immer gleich bleiben) = 100.000 * 1,06^10 * (0,06/1,06^10 – 1)

Dann gibt es noch die Restschuld zu Beginn des Folgejahres das ist die Restschuld zu Beginn des Vorjahres – die Tilgung was gezahlt wurde. Im ersten Jahr ist T = A – i*K.

Was meinst du denn, fehlt noch was oder ist erstmal das Wichtigste damit zusammengefasst?

Dann gehe ich so vor, dass ich mir die Struktogramme nacheinander anschaue und für jedes schaue, was das Ding überhaupt macht.

Struktogramm 1:
Die Werte Kg, i, n und p werden eingelesen.
Danach wird A berechnet.

Die Formel für A nach Aufgabenstellung ist: K*q ^n * (q-1) / (q^n – 1)

Im Struktogramm wird q allerdings gar nicht zur Berechnung von A mit herangezogen, sondern statt q steht da eine 1. Jetzt müssen wir überlegen ob die Berechnung von A, obwohl da statt q eine 1 steht, dennoch richtig ist. Your part 🙂.

viel Spaß
 
also ich sage die berechnung von A ist richtig, weil wenn ich für 1+i mit q ersetze und für i = q-1 setze, dann passt es!

weiter gehts aber leider nicht...
:applaus: Weiter geht das Struktogramm so, dass es im nächsten Schritt für q = 1+i setzt, was in der Aufgabenstellung auch so beschrieben ist. Das ist also richtig. Dann wird eine Zählvariable j auf 0 gesetzt, das ist auch noch in Ordnung.

Dann wieder die blöde While-Schleife die bis n (das war 10) erreicht ist. In dem Struktogramm wird geprüft ob j <=n-1 ist.

Die Schleife soll 10x durchlaufen werden für 10 Jahre Tilgung (siehe Aufgabentext)
Erster Durchlauf: j=0; n=10; n-1 = 9; j <= n-1: WAHR
Zweiter Durchlauf: j=1; n=10; n-1 =9; j <= n-1: WAHR
Dritter Durchlauf: j=2; n=10; n-1 =9; j <= n-1: WAHR
Vierter Durchlauf: j=3; n=10; n-1 =9; j <= n-1: WAHR
Fünfter Durchlauf: j=4; n=10; n-1 =9; j <= n-1: WAHR
Sechster Durchlauf: j=5; n=10; n-1 =9; j <= n-1: WAHR
Siebter Durchlauf: j=6; n=10; n-1 =9; j <= n-1: WAHR
Achter Durchlauf: j=7; n=10; n-1 =9; j <= n-1: WAHR
Neunter Durchlauf: j=8; n=10; n-1 =9; j <= n-1: WAHR
Zehnter Durchlauf: j=9; n=10; n-1 =9; j <= n-1: WAHR
Elfter Durchlauf: j=10; n=10; n-1 = 9; j <=n-1: FALSCH


Das ist fies weil der Zähler mit 0 anfängt und auf <= geprüft wird und auch noch n-1 gerechnet wird. Das kommt aber auch mit der Übung 🙂.

Dann kommt eine Verzweigung, die sollte man näher betrachten.

Überleg dir: Welche Bedingung wird geprüft? Und was passiert, wenn die Bedingung wahr/falsch ist? Am besten Stichpunkte dazu schreiben wenn genügend Platz da ist 🙂. Du bist wieder dran 🙂.


die vom ss 04 hab ich jetzt übrigens kapiert, die war auf den x-ten blick doch okay...😉
Was hast du da denn?
 
Also zu ss 04. 2 und 3 sind richtig (sagt auch die musterlösung😀)
das erste ist falsch wegen j<m würd ich sagen, es muss heissen j>=n. und das dritte uas dem selben grund (j<n) weil j ja mit m gleichgesetzt wurde und daher der kleinste wert ist.
kommt das so hin?
und dann wag ich mich jetzt mal an die andere...danke schonmal
 
Ha dann hätte ich das wohl richtig gelöst *juhu* 🙂.


Ich hab das zu SS04:
Aus der Aufgabenstellung lesen wir dass das Geld das jährlich investiert wird auch 0 sein kann (Zinsen für den Rest sollten wir dann natürlich trotzdem ausrechnen) und der Zinssatz mit dem Verzinst wird ist 6%.

Wir beginnen im Jahr 2004 und investieren -1.000.000 Euro.
Unser Zähler m ist in dem Fall 0, da das unser erstes Jahr ist in dem wir Geld investieren.
n beschreibt die Gesamtinvestitionszeit, in dem Beispiel 8 Jahre.

Im Jahr 2004 rechnen wir also (erstmal die Tabelle kapieren)
-1.000.000 / 1.06 ^0 = und weil „hoch null“ = 1 ist, haben wir einen Barwert von -1.000.000 🙂.

Im Jahr 2005 ist m = 1
=> -10.000 / 1,06^1 = 9433,96

Im Jahr 2006 ist m = 2 und der Fuzzi investiert 200.000
=> 200.000 / 1,06² = 177999,29

Das heißt also im ersten Jahr ist m = 0, im zweiten 1, im dritten 2 und n wird von Jahr zu Jahr kleiner 🙂.

Struktogramm 1:
Einlesen von q, m und n – soweit in Ordnung
K = 0, macht zu Beginn Sinn
j = m , ist auch noch ok

While j < m => die Prüfung wird niemals wahr werden, weil in der Zeile oben drüber j = m gesetzt wurde. Die While-Schleife wird also niemals durchlaufen und es wird K = 0 ausgegeben.
Das ist also falsch.


Struktogramm 2:
Einlesen von q, m und n – soweit in Ordnung
K = 0, macht zu Beginn Sinn
j = m , ist auch noch ok

while j <= n => ist korrekt, denn j mit J zählen wir wie viele Jahre seit Beginn der Investierung verstrichen sind und n ist die Maximallaufzeit. Der einzige Unterschied zu Struktogramm 4 ist der, dass in der While-Bedingung in Str.2 <= und in Str.4 < steht. Es ist also die Frage, welche Bedingung hier richtig ist.

Wir investieren von Jahr 2004 bis 2012.
Die Laufzeit beträgt 2012 – 2004 = 8

Jahr
Laufzeit (n)
j
M
2004
8
0
0
2005
7
1
0
2006
6
2
0
2007
5
3
0
2008
4
4
0
2009
3
5
0
2010
2
6
0
2011
1
7
0
2012
0
8
0


Das heißt im Jahr 2012, das letzte Jahr in dem wir investieren ist die Restlaufzeit = 0 und wir sind im 8.ten Investitionsjahr. Würden wir auf j < n prüfen, würden wir bei 7 < 8 aufhören mit der Berechnung, deswegen fällt meiner Meinung nach Struktogramm 4 auch weg. Außerdem fällt es weg, weil j zu früh nach oben gezählt wird. Im ersten Schleifendruchlauf von Struktogramm 2 wird q^0 berechnet wird, in Struktogramm 4 wird gleich q^1 gerechnet.

Zurück zu Struktogramm 2:
Wenn j <= n ist, wird Z eingelesen, das Geld das investiert werden soll.
Danach wird der Barwert berechnet
B = Z / q ^j – m

m ist immer null. Der Wert wird nur am Anfang einmal eingelesen und ist da = 0. Also rechnet das Programm im Jahr 1
0 – 0 = 0
1 – 0 = 1
2 – 0 = 2

Wenn B berechnet wird, wird der Kapitalwert ausgerechnet, das ist auch richtig. Der Kapitalwert ist immer der vorhandene Kapitalwert + der neue Barwert. Und j wird um eins nach oben gezählt, weil es dann in das nächste Jahr geht.

Im achten Jahr wird auch noch mal ein neuer Barwert berechnet und auf den Kapitalwert addiert, danach ist die While-Schleife beendet und K wird ausgegeben.

Struktogramm 2 ist also korrekt 🙂.

Struktogramm 3 ist wohl auch richtig, es kommt jedenfalls das richtige Ergebnis raus. Hier wird nur nach der Eingabe von Z zusätzlich überprüft ob Z <> 0 ist, wenn nicht, wird nichts weiter berechnet, sondern nur j um eins nach oben gezählt. Das macht auch insofern Sinn dass Z / q ^j-m immer 0 ergibt und so der Barwert der zu K addiert wird = 0 ist.

Tolle Wurst, wo isn meine Tabelle hin? 4 Spalten und die Werte dann jeweils reinschreiben.. fängt mit dem jahr vorne an.
 
Ich hab da noch ein kleine sproblem: also die aufgabenstellung sagt einmal dass 1>= p >= n sein soll, und dann weiter unten (p=1,...,n-1)
wenn ich nach der 2. version gehe, dann wäre das 2. struktogramm ja falsch, weil p dann max. 9 wäre und ich nach dem 8. jahr aufhören müsste. oder verdreh ich das wieder? ansonsten hätt ichs nämlich soweit irgendwie verstanden...
 
Hm,

der Jahresindex p ist definiert mit 1 <= p <= n
Das heißt dass p bei 1 anfängt zu zählen und bei n aufhört.

Bei der Tilgungsrate wird angegeben wie die Tilgung im ersten Jahr aussieht und danach folgt das Beispiel für die Berechnung im Folgejahr. "Die Tilgung in einem Folgejahr ergibt sich aus der Tilgung im Vorjahr gemäß Tp+1 = Tp*q (p=1, ... n-1)" oder auch: wie man Sachverhalte möglichst verwirrend beschreibt 😀. Eigentlich heißt das nur dass bei der Tilgung auch von p=1 losgezählt wird aber schon bei n-1 Schluss ist.

dann wäre das 2. struktogramm ja falsch, weil p dann max. 9 wäre und ich nach dem 8. jahr aufhören müsste. oder verdreh ich das wieder?
Ganz genau! 🙂 Das < zwingt das Programm dazu, eins zu früh aufzuhören. Bleibt nur noch die Frage: 1, 3, beide oder keins?
 
Tsss... also in der Musterlösung kann ich nich nachschauen 😛. Ich glaube der Denkfehler liegt da, dass ich in der Bedingung while j < p mich von der Tilgung hab verwirren lassen und da mein p-1 gerechnet hab 🙄 sorry.

P wird vom Benutzer mit eingegeben und hat gar nix mit der Berechung unten zu tun. Die Tilgung ist, wenn es nicht das Startjahr ist T*q und im Startjahr A - i*K. *grmpf* ärgerlich.

Struktogramm 1 macht folgendes:
Die Werte Kg, i, n und p werden eingegeben.
Dann wird A berechnet
q und j bekommen Werte zugewiesen.
Die Schleife läuft durch bis j <= n -1 ist, was richtig ist, da der Zähler von j bei 0 anfängt zu zählen.
Dann prüft es ob j=0 (=Startjahr) ist und berechnet dementsprechend die Tilgung.
Ist j = p-1 wird ausgegeben wie hoch A, K und T sind. Das ist auch richtig.
Am Ende wird j noch eins hochgezählt und das Ding läuft munter zu Ende.

Struktogramm 2:
Die Werte Kg, i, n und p werden eingegeben.
q bekommt einen Wert.
Dann wird A berechnet.
j bekommt einen Wert zugewiesen.
Dann werden K, und die erste Tilgungsrate gesetzt.
Die Schleife läuft so lange wie j < p gilt.
Sobald j = p ist, bricht die Schleife ab und gibt A, K und T aus.

Der einzige Unterschied zu Struktogramm 3 besteht in der Bediungung, in der dritten läuft die Schleife so lange j <=p gilt.


Wenn P im ersten Struktogramm =6 ist, bekommen wir die Tilgung, Restschuld und Annuität im Jahr 6 ausgegeben. Da j bei 0 anfängt zu zählen muss die Ausgabe dann erfolgen wenn j = p-1 ist.

Wenn P im zweiten Struktogramm =6 ist, wird aufgrund dass j bei 1 anfängt zu zählen die Tilgung, Restschuld und Annuität im 5ten Jahr ausgegeben, da die Schleife bei 6 < 6 abbricht.

P = 6 im dritten Struktogramm berechnet für Jahr 6 erst noch Tilgung, Restschuld und Anniutät und gibt es dann erst aus.

oder?

Ich hoff ich verwirr dich grad nicht mehr als du eh schon verwirrt bist 😕, vielleicht kann einer der Tutoren 😛 ja mal was dazu sagen und uns wieder auf die Spur helfen. Vermutlich hab ich irgendwo 'nen total blöden Denkfehler... 😱 🙄.
 
Ich habe auch noch einmal eine Frage zur Aufgabe 3 Klausur vom 25.03.2004:
Struktogramm 1 ist einleuchtend, aber bei 2 und 3 hänge ich fest und zwar an der Stelle "Do while j<p":
Setze ich für j=1 ein (damit soll die Zählreihe beginnen) und für p ebenfalls 1 (Bedingung: 1<=p<=n), dann trifft die Bedingung j<p doch nie zu. Lt. Musterlösung soll aber Struktogramm 2 richtig sein.

Habe ich da irgendwo einen Denkfehler?
:hilfe
 
Oben