Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

VB Schleifen Exit Continue

Elo / 5 Antworten / Baumansicht 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
Borlander neanderix „Ich kann es ja mal versuchen i erhlt den Wert 1 j erhält ebenfalls den Wert 1,...“
Optionen
die ist auch nur da, um den Gebrauch von Continue For zu erklären.
Ein solcher Erklärungsversuch wie im vorliegenden Beispiel stiftet aber leider viel mehr Verwirrung als Klarheit :-|
Wobei der Einsatz von Continue und Exit sowieso nur sehr zurückhaltend erfolgen sollte weil die Lesbarkeit und Nachvollziehbarkeit des Codes dadurch deutlich leidet.

Gruß
bor
bei Antwort benachrichtigen
neanderix Borlander „ Ein solcher Erklärungsversuch wie im vorliegenden Beispiel stiftet aber leider...“
Optionen
Ein solcher Erklärungsversuch wie im vorliegenden Beispiel stiftet aber leider viel mehr Verwirrung als Klarheit :-|

richtig - weshalb ich auch nicht nachvollziehen kann, warum das Beispiel gewählt wurde.
Es gibt deutlich sinnvollere Beispiele.

Wobei der Einsatz von Continue und Exit sowieso nur sehr zurückhaltend erfolgen sollte weil die Lesbarkeit und Nachvollziehbarkeit des Codes dadurch deutlich leidet.

Ebenfalls richtig.

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
Elo neanderix „Ich kann es ja mal versuchen i erhlt den Wert 1 j erhält ebenfalls den Wert 1,...“
Optionen

Hallo,

vielen Dank für die Erklärung so ähnlich hatte ich es mir gedacht.

Das eine was man wissen muss ist das die innere Schleife wieder bei 1 anfängt und wohin die Continue und Exit springen
das andere ist eigentlich klar.

mfg

elo

bei Antwort benachrichtigen
neanderix Elo „Hallo, vielen Dank für die Erklärung so ähnlich hatte ich es mir gedacht. Das...“
Optionen
Das eine was man wissen muss ist das die innere Schleife wieder bei 1 anfängt und wohin die Continue und Exit springen

Richtig.

Der CONTINUE FOR springt auf sein zugehöriges "Next .. ", d.h. er macht mit dem nächsten Wert der Schleife weiter
Der EXIT FOR springt *dahinter*, er verlässt die Schleife.

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