BlueJ Schleifeninterpretation

nadosa

Lt. Junior Grade
Registriert
Sep. 2011
Beiträge
341
Hey Leute, ich hoffe ich bin hier richtig bei den Programmierprofis?

Naja es geht um ein "einfaches" Standardthema, die Schleifen, Hauptbestandteil unserer Klausur morgen, ich hau mir nämlich gerade auf den letzten Drücker den ganzen Stoff rein.
Also es geht mir um die Interpretation folgender Schleifen:

int x = 1;
int y = 1;

while (x <= 10){
y = y*x;
x++;
}

Meine Interpretation: die Schleife startet bei x = 1 --> ist kleiner als 10, 1 wird darauf mit y=1 multipliziert und danach x um eins erhöht, oder? Aber für was ne Rolle spielt denn y genau?

Nächste Schleife:

while (a != b)
{
if (a > b)
a = a-b;
else
b = b-a;
}
erg = a


Welche Zahl berechnet die Schleife, wenn für a=35 und für b=15 gilt?

Da häng ich leider ein bisschen durch! Also ich weiß, dass die Schleife immer vorprüft, ob a ungleich b ist, wenn nicht, wird die Schleife abgebrochen. Danach kommt eine Bedingung, die verstehe ich nicht so recht, also die if else Bedingung. Wird dann geprüft ob a>b (in dem Fall 35>15, also erfüllt) und deswegen dann 35-15 gerechnet? Das wäre dann 20, was wieder beide Bedingungen erfüllt, und das solange weiter bis a nicht mehr ungleich b ist?

Ich bedanke mich schon mal für die Hilfe, ich denke das dauert bestimmt nicht lange!
 
Zuletzt bearbeitet:
code bitte in CODE Tags.

Mit der ersten Schleife hast du Recht. Y hält das Zwischenergebnis und wird pro Schleifeniteration größer.

Code:
int x = 1;
int y = 1;

while (x <= 10){
y = y*x;
x++;
}

1. Iteration: Y = 1*1
2. Iteration: Y = Y Wert der 1.Iteration * 2
3. Iteration: Y = Y Wert der 2.Iteration * 3
...
10. Iteration: Y = Y Wert der 9.Iteration * 10

Deine Gedanken zur 2. Schleife sind richtig.

Code:
while (a != b)
{
if (a > b) 
a = a-b;
else 
b = b-a;
}
erg = a

Wenn A nicht gleich B
dann:
wenn A größer B, dann ist a gleich a-b // 35-15
sonst bleibt a gleich a und b ist gleich b-a // 15-35

der erg variable wird a zugewiesen. also hier 20.
 
Zuletzt bearbeitet:
Danke für die schnelle Antwort. Gilt das gleiche dann auch wenn ich die Summe aus den Zahlen 1-100 bilden soll, sprich

Code:
        int sum = 0;
        int i = 1;
             
        while (i <= 100){
              sum += i;
              i++;
          System.out.println(sum);
        }

Also: sum = 0+1 --> 1; i wird erhöht um 1 und sum = 1+2 --> 3; danach sum = 3+3 ? Oder hab ich hier einen Denkfehler?
 
vollkommen richtig.

Du kannst sowas schnell testen, zb auf folgender Seite:
https://repl.it/languages/Java

Alternativ kommt soweit ich weiß, mit Java 9 nen REPL Tools, also ne Möglichkeit schnell Javacode in ner Kommandozeile zu testen.

Unter der URL oben, hab ich einfach folgenden Code eingetragen:

Code:
class Main {
  public static void main(String[] args) {
    System.out.println("hello world");
    
    int sum = 0;
        int i = 1;
             
        while (i <= 100){
              sum += i;
              i++;
          System.out.println(sum);
        }
  }
}
 
Zuletzt bearbeitet:
Kann ich mit diesem Schema auch irgendwie die Fakultät einer Zahl berechnen?
 
Achja! :D Muss ich die 10 dann nur durch die Variable n ersetzen und die wiederum als Parameter angeben um die Fakultät einer beliebigen Zahl auszurechnen?
 
Zuletzt bearbeitet:
Das solltest du dir an Hand der beiden Schleifen selber beantworten können ;-)
 
Jap genauso ging es, so jetzt steht mir noch eine Hürde bevor, und zwar die geschachtelte for-Schleife.
 
Zurück
Oben