• Keine Ergebnisse gefunden

Einführung in die Programmierung

N/A
N/A
Protected

Academic year: 2022

Aktie "Einführung in die Programmierung"

Copied!
18
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Einführung in die Programmierung

by André Karge

Übung - Enum, Foreach, Recursion, Listen

(2)

Einführung in die Programmierung: by André Karge,Übung - Enum, Foreach, Recursion, Listen Bauhaus-Universität Weimar

Heute

Enum

Foreach

Recursion

Listen

12. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 2/16

(3)

Enum & Foreach

(4)

Einführung in die Programmierung: by André Karge,Übung - Enum, Foreach, Recursion, Listen Bauhaus-Universität Weimar

Enum Typen - Insel 9.4

Beschreibung

Enum typen sind Gruppierungstypen zusammengehöriger Konstanten

Beispiel: Wochentage, Farben, Monate, Jahreszeiten, usw.

Dafür brauche man nicht extra Member-Konstanten oder Klassen erzeugen

Stichwort: enum

public enum Wochentag {

Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag;

// 0 , 1 , 2 , 3 , 4 , 5 , 6

}

public class MeinProgramm {

public static void main(String[] args) {

Wochentag heute = Wochentag.Donnerstag; // Initialisierung über Konstante Wochentag morgen = Wochentag.values()[4]; // Initialisierung über Index System.out.println("heute ist " + heute);

} }

12. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 4/16

(5)

Enum Typen - Insel 9.4

Beschreibung

Enum typen sind Gruppierungstypen zusammengehöriger Konstanten

Beispiel: Wochentage, Farben, Monate, Jahreszeiten, usw.

Dafür brauche man nicht extra Member-Konstanten oder Klassen erzeugen

Stichwort: enum

public enum Wochentag {

Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag;

// 0 , 1 , 2 , 3 , 4 , 5 , 6

}

