Programmieren - alles kontrollieren 4.937 Themen, 20.662 Beiträge

VB Schleifen Exit Continue

Elo / 5 Antworten / Flachansicht Nickles

Hallo,

bin Anfänger und habe eine Frage , kann mir jemand den folgenden Code Zeile für Zeile mal erklären
habe es aus meinen 2 Übungen und den verstehe ich nicht ganz. Also bitte keine Lösungen wie man es anders machen kann möchte die hier verstehen. Die Zeilen was die einzeln machen verstehe ich auch, aber nicht warum dann ein Baum am Ende dabei raus kommt denn
ich bleibe Theoretisch immer bei 2 Sternen das meinte ich mit Erklären.

Module Module1

Sub Main()
For i As Integer = 1 To 20
For j As Integer = 1 To i
Console.Write("*")
If j Continue For
End If
Console.WriteLine()
Next j
Next i

Console.WriteLine("**")
Console.WriteLine("**")
Console.WriteLine("**")

End Sub

End Module

Hier der zweite den verstehe ich bis das der 3 Stern gemacht werden soll, den da kommen bei mir
wieder nur 2 Sterne raus Theoretisch, als Programm funktionieren beide einwandfrei.
Nur das Theoretische nachvollziehen klappt nicht so ganz.

Module Module1

Sub Main()
For i As Integer = 1 To 20
For j As Integer = 1 To i
Console.Write("*")
If i = j Then
Console.WrireLine()
Exit For
End If
Next j
Next i

Console.WriteLine("**")
Console.WriteLine("**")
Console.WriteLine("**")

End Sub

End Module


Vielen Dank im voraus

elo

bei Antwort benachrichtigen
neanderix Elo „VB Schleifen Exit Continue“
Optionen

Ich kann es ja mal versuchen

Sub Main()
For i As Integer = 1 To 20


i erhlt den Wert 1

For j As Integer = 1 To i

j erhält ebenfalls den Wert 1, danach wird wegen

Console.Write("*")

ein * ausgegeben.

If j <i Then
Continue For
End If


Wenn j < i dann mache in der FOR-Schleife (der zweiten!) weiter. Da das nicht der Fall ist (i=1 und j=1 > 1=1) geht es weiter mit

Console.WriteLine()

was lediglich eine Zeilenschaltung durchführt.
Next j

zählt den Schleifenzähler der zweiten Schleife eigentlich eines höher - der ist aber schon am ende (j=1) also geht es weiter mit

Next i

damit wird i=2.

Dann geht es wieder in die zweite Schleife - die beginnt von vorne, also j=1.
es wird ein * ausgegeben, dann ergibt der Vergleich IF j wahr, daher wird direkt zum "Next j" gesprungen und ausgeführt - j=2, also der nächste Stern ausgegeben.
Jetz ergibt der Vergleich j false, daher direkter Übergang zum End If

das Next j wird nicht ausgeführt, da j sein ende erreicht hat.
Hingegen wird mit Next i

i=3

Wieder Sprung in die zweite Schleife - die wieder von vorn beginnt: (und diesmal dreimal durchlaufen wird)

usw.

Wichtig ist, dass dir klar wird, dass die innere FOR Schleife bei jedem Durchgang bei 1 beginnt.
Über den Rest (z.B. das meines Erachtens der IF Vergleich nicht nötig ist) reden wird lieber nicht - die ist auch nur da, um den Gebrauch von Continue For zu erklären.

Bei der Zweiten Routine ist es ähnlich - wenn du dir den Vergleich anschaust dann wird dir klar, dass die nur genau andersherum arbeitet.

Volker

Volker

Computers are like airconditioners - they stop working properly when you open Windows Ich bin unschuldig, ich habe sie nicht gewählt!
bei Antwort benachrichtigen