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
Programmieren - alles kontrollieren 4.937 Themen, 20.662 Beiträge
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