Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Schleifen Datenfelder (Arrays) Verzweigungen

Ähnliche Präsentationen


Präsentation zum Thema: "Schleifen Datenfelder (Arrays) Verzweigungen"—  Präsentation transkript:

1 Schleifen Datenfelder (Arrays) Verzweigungen
Vektoren, Matrizen, Tabellen for, while, foreach, if-else und switch-case Dr. Beatrice Amrhein

2 Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012
Überblick Schleifen for, while, foreach Eindimensionale Arrays Deklaration, Initialisierung, Zugriff Mehrdimensionale Arrays Verzweigungen if, else, switch, case Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

3 Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012
Schleifen Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

4 Schleifensteuerungen: while
Kopfgesteuerte Schleife mit while Verlangt als Abbruch-Bedingung einen booleschen Ausdruck Die Abbruch-Bedingung wird jeweils vor jedem Schleifendurchgang geprüft. while (Test) // Abbruch-Bedingung { Anweisungen, die durchzuführen sind, solange der Test zu true evaluiert. } Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

5 Schleifensteuerungen: while
int n = 1; while (n < 4) // Abbruch-Bedingung { Console.WriteLine("Der Wert von n ist {0}", n); n++; } Erzeugt die Ausgabe Der Wert von n ist 1 Der Wert von n ist 2 Der Wert von n ist 3 Vor jedem Schleifendurchgang wird geprüft, ob der Test (n < 4) noch erfüllt ist. Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

6 Schleifensteuerungen: do while
Fussgesteurte Schleife mit do while Verlangt als Abbruch-Bedingung einen booleschen Ausdruck do { Anweisungen, die auszuführen sind, solange der Test zu true evaluiert. } while (Test); // Abbruch-Bedingung Im Gegensatz zur while-Anweisung wird der Inhalt der do-while-Schleife einmal ausgeführt, bevor die Abbruch-Bedingung das erste Mal geprüft wird. Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

7 Schleifensteuerungen: do while Beispiel
int n = 0; do { Console.WriteLine("n={0}", n); n++; } while (n < 4); // Abbruch-Bedingung Erzeugt die Ausgabe Der Abbruch-Test (n < 4) wird jeweils am Ende der Schleife geprüft. Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

8 Schleifensteuerungen: for
Kopfgesteuerte Schleife mit for Die Schleifenvariable kann auch von aussen bezogen werden for (Initialisierung; Test; Laufvariable anpassen) { Anweisungen, die auszuführen sind, solange der Test zu true evaluiert. } Die Initialisierung geschieht nur einmal am Anfang. Der Test wird vor jedem Schleifendurchgang durchgeführt. Die Anpassung der Laufvariablen wird erst am Ende, bzw. nach dem Schleifeninhalt durchgeführt. 1 2 4 3 1 2 4

9 Schleifensteuerungen: for
Beispiel int i; int j = 3; for (i = 4; i <= 15; i += j) { Console.WriteLine("i={0}", i); } Erzeugt die Ausgabe Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

10 Schleifensteuerungen: for  rückwärts
Die Schleife kann auch rückwärts laufen for (int i = 7; i > 3; i--) { Console.WriteLine("i={0}", i); } Erzeugt die Ausgabe Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

11 Verschachtelte for-Schleife
Schleifen können ineinander verschachtelt werden for (int i = 1; i <= 2; i++) { for (int j = 1; j <= 4; j++) Console.WriteLine("i={0}, j={1}", i, j); } Erzeugt die Ausgabe Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

12 Schleifensteuerungen: foreach
Kopfgesteuerte Schleife mit foreach Ist nur auf Array-Typen anwendbar Hat keine Schleifenvariable Erlaubt während des Durchlaufs keine Veränderung des Arrays int[] fibarray = new int[] { 1, 1, 2, 3, 5, 8 }; foreach (int i in fibarray) { Console.WriteLine("i={0}",i); } Erzeugt die Ausgabe Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

13 Sprunganweisungen: break
Mit der break-Anweisung wird die direkt umschliessende Schleife beendet. Sie beendet auch eine switch-Anweisung (vgl. swich-Anweisungen). //Die break-Anweisung beendet diese Schleife sobald i den Wert 5 erreicht. for (int i = 1; i <= 100; i++) { if (i == 5) break; Console.WriteLine("i={0}", i); } Erzeugt die Ausgabe Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

