### Programmieren Crash Kurs --- ### Die Fragen 1. Warum jetzt ausgerechnet **Java**? 1. Warum fangen wir so simpel an? --- ### Struktur eines Programmes Ein Java Programm beginnt in der main Methode ```java class MeineKlasse{ public static void main(String[] args){ // Hier beginnt der Code } } ``` --- ### Ablauf eines Programms Fürs erste fokusieren wir uns auf **procedurale** Programmierung. D.h. jede Arbeitasanweisung wird Schritt für Schritt abgearbeitet. ``` class MeineKlasse{ public static void main(String[] args){ int ersteZahl = 0; // 1. Befehl int zweiteZahl = 1; // 2. Befehl int ergebnis = ersteZahl + zweiteZahl; // 3. Befehl System.out.println(ergebnis); // 4. Befehl; } } ``` i.d.R Endet jede Anweisung mit einem Semicolon (;) --- ### Variablen Variablen von einfachen Datentypen speichern Aussagen(Expressions). Variablen können nur Aussagen Ihres Datentypens speichern ``` boolean my_bool = true; int my_integer = 14; double my_double = 2.4; char my_char = 'H'; ``` --- ### Aufgabe 0 Finde die Fehler ```java class MeineKlasse{ int a = 0; public static void main(String[] args){ int b = 15; int c = 4.0 System.out.println(ergebnis); int ergebnis = a + b + c; } } ``` --- ### Deklarierung und Initialisierung ``` int c; c = 10; int d = 10; ``` ``` int result; // viel Code dazwischen result = kalkulation(); ``` --- ### Aufgabe 1 1. Deklariere die Variable 'c' mit dem Datentyp Integer 2. Initialisiere die Variable 'c' mit dem Wert 0 3. Weise der Variablen 'c' dem Wert 16 zu --- ### Aufgabe 2 1. Erstelle 3 Variablen x,y und z und initialisiere Sie auf beliebige Werte 2. Erstelle 3 Variablen d,m,y und initialisiere Sie auf deinen Geburtstag -> Was fällt dabei auf? --- ### Einfache Datentypen Welche einfache Datentypen kennst du? Erstelle zu jedem eine Variable und einen entsprechenden Wert! Wie unterscheiden sich diese Datentypen? --- ### Unter der Haube (MALLOC) Java reserviert Speicher für jede deklarierte Variable. Die Menge an Speicher ist abhängig von dem jeweiligen Datentypen. ``` int i; // Reserviert 4 byte long l; // Reserviert 8 byte short s; // Reserviert 2 byte char c; // Reserviert 2 byte ``` --- ### Operatoren Auf Datentypen können verschiedene Operationen durchgeführt werden. Den wichtigsten Operator kennst du bereits, den Zuweisungsoperator: ``` int i = 10; ``` Der Zuweisungsoperator nimmt eine **Aussage** (rechts) und weist sie einer Variablen (links) zu. Aussagen und Zuweisungen werden in der **funktionalen** Programmierung sehr wichtig. --- ### Operatoren Auf numerischen Datentypen können eine Vielzahl an mathematischen Operationen durchgeführt werden ``` int i = 10; int j = 15; int k = i + j; // Addition int l = i - j; // Subtraktion int m = i * j; // Multiplikation int n = i / j; // Division int o = i % j; // Modulo int p = i++; // Inkrementieren int q = i--; // Dekrementieren ``` --- ### Operatoren Auf numerischen Datentypen können eine Vielzahl an logischen Operationen durchgeführt werden. ``` int a = 5; int b = 10; boolean c = a > b; // größer boolean d = a < b; // kleiner boolean e = a >= b; // größer gleich boolean f = a <= b; // kleiner gleich boolean g = a == b; // gleich boolean h = a != b; // ungleich ``` --- ### Aufgabe 3 Erstelle einen Algorithmus, welcher überprüft, ob eine Zahl gerade oder ungerade ist. Wenn die Zahl gerade ist, speichere das Ergebnis in einer variablen 'boolean ist_gerade' ab. --- ### Operatoren Auf boolean Werte können logische Operatoren angewendet werden: ``` boolean a = true; boolean b = false; boolean c = a || b; // logisches Oder boolean d = a && b; // logisches Und boolean e = a == b; // gleichheit boolean f = a != b; // ungleichheit boolean g = a | b; // bitweise oder boolean h = a & b; // bitweise und ``` --- ### Kontrollstrukturen Kontrollstrukturen geben dem Programm die Möglichkeit anhand von Daten (State) unterschiedliche Entscheidungen zu treffen ``` java Scanner scanner = new Scanner(System.in); int alter = scanner.nextInt(); if(alter >= 10){ // Programm normal fortsetzen } else { // Normalen programmfluss unterbrachen } ``` --- ### Aufgabe 4 Erstelle ein Programm welches eine Zahl vom Benutzer entgegennimmt. Wenn die Zahl durch 3 Teilbar ist, soll der String "fizz" auf die Kommandozeile ausgegeben werden. Wenn die Zahl durch 5 Teilbar ist, soll der String "buzz" auf die Kommandozeile ausgegeben werden. Wenn die Zahl durch 3 als auch durch 5 Teilbar ist, soll "fizzbuzz" auf die Kommandozeile ausgegeben werden --- ### Kontrollstrukturen Es gibt 2 fundamentale Kontrollstrukturen: Abzweigungnen und Schleifen ```java // Beispiel einer Schleife boolean gesunder_maschinenzustand = true; do{ // Programmfluss gesunder_maschinenzustand = pruefeZustand(); } while(gesunder_maschinenzustand); ``` --- ### Schleifen In Java gibt es 3 Schleifen: for, while, do-while: ```java for(int i = 0; i < 10; i++){ System.out.println(i); } int j = 0; while(j < 10){ System.out.println(j); j++; } int k = 0; do{ System.out.println(k); k++; }while(k < 10); ``` --- ### Aufgabe 5 1. Erstelle ein Programm, welches die Zahlen 1 - 10 ausgibt. 2. Erstelle ein Programm welches die Zahlen 1 - 100 ausgibt. 3. Erstelle ein Programm welches alle geraden Zahlen von 1 bis 100 ausgibt. 4. Erstelle ein Programm, welches alle Zahlen von 1 - 1000 ausgibt, die ein vielfaches von 13 sind. 5. Erstelle ein Programm, welches alle Primzahlen von 1 - 100 ausgibt. --- ### Aufgabe 6 Die Fachschaft Informatik lädt jedes Semester zur Bartour ein. Dafür muss die FSI einige Vorbereitungen Treffen, wie zum Beispiel Getränke einkaufen und diese zur Barrtour mitbringen. Die FSI rechnet dabei mit einer Getränkeflasche für drei Personen. Der FSI Bollerwagen™ kann dabei bis zu 30 Getränken tragen, bis sich Greg die Schulter auskugelt. Desshalb benötigt er des Öfteren Helfer, welche mit FSI Jutebeuteln™ weitere Flaschen tragen. Jeder Jutebeutel kann bis zu 6 Flaschen tragen. Erstelle ein Programm welches die Anzahl an geschätzten Studierenden als Eingabe annimmt und bestimmt, ob Greg Helfer benötigt und wenn ja wie viele!