227 lines
5.0 KiB
Markdown
227 lines
5.0 KiB
Markdown
### Programmieren Crash Kurs
|
|
---
|
|
### Die Fragen
|
|
1. Warum jetzt ausgerechnet Java?
|
|
2. 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
|
|
}
|
|
```
|
|
---
|
|
### 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);
|
|
```
|
|
|
|
---
|
|
|
|
### Aufgabe 4
|
|
|
|
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.
|
|
---
|
|
|
|
### 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);
|
|
|
|
``` |