14 Sprunganweisungen: continue
continue übergibt den Verlauf an die nächste Iterations-Anweisung //Die continue-Anweisung springt in die nächste Iteration for (int i = 1; i <= 10; i++) { if (i%2 == 0) continue; } Console.WriteLine("i={0}", i); Erzeugt die Ausgabe Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

15 Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012
Eindimensionale Arrays Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

16 Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012
Deklaration Deklaration  unbestimmte Länge (keine Speicher-Allokation auf dem Heap) int[] intArray; long[] longArray; char[] charArray; string[] stringArray; Deklaration mit Längen-Angabe (mit Speicher-Allokation auf dem Heap) // Ganzahl-Array der Länge 3 int[] intArray = new int[3]; // Character-Array der Länge 4 char[] charArray = new char[4]; Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

17 Deklaration und Initialisierung
durch Längen-Angabe, durch literale Initialisierung oder beides // Leerer Ganzahl-Array der Länge 3 intArray = new int[3]; // Long Array der Länge 2, literal longArray = new long[] { , }; // Char Array der Länge 4, literal und Längen-Angabe charArray = new char[4] { 'a', 'b', 'c', 'd' }; // Leerer String-Array der Länge 3 stringArray = new string[3]; Speicherabbild für String Array Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

18 Deklaration und Initialisierung
Kombination von Deklaration und Initialisierung // String-Array der Länge 2, string[] stringArray = {"John", "Doe"}; // char-Array der Länge 4 char[] charArray = { 'a', 'b', 'c', 'd' }; // Ganzzahl-Array der Länge 3 int[] intArray = { 17, 35, 22 }; Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

19 Zugriff auf die Werte (Lesen und Schreiben)
Der Zugriff auf die Werte erfolgt über die Angabe der Nummer des Feldes in eckigen Klammern (z.B: charArray[1]) //Initialisierung string[] stringArray = {"John", "Doe"}; char[] charArray = { 'a', 'b', 'c', 'd' }; //Ausgabe Console.WriteLine("Vorname: {0} Nachname:{1}", stringArray[0], stringArray[1]); Console.WriteLine("--{0}--{1}--{2}--{3}--", charArray[0], charArray[1], charArray[2], charArray[3]); Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

20 Durchlauf durch alle Werte
Mit der foreach-Anweisung werden alle Werte des Arrays durchlaufen //Initialisierung char[] charArray = { 'a', 'b', 'c', 'd' }; //Ausgabe foreach (char p in charArray) { Console.Write("--{0}", p); } Console.WriteLine("--"); Mit der foreach-Anweisung können die Werte eines Arrays nicht verändert werden! Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

21 Default Werte für nummerische Arrays
Nummerische Arrays werden mit dem Wert 0 initialisiert. int[] intMatrix = new int[3]; long[] longMatrix = new long[3]; float[] floatMatrix = new float[3]; double[] doubleMatrix = new double[3]; for (int i = 0; i < 3; i++) { Console.WriteLine("intMatrix[{0}]={1}, longMatrix[{0}]={2}, " + "floatMatrix[{0}]={3}, doubleMatrix[{0}]={4} ", i, intMatrix[i], longMatrix[i], floatMatrix[i], doubleMatrix[i]); } Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

22 Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012
Mehrdimensionale Arrays Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

23 Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012
Deklaration Deklaration einer Ganzzahl Matrix mit 3 x 6 Werten int[,] intMatrix = new int[3, 6]; Deklaration einer Byte Matrix mit Initialisierung byte[,] byteMatrix = new byte[,] { {2,3,4,5}, {6,7,8,9} }; Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

24 Initialisierung: Füllen der Matrix mit Werten
Füllen (und Ausgeben) einer Matrix int[,] intMatrix = new int[15,9]; for (int i = 0; i < 15; i++) { for (int j = 0; j < 9; j++) intMatrix[i, j] = i+j; Console.Write("{0,4}", intMatrix[i,j]); } Console.WriteLine(); Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

25 Initialisierung: Füllen der Matrix mit Werten
Füllen (und Ausgeben) einer double Matrix double[,] intMatrix = new double[15,9]; for (int i = 0; i < 15; i++) { for (int j = 0; j < 9; j++) intMatrix[i, j] = Math.Sqrt(i*j); Console.Write("{0,6:F2}", intMatrix[i, j]); } Console.WriteLine(); Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

