goto-Programm



  • Hallo,

    ich habe keine Ahnung, wie ich an folgende Aufgabe rangehen könnte. Bin für jeden Hinweis dankbar.

    Für a,b Element von N (ganze Zahlen) können wir bei der Division mit Rest Werte c,d Element von N (ganze Zahlen) mit a=b*c+d und d<b finden. Wir schreiben dann auch c=a div b und d=a mod b.
    (a) Geben Sie ein goto-Programm an, das x1 div x2 berechnet.
    (b) Finden Sie für x1 mod x2 ein goto-Programm.

    Gruß
    Keine_Ahnung



  • Was für Operatoren hast du denn zur Verfügung? Wenn es / und % gibt, ist die Lösung trivial. Andernfalls mußt du so oft x1-=x2 rechnen, bis x1<x2 ist und die Anzahl der Subtraktionsschritte (DIV) bzw. den Endwert von x1 (MOD) ausgeben.



  • Was ist denn ein goto-Programm? Ist damit eventuell gemeint, daß das Problem mit Sprunganweisungen (*Nackenhaare sträub*) gelöst werden soll? Oder ist das eine mir unbekannte Programmiersprache?



  • Hallo,

    danke für den Hinweis, folgendes habe ich raus bekommen
    1)
    (x1 = 517, {a}
    x2 = 1, {b}
    x3 = 7, {c}
    x4 = 0, {d}
    1.if x4 < x2 goto 2,
    halt,
    2.x2 = x1 div x3,
    if x2 ≠ 0 goto 1,
    halt,)

    (x1 = 517, {a}
    x2 = 1, {b}
    x3 = 7, {c}
    x4 = 0, {d}
    1.if x4 < x2 goto 2,
    halt,
    2.x2 = x1 mod x3,
    if x2 ≠ 0 goto 1,
    halt,)

    ist das so richtig? Vielen Dank für deine Antwort.

    Gruß
    Keine_Ahnung



  • Also wenn du "mod" und "div" als Operatoren zur Verfügung hast, kannst du dir das if-Gespringe sparen.



  • Hi

    @fincki: es handelt sich dabei um ein Thema der Theoritischen Informatik. mit sochler art Programmen kann man z.B. die Berechenbarkeit bestimmter aufgabenstellungen beweisen. Weitere Themen dazu sind Loop Programme, While Programme, µ Recursion, Turing, ...

    ich nehme eher an es ist sinn der aufgabe den div und mod befehl anhand bisher gegebener möglichkeiten der goto sprache zu realisieren. wenn ich das richtig verstanden hab damals stehen eigentlich nur folgendes zur verfügung, wobei x eine variable, c eine Konstante, m eine sprungmakre ist

    x = x + c
    x = x - c
    GOTO m
    IF x == c THEN GOTO m
    STOP

    ggf trikreich ist es dann noch, wenn du bereits implementierte NEUE Funktionen zur lösung des nächsten problems verwendest so kann der Mod auf die bereits implementierte div und mul funktion zurückgreifen.

    MOD (x,y) =  x - (x/y)*y
    

    fals das überhaut erlaubt ist, Ich nehme es mal an, sonst würdest du nicht die unterprogramme für grösser, kleiner oder ungleich verwenden, die müstest eigentlich auch erst entwickelt und bewiesen werden.

    und wie man ne multiplikation oder ne division auf + / - operationen abbildet sollte ja wohl nicht das problem sein oder?

    n*m = n mal m aufsumieren
    n/m von m solange von n abziehen, solange m grösser als n, dabei in c mitzählen wie oft das gemacht wurde. ( hierbei muss ein grösser gleich existieren und verwendbar sein ) ist dies nicht der fall ist der div auch ohne realisierbar, nut etwas komplizierter und mit einer Hilfsvariablen

    div (n,m) = c
    
    c = 0;
    :m1
    h = m
    :m2
    n = n - 1;
    h = h - 1;
    
    if ( h == 0)
    {
       c = c + 1 ;
       goto mx;
    } 
    if (n == 0)
    {
       goto mx;
    }
    goto mx;
    :m3
    

    gruss



  • CStoll schrieb:

    Also wenn du "mod" und "div" als Operatoren zur Verfügung hast, kannst du dir das if-Gespringe sparen.

    Kann man ohne weiteres nachbilden.
    Google dürfte da sicher was liefern...



  • @finix: Der Beitrag war eine Antwort auf KA's Lösungsansätze - wie man div und mod selber nachbilden kann, habe ich in Ansätzen schon in meiner ersten Antwort erklärt (und Termite hat versucht, das in Programmcode umzuarbeiten).



  • CStoll schrieb:

    @finix: Der Beitrag war eine Antwort auf KA's Lösungsansätze - wie man div und mod selber nachbilden kann, habe ich in Ansätzen schon in meiner ersten Antwort erklärt (und Termite hat versucht, das in Programmcode umzuarbeiten).

    Ah, ja. Sorry, hatte den Thread nur kurz überflogen und da ist mir dein Post ins Auge gesprungen.



  • Hallo Termite,

    danke für deine ausführliche Antwort. Als ehrlich gesagt weiß ich auch nicht genau, ob wir diese Unterprogramme verwenden dürfen - in der Vorlesung haben wir sie schon bewiesen und unsere Dozentin in der Übung meinte es wäre wohl einfach die zu verwenden?
    Also könnte ich es dann so lassen? Wäre damit die Aufgabe gelöst?

    Gruß
    Keine_Ahnung



  • Hi

    was macht es dann für einen sinn, in den übungen einen alg für div und mod entwickeln zu lassen, wenn dies schon in der vorlesung entwickelt und bewiesen wurde. gibts da etwa kommunikationsproblem schwischen den Profs ( Vorlesung / Übungen )

    ggf noch mal bei der Dozentin für die übungen nachfragen, welche randbedingungen gelten, und was alles verwendet werden darf. (ggf den hinweis geben, das dies in der vorlesung schon geschehen ist. ich würd aber eher den alg aus der vorlesung abgeben, fals der koreckt ist und die aufgabenstellung erfüllt)

    gruss


Anmelden zum Antworten