Visual C# 2012 Grundkurs

Schleifen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Schleifen ermöglichen in C# das Initialisieren von Elementen. Neben der For-Schleife, welche das komplexeste Konstrukt darstellt, stehen noch weitere unterschiedliche Varianten zur Verfügung.

Transkript

In diesem Abschnitt geht es um Schleifen, und zwar möchte ich anfangen und ein Array initialisieren. Also int[] arr = new int[10];. Das ist eine Integer Array mit zehn Elementen. Und diese zehn Elemente möchte ich jetzt initialisieren. Das kann ich tun, indem ich eine for-Schleife schreibe. Ich schreibe sie einfach mal hin und erkläre sie danach nochmal. Eine for Schleife besteht aus dem Schlüsselwort for und aus einer Klammer, in der sämtliche Ausdrücke stehen, die eine for-Schleife ausmachen. Danach folgt das Statement oder der Block, der auszuführen ist, während die Schleife läuft. Dieser Ausdruck hier in den Klammern besteht aus drei Teilen. Diese drei Teile sind jeweils durch einen Strichpunkt voneinander getrennt. Der Teil Nr. 1 nimmt eine Initialisierung vor. Der Teil Nr. 2 nimmt die Prüfung vor, ob die Schleife noch weiter zu laufen hat oder nicht. Das ist also ein boolescher Ausdruck, wenn der wahr ist, dann läuft die Schleife weiter. Wenn er falsch ist, dann bricht die Schleife ab. Und der dritte Ausdruck ist etwas, das am Ende dessen passiert, was innerhalb der Schleife passiert, d.h., in einem Block würde es sozusagen am unteren Ende dieses Blocks passieren. Man kann ja, wenn der Block jetzt hier fehlt, ihn sich im Geiste dazu denken, indem man sagt: Hier habe ich mein Statement, das innerhalb der Schleife auszuführen ist, und dieser dritte Teil wird dann nach dem letzten Statement der Schleife ausgeführt. Diese Teile kann man wahlweise auch leer lassen, die müssen nicht notgedrungen etwas enthalten. So ist der einfachste Fall einer for Schleife tatsächlich das hier. Das würde tatsächlich kompilieren. Ich kompiliere das mal, hier: Build succeeded C# hätte damit kein Problem. Das wäre jetzt eine Endlosschleife, dieses Vorkonstrukt, es hat keine Initialisierung; es hat keine Prüfung, ob die Schleife noch weiterzulaufen hat oder nicht; und es hat nichts, was nach der Schleife passieren muss. So wie eine leere Schleife, die einfach komplett durchläuft. Aber, ich setze diese ganzen Teile jetzt wieder ein und gehe nochmal die einzelnen Teile durch. Im Initialisierungsteil lege ich eine neue Variable an und initialisiere sie mit dem Wert 0. Will heißen: Diese Schleifenvariable ist nur innerhalb dieses Blocks gültig. Wenn ich jetzt z.B. so etwas hier probieren würde, würde der Compiler meckern: Die Variable i ist nämlich dort unterhalb dieser Schleife, unterhalb dieses Blocks, nicht mehr sichtbar. Wenn ich möchte, dass sie sichtbar ist, dann muss ich sie auch oben deklarieren, und dann würde ich die Deklaration aus der Schleife draußen lassen. Das würde ich jetzt kompilieren, und das wäre alles wunderbar. Der Standardfall wäre der, dass man eine Schleifenvariable initialisiert, dann auf eine bestimmte Anzahl abprüft und die Schleife dann durchlaufen lässt. In C# folgt die Sprache in der Praxis meist einer Konvention, die von C herkommt. In C beginnt alles mit 0 und daher ist es so, dass, wenn die Schleife zehnmal laufen soll, dann soll die Schleifenvariable < 10 bleiben, die Schleife läuft sozusagen von 0 bis 9 und damit zehnmal. Das ist der geradlinigste Weg wie man so ein Array mit zehn Elementen initialisieren kann. Wenn man an der Stelle jetzt die Werte von 1 bis 10 haben möchte, dann müssen wir hier auf die Schleifenvariable noch 1 aufaddieren, damit dieses Array entsprechend seine Werte erhält. Soweit zur for-Schleife. Nehmen wir eine zweite solche for-Schleife am Ende und nutzen sie, um die Werte alle wieder auszugeben. Machen wir es mal so: das möchte ich jetzt laufen lassen und wir sehen, was wir erwarten: alle Werte von 1 bis 10. Jetzt gibt es ein paar Eigenheiten bei Schleifen, und zwar können wir mit continue eine Schleife an jeder Stelle abbrechen und sozusagen von vorne den nächsten Durchlauf beginnen lassen. Das mache ich mal und zwar nehme ich den Modulo Operator dafür her: if ( i % 1 0 ) continue; Moment, das ist natürlich Nonsense, i % 2 natürlich. Wenn die Division durch 2 einen Rest übrig lässt, und das ist ja bei jeder zweiten Zahl, dann soll er einfach diese Schleife von vorne beginnen, ohne den restlichen Teil der Schleife auszuführen. Das führt dazu, dass wir nur alle ungeraden Werte sehen. Sie erinnern sich sicher, dass wir hier die Werte mit i + 1 initialisiert haben, d.h., an allen geraden Stellen im Array also 0, 2, 4, 6, 8 usw. - sind ungerade Werte. Soweit zum continue. Das zweite Schlüsselwort, das bei Schleifen eine Bedeutung hat, ist break. Ich kann jetzt z.B. sagen: wenn i 5 ist, dann soll die Schleife abbrechen. Wenn ich das jetzt ausführe, dann haben wir da die Werte von 1 bis 6. Wie gesagt, in dem Array sind die Werte von 1 ausgehend. Also wenn ich jetzt hier nur i eintragen würde, dann hätten wir hier die 5. Das ist jetzt vielleicht ein bisschen klarer, dass, wenn ich bei i 5 abbreche, bekomme ich als letzten Wert die 5. Soweit zu den for-Schleifen. Es gibt auch noch einfachere Schleifenkonstrukte und das wäre z.B. while. Jetzt müsste ich bei einer while-Schleife tatsächlich irgendetwas vor der Schleife initialisieren. Das mache ich jetzt mal: int i = 0, und jetzt kann ich while (i < 10) schreiben. Er meckert mir das jetzt hier an. Machen wir mal hier ein j draus, damit die ganze Geschichte nicht doppeldeutig wird. Genau, und jetzt müsste ich innerhalb der Schleife darauf achten, dass meine Schleifenvariable hochgesetzt wird, das machen wir hier mit diesem j++. Wenn ich das jetzt laufen lassen würde... Jetzt haben wir hier irgendwo noch ein i statt ein j. Wir lassen es jetzt nochmal laufen und haben jetzt dieselbe Wirkung wie vorhin, aber mit einem anderen Konstrukt. Und das while würde immer dann in Frage kommen, wenn einer der beiden, also der erste oder der dritte Teil einer for-Schleife, eigentlich gar nicht benötigt wird. Um das Maß voll zu machen, möchte ich noch ein weiteres Schleifenkonstrukt zeigen und zwar, indem ich erstmal mit einem do anfange und dieses while ans Ende stelle. Da brauche ich dann auch nochmal einen Strichpunkt danach. Also das heißt: do Anweisung, while Bedingung. Jetzt schauen wir mal, was da als Resultat herauskommt. Es ist das gleiche Resultat; das dreht die ganze Geschichte nur um, d.h., der Test wird am Ende statt am Anfang gemacht. Das mag sich in manchen Situationen als sinnvoll erweisen. Soweit war es das in diesem Abschnitt mit den Schleifen.

Visual C# 2012 Grundkurs

Schreiben Sie eigene Programme in C# und lernen Sie dazu alle Schlüsselwörter und die meisten Konstrukte kennen, um sicher mit dieser Programmierspreche umzugehen.

7 Std. 1 min (44 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!