26 Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012
Die Methode GetLength GetLength(0) gibt die Länge in der ersten, GetLength(1) die Länge in der zweiten Dimension zurück. for (int i = 0; i < intMatrix.GetLength(0); i++) { for (int j = 0; j < intMatrix.GetLength(1); j++) intMatrix[i, j] = i+j; Console.Write("{0,4}", intMatrix[i,j]); } Console.WriteLine(); Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

27 Durchlauf durch alle Werte
Die foreach-Anweisung kann auch alle Werte eines mehrdimensionalen Arrays durchlaufen //Initialisierung int[,] intMatrix = { { 1, 2, 3 }, { 4, 5, 6 } }; //Ausgabe foreach (int i in intMatrix) { Console.Write("{0} ", i); } Die Ausgabe erscheint «eindimensional». Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

28 Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012
Verzweigungen Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

29 Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012
Verzweigungen: if Einfache Verzweigungen mit if Verlangt in der Klammer immer einen booleschen Ausdruck (Test) if( Test ){ // Block mit den auszuführenden Anweisungen, falls der Test zu true evaluiert Anweisungen im Fall von true } else { // Block mit den Anweisungen, falls der Test zu false evaluiert Anweisungen im Fall von false } Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

30 Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012
Verzweigungen: if Beispiel Console.Write("Geben Sie Ihren Namen ein: "); string name = Console.ReadLine(); // Test if( name == "" ){ // Test evaluiert zu true Console.WriteLine("Haben Sie keinen Namen?"); } else { // Test evaluiert zu false Console.WriteLine("Hallo {0}!", name); } Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

31 Verzweigungen: if mit mehreren Tests
Beispiel // erster Test if( name == null ){ // erster Test evaluiert zu true Console.WriteLine("erster Test ist true"); } // zweiter Test else if (name.Length == 0){ // zweiter Test evaluiert zu true Console.WriteLine("zweiter Test ist true?"); } else { // zweiter Test evaluiert zu false Console.WriteLine("Hallo {0}!", name); Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

32 Verzweigungen: switch
Mehrfache Verzweigungen mit switch Die Test-Fälle sind konstant „default“ sollte am Ende sein (muss aber nicht) switch (intValue) { case 1: Anweisungen für Fall 1 break; case 2: Anweisungen für Fall 2 default: Anweisungen für alle anderen Fälle } Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

33 Verzweigungen: switch
int caseSwitch = 1; switch (caseSwitch) { case 1: Console.WriteLine("Case 1"); break; case 2: Console.WriteLine("Case 2"); default: Console.WriteLine("Default case"); } Erzeugt die Ausgabe Case 1 Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

34 Verzweigungen: switch
int caseSwitch = 3; switch (caseSwitch) { // mehrere Fälle  case 0: case 1: Console.WriteLine("Case 0 or 1"); break; case 2: Console.WriteLine("Case 2"); break; // Diese Zeile verursacht eine Warnung Console.WriteLine("Unreachable code"); // evaluiert zu 3 case (7 – 4): Console.WriteLine("Case 3"); break; // Falls caseSwitch ungleich 0, 1, 2, oder 3 wird // der default Pfad ausgeführt. default: Console.WriteLine("Default case (optional)"); break; } Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

35 Verzweigungen: switch/case
Statt einer Zahl (int) kann auch ein Buchstabe (char) für die Verzweigung verwendet werden: switch (charValue) { case 'A': Anweisungen für Fall 'A' break; case 'B': Anweisungen für Fall 'B' case 'V': Anweisungen für Fall 'V' default: Anweisungen für alle anderen Fälle }

36 Entscheidungen mit Hilfe von Aufzählungen
Eine Aufzählung kann in einem switch-case Statement für die Auswahl verwendet werden: public enum Note { A, B, C, D, E, FX, F } public static String getLeistung(Note ects) { String resultat; switch (ects) case Note.A: restultat = "Hervorragend"; break; case Note.B: restultat = "Sehr gut"; break; case Note.C: restultat = "Gut"; break; case Note.D: restultat = "Passabel"; break; case Note.E: restultat = "Passabel"; break; case Note.F: restultat = "Ungenügend"; break; } return resultat;


Herunterladen ppt "Schleifen Datenfelder (Arrays) Verzweigungen"

Ähnliche Präsentationen


Google-Anzeigen