0% fanden dieses Dokument nützlich (0 Abstimmungen)
0 Ansichten78 Seiten

03 MethodsControlStructures

Der Programmierkurs I vermittelt grundlegende Kenntnisse in der strukturierten Programmierung, einschließlich der Verwendung von Methoden und Kontrollstrukturen. Die Teilnehmer lernen, wie man Code organisiert, Methoden definiert und aufruft, sowie den Programmfluss durch Bedingungen zu steuern. Der Kurs umfasst auch die Bedeutung von Sichtbarkeit von Variablen und die Verwendung von JavaDoc zur Dokumentation von Methoden.

Hochgeladen von

yuanjunchen90
Copyright
© All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
0% fanden dieses Dokument nützlich (0 Abstimmungen)
0 Ansichten78 Seiten

03 MethodsControlStructures

Der Programmierkurs I vermittelt grundlegende Kenntnisse in der strukturierten Programmierung, einschließlich der Verwendung von Methoden und Kontrollstrukturen. Die Teilnehmer lernen, wie man Code organisiert, Methoden definiert und aufruft, sowie den Programmfluss durch Bedingungen zu steuern. Der Kurs umfasst auch die Bedeutung von Sichtbarkeit von Variablen und die Verwendung von JavaDoc zur Dokumentation von Methoden.

Hochgeladen von

yuanjunchen90
Copyright
© All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen

Programmierkurs I

Herzlich Willkommen

Dr. Johannes Fuchs


Programmierkurs I
Ziele/Inhalte
1. Sie können ihren Code semantisch strukturieren.
2. Sie verstehen die Notwendigkeit Methoden zu verwenden
und können unterschiedliche Arten programmieren.
3. Sie können den sequentiellen Programmfluss mittels
Kontrollstrukturen lenken.
4. Sie können die Sichtbarkeit von Variablen deuten.

Lernziele
Folie: 11
1. Methoden
– (un)parametrisiert
– Mit/ohne Rückgabewert
– Sichtbarkeit von Variablen (method scope)
2. Kontrollstrukturen
– if else
– switch case
– Sichtbarkeit von Variablen (block scope)

Inhaltsverzeichnis
Folie: 12
Programmierkurs I
Methoden
public class Application
{
public static void main(String[] args)
{
//Start des Programms

[Link]("Hello World");

//Ende des Programms


}
}

Methoden - main
Folie: 14
Folie: 15
16
17
public class Application
{
public static void main(String[] args)
{
//Start des Programms
printMethode();
//Ende des Programms
}
public static void printMethode()
{
[Link]("Hello World");
}
}

Methodenaufruf/deklaration
Folie: 18
public class Application
{
public static void main(String[] args)
{
//Start des Programms
printMethode();
//Ende des Programms
}
Kopf/Signatur
public static void printMethode()
{
[Link]("Hello World");
}
}

Methodenaufruf
Folie: 19
public class Application
{
public static void main(String[] args)
{
//Start des Programms
printMethode();
//Ende des Programms
} später (Kapitel Objektorientierung)
public static void printMethode()
{
[Link]("Hello World");
}
}

Methodenaufruf
Folie: 20
public class Application
{
public static void main(String[] args)
{
//Start des Programms
printMethode();
//Ende des Programms
} Rückgabewert
public static void printMethode()
{
[Link]("Hello World");
}
}

Methodenaufruf
Folie: 21
public class Application
{
public static void main(String[] args)
{
//Start des Programms
printMethode();
//Ende des Programms
} Bezeichner
public static void printMethode()
{
[Link]("Hello World");
}
}

Methodenaufruf
Folie: 22
public class Application
{
public static void main(String[] args)
{
//Start des Programms
printMethode();
//Ende des Programms
} Übergabeparameter
public static void printMethode()
{
[Link]("Hello World");
}
}

Methodenaufruf
Folie: 23
public class Application
{
public static void main(String[] args)
{
//Start des Programms
printMethode();
//Ende des Programms
}
public static void printMethode()
{
[Link]("Hello World"); Rumpf
}
}

