Fakultät Verkehrswissenschaften „Friedrich List“, Professur für Verkehrsbetriebslehre und Logistik Modul „Entscheidungsunterstützung in der Logistik“ Einführung in die Programmierung mit C++ Übung 2 SS 2016 Professur für Verkehrsbetriebslehre und Logistik Dipl.-Verk.wirtsch. Konstanze Winkler Stephan Hocke (SHK) Organisation Inhalt der heutigen Veranstaltung: • • • • Operatoren Typumwandlung mit static_cast Kontrollstrukturen Arrays Programmierung mit C++ Übung 2 Folie Nr. 2 von 21 Operatoren Arithmetische Operatoren ++ -+ * / % + - Inkrement-Operator Dekrement-Operator Vorzeichen Vorzeichen Multiplikation Division Modulo Addition Subtraktion Zuweisungsoperator Einfache Zuweisung: ordnet einer Variablen den Wert eines Ausdrucks zu Programmierung mit C++ Übung 2 Inkrement-/Dekrement-Operator: Erhöht/reduziert den Operanden um 1, z.B. Variable i: i++ i=i+1 Modulo: Gibt den ganzzahligen Rest an, der bei der Division zweier ganzer Zahlen entsteht i = 3.2 n = 1.3 + 2.0 * i Der Zuweisungsoperator = hat die niedrigste Priorität, erst wird die rechte Seite berechnet, dann das Ergebnis der linken Seite zugewiesen Folie Nr. 3 von 21 Operatoren Vergleichsoperatoren: == != <= >= < > identisch ungleich kleiner oder gleich größer oder gleich kleiner größer Boolesche Variablen für Vergleiche: • Ausdruck vom Typ bool, kann den Wert true oder false besitzen • true („wahr“): Vergleich trifft zu • false („falsch“): Vergleich trifft nicht zu • Beispiele: 5 >= 6 false 1.7 < 1.8 true 2 + 4 == 5 false Programmierung mit C++ Übung 2 Folie Nr. 4 von 21 Operatoren Logische Operatoren zur Formulierung zusammengesetzter Bedingungen Programmverzweigungen können von mehreren Bedingungen abhängig gemacht werden || && ! ODER UND NICHT true, wenn mindestens ein Operand wahr ist true, wenn beide Bedingungen wahr sind true, wenn sein Operand falsch ist Beispiel für || - Operator: hoehe < 5.6 || hoehe > 8.2 ist true, wenn hoehe kleiner als 5.6 oder größer als 8.2 ist. Programmierung mit C++ Übung 2 Folie Nr. 5 von 21 Typumwandlung Die Variable a wird mit static_cast in eine Variable vom Typ double umgewandelt. Hier wird die Nachkommastelle abgeschnitten! Nach der Umwandlung mit static_cast wird der Quotient aus 10 und 4 korrekt dargestellt! Programmierung mit C++ Übung 2 Folie Nr. 6 von 21 Kontrollstrukturen … ermöglichen, eine Auswahl zwischen mehreren Anweisungen zu treffen oder eine Anweisung mehrfach auszuführen. Verzweigungen: im Programm wird eine Bedingung definiert, deren Erfüllung bzw. Nichterfüllung entscheidet, welcher Programmabschnitt ausgeführt wird. Schleifen: Ein Anweisungsblock wird immer wieder ausgeführt, bis eine vorab definierte Abbruchbedingung erfüllt ist. Programmierung mit C++ Übung 2 Folie Nr. 7 von 21 if Anweisungen werden nur dann ausgeführt, wenn bestimmte Voraussetzungen erfüllt sind. Aufgabe 1: Legen Sie ein neues Projekt „P1_Ü2“ an, welches in einer Projektmappe „Übung 2“ liegt. Schreiben Sie nun ein Programm „if“, in welchem der Nutzer zur Eingabe zweier Zahlen aufgefordert wird. Im weiteren Verlauf prüft das Programm, ob die beiden eingegebenen Werte identisch sind. Ist das der Fall, soll der Nutzer auf diesen Umstand aufmerksam gemacht werden. In jedem Fall soll im Ausgabefenster ein kurzer Text erscheinen, mit dem Sie sich für die Eingabe der Zahlen bedanken. Programmierung mit C++ Übung 2 Folie Nr. 8 von 21 if/else/else if Diese Anweisungen werden nur ausgeführt, wenn die dazugehörige Bedingung erfüllt ist. Diese Anweisung wird nur ausgeführt, wenn beide Bedingungen NICHT erfüllt sind. Diese Anweisung wird immer ausgeführt. Programmierung mit C++ Übung 2 Folie Nr. 9 von 21 Schleifen • zur wiederholten Ausführung von einzelnen Anweisungen oder Anweisungsblöcken 3 Formen: for, while, do while • werden mittels einer Schleifenvariablen kontrolliert (es wird eine Variable definiert, welcher zu Beginn der Schleife ein Wert zugewiesen wird) Schleifenrumpf wird wiederholt ausgeführt, bei jedem Mal wird Schleifenvariable verändert vor Beginn jeder Rumpfausführung wird der Wert der Schleifenvariable durch eine Bedingung überprüft (bei do while nach der ersten Rumpfausführung) nur wenn die Bedingung erfüllt ist, wird der Rumpf erneut ausgeführt, sonst Ende der Schleife Gefahr einer Endlosschleife, z.B. wenn Abbruchbedingung fehlt oder nie erreicht wird • • • • Programmierung mit C++ Übung 2 Folie Nr. 10 von 21 for Definition und Initialisierung der Schleifenvariable Schleifenbedingung: wird zu Beginn jeder Iteration überprüft; die nächste Iteration wird nur durchgeführt, wenn sie true ergibt, ansonsten wird die Schleife verlassen for (int n = 1; n <= 10; n++) { //Anweisungen; } Der Schleifenkopf umfasst drei Abschnitte, durch Semikolon getrennt: Initialisierung; Bedingung; Veränderung; Schleifenkopf nicht mit Semikolon abschließen! Veränderungsteil; wird bei jeder Iteration ausgeführt hier: Inkrementieren der Variable n Der Schleifenrumpf wird ausgeführt, solange die Bedingung im Schleifenkopf true ergibt Programmierung mit C++ Übung 2 Folie Nr. 11 von 21 while Auf Schlüsselwort while folgt nur die Schleifenbedingung; Initialisierung und Veränderung können an anderen Stellen im Code platziert werden ( viel Flexibilität, aber Gefahr der Unübersichtlichkeit) Definition der Schleifenvariable; oft wird auch eine bereits bestehende Variable zur Steuerung der Schleife benutzt. int n = 1; while (n <= 10) { Schleifenbedingung; ergibt sie false, dann wird die Schleife beendet //Anweisungen; n++; } Veränderung der Schleife erfolgt im Schleifenrumpf Programmierung mit C++ Übung 2 Folie Nr. 12 von 21 do while int n = 1; do { //Anweisungen; n++; } while (n <= 10); Der Schleifenrumpf wird mindestens einmal ausgeführt, da die Schleifenbedingung am Ende der Schleife steht Hinter der Bedingung muss ein Semikolon stehen Programmierung mit C++ Übung 2 Folie Nr. 13 von 21 Beispiel: Summe berechnen Summe der Zahlen von 0 bis 100 berechnen Programmierung mit C++ Übung 2 Folie Nr. 14 von 21 Arrays Beispiel: Speicherung eines Temperaturwertes Variable double temperatur Speicherung von drei Temperaturwerten drei Variablen: double temperatur1 double temperatur2 double temperatur3 Speicherung von 1000 Temperaturwerten 1000 Variablen? Lösung: Definition eines Arrays für alle 1000 Werte Name des Arrays Datentyp der enthaltenen Elemente Größe des Arrays in [ ]: Anzahl der Elemente im Array positive ganze Zahl double temperatur[1000] Alle enthaltenen Elemente müssen vom selben Datentyp sein!! Programmierung mit C++ Übung 2 Folie Nr. 15 von 21 Arrays initialisieren Der Name des Arrays darf noch nicht an eine Variable oder ein anderes Array vergeben sein! Auflistung der Werte der einzelnen Elemente im Array in { } int alter[5] = {23, 40, 27, 33, 31}; int alter[] = {23, 40, 27, 33, 31}; Wird eine Initialisierungsliste angegeben, dann kann auf die Größenangabe verzichtet werden Programmierung mit C++ Übung 2 Folie Nr. 16 von 21 Arrays: Zugriff auf Elemente Ein Array vom Typ int mit dem Namen zahlen wird erzeugt. Es hat 10 Elemente. int zahlen[10]; Zugriff auf ein Element durch Angabe der Position in [ ] hinter dem Namen des Arrays Wertzuweisung: dem 6. Element wird der Wert 32 zugewiesen zahlen[5] = 32; Aufpassen!! Das erste Element hat Index 0, Wertzuweisung hier also an 6. Element zahlen[6] = 3 * zahlen[5]; dem 7. Element im Array wird der dreifache Wert des 6. Elements zugewiesen Ein Array hat n Elemente, diese sind von [0] bis [n-1] durchnummeriert Programmierung mit C++ Übung 2 Folie Nr. 17 von 21 Aufgabe 2 Legen Sie eine neue Quelldatei „Array“ in einem Projekt P2_Ü2 (Projektmappe Übung 2) an! Schreiben Sie nun ein Programm, in welchem die Werte der 6 Elemente {7, 1, 4, 3, 2, 5} eines Arrays namens „feld“ a. ausgeben werden; b. der Wert jedes zweiten Elements ausgegeben wird (beginnend mit dem ersten Element); c. nur die Elemente ausgegeben werden, deren Wert gerade ist! Programmierung mit C++ Übung 2 Folie Nr. 18 von 21 Mehrdimensionale Arrays int zahlen[3][10]; // 3 x 10 Matrix Definition einer Matrix zahlen mit drei Zeilen und zehn Spalten alle 30 Elemente sind vom Typ int zahlen[0][9] = 56 // Zeile 1, Spalte 10 Das letzte Element der ersten Zeile erhält den Wert 56 Programmierung mit C++ Übung 2 Folie Nr. 19 von 21 Mehrdimensionale Arrays Wertzuweisung: int arr[2][3] = {{5,3,3},{8,3,4}}; Einer Matrix mit dem Namen arr mit zwei Zeilen und drei Spalten bekommt ihre Werte zugewiesen. Die erste Zeile wird mit den Werten 5, 3, 3 belegt, die zweite Zeile mit 8, 3, 4. Programmierung mit C++ Übung 2 Folie Nr. 20 von 21 Beispiel: Mehrdimensionale Arrays/verschachtelte Schleifen Ein zweidimensionales Array mit dem Namen matrix wird erzeugt und mit den Ziffern von 1 bis 9 belegt. Ausgabe: Programmierung mit C++ Übung 2 Folie Nr. 21 von 21