1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Kopfschleife-While (ggT)

  • freakjan
  • 28. Dezember 2005 um 18:56
  • Unerledigt
  • freakjan
    7
    freakjan
    Mitglied
    Punkte
    450
    Beiträge
    64
    • 28. Dezember 2005 um 18:56
    • #1

    Hallo :grinning_squinting_face:

    ich hab hier ein Programm für ggT geschrieben aber hab dazu paar Fragen!

    Also ich hab das so verstanden, dass der Ausdruck in Klammern nach WHILE wird bewertet (true oder false) und wenn das true ist, wird die Anweisung in der Geschweifelten Klammern ausgeführt! ... usw.. aber irgendwann wird die Bewertung false ergeben?? ... was dann??
    Also die Anweisung wird nicht ausgeführt aber Welchen Wert gibt er denn aus?? .... Was rechnet er denn da aus??

    Code
    public class ggT {
    public static void main (String [] args){
     
    int x,y,g,t;
     
    g=x= 10;
    t=y= 8;
     
    while (x != y) {
     
    if (x>y)
    x= x-y;
     
    else
    y=y-x;
     
    }
     
    System.out.println ("ggT von " + g + " und " + t + " ist " + x);
     
    }
    }
    Alles anzeigen




    //javac ggT.java
    //java ggT
    //ggT von 8 und 10 ist 2

    Danke :thumb:
    ciao :zwinker:

  • Korrupt
    8
    Korrupt
    Mitglied
    Punkte
    605
    Beiträge
    110
    • 28. Dezember 2005 um 23:48
    • #2
    Zitat von freakjan

    Also ich hab das so verstanden, dass der Ausdruck in Klammern nach WHILE wird bewertet (true oder false) und wenn das true ist, wird die Anweisung in der Geschweifelten Klammern ausgeführt! ... usw.. aber irgendwann wird die Bewertung false ergeben?? ... was dann??


    dann geht er einfach nach der schließenden { weiter, in deinem fall bei System.out.println...

    Zitat von freakjan

    Also die Anweisung wird nicht ausgeführt aber Welchen Wert gibt er denn aus?? .... Was rechnet er denn da aus??


    er rechnet "gar nichts" aus, er geht einfach nach dem schleifenrumpf weiter (siehe oben).

    Code
    public class ggT {
    public static void main (String [] args){
    
    
    int x,y,g,t;
    
    
    g=x= 10;
    t=y= 8;
    
    
    while (x != y) {
    if (x>y)
    x= x-y;
    else
    y=y-x;
    }
    // ### hier würde er weitergehen, wenn die bedingung in while = false
    // z.b. mit x=10, y=10 würde er sofort hier her kommen
    System.out.println ("ggT von " + g + " und " + t + " ist " + x);[/B]
    }
    }
    Alles anzeigen

    *** Ich würde gern die Welt verändern, aber Gott gibt mir den Quelltext nicht ***

  • freakjan
    7
    freakjan
    Mitglied
    Punkte
    450
    Beiträge
    64
    • 29. Dezember 2005 um 00:00
    • #3

    mmhh... :face_with_rolling_eyes:

    ja OK du hast hier geschrieben:

    Zitat

    // ### hier würde er weitergehen, wenn die bedingung in while = false
    // z.b. mit x=10, y=10 würde er sofort hier her kommen
    System.out.println ("ggT von " + g + " und " + t + " ist " + x);[/b]



    das bedeutet, wenn der Ausdruck false ist, bekomme ich als Ergebnis:

    ====> ggT von 10 und 10 ist 10

    Also der Wert in dem Register x wird ausgegeben??? :confused:

    Danke :thumb:
    ciao :zwinker:

  • Swoncen
    22
    Swoncen
    Mitglied
    Reaktionen
    1
    Punkte
    5.331
    Beiträge
    993
    • 29. Dezember 2005 um 00:14
    • #4

    Nein es würde

    "ggt von 10 und 8 ist 2" stehen. g und t hast du mit 10 und 8 initialisiert und sind deswegen keine referenz auf x bzw. auf y, was du vielleicht vermutest.
    x jedoch verändert seinen Wert in der Schleife, welche du solange ausführst, bis x gleich y wird.

    640K ought to be enough for anybody. :eek2:

  • freakjan
    7
    freakjan
    Mitglied
    Punkte
    450
    Beiträge
    64
    • 29. Dezember 2005 um 00:35
    • #5

    ich wollte aber wissen, wenn beide Werte gleich sind also FALSE!!

    Zitat von freakjan


    .....
    das bedeutet, wenn der Ausdruck false ist, bekomme ich als Ergebnis:

    ====> ggT von 10 und 10 ist 10

    Also der Wert in dem Register x wird ausgegeben??? :confused:

    Alles anzeigen

    Danke :thumb:
    ciao :zwinker:

  • Wolfibolfi
    37
    Wolfibolfi
    Mitglied
    Reaktionen
    186
    Punkte
    14.936
    Beiträge
    2.942
    • 29. Dezember 2005 um 00:48
    • #6

    von 10 und 10 ist 2 wird rauskommen, stimmt natürlich net, aber dortstehn sollts.

    Du hast doch das Prog auf deinem Rechner, wie wärs, wenn dus einfach ausführst, dann siehst eh, was er ausgibt.

    In einen FBO rendern ist wie eine Schachtel Pralinen - man weiß nie, was man kriegt.

  • freakjan
    7
    freakjan
    Mitglied
    Punkte
    450
    Beiträge
    64
    • 29. Dezember 2005 um 00:52
    • #7

    ich hab das Programm ausgeführt aber wollte nur wissen was da genau passiert und wie die Ausgabe überhaupt Zustande kommt :face_with_rolling_eyes:

    Danke :thumb:
    ciao :zwinker:

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung