Kann mir jemand die Reihenfolge erklären bei der for Schleife?

2 Antworten

Die erste Anweisung im Schleifenkopf (Initialisierung/Startanweisung) wird ausgeführt, sobald der Programmfluss das erste Mal auf das Schleifenkonstrukt trifft.

Die zweite Anweisung (Bedingung) wird ausgeführt, bevor der Programmfluss in den Schleifenkörper springt. Wenn die Bedingung nicht zutrifft, wird der Schleifenkörper komplett übersprungen. Nach jedem Durchlauf durch den Schleifenkörper springt das Programm wieder zur Bedingung im Schleifenkopf. Es sei denn, es gibt einen return- oder break-Befehl im Schleifenkörper.

Die dritte Anweisung wird nach Ausführung des Schleifenkörpers durchgeführt. Wenn der Programmfluss nicht in den Schleifenkörper springt, da die Bedingung nicht zutrifft, wird auch die dritte Anweisung ignoriert.

Um das noch einmal zu veranschaulichen, zeige ich folgend die einzelnen Schritte für den obigen Algorithmus unter der Annahme, dass n den Wert 3 hat:

n = 3
ungeradeZahl = 1

i = 1 (Startanweisung)
i <= n => wahr (1 <= 3)
  Ausgabestring: "1, "
  ungeradeZahl = ungeradeZahl + 2 = 3
  i = i + 1 = 2
i <= n => wahr (2 <= 3)
  Ausgabestring: "3, "
  ungeradeZahl = ungeradeZahl + 2 = 5
  i = i + 1 = 3
i <= n => wahr (3 <= 3)
  Ausgabestring: "5, "
  ungeradeZahl = ungeradeZahl + 2 = 7
  i = i + 1 = 4
i <= n => unwahr

Das Endresultat auf der Konsole wäre somit dieser String:

"1, 3, 5 "

Der letzte Wert von i ist 4, die Variable ändert sich nicht noch einmal. Da sie im Schleifenkopf initialsiert wurde, ist sie nur im Schleifenkonstrukt bekannt und wird, sobald der Programmfluss das Konstrukt passiert hat, wieder aus dem Speicher gelöscht.

Nein, mal abgesehen wieso Leute mit her schleifen mit I=1 und nicht I=0 beginnen.

Zuerst wird der schleifen Kopf und die Bedingung geprüft, dann wird alles im schleifen Körper von oben nach unten ausgeführt. Am Ende springt der ptr wieder zum schleifen Kopf prüft die Bedingung und rechnet wenn die Kondition passt I++


Sabrina1993K 
Fragesteller
 27.01.2023, 01:23

Müsste dann nicht 2 rauskommen bei der ersten schleife

0
Neungott  27.01.2023, 01:25
@Sabrina1993K

Ja beim ersten Durchlauf der Schleife. Es wird bei jeder iteration bis zu i<=n eine ungerade Zahl ausgegeben.

0
Neungott  27.01.2023, 01:31
@Sabrina1993K

Es wird auch 1+2 gerechnet da die Variable ungerade Zahl den Wert 1 besitzt. Beim zweiten Durchlauf wird dann 3+2 gerechnet und beim dritten 5+2 und so weiter. Am besten du schaust dir ein YouTube Video an wo schleifen visuell erklärt werden. Diese Konzepte sind am Anfang sehr abstrakt

1
regex9  27.01.2023, 03:18
Am Ende springt der ptr wieder zum schleifen Kopf prüft die Bedingung und rechnet wenn die Kondition passt I++

Das ist falsch. Die Zählervariable wird am Ende des Schleifenkörpers erhöht, noch bevor eine erneute Prüfung der Bedingung stattfindet.

0