Informatik Vorlesung 03b Wiederholung, Abbruch von Schleifen, switch-anweisung Datentypen, char, formatierte Ausgabe 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1
Ein C++ Programm: Wiederholung #include <iostream> using namespace std; int main() // Der Variablen a a wird der Wert 33 zugewiesen int a = 3; // Ausgabe (der String Geben "Geben Sie Sie " wird ausgegeben) cout << Geben "Geben Sie bitte eine ganze Zahl ein: ein:" << endl; int b; // Eingabe (Tastatureingabe) cin >> b; system ("pause"); return 0; 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 2
Ein C++ Programm: Wiederholung #include <iostream> using namespace std; int main () int a = 5, b = 7; if // (a Der < Variablen b) a wird der Wert 3 zugewiesen int a = 3; cout << "Variable a ist kleiner b"; // Ausgabe (der String Geben Sie wird ausgegeben) else cout << Geben Sie bitte eine ganze Zahl ein: << endl; int b; // cout Eingabe << "Variable (Tastatureingabe) a ist groesser(gleich) b"; cin >> b; system ("pause"); return 0; 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 3
Ein C++ Programm: Wiederholung #include <iostream> using namespace std; int main () // Der Operationen Variablen a wird der Wert 3 zugewiesen int a = 3; 5, b = 7; // a = Ausgabe a + b; (der String // Geben Addition Sie wird ausgegeben) cout b = b << Geben a + 13; Sie bitte // eine Subtraktion ganze Zahl ein: << endl; int a = b; 23 - (a * b) + 9; // Multiplikation // a = Eingabe (a / b) (Tastatureingabe) * 3; // Division cin b = >> a % b; b; // Modulo system ("pause"); return 0; 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 4
Ein C++ Programm: Wiederholung #include <iostream> using namespace std; int main () // Der Schleifen Variablen (while) a wird der Wert 3 zugewiesen int a i = 3; 0; // Wiederhole solange i < 7 // while Ausgabe (i < (der 7) String Geben Sie wird ausgegeben) cout << Geben Sie bitte eine ganze Zahl ein: << endl; intcout b; << i << "-te Runde." << endl; // Eingabe i = i + (Tastatureingabe) 1; // oder i++; cin >> b; system ("pause"); return 0; 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 5
Ein C++ Programm: Wiederholung #include <iostream> using namespace std; int main () // Der Schleifen Variablen (do...while) a wird der Wert 3 zugewiesen int a i = 3; 0; // Die Bedingung wird erst nach der Iteration überprüft // do Ausgabe (der String Geben Sie wird ausgegeben) cout << Geben Sie bitte eine ganze Zahl ein: << endl; intcout b; << i << "-te Runde." << endl; // Eingabe i = i + (Tastatureingabe) 1; // oder i++; cin >> b; while (i < 7); // Wiederhole solange i < 7 system ("pause"); return 0; 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 6
Ein C++ Programm: Wiederholung #include <iostream> using namespace std; int main () // Der Variablen a wird der Wert 3 zugewiesen // Schleifen (for) int a = 3; int i; // Wiederhole solange i < 7 // Ausgabe (der String Geben Sie wird ausgegeben) for (i = 0; i < 7; i++) cout << Geben Sie bitte eine ganze Zahl ein: << endl; int b; cout << i << "-te Runde." << endl; // Eingabe (Tastatureingabe) cin >> b; system ("pause"); return 0; 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 7
Abbruch von Schleifen Es gibt zwei Möglichkeiten, die zu einem Abbruch der Schleifendurchläufe führen: Die Anweisung continue im Schleifenkern beendet den aktuellen Durchlauf und fährt mit dem nächsten Durchlauf fort. Die Anweisung break im Schleifenkern beendet die komplette Schleife und springt zur ersten Anweisung nach der Schleife. cout << "Zahlen: "; for (int i = 0; i <= 5; i++) if (i == 3) continue; cout << i << ", "; Ausgabe: Zahlen: 0, 1, 2, 4, 5, cout << "Zahlen: "; for (int i = 0; i <= 5; i++) if (i == 3) break; cout << i << ", "; Ausgabe: Zahlen: 0, 1, 2, 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 8
Verzweigung: Mehrfachauswahl Mehrfachverzweigung (switch): switch (<Ausdruck>) case <Wert_1>: <Aktion_1> break; case <Wert_2>: <Aktion_2> break;... default: <Aktion_N> break; Beispiel: int tag;... switch (tag) case 1: cout << "Montag"; break; case 2: cout << "Dienstag"; break;... default: cout << "???"; break; 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 9
Verzweigung: Mehrfachauswahl Mehrfachverzweigung (switch): Sind die Fälle (case) eindeutig, so muss unbedingt nach den einzelnen Anweisungsblöcken eine break-anweisung stehen! Diese bewirkt einen Sprung ans Ende der switch-anweisung. Fehlt die break-anweisung, so läuft das Programm einfach in den nächsten Fall hinein. <Ausdruck> muss ganzzahlig sein (Typ int oder char). Reelle Zahlen und Zeichenketten sind nicht erlaubt! <Wert_1> <Wert_2> (Beispielprogramme werden in der Vorlesung gezeigt.) 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 10
Variablen & einfache Datentypen Art Datentyp Englisch ganze Zahlen int integer reelle Zahlen float double floating point double precision Einzelzeichen char character Wahrheitswert bool nach George Boole Syntax: <datentyp> <variablenliste>; Beispiele: int anzahl; int var_1, zaehler, studi; float prozent; double gehalt; 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 11
Einschub: Datentyp char Eine char-variable ist 1 Byte groß und enthält einen Wert im Bereich 0... 255 (oder -128... 127). Sie kann als Zahl oder als Zeichen interpretiert werden. ASCII-Code 0...31 127 32...47 58...64 91...96 123...126 Zeichen Steuerzeichen (nicht darstellbar) (z. B. neue Zeile) Escape-Sequenzen Sonderzeichen (z. B. +, -,!, #, etc.) 48...57 0, 1,...,9 65...90 A,B,...,Z 97...122 a,b,...,z 128...255 erweiterter Zeichensatz (z. B. Umlaute, graphische Zeichen, etc.) 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 12
Einschub: Datentyp char Steuerzeichen und einige andere Zeichen können als so genannte Escape- Sequenz (Zeichen '\' + weiteres Zeichen) eingegeben werden: Escape- Sequenz ASCII-Code dezimal hexadezimal Bedeutung \a 7 0x07 Bell (Piepzeichen) \b 8 0x08 Backspace (1 Position zurück) \f 12 0x0C Formfeed (Seitenvorschub) \n 10 0x0A Linefeed (neue Zeile) \r 13 0x0D Carriage return (Zeilenanfang) \t 9 0x09 Tabulator (horizontal) \\ 92 0x5C Backslash (entwertet) \' 44 0x2C Single quote (entwertet) \" 34 0x22 Double quote (entwertet) \0 0 0x00 Null-Zeichen (String-Ende) wichtig 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 13
Wiederholung: Ein- / Ausgabe Erfolgt mittels vordefinierter Ein- und Ausgabe-Streams (Stream, engl. = Strom): cin: Eingabe über Tastatur cout: Ausgabe auf Bildschirm cerr: Fehlermeldungen clog: Zusatz-informationen (logging) Die eigentliche Ein- und Ausgabe geschieht durch Angabe des jeweiligen Streams und durch Verwendung der Operatoren: >> (Eingabe) << (Ausgabe) Die Datei/Bibliothek iostream muss in das Programm eingebunden werden: #include <iostream> Die Streams sind in einem sogenannten "Namespace" mit dem Namen std definiert. Programm muss festlegen, dass dieser benutzt wird: using namespace std; 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 14
Ein- und Ausgabe: Manipulatoren Manipulatoren formatieren die Ein- und Ausgabe. Sie werden wie Ausdrücke/Variablen in die Ein- und Ausgabekette eingefügt. Manipulatoren sind in einer eigenen Datei definiert iomanip. #include <iomanip> muss in das Programm eingefügt werden. Beispiele: Die Manipulatoren endl und flush bewirken eine Ausgabe. setw() beeinflusst nur die unmittelbar nächste Ausgabe. int i = 23; float f = 11.234567; cout << '*' << setw (5) << i << i; cout << f; cout << scientific << f; cout << setprecision (4) << f; cout << fixed << setprecision (4) << f; cout << scientific << setprecision (4) << f; cout << i << endl << i; cout << hex << i << ' ' << dec << i; cout << setw (6) << left << i << endl << setw (6) << right << i; Ausgabe: * 2323 11.2346 1.123457e+001 1.1235e+001 11.2346 1.1235e+001 23 23 17 23 23 23 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 15
Manipulatoren: die wichtigsten Manipulator cin cout Beschreibung setw(n) X X Feldbreite n (nur nächste Ausgabe) setprecision(n) X n Ziffern insgesamt, mit fixed oder scientific nach dem Decimalpunkt (nur für reelle Zahlen) fixed X Format xxx.xx ohne Exponent (nur für reelle Zahlen) scientific X Format x.xxxexx mit Exponent (nur für reelle Zahlen) setbase(n) X Integer zur Basis n (nur für ganze Zahlen) dec X X Dezimal Standard (nur für ganze Zahlen) hex X X Hexadezimal (nur für ganze Zahlen) oct X X Oktal (nur für ganze Zahlen) setfill(c) X Zeichen c zum Füllen verwenden left X Linksbündig right X Rechtsbündig (Standard) flush X Ausgabepuffer anzeigen endl X '\n' ausgeben und Ausgabepuffer anzeigen skipws / noskipws X Trennzeichen überlesen / nicht überlesen beim Einlesen der Zeichen 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 16
Ende Vielen Dank! 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 17