public class MeinProgramm {

public static void main(String[] args) {

Wochentag heute = Wochentag.Donnerstag; // Initialisierung über Konstante Wochentag morgen = Wochentag.values()[4]; // Initialisierung über Index System.out.println("heute ist " + heute);

}

(6)

Einführung in die Programmierung: by André Karge,Übung - Enum, Foreach, Recursion, Listen Bauhaus-Universität Weimar

ForEach - Insel 3.8.10

For-Schleifen über Elemente eines Arrays / einer Liste

String[] wochentage = {"Montag", "Dienstag", "Mittwoch", "Donnerstag",

"Freitag", "Samstag", "Sonntag"};

for(int i=0; i<wochentage.length; i++) { System.out.println(wochentage[i]);

}

Einfacher mit ForEach-Schleifen

Iterativer Zugriff auf jedes Element in der Liste über Schleifenvariant tag

for(String tag : wochentage) { System.out.println(tag); }

12. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 5/16

(7)

ForEach - Insel 3.8.10

For-Schleifen über Elemente eines Arrays / einer Liste

String[] wochentage = {"Montag", "Dienstag", "Mittwoch", "Donnerstag",

"Freitag", "Samstag", "Sonntag"};

for(int i=0; i<wochentage.length; i++) { System.out.println(wochentage[i]);

}

Einfacher mit ForEach-Schleifen

Iterativer Zugriff auf jedes Element in der Liste über Schleifenvariant tag

for(String tag : wochentage) { System.out.println(tag);

}

(8)

Einführung in die Programmierung: by André Karge,Übung - Enum, Foreach, Recursion, Listen Bauhaus-Universität Weimar

Recursion

12. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 6/16

(9)

Recursion - Insel 2.7.14

(Source: https://xkcd.com/1557/)

(10)

Einführung in die Programmierung: by André Karge,Übung - Enum, Foreach, Recursion, Listen Bauhaus-Universität Weimar

Recursion - Insel 2.7.14

Beispiel

Auf dem Weg durch den Wald treffen wir eine Fee, die uns 3 Wünsche gibt. Man könnte jetzt sich 3 Explizite Wünsche ausdenken. Damit wären die 3 Wünsche aber verbraucht.

Was wäre, wenn wir uns mit dem letzten Wunsch nochmal 3 Wünsche wünschen würden? Das könnten wir so lange machen, bis alle Wünsche der Welt erfüllt sind.

static void feenWunsch() {

wunsch(); // Frieden auf der Welt

wunsch(); // Beim Programmieren nicht mehr Semikolon vergessen feenWunsch(); // 3 Wünsche

}

12. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 8/16

(11)

Recursion - Insel 2.7.14

Rekursion ist der Aufruf einer Methode in sich selbst

kann die Laufzeit des Programmes verändern

Bei jedem Methodenaufruf wird die aufgerufene Methode auf dem Stack abgelegt (Bei Rekursion also immer wieder die selbe Methode - ohne Sie wieder vom Stack zu entfernen)

Kann bei zu tiefer Rekursion einen Stack Overflow hervorrufen

(12)

Einführung in die Programmierung: by André Karge,Übung - Enum, Foreach, Recursion, Listen Bauhaus-Universität Weimar

Recursion - Insel 2.7.14

Übungsaufgabe (15min)

Schreiben Sie eine Klasse Guess mit Methoden, die eine von Ihnen gedachte Zahl zwischen 1 und 1000 erraten.

Dazu sollen die Methoden eine Zahl vorschlagen und Sie antworten mit <, > oder = 1. Implementieren Sie eine Methode mit einer while-Schleife

2. Implementieren Sie eine Methode mit Recursion

Das Programm benötigt hier keinen Zufallswert. Überlegen Sie sich eine Taktik, mit der Sie möglichst schnell auf die Lösung kommen.

12. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 10/16

(13)

Fibonacci Formel

f n = f n 1 + f n 2 für n > 2 f 1 = f 2 = 1

Beispiel

f 1 = 1 (1)

f 2 = 1 (2)

f 3 = f 2 + f 1 = 1 + 1 = 2 (3)

f 4 = f 3 + f 2 = (f 2 + f 1 ) + f 2 = (1 + 1) + 1 = 3 (4)

f 5 = f 4 + f 3 = 3 + 2 = 5 (5)

(14)

Einführung in die Programmierung: by André Karge,Übung - Enum, Foreach, Recursion, Listen Bauhaus-Universität Weimar

Listen

12. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 12/16

(15)

Listen

Beschreibung

Arbeit mit Daten unbestimmter Länge / unterschiedlicher Länge

Bessere Operationen im Vergleich zu Arrays (insert, delete, push, pop, ...)

Ist ein Datenobjekt, welches Referenzen speichert

(16)

Einführung in die Programmierung: by André Karge,Übung - Enum, Foreach, Recursion, Listen Bauhaus-Universität Weimar

Listen

Beispiel

public class Node { // Container für Integer Listenelement private int data; // Inhalt eines Listenelements

private Node next; // Referenz auf das nächste Element in der Liste //...

}

public class List {

private Node front; // Referenz auf das erste Element in der Liste private Node rear; // Referenz auf das letzte Element in der Liste private int nodeCount; // Übersicht, wie viele Nodes wir haben public List() {

this.front = null;

this.rear = null;

this.nodeCount = 0;

} }

12. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 14/16

(17)

Listen

Übungsaufgabe (15 min)

1. Schreiben Sie ihre eigene Klasse für eine einfach verkettete Liste für Integer (eine List-Klasse und eine Node-Klasse)

2. Achten sie auf korrekte Sichtbarkeit (public vs. private) der Attribute und Methoden 3. Schreiben Sie jeweils eine Methode um Nodes am Ende, zu einem bestimmten Index und

am Anfang der Liste einzufügen

4. Schreiben Sie eine Methode, die ein Element anhand eines übergebenen Index’ zurück gibt

5. Testen Sie die Liste in einer geeigneten main-Methode

(18)

Einführung in die Programmierung: by André Karge,Übung - Enum, Foreach, Recursion, Listen Bauhaus-Universität Weimar

Fragen?

12. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 16/16

Referenzen

ÄHNLICHE DOKUMENTE

• Man kann sich bei Generics merken: Man nutzt Platzhalter (&lt;Typ&gt;) an bestimmten Stellen im Code, den man für verschiedene Typen nutzen möchte. • Bei der Nutzung beschreibt

▶ eine Liste aus Variablen (mit Komma getrennt), die in die Methode gegeben werden (brauchen einen Typen und einen Bezeichner).. Einführung in die Programmierung: by André Karge,Übung

Deswegen fließt die Antwort von Aufgabe 3.a.iii) nicht mit in die Bewertung ein... Einführung in die Programmierung: by André Karge,Übung - Verzweigungen und

// Es wird kein Zustand von vorhandenen Objekten geändert - static public static final Complex add(Complex z1, Complex z2) {. return new Complex(z1.real + z2.real, z1.imag +

private Node front; // Referenz auf das erste Element in der Liste private Node rear; // Referenz auf das letzte Element in der Liste private int nodeCount; // Übersicht, wie

Schreiben Sie Ihre einfach verkettete Liste von letzter Woche um, dass sie anstelle von integer einen Generic Datentypen abspeichert. Testen sie diese generische Liste mit den

• protected = Attribut / Methode einer Klasse mit diesem Keyword sind von allen anderen Klassen nicht sichtbar, außer von child-Klassen.. • private = Attribut / Methode einer Klasse

public class Node &lt;meinVariablerTyp&gt; { // &lt;...&gt; gibt an, dass die Klasse einen generic verwendet private meinVariablerTyp data; // Inhalt von unserem noch nicht