Schleifen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von elo63.

    Hallo,
    lerne gerade Visual Basic und habe aus einen Buch diesen ähnlichen Code, im gr0ßen und ganzen
    verstehe ich es auch, aber ein paar Kleinigkeiten verstehe ich nicht so ganz, versuche es mal zu erklären
    wie ich es verstanden habe und es wäre nett mich zu berichtigen wenn ich es falsch mache.

    VB.NET-Quellcode

    1. Module Module1
    2. Sub Main()
    3. For x As Integer = 1 To 5
    4. For y As Integer = 1 To 5
    5. For z As Integer = 1 To 5
    6. If (x + y + z) = 9 Then
    7. Console.WriteLine("({0},{1},{2}))", x, y, z)
    8. End If
    9. Next z
    10. Next y
    11. Next x
    12. End Sub
    13. End Module


    Also am Anfang hat
    x = 1
    y = 1
    z = 1,2,3,4,5
    Dann läuft die z Schleife bis zur 5 hoch, da aber x=1, y=1, und z=5 noch keine 9 ergeben trifft die IF Abfrage
    nicht zu und y wird um 1 erhöht also

    x = 1
    y = 2
    z = 1,2,3,4,5
    Dann läuft die z Schleife wieder bis zur 5 hoch, da aber x=1, y=2, und z=5 noch keine 9 ergeben trifft die IF Abfrage
    wieder nicht zu und y wird um 1 erhöht also

    x = 1
    y = 3
    z = 1,2,3,4,5
    Dann läuft die z Schleife wieder bis zur 5 hoch, da jetzt aber x=1, y=3, und z=5, 9 ergeben trifft die IF Abfrage
    zu und und es wird 1,3,5 ausgegeben, bis hier hin habe ich es verstanden wenn es so richtig erklärt ist.

    Aber was passiert jetzt wieso kommt als nächstes ergebnis 1,4,4 raus wieso erhöht sich y und x nicht
    das habe ich noch nicht ganz gepeilt und wo springt er nach End If hin.

    Wäre super wenn das einer mir weiter erklären könnte, super wäre auch wenn jemand hierfür
    ein Flußdiagramm oder ähnlich hätte.

    Vielen Dank für die Hilfe

    elo63


    Könnte es so sein, also z erhöht sich von 5 auf 6 die Schleifen Bedingung wird nicht mehr erfüllt und bricht ab
    y wir um 1 erhöht und das Spiel geht von vorne los, aber mir dieser Startbedingung
    x=1
    y=2
    z=1
    dann würde das ganze wieder durchlaufen nur das y als Startwert eine 2 hatte und damit die If abfrage bei
    1,4,4 schon erfüllt ist.

    Bein nächstenmal ist der Startwert
    x=1
    y=3
    z=1

    Das geht so weiter bis y 5 ist dann wird beim nächstenmal x erhöht
    dann sind die Startbedingung
    x=2
    y=1
    z=1
    Und dann das ganze wieder durch so könnte ich es mir erklären.

    mfg

    elo63

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „elo63“ ()

    Hallo,

    habe geschrieben das ich Anfänger bin deshalb ev. auch mal eine blöde Frage.
    Das es nochmehr gibt ist klar dachte geht daraus hervor, mir gehts nur
    darum ist es so richtig.

    Dachte erst wenn er in der innersten Schleife ist und nach EndIF das er wieder bis zur
    ersten Schleife springt aber das war wohl falsch.

    mfg

    elo63
    Was hast Du denn?
    (1,3,5)
    (1,4,4)
    (1,5,3)
    (2,2,5)
    (2,3,4)
    (2,4,3)
    (2,5,2)
    (3,1,5)
    (3,2,4)
    (3,3,3)
    (3,4,2)
    (3,5,1)
    (4,1,4)
    (4,2,3)
    (4,3,2)
    (4,4,1)
    (5,1,3)
    (5,2,2)
    (5,3,1)

    Ist doch alles da. Du musst auf die Sortierung achten.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo,

    da ich den Code reingestellt habe kenne ich auch das Ergebnis, mir geht es um das Begreifen der Schleife ob ich es so richtig interpretiere.

    Bin Anfänger versuche gerade die Funktion anhand von Beispielen zu verstehen mehr nicht

    LG

    elo63
    erstmal VB-Tag richtig benutzen

    so könnte es aussehen, wennde VB-Tag richtig benutzen dir zu Herzen nehmen tätest:

    VB.NET-Quellcode

    1. Module Module1
    2. Sub Main()
    3. For x As Integer = 1 To 5
    4. For y As Integer = 1 To 5
    5. For z As Integer = 1 To 5
    6. If (x + y + z) = 9 Then
    7. Console.WriteLine("({0},{1},{2}))", x, y, z)
    8. End If
    9. Next z
    10. Next y
    11. Next x
    12. End Sub
    13. End Module

    nach dem Absolvieren der If-Abfrage springt der Code nirgends hin, sondern macht normal weiter, mit Next z.

    Anners ausgedrückt: macht also immer mit Next z weiter, egal, ob die If-Abfrage gematcht hat, oder nicht.

    Das annere ist doch einfach logisches Denken: Fangemer mitte innere Schleife an, die nudelt 5 Werte für z durch. Dann ist sie beendet, und wo gehts weiter? - jepp bei Next y.
    d.h. es fängt an mit der Zahlenkombination (1,1,1) und nudelt hoch bis (1,1,5)
    dann gibts Next y - was passiert? y wird auf 2 gesetzt, und dann wird damit die innere Schleife durchgenudelt, also
    von (1,2,1) bis (1,2,5)
    Und wenn Next y auch durcch ist, wo gehts weiter? mit Next x, d.h.
    von (2,1,1) bis (2,5,5)
    Hallo,

    ist doch genauso wie ich es gemeint hatte, wollte doch nur wissen ob es so richtig
    war, steht in den Büchern nicht immer genau erklärt.

    Mit den VB Tag dachte es reicht so.

    Vielen Dank

    elo63