PR1Crashkurs/Lektion 1.md

5.0 KiB

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

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

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

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

// 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:

	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);