Brückenkurs Programmieren Verzweigungen, Operatoren, Schleifen, Arrays Christopher Schölzel Technische Hochschule Mittelhessen 01.10.2013 Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 1 / 39
Inhalt 1 Wiederholung 2 Verzweigungen If-Abfrage Ternärer Operator 3 Operatoren Logische Ausdrücke Logische Operatoren Arithmetische Operatoren 4 Schleifen While For 5 Arrays 6 Zusammenfassung Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 2 / 39
Inhalt Wiederholung 1 Wiederholung 2 Verzweigungen If-Abfrage Ternärer Operator 3 Operatoren Logische Ausdrücke Logische Operatoren Arithmetische Operatoren 4 Schleifen While For 5 Arrays 6 Zusammenfassung Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 3 / 39
Wiederholung Wiederholung Hardware vs Software Werkzeuge Variablen Compiler, Interpreter, IDE Variable ˆ= Schublade Denition: var x = 1; Schreibtischtest Algorithmus Algorithmus ˆ= Kochrezept Pseudocode If-Abfrage Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 4 / 39
Variablen Wiederholung Variablen verweisen auf eine bestimmte Stelle im (Arbeits-) Speicher. Sie funktionieren wie Behälter für bestimmte Gegenstände. Javascript var x = 1; var harrie = "Harrie"; var switch = true; var PI = 3.1415; Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 5 / 39
Zuweisungen Wiederholung Javascript var x = 1; x = x + 1; Eine Zuweisung ist ein Befehl der das Gleichzeichen verwendet. Er weist einer Speicherstelle auf der linken Seite einen Wert zu, der auf der rechten Seite steht. Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 6 / 39
Wiederholung Zuweisungen: L-Werte, R-Werte Variablen haben unterschiedliche Bedeutung in einer Zuweisung, je nach dem ob sie links (L-Wert) oder rechts vom Gleichzeichen (R-Wert) stehen. L-Wert: Verweis auf Speicherstelle x var x = 1; x = x + 41; R-Wert: Inhalt von Speicher an Stelle x Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 7 / 39
Anweisungen Wiederholung Eine Anweisung (engl. statement) stellt einen Befehl an den Computer dar. Anweisungen werden durch Semikolon voneinander getrennt. Javascript var x = 1; x = x + 1; var y = 10; y = x + y; x = -10; 3+x; //wird ausgerechnet, hat aber keinen Effekt Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 8 / 39
Inhalt Verzweigungen 1 Wiederholung 2 Verzweigungen If-Abfrage Ternärer Operator 3 Operatoren Logische Ausdrücke Logische Operatoren Arithmetische Operatoren 4 Schleifen While For 5 Arrays 6 Zusammenfassung Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 9 / 39
Verzweigungen: If Verzweigungen If-Abfrage Javascript if (ziel == "Frankfurt") { abbiegen = true; } Was ist eine If-Abfrage? If-Abfrage ˆ= Weiche Bedingte Ausführung von Befehlen Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 10 / 39
If-Abfrage: Syntax Verzweigungen If-Abfrage Syntax if (<Bedingung>) { <Anweisungsblock> } else { <Anweisungsblock> } Javascript if (x == 0) { println("kernschmelze eingeleitet, das hast du jetzt davon!"); } else { println("4 geteilt durch "+x+" ist "+(4/x)); } Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 11 / 39
Verzweigungen If-Abfrage If-Abfrage mit mehr als 2 Fällen Syntax if (<Bedingung>) { <Anweisungsblock> } else if (<Bedingung>) { <Anweisungsblock> }... } else (<Bedingung>) { <Anweisungsblock> } Javascript if (pqrad == 0) { println("eine Lösung"); } else if (pqrad > 0) { println("zwei Lösungen"); } else { //pqrad ist negativ println("keine Lösung"); } Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 12 / 39
Ternärer Operator Verzweigungen Ternärer Operator Aufgabe: Bestimme den Betrag der Variable x. Javascript if (x < 0) { betrag = -x; } else { betrag = x; } Fünf Zeilen und so viele Klammern... das geht doch auch einfacher! Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 13 / 39
Verzweigungen Ternärer Operator: Syntax Ternärer Operator Gewünschte Aussage "Die Variable betrag hat den Wert -x falls x kleiner als 0 ist und ansonsten den Wert x." Syntax <Bedingung>? <Wert> : <Wert>; Javascript betrag = x < 0? -x : x; Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 14 / 39
Inhalt Operatoren 1 Wiederholung 2 Verzweigungen If-Abfrage Ternärer Operator 3 Operatoren Logische Ausdrücke Logische Operatoren Arithmetische Operatoren 4 Schleifen While For 5 Arrays 6 Zusammenfassung Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 15 / 39
Operatoren Logische Ausdrücke Bedingungen / Logische Ausdrücke Was ist eigentlich alles eine Bedingung? Bedingungen sind logische Ausdrücke, das heiÿt Anweisungen die einen Wahrheitswert liefern (true oder false). Beispiele: true 3 < 4 4 <= 4 1 == 1 2+1!= 4 Beispiele: false 3 > 4 5 <= 4 1 == 2 2+1!= 4-1 Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 16 / 39
Operatoren Logische Ausdrücke Logische Ausdrücke: Stolperfallen Vorsicht! Computer macht Rundungsfehler Vergleich von Flieÿkommazahlen ist nie exakt Javascript var a = 0.0000000001; var b = a+a+a+a+a+a+a+a+a+a; var c = 10*a; println(b == c); //Ausgabe: false println(math.abs(b-c) < 0.00000000000000001); //Ausgabe: true Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 17 / 39
Logische Operatoren Operatoren Logische Operatoren Ein Operator ist ein durch ein Symbol dargestelltes Werkzeug um grundlegende Rechenanweisungen auszuführen. Logische Operatoren errechnen einen Wahrheitswert aus anderen Werten (und bilden damit logische Ausdrücke). Name Syntax Beispiel Bemerkungen gleich <Zahl> == <Zahl> 1 == 1 Achtung Flieÿkomma! gleich <String> == <String> 'Ja' == 'Ja' nicht in allen Sprachen! ungleich <Zahl>!= <Zahl> 1!= 1 Achtung Flieÿkomma! ungleich <String>!= <String> 'Ja'!= 'Ja' nicht in allen Sprachen! gröÿer <Zahl> > <Zahl> 1 > 0.5 gröÿer-gleich <Zahl> >= <Zahl> 4 >= 1 kleiner <Zahl> < <Zahl> 1 < 0.5 kleiner-gleich <Zahl> <= <Zahl> 4 <= 5 Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 18 / 39
Operatoren Logische Operatoren Logische Operatoren: Verknüpfungen Logischer Ausdruck Der Wert von x liegt zwischen 0 und 10. Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 19 / 39
Operatoren Logische Operatoren Logische Operatoren: Verknüpfungen Logischer Ausdruck Der Wert von x ist gröÿer als 0 und kleiner als 10. Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 19 / 39
Operatoren Logische Operatoren Logische Operatoren: Verknüpfungen Logischer Ausdruck Der Wert von x ist gröÿer als 0 und kleiner als 10. Um kompliziertere Bedingungen auszudrücken gibt es auch Operatoren, die logische Ausdrücke negieren oder miteinander verknüpfen können: Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 19 / 39
Operatoren Logische Operatoren Logische Operatoren: Verknüpfungen Logischer Ausdruck Der Wert von x ist gröÿer als 0 und kleiner als 10. Um kompliziertere Bedingungen auszudrücken gibt es auch Operatoren, die logische Ausdrücke negieren oder miteinander verknüpfen können: Name Syntax Beispiel Bemerkungen und <Ausdruck> && <Ausdruck> x > 0 && x < 10 oder <Ausdruck> <Ausdruck> x < 0 x > 10 nicht!<ausdruck>!(x < 10) Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 19 / 39
Operatoren Arithmetische Operatoren Arithmetische Operatoren Arithmetische Operatoren ermitteln das Ergebnis einer Rechnung (i.d.r ein Zahlenwert). Name Syntax Beispiel Bemerkungen Negation -<Zahl> -10 Addition <Zahl> + <Zahl> x + 10 Konkatenation <Str.> + <Str.> 'J'+'a' Subtraktion <Zahl> - <Zahl> 4-5.3 Multiplikation <Zahl> * <Zahl> 10 * 4 Division <Zahl> / <Zahl> 10 / 3 Ganzzahl- vs Flieÿkommadivision Modulo <Zahl> % <Zahl> x % 3 Rest der Ganzzahldivision (7 % 3 = 1) Inkrement <Variable>++ x++ erhöht Inhalt und gibt ihn zurück Dekrement <Variable>-- y-- senkt Inhalt und gibt ihn zurück Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 20 / 39
Inhalt Schleifen 1 Wiederholung 2 Verzweigungen If-Abfrage Ternärer Operator 3 Operatoren Logische Ausdrücke Logische Operatoren Arithmetische Operatoren 4 Schleifen While For 5 Arrays 6 Zusammenfassung Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 21 / 39
Schleifen Schleifen While Aufgabe Bilde die Summe aller ganzen Zahlen von 1 bis 100. Bisher: Eine Programmzeile pro Rechenoperation. Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 22 / 39
Schleifen Schleifen While Aufgabe Bilde die Summe aller ganzen Zahlen von 1 bis 100. Bisher: Eine Programmzeile pro Rechenoperation. var zahl = 1; var sum = 1; sum = sum + zahl zahl; = zahl + 1; sum = sum zahl + zahl; = zahl + 1; zahl sum = zahl sum + 1; zahl; zahl = zahl sum + = 1; sum + zahl; zahl = zahl + sum 1; = sum + zahl; = zahl + sum 1; = sum + zahl; zahl = zahl + sum 1; = sum + zahl; zahl = zahl zahl = zahl + sum + 1; 1; = sum + zahl; zahl = zahl + sum = sum zahl + zahl; = zahl + 1; zahl 1; = zahl + 1; sum = sum + zahl = zahl + sum 1; = sum + zahl; sum zahl; = sum + zahl; zahl = zahl + sum 1; = sum + zahl; zahl = zahl sum + = 1; sum + zahl; sum zahl = sum zahl + zahl; 1; sum = sum zahl + = zahl; zahl + sum 1; = sum + zahl; zahl = zahl zahl + 1; = zahl + 1; sum = sum zahl + = zahl; zahl + 1; sum = sum sum = sum sum + zahl; = sum + zahl; zahl + zahl; = zahl + 1; zahl = zahl + sum 1; = sum + zahl; zahl = zahl + sum 1; = sum + zahl; sum = sum zahl + = zahl; + 1; zahl sum = = zahl sum + + 1; zahl; = zahl + 1; zahl = zahl sum + 1; = sum + zahl; zahl = zahl zahl + 1; = zahl + sum 1; = sum + zahl; sum = sum sum + zahl; = sum + zahl; zahl = zahl zahl + 1; = zahl + 1; sum = sum sum + zahl; = sum = zahl + zahl; + 1; zahl = zahl zahl + 1; = zahl + 1; sum = sum sum + = zahl; sum + zahl; sum = sum + zahl zahl; = zahl + 1; println(sum); Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 22 / 39
Schleifen: While Schleifen While Eine Schleife (engl. Loop) erlaubt die wiederholte Ausführung eines Anweisungsblocks bis eine Abbruchbedingung erfüllt ist. Syntax while (<Bedingung>) { <Anweisungsblock> } Javascript var summe = 0; var zahl = 1; while (zahl <= 100) { summe = summe + zahl; zahl++; } Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 23 / 39
Schleifen While While: Anschauliches Beispiel ;) Beispiel aus dem (studentischen) Leben: Solange du dich noch nicht am Boden festhalten musst, trinke ein weiteres Bier. Javascript var gleichgewichtok = true; var alkoholpegel = 0; while (gleichgewichtok) { alkoholpegel = alkoholpegel + 1; if (alkoholpegel > 10) { gleichgewichtok = false; } } Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 24 / 39
While: Endlosschleife Schleifen While Frage: Was passiert, wenn die Abbruchbedingung nie erfüllt wird? Javascript var gleichgewichtok = true; var alkoholpegel = 0; while (gleichgewichtok) { alkoholpegel = alkoholpegel + 1; } Javascript var summe = 0; var zahl = 1; while (zahl <= 100) { summe = summe + zahl; } Antwort: Der Computer hört nie auf zu rechnen! Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 25 / 39
Schleifen: For Schleifen For Oft möchte man in einer Schleife einen Zähler verwenden und man weiÿ von Anfang an schon wie oft die Anweisungen in der Schleife ausgeführt werden sollen. Bauen wir doch einen Zähler direkt in das Schleifenkonstrukt ein! Syntax for (<Initialisierung>; <Bedingung>; <Schrittanweisung>) { <Anweisungsblock> } Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 26 / 39
For: Beispiel Schleifen For Javascript var summe = 0; for (var zahl=1; zahl <= 100; zahl++) { summe += zahl; } Weiterer Vorteil: Schleifenkopf zeigt Anzahl der Durchläufe Endlosschleife sofort erkennbar Aber: Zählvariable könnte in Schleife verändert werden Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 27 / 39
Schleifenkontrolle Schleifen For Was passiert, wenn in der Schleife ein Fehler passiert, oder man manche Werte überspringen möchte? Befehle zur Schleifenkontrolle: continue; springt sofort zur nächsten Schleifenausführung break; beendet die Schleife sofort Javascript var summe = 0; for (var zahl=1; zahl <= 100; zahl++) { if (zahl % 2 == 0) {continue;} //überspringe gerade Zahlen if (summe > 100) {break;} summe += zahl; } Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 28 / 39
Inhalt Arrays 1 Wiederholung 2 Verzweigungen If-Abfrage Ternärer Operator 3 Operatoren Logische Ausdrücke Logische Operatoren Arithmetische Operatoren 4 Schleifen While For 5 Arrays 6 Zusammenfassung Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 29 / 39
Arrays Arrays Was macht man, wenn ein Programm viele Werte speichern muss? viele Werte speichern viele Variablen denieren genauso unpraktikabel wie Schleifen auszuschreiben Anzahl benötigter Variablen evtl. zu Beginn unbekannt Variable von variabler Gröÿe benötigt Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 30 / 39
Arrays Arrays: Denition, Zuweisung, Zugri Ein Array ist eine Variable, die mehrere Werte gleichzeitig enthalten kann. Javascript: Denition var a = []; var b = [1,2,4]; Javascript: Zuweisung a[0] = 1; a[1] = "zwei"; a[1+1] = 3.4; Javascript: Zugri var x = a[0]; println(a[x+1]); Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 31 / 39
Array als Schrank Arrays Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 32 / 39
Arrays Arrays: Methoden und Eigenschaften Weitere Methoden und Eigenschaften von Arrays var i = a.indexof(1); speichert die (erste) Stelle von a an der der Wert 1 steht in i (-1 falls der Wert nicht im Array vorkommt) var l = a.length; speichert die aktuelle Länge von a in l a.push(5); hängt den Wert 5 hinten an das Array an var last = a.pop(); entfernt den hintersten Wert von a und speichert ihn in last Hinweis In vielen Sprachen (z.b. Java, C++) haben Arrays strengere Regeln. Zum Beispiel ist dort die Gröÿe eines Arrays nach der Erstellung unveränderlich. Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 33 / 39
Arrays Arrays: Strings Wir haben schon eine Art von Arrays kennengelernt: Ein String entspricht einem Array von einzelnen Zeichen, das nicht verändert werden kann. Javascript var s = "Deine Butter ist ranzig"; var ls = s.length; var i = s.indexof("b"); var i2 = s.indexof("ranzig"); s[5] = "M"; //hat keinen Effekt s.pop(); //Fehler! s.push("!"); //Fehler! Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 34 / 39
Arrays Arrays: Beispielaufgabe Aufgabe Deniere ein Array mit den Werten 1,2,3,4,5 und gebe jeden Wert des Arrays in einer eigenen Zeile aus. Benutze dazu eine for-schleife. Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 35 / 39
Arrays Arrays: Beispielaufgabe Aufgabe Deniere ein Array mit den Werten 1,2,3,4,5 und gebe jeden Wert des Arrays in einer eigenen Zeile aus. Benutze dazu eine for-schleife. Javascript a = [1,2,3,4,5]; for (var i = 0; i < a.length; i++) { println(a[i]); } Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 35 / 39
Arrays Iteration über Arrays: For-in Es kommt häug vor, dass man irgendeine Anweisung für alle Elemente in einem Array durchführen will. Die for-in-schleife vereinfacht das schreiben solcher Programme. Syntax for (<Variable> in <Array>) { <Anweisungsblock> } Javascript var a = [1,2,3,4,5]; for (var i in a) { println(a[i]); } Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 36 / 39
Inhalt Zusammenfassung 1 Wiederholung 2 Verzweigungen If-Abfrage Ternärer Operator 3 Operatoren Logische Ausdrücke Logische Operatoren Arithmetische Operatoren 4 Schleifen While For 5 Arrays 6 Zusammenfassung Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 37 / 39
Zusammenfassung Zusammenfassung Verzweigungen If ˆ= Weiche Ternärer Operator Operatoren Logische Operatoren Arithmetische Operatoren Schleifen Arrays While For, For-in Schleifenkontrolle, Endlosschleife speichert mehrere Werte gleichzeitig Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 38 / 39
Danke für Ihre Aufmerksamkeit... noch Fragen? Christopher Schölzel (THM) Brückenkurs Programmieren 01.10.2013 39 / 39