Methodenaufruf
Folie: 24
• Bestehen aus einem Kopf und einem Rumpf.
• Kopf gleicht einer Überschrift.
– Rückgabetyp
– Bezeichner der Methode
– Übergabeparameter
• Im Rumpf werden die Java-Anweisungen festgelegt.

Methoden - Aufbau
Folie: 25
public class Application
{
public static void main(String[] args)
{
//Start des Programms
printMethode();
//Ende des Programms
} Übergabeparameter
public static void printMethode()
{
[Link]("Hello World");
}
}

Methoden - Parameter
Folie: 26
public class Application
{
public static void main(String[] args)
{
//Start des Programms
printMethode("Hello World");
//Ende des Programms
}
public static void printMethode(String text)
{
[Link](text);
}
}

Methoden - Parameter
Folie: 27
public static void main(String[] args)
{
//Start des Programms
rectangleArea();
//Ende des Programms
}

public static void rectangleArea()


{
int height = 5;
int width = 10;
int area;
area = height * width;
}

Methoden – Parameter – Beispiel


Folie: 28
public static void main(String[] args)
{
//Start des Programms
rectangleArea(2, 3);
//Ende des Programms
}

public static void rectangleArea(int height, int width)


{
int area;
area = height * width;
}

Methoden – Parameter – Beispiel


Folie: 29
public static void main(String[] args)
{
//Start des Programms
rectangleArea(2, 3);
//Ende des Programms
}

public static int rectangleArea(int height, int width)


{
int area;
area = height * width;
return area;
}
Nach dem return-Statement darf kein
Code im gleichen Block mehr stehen.

Methoden - Rückgabewerte
Folie: 30
public static void main(String[] args)
{
//Start des Programms
int result = rectangleArea(2, 3);
//Ende des Programms
}

public static int rectangleArea(int height, int width)


{
int area;
area = height * width;
return area;
}
Code

Methoden - Rückgabewerte
Folie: 31
public static void main(String[] args)
{
//Start des Programms
boolean nandGate = nAnd(true, false);
//Ende des Programms
}

public static boolean nAnd(boolean a, boolean b)


{
boolean result;
result = !(a && b);
return result;
}

Methoden – Rückgabewerte – Beispiel


Folie: 32
public static void main(String[] args)
{
//Start des Programms
int result = rectangleArea(2, 3);
double result2 = rectangleArea(1.5, 4.2);
//Ende des Programms
}
public static int rectangleArea(int height, int width)
{
return height * width;
}
public static double rectangleArea(double height, double width)
{
return height * width;
}

Methoden – Überladen
Folie: 33
public static void main(String[] args)
{
//Start des Programms
int result = rectangleArea(2, 3);
double result2 = rectangleArea(1.5, 4.2);
//Ende des Programms
}
public static int rectangleArea(int height, int width)
{
return height * width; Bezeichner sind identisch
}
public static double rectangleArea(double height, double width)
{
return height * width;
}

Methoden – Überladen
Folie: 34
public class Application
{
public static void main(String[] args)
{
//Start des Programms
[Link]("Verhaften Sie die ueblichen Verdaechtigen!");
[Link](true);
[Link](145);
[Link]();
//Ende des Programms
}
}

Methoden – Überladen
Folie: 35
public static void main(String[] args)
{
//Start des Programms
[Link](args[0]);
//Ende des Programms
}

Code

Methoden - Parameter
Folie: 36
public static void main(String[] args)
{
//Start des Programms Array (Kapitel Schleifen)
[Link](args[0]);
//Ende des Programms
}

Methoden - Parameter
Folie: 37
Methoden - Parameter
Folie: 38
Methoden - Parameter
Folie: 39
args[0]
args[1]

Methoden - Parameter
Folie: 40
public static void main(String[] args)
{
//Start des Programms
int result = rectangleArea(2, 3);
//Ende des Programms
}
public static int rectangleArea(int height, int width)
{
return height * width;
}

Methoden – Warum Parameter und Rückgabewerte


Folie: 41
Lokale Variablen

public static void main(String[] args)


