Theoretische und technische Informatik - ganz praktisch
Herzlich willkommen auf der Question/Answer-Plattform zu Grundlagen der Informatik II. Wir wünschen Ihnen viel Spaß beim Lernen und Diskutieren!
Loggen Sie sich mit Ihrem KIT-Account (u...) ein, um loszulegen!
Beachten Sie auch diese Informationen zum Schnelleinstieg.
(Nicht-KIT-Studierende beachten bitte diese Informationen.)

Teilaufgabe c)

0 Punkte
52 Aufrufe
Kann mir jemand erklären weshalb sich durch das Hinzufügen der Zeile zwischen 2. und 3. die auf R1 bezogene berechnete Funktion des Programms ändert?

Die neue Zeile bezieht sich doch lediglich auf R2 und beim nächsten Durchlauf wird R2 ja sowieso wieder auf 1 gesetzt...

Ich kann auch mit dem Einsetzen von verschiedenen Werten für n nicht festellen wie man neben der Fakultätsfunktion auf 2^n kommt.
Gefragt 5, Feb 2018 in AU-6-3 von Anonym  

2 Antworten

0 Punkte
Hallo,

es stimmt schon, dass sich die neue Zeile nur auf R2 bezieht, allerdings springt man mit dem Sprungbefehl in die 2. Zeile, da sich dort das Label L1 befindet. Man setzt R2 nur einmal ganz am Anfang des Programms auf 1. Deswegen ändert sich auch die Funktion, die berechnet wird.

Viele Grüße

Julia (Tutor)
Beantwortet 6, Feb 2018 von uodvo uodvo Tutor(in) (106,530 Punkte)  
0 Punkte

Hallo,

 

nachdem du R2 = R2 + R2 gemacht hast, subtrahierst du ja in Zeile 3 noch 1 von R1 und speicherst es dann in R1. Anschließend prüfst du, ob R1 ungleich 0 ist. Falls das der Fall ist (wovon wir bei einem allgemeinen n erstmal ausgehen), sagt uns der Jump-not-zero-Befehl, wir sollen zur Marke L1 springen, also in Zeile 2. Zeile 1 wird also nicht  noch mal abgearbeitet, daher wird R2 nicht auf 1 gesetzt.

 

Viele Grüße 

 

You-Ri (Tutorin) 

Beantwortet 6, Feb 2018 von Anonym  
Das habe ich jetzt verstanden. Allerdings kann ich immer noch absolut nicht begreifen wie man auf den Teil 2^n der Funktion kommt. Die Frage lautet ja welche Funktion das Programm bezogen auf R1 berechnet und wenn ich das Ganze mit Werten für n durchspiele kann ich immernoch nur die Fakultätsfunktion erkennen, die das Programm bezogen auf R1 berechnet...

Muss ich also doch zusätzlich auch die Werte in R2 betrachten?
...