Schleifenerklärung

anni

Grünschnabel
Hallo,

könnte mir bitte jemand die Schritte dieser Schleifen erklären? Also wie man handschriftlich zur Lösung gelangt.
Die erste Schleife lautet:
x = 0;
for (int i = 10; i > 0; i = i - 3) {
x = x + i;
}

Ergebnis ist x = 22

Die Zweite ist:
x = 10;
while (x > 1) {
x = x/2;
i = i + 1;
}

Ergebnis ist i = 3

Vielen Dank schon mal für die Hilfe.
 
Hi

Erste:
x ist am Anfang 0
Die for-Schleife setzt i auf 10
i ist größer als 0, also wird der Schleifeninhalt ausgeführt
i wird zu x dazugezählt, also 0+10=10, x ist jetzt 10
i wird um 3 kleiner, ergibt i=7
i ist trotzdem noch immer größer als 0, also das Ganze nocheinmal:
i wird zu x dazugezählt, also 10+7=17
i wird um 3 kleiner, ergibt i=4
i ist trotzdem noch immer größer als 0, also das Ganze nocheinmal:
i wird zu x dazugezählt, also 17+4=21
i wird um 3 kleiner, ergibt i=1
i ist trotzdem noch immer größer als 0, also das Ganze nocheinmal:
i wird zu x dazugezählt, also 21+1=22
i wird um 3 kleiner, ergibt i=-2
i ist kleiner als 0, also ist die Schleife fertig.
x ist am Ende 22

Zweite: i ist am Anfang 0, oder? Wenn ja:
Anfang: x=10, i=0
x ist größer als 1, also wird der Schleifeninhalt ausgeführt
x wird halbiert, ist 5
i wird um 1 erhöht, ist 1
x ist noch immer größer als 1, also noch einmal
x wird halbiert, ist 2.5 Weil int aber nur Ganze Zahlen speichert, bleibt nur 2 übrig
i wird um 1 erhöht, ist 2
x ist noch immer größer als 1, also noch einmal
x wird halbiert, ist 1.
i wird um 1 erhöht, ist 3
x ist nicht mehr größer als 1, also fertig.

Gruß

edit: Waah, da steht ja >1. Bin zu müde. Erklärung für Schleife zwei ist korrigiert
 
Zuletzt bearbeitet:
Hallo,

könnte mir bitte jemand die Schritte dieser Schleifen erklären? Also wie man handschriftlich zur Lösung gelangt.
Die erste Schleife lautet:
x = 0;
for (int i = 10; i > 0; i = i - 3) {
x = x + i;
}

Ergebnis ist x = 22

Die Zweite ist:
x = 10;
while (x > 1) {
x = x/2;
i = i + 1;
}

Ergebnis ist i = 3

Vielen Dank schon mal für die Hilfe.

recht simpel ;)

Bei jeder Schleife hast du Zahl variablen

Im fall eins das i

du fängst an

erster durchlauf i = 10 ___ x 0 -schleifen ende-> x = 0 + 10 = 10 und i = 10 - 3 = 7
zweiter durchlauf i = 7 ___ x 10 -schleifen ende-> x = 10 + 7 = 17 und i = 7 - 3 = 4
dritter durchlauf i = 4 ___ x 17 -schleifen ende-> x = 17 + 4 = 21 und i = 4 - 3 = 1
vierter durchlauf i = 1 ___ x 21 -schleifen ende-> x = 21 + 1 = 22 und i = 1 - 3 = -2
i>0 ist somit nicht mehr erfüllt die schleife endet.

der Zweite fall wird es für mich schwirig, ich nehme an x ist vom Typ int
erster durchlauf x = 10 ___ i = 0 -schleifen ende-> x = x / 2 = 5 und i = 0 + 1 = 1
zweiter durchlauf x = 5 ___ i = 1 -schleifen ende-> x = x / 2 = 2,5 = Integer haben kein komma also x = 2 und i = 1 + 1 = 2
dritter durchlauf x = 2 ___ i = 2 -schleifen ende-> x = x / 2 = 1 und i = 2 + 1 = 3
Schleife endet weil x nicht größer 1 ist.
sollte x nicht vom Typ int sein sollte das ergebnis 4 sein.
Ich bin aber gerade verunsichert :(
 
Vielen Dank, schön erklärt. Hatte mich gestern auch noch mal mit befasst und die erste Schleife ist soweit klar. Die Zweite hab ich so interpretiert: Wie oft kann x geteilt werden, bis x < 1 ist, also

x 10 5 2.5 1.25 nächstes Ergebnis wäre, 0.625, also Abbruch.

i 0 1 2 3
 
Vielen Dank, schön erklärt. Hatte mich gestern auch noch mal mit befasst und die erste Schleife ist soweit klar. Die Zweite hab ich so interpretiert: Wie oft kann x geteilt werden, bis x < 1 ist, also

x 10 5 2.5 1.25 nächstes Ergebnis wäre, 0.625, also Abbruch.

i 0 1 2 3

nein, die Abbruch bedingung wird am anfang geprüft und solange diese zutrift wird die schleife durchlaufen. Was in der Schleife passiert Interessiert uns nicht wenn wir beim prüfen der bedingung sind.
Die bedingung ist x > 1 solange das zutrift wird die schleife ausgeführt das teilen wird in der Schleife gemacht also gibt es zwei möglich keiten

x ist int und dann ist die aufzählung von x 10 5 2 1 wobei bei 1 die schleife nicht mehr durchlaufen wird.

Oder

x ist double oder float und somit die aufzählung x 10 5 2.5 1.25 0.625 wobei wir dann i = 4 haben (also lösung mit i = 3 falsch) und die schleife bei 0.625 nicht mehr durchlaufen wird.


es gibt schleifen die minimum einmal durchlaufen werden, dessen bedinung wird am ende der schleife geprüft, aber solch eine schleife hast du nicht im beispiel.
 

Neue Beiträge

Zurück