{
//Start des Programms
int result = rectangleArea(2, 3);
Lokale Variablen //Ende des Programms
}
public static int rectangleArea(int height, int width)
{
return height * width;
}
Lokale Variablen

Methoden – Warum Parameter und Rückgabewerte


Folie: 42
Lokale Variablen

public static void main(String[] args)


{
//Start des Programms
int result = rectangleArea(2, 3);
//Ende des Programms
}
public static int rectangleArea(int height, int width)
{
return height * width;
}

Methoden – Warum Parameter und Rückgabewerte


Folie: 43
public static void main(String[] args)
{
Lokale Variablen //Start des Programms
int result = rectangleArea(2, 3);
//Ende des Programms
}
public static int rectangleArea(int height, int width)
{
return height * width;
}

Methoden – Warum Parameter und Rückgabewerte


Folie: 44
public static void main(String[] args)
{
//Start des Programms
int result = rectangleArea(2, 3);
//Ende des Programms
}
public static int rectangleArea(int height, int width)
{
return height * width;
}
Lokale Variablen

Methoden – Warum Parameter und Rückgabewerte


Folie: 45
public static void main(String[] args)
{
//Start des Programms
int result = rectangleArea(2, 3);
//Ende des Programms
}
public static int rectangleArea(int height, int width)
{
int result = height * width;
return result;
}

Methoden – Warum Parameter und Rückgabewerte


Folie: 46
public static void main(String[] args)
{
//Start des Programms
int result = rectangleArea(2, 3);
//Ende des Programms
2
}
unterschiedliche
public static int rectangleArea(int height, int width)
lokale Variablen
{
int result = height * width;
return result;
}

Methoden – Warum Parameter und Rückgabewerte


Folie: 47
int start = 0;
[Link]("1. Value of start: " + start);
methodFirst();
[Link]("2. Value of start: " + start);
methodSecond(start);
[Link]("4. Value of start: " + start);
[Link]("6. Value of start: " + methodThird(start));

Code

Method Scope
Folie: 48
public static void main(String[] args)
{
int a = 0;
increment(a);
a = incrementReturn(incrementReturn(a));
[Link]("a: " + a);
}
public static void increment(int a)
{
a = a + 1;
}
public static int incrementReturn(int a) A=0
{
a = a + 1;
B=1
return a; C=2
}
D=3
Hands-On-Session
Folie: 49
• Schreiben Sie zu jeder Methode einen passenden JavaDoc.
• Der JavaDoc beinhaltet Informationen über den:
– Inhalt: was macht die Methode?
– Übergabeparameter: was muss ich der Methode mitgeben, damit sie
korrekt funktioniert?
– Rückgabewert: was liefert mir die Methode?

• Weitere Informationen finden Sie hier:


[Link]

Methoden – JavaDoc
Folie: 50
/**
* This method calculates the area of a rectangle.
*
* @param height - the height of the rectangle
* @param width - the width of the rectangle
* @return the area of the rectangle as integer
*/
public static int rectangleArea(int height, int width)
{
return height * width;
}

Methoden – JavaDoc – Beispiel


Folie: 51
Programmierkurs I
Kontrollstrukturen
• Verzweigungen steuern den Programmfluss.
• Sie gehören deshalb zu den Kontrollstrukturen eines
Programms Aufstehen

Zähne putzen

nein ja
Kaffee trinken Hunger? Müsli essen

Verzweigungen / Bedingungen
Folie: 53
• Größer (>)
• Kleiner (<)
• Größer-gleich (>=)
• Kleiner-gleich (<=)
• Gleichheit (==) int a = 10;
int b = 20;
• Ungleichheit (!=)
boolean result = a == b;
boolean result = a = b;
Kompilierfehler

Vergleichsoperatoren (RECAP)
Folie: 54
• Nicht (!a)
• Und (a && b)
• Oder (a || b)
• Xor (a ^ b)
boolean a boolean b !a a && b a || b a^b
true true false true true false
true false false false true true
false true true false true true
false false true false false false

Logische Operatoren (RECAP)


Folie: 55
boolean isChecked = true;
char state;

if(isChecked == true)
{
state = '+';
}
else
{
state = '-';
}

