BuK/IIm14/Studenten/s3ankrau1/register
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
=Registermaschine=
'''Geben Sie mind. ein RAM-Programm zur Berechnung der Funktion $w : \N \mapsto \N$ mit $w(n) = \lfloor \sqrt{n} \rfloor$ an.'''
{|| border="1" cellpadding="5" cellspacing="0"
!Nr
!Methode
!Bemerkung
|-
||<div align="right">1</div>||R0 = n|| Berechnung der Wurzel von n
|-
||<div align="right">2</div>||R1 = 0|| R1 speichert die zu quadrierende Zahl
|-
||<div align="right">3</div>||IFZERO R0 GOTO 20|| Wenn R0 = 0 ist das Ergebnis 0
|-
||<div align="right">4</div>||R2 = 1|| R2 bildet die Dekrementier-Variable
|-
||<div align="right">5</div>||R1 += R2|| nächste zu prüfende Zahl
|-
||<div align="right">6</div>||R3 = 0|| Speichert die quadrierte Zahl
|-
||<div align="right">7</div>||R4 = R1|| Laufvariable für Quadrierung
|-
||<div align="right">8</div>||R3 += R1|| Aufsummierung der quadrierten Zahl
|-
||<div align="right">9</div>||R4 -= R2|| Laufvariable dekrementieren
|-
||<div align="right">10</div>||IFZERO R4 GOTO 12|| Wenn Laufvariable = 0, prüfen der quadrierten Zahl
|-
||<div align="right">11</div>||GOTO 8|| Wenn Laufvariable != 0, weiter aufsummieren
|-
||<div align="right">12</div>||R5 = R0|| Laufvariable für Prüfen der quadrierten Zahl
|-
||<div align="right">13</div>||R3 -= R2|| gebildete Quadratzahl dekrementieren
|-
||<div align="right">14</div>||R5 -= R2|| Laufvariable dekrementieren
|-
||<div align="right">15</div>||IFZERO R5 GOTO 18|| Laufvariable = 0, prüfen ob quadrierte Zahl gleich oder kleiner n
|-
||<div align="right">16</div>||IFZERO R3 GOTO 5|| Wenn die quadrierte Zahl eher 0 ist als die Laufvariable, dann ist die Zahl noch zu klein, neue wird gebildet
|-
||<div align="right">17</div>||GOTO 13|| Beides noch nicht 0, weiter dekrementieren
|-
||<div align="right">18</div>||IFZERO R3 GOTO 20|| Quadrierte Zahl ist gleich n, deshalb gleich zurückgeben
|-
||<div align="right">19</div>||R1 -= R2|| Ansonsten ist quadrierte Zahl größer n, also dekrementieren um den Wert zu erhalten
|-
||<div align="right">20</div>||R0 = R1|| Ergebnis wird in Rückgaberegister geschrieben
|}