If - Verzweigung
Folie: 56
boolean isChecked = true;
char state;

if(isChecked == true) Verzweigung: das Statement ist wahr


{
state = '+';
}
else
{
state = '-';
}

If - Verzweigung
Folie: 57
boolean isChecked = true;
char state;

if(isChecked == true)
{
state = '+';
}
else Verzweigung: das Statement ist falsch
{
state = '-';
}

If - Verzweigung
Folie: 58
boolean isChecked = true;
char state;

if(isChecked == true)
{
state = '+'; 1. Block
}
else
{
state = '-'; 2. Block
}

If - Verzweigung
Folie: 59
boolean isChecked = true;
char state;

if(isChecked)
state = '+';
else
state = '-';

If – Verzweigung (Schnellschreibweise)
Folie: 60
boolean isChecked = true;
char state;

if(isChecked)
state = '+';
[Link]("True");
else
state = '-';
[Link]("False");

Code

If – Verzweigung (Schnellschreibweise)
Folie: 61
boolean isChecked = true;
char state;

if(isChecked)
state = '+';
l er
else
[Link]("True");
Fe h
state = '-';
h r
[Link]("False");
efa
G
If – Verzweigung (Schnellschreibweise)
Folie: 62
• Bug in Apple-Software (2014)

Seien Sie bitte vorsichtig!


Folie: 63 [Link]
boolean hungry = true;
boolean workingDay = false;
String state = "";

if(hungry == true)
{
state = "eat something";
}
if(workingDay == true)
{
state = state + " go to work";
}
else
{
state = state + " stay at home"; Code
}

Demo-Codebeispiel
Folie: 64
boolean hungry = true;
boolean workingDay = false;
String state = "";

if(hungry == true)
{
state = "eat something";
}
else if(workingDay == true)
{
state = state + " go to work";
}
else
{
state = state + " stay at home"; Code
}

Demo-Codebeispiel
Folie: 65
• Verzweigungen funktionieren nicht nur auf booleans.
Integer:
int income = 10000;
if(income > 5000)
[Link]("I am rich!");

If – Verzweigung (Wahrheitswerte)
Folie: 66
• Verzweigungen funktionieren nicht nur auf booleans.
Integer:
int income = 10000;
if(income > 5000)
[Link]("I am rich!");

String:
String menu = "Pommes";
if([Link]("Pommes"))
[Link]("Mensa!");

If – Verzweigung (Wahrheitswerte)
Folie: 67
• Mehrere Abfragen in einem Statement
AND:
int income = 10000;
if(income > 5000 && hungry == true)
[Link](”Restaurant");
else
[Link]("Stamm");

If – Verzweigung (Kombinationen)
Folie: 68
• Mehrere Abfragen in einem Statement
OR:
String status = "student";
if([Link]("student") || hungry == true)
[Link]("Pause");
else
[Link]("Arbeiten");

If – Verzweigung (Kombinationen)
Folie: 69
boolean a, b, c, d;
a = false; b = true; c = false; d = true;
if(a && b || c && d) [Link](”A");
if(a && b && c || d) [Link](”B");
if(a && b && (c || d)) [Link](”C");

A=A
B=B
C=C

Hands-On-Session
Folie: 70
• Wenn man sehr viele Möglichkeiten einer
Programmverzweigung hat.
• Funktioniert allerdings nicht bei allen Datentypen z.B. boolean
Aufstehen

Zähne putzen

8 Uhr 7 Uhr
Kaffee trinken Uhrzeit? Müsli essen

9 Uhr

Zur Arbeit

Switch - Verzweigung
Folie: 71
Default:
int count = 0;
switch(count)
{
case 0:
[Link]("zero");break;
case 1:
[Link]("one"); break;
case 2:
[Link]("two"); break;
default:
[Link]("?"); break;
}

Switch - Verzweigung
Folie: 72
String:

String status = "bad";


switch(status)
{
case "bad":
[Link]("Needs to be repaired...");break;
case "average":
[Link]("No worries..."); break;
case "optimal":
[Link]("Everything is working..."); break;
default:
[Link]("Undefined status..."); break;
}

Switch - Verzweigung
Folie: 73
boolean severe = false;
String message = "headache";
switch(message)
{
case "cold":
if(severe == true) [Link]("Go to bed...");
else [Link]("Go to work...");
break;
case "fever":
if(severe == true) [Link]("See a doctor...");
else [Link]("Go to bed...");
break;
case "headache":
if(severe == true) [Link]("Go to a hospital...");
else [Link]("Simulating?");
break;
default:
[Link]("Unknown disease"); break;
}

Switch – Verzweigung (Kombination)


Folie: 74
int days;
String month = "February";
switch(month)
{
case "January", "March", "May", "July",
"August", "October", "December" -> {days = 31;}
case "April", "June", "September",
"November" -> {days = 30;}
case "February" -> {days = 28;}
default -> days = 0;
}
[Link]("Days: " + days);

Switch – Verzweigung (Neuerung)


Folie: 75
int days;
String month = "February";
switch(month)
{
case "January", "March", "May", "July",
"August", "October", "December" -> {days = 31;}
case "April", "June", "September",
"November" -> {days = 30;}
case "February" -> days = 28;
Kein break; Statement
default -> days = 0;
}
[Link]("Days: " + days);

Switch – Verzweigung (Neuerung)


Folie: 76
int day = switch(month)
{
case "January", "March", "May", "July",
"August", "October", "December" -> 31;
case "April", "June", "September",
"November" -> 30;
case "February" -> 28;
default -> 0;
};
[Link]("Days: " + day);

Switch – Verzweigung (Neuerung)


Folie: 77
Direkte Zuweisung der “switch” Auswertung
int day = switch(month)
{
case "January", "March", "May", "July",
"August", "October", "December" -> 31;
case "April", "June", "September",
"November" -> 30;
case "February" -> 28;
default -> 0;
};
Semikolon nicht vergessen!
[Link]("Days: " + day);

Switch – Verzweigung (Neuerung)


Folie: 78
Aufgabe: Ermitteln Sie den nächsten Alien

Hands-On-Session
Folie: 79 [Link]
int start = 0;

if(start == 0)
{
start = 10; //I can access start
int end = 0;
[Link]("1. end: " + end);
}
[Link]("1. start: " + start);
//I cannot access end
[Link]("2. end: " + end);

Code

Block Scope
Folie: 80
• Wie viele Fehler finden Sie:
int check = 0;
switch(check)
{
case 0:
int first = 0;
int check = 10;

case 1:
if(first == 0) check++;
else check--;

default:
int third = 0;
}
[Link](third);

Hands-On-Session
Folie: 81
• Wie viele Fehler finden Sie:
int check = 0;
switch(check)
{
case 0:
int first = 0;
int check = 10;

case 1:
if(first == 0) check++;
else check--;

default:
A=1
int third = 0; B=2
}
[Link](third); C=3

Hands-On-Session
Folie: 82
• Lokale Variablen sind nicht in der ganzen Klasse sichtbar.
• Unter Bedingung versteht man einen beliebigen Ausdruck,
dessen Auswertung einen Wahrheitswert(true oder false)
liefert.
• Die Werte hinter dem Schlüsselwort case müssen Konstanten
sein und alle einen unterschiedlichen Wert haben.

Merke
Folie: 83
Unbekannt:
while do for package class public private this new static final null
extends super instanceof abstract interface implements import throw
throws try catch synchronized

Neu:
void return if else switch case default break

Bekannt:
byte short int long float double char String boolean true
false void return if else switch case default break

Leistungsfortschritt - Schlüsselwörter
Folie: 84
Programmierstil:
• Korrektes Einrücken bei Blöcken
– Kontrollstrukturen, Methoden, ...
• JavaDoc-Kommentar bei Methoden
– Beschreibung, Übergabeparameter, Rückgabewerte, ...

Programmierstil
Folie: 85
Minecraft:
• [Link]

Easy:
• [Link]

Medium:
• [Link]
• [Link]

Ich will mehr...


Folie: 86

Das könnte Ihnen auch gefallen