DCV 2024 09/Selbstkontrolle Strukturierte Programmierung: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
Sandro (Diskussion | Beiträge)
Sandro (Diskussion | Beiträge)
 
(24 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Zeitlicher Ablauf ==
== Zeitlicher Ablauf ==
Geschätzte Zeit : 3-4 Stunden.  (Das ist nur eine ungefähre Richtlinie, nicht eine zeitliche Vorgabe!)
Geschätzte Zeit : 4-6 Stunden.  (Das ist nur eine ungefähre Richtlinie, nicht eine zeitliche Vorgabe!)
'''...wer es schneller schafft = GUT, wer noch länger daran arbeitet = UM SO BESSER!...'''


Lies dir die Aufgaben alle zuerst durch und überlege dir vor dem Coden wie du die Probleme in einzelne Schritte zerlegen
Lies dir die Aufgaben alle zuerst durch und überlege dir vor dem Coden wie du die Probleme in einzelne Schritte zerlegen
Zeile 33: Zeile 34:
}}
}}


==== Aufgabe 3) ====
==== Bonus Aufgabe) ====
Zähle mit Hilfe einer '''while-Schleife''' und einer separaten Zählvariable von '''0''' bis '''inklusive 10''' und gib die Zahlen aus. Wenn die Zahl größer als '''5''' ist mach '''2 Zeilenumbrüche'''.
Zähle mit Hilfe einer '''while-Schleife''' und einer separaten Zählvariable von '''0''' bis '''inklusive 10''' und gib die Zahlen aus. Wenn die Zahl größer als '''5''' ist mach '''2 Zeilenumbrüche'''.


Zeile 70: Zeile 71:


==== Aufgabe 2) ====
==== Aufgabe 2) ====
Erstelle eine '''Methode''' welche einen {{JSL|String}} und einen {{JSL|int}} Parmeter erhält. Der angegebene {{JSL|String}} soll so oft wie beim {{JSL|int}} angegeben in einer '''eigenen''' Zeile wiederholt werden. Trenne die Zeilen zusätzlich durch ein '''Linebreak'''.
'''Aufruf'''
{{JSL|printRowStipple("X", 3);}}
'''Ausgabe'''
{{BML|code=
X
X
X}}
==== Aufgabe 3) ====
Erstelle eine '''Methode''' welche einen {{JSL|String}} und einen {{JSL|int}} Parameter erhält. Nun sollen mit diesen beiden Parametern die beiden '''Methoden''' aus den vorhergehenden Aufgaben aufgerufen werden. Die Methoden aus den vorhergehenden Aufgaben sollen '''nicht''' neu geschrieben werden.
Erstelle eine '''Methode''' welche einen {{JSL|String}} und einen {{JSL|int}} Parameter erhält. Nun sollen mit diesen beiden Parametern die beiden '''Methoden''' aus den vorhergehenden Aufgaben aufgerufen werden. Die Methoden aus den vorhergehenden Aufgaben sollen '''nicht''' neu geschrieben werden.


Zeile 169: Zeile 153:
Du hast gewonnen!!!
Du hast gewonnen!!!
}}
}}
==== Bonus Aufgabe) ====
Erweitere das Ratespiel so, dass die Parameter über die Konsole eingegeben werden können.
Wie zum Beispiel die Min und Max Value der Zahlen des random.nextInt(), oder die Versuche die der User hat bis das Spiel zu Ende ist.


== Arrays ==
== Arrays ==


==== Aufgabe 1) ====
==== Aufgabe 1) ====
Erstelle eine '''Methode''' die ein {{JSL|int[]}} als Parameter erhält und das '''erste''' und '''letzte''' Element zu einem {{JSL|String}} zusammenfügt und zurückgibt. Verwende dazu die Beispielarrays in der Klasse und gib das Ergebnis aus.
'''Aufruf'''
{{JSL|System.out.println(getFirstAndLast(arr));}}
'''Ausgabe'''
{{BSL|First: 0, last: 10}}
==== Aufgabe 2) ====
Ertelle jeweils eine '''Methode''' für '''Minimum''' (min), '''Maximum''' (max), und '''Durchschnitt''' (avg), welche den jeweiligen Wert für ein übergebenes {{JSL|int[]}} berechnet. Teste alle Methoden in der {{JSL|main}} Methode mit allen gegebenen {{JSL|int[]}} der Klasse.
Ertelle jeweils eine '''Methode''' für '''Minimum''' (min), '''Maximum''' (max), und '''Durchschnitt''' (avg), welche den jeweiligen Wert für ein übergebenes {{JSL|int[]}} berechnet. Teste alle Methoden in der {{JSL|main}} Methode mit allen gegebenen {{JSL|int[]}} der Klasse.


Zeile 202: Zeile 179:
{{BSL|Maximum: 23}}
{{BSL|Maximum: 23}}


 
==== Aufgabe 2) ====
==== Aufgabe 3) ====
Erstelle ein {{JSL|int[]}} und sortiere es mit einem selbsterstellten '''Bubblesort Algorithmus''' und gib es dann aus. Der '''Bubblesort Algorithmus''' soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.
Erstelle ein {{JSL|int[]}} und sortiere es mit einem selbsterstellten '''Bubblesort Algorithmus''' und gib es dann aus. Der '''Bubblesort Algorithmus''' soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.
# Sortiere der Größe nach aufsteigend (Ascending)
# Sortiere der Größe nach aufsteigend (Ascending)
# Sortiere der Größe nach absteigend (Descending)
# Sortiere der Größe nach absteigend (Descending)


 
==== Bonus Aufgabe) ====
==== Aufgabe 4) ====
Erstelle ein 2D-Array mit der Größe von 10 und mache das Pascal-Dreieck.
Erstelle ein 2D-Array mit der Größe von 10 und mache das Pascal-Dreieck.
Achte beim finalen Print auch auf die Formatierung des Ausdrucks in der Konsole.
Achte beim finalen Print auch auf die Formatierung des Ausdrucks in der Konsole.
Zeile 232: Zeile 207:


== Kalender ==
== Kalender ==
Siehe Package: '''at/digitialcampus/codingcampus/calendar/'''
 
==== Aufgabe 1) ====
==== Aufgabe 1) ====
Gib mit Hilfe der {{JSL|Calendar}} Api den Wochentag des aktuellen Tages inklusive Datum aus.
Gib mit Hilfe der {{JSL|Calendar}} Api den Wochentag des aktuellen Tages inklusive Datum aus.
Zeile 238: Zeile 213:
'''Ausgabe'''
'''Ausgabe'''


{{BSL|DI 19.10.2021}}
{{BSL|DI 19.10.2024}}


== String manipulation (Optional) ==
==== Aufgabe 2) ====
Siehe Package: '''at/digitialcampus/codingcampus/stringmanipulation/'''
Erstelle ein Programm, das das aktuelle Datum und die Uhrzeit ausgibt. Verwende für jede unten angegebene ausgabe ein eigenes {{JSL|SimpleDateFormat}} und erstelle eine 3 Zeilige Ausgabe:
# Nur das Datum
# Nur die Uhrzeit
# Datum und Uhrzeit
# Datum und Uhrzeit mit Zeitzone
# Die aktuelle Sekunde mit Millisekunde


==== Aufgabe 1) ====
Ersetze mit Hilfe von '''regulären Ausdrücken''' folgendes aus dem in der Klasse gegebenen {{JSL|String}}. Folgende Aufzählung ist als Ganzes zu betrachten.
* '''a''' bis '''c''' durch '''X'''
* '''f''' bis '''z''' durch '''Y'''
* '''1''' bis '''5''' durch '''a'''
* '''4''' bis '''9''' durch '''b'''
und gib den {{JSL|String}}, bei dem alles ersetzt wurde, aus.


'''Ausgabe'''
==== Bonus Aufgabe) ====
Erstelle eine neue {{JSL|Calendar}} Instanz und gib das Datum des nächsten '''Sonntags''' aus.


{{BSL|HeYYe deY ab.a0.a0aa YYYd eYY YeYY YYYeY TXY. ZYXY YYXY eY YYYXY YYe eYYeY TeYY, deY aa LeYYe YXYYeYXeY, XXeY dXY YYY dYXY eYXY!}}
== String manipulation ==


==== Aufgabe 2) ====
Erstelle einen regulären Ausdruck der folgendem Sachverhalt entspricht und prüfe diesen in der {{JSL|main}} '''Methode'''. Die Punkte gehören alle zum gleichen regulären Ausdruck und sollen nacheinander zutreffen:
# Drei oder mehr Kleinbuchstaben
# Eine Zahl größer als 0
# Zwei Zahlen
# Ein oder mehr Großbuchstaben


'''Aufruf'''{{Space10}}{{JSL|"abc100A".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}
==== Aufgabe 1) ====
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten '''Bubblesort Algorithmus''' und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der '''Bubblesort Algorithmus''' soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.
# Sortiere die Namen nach Länge aufsteigend (Ascending)
# Sortiere die Namen nach Länge absteigend (Descending)
# Sortiere die Namen lexikographisch aufsteigend (Ascending)
# Sortiere die Namen lexikographisch absteigend (Descending)


'''Aufruf'''{{Space10}}{{JSL|"Abc100A".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
Tip.: Strings können mit der Instanz Methode {{JSL|compareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|"a".compareTo("b")}}
{{JML|code=
String[] names = new String[]{"Furkan", "Aylin", "Thiemo", "Erik", "Akif", "Sandro", "Gyula", "Ölaf", "Ümit" };
}}


'''Aufruf'''{{Space10}}{{JSL|"luke010A".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}


'''Aufruf'''{{Space10}}{{JSL|"test101ABCDE".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}
==== Aufgabe 2) ====
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.


'''Aufruf'''{{Space10}}{{JSL|"test1ABCDE".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
'''Ausgabe'''
{{BML|code=
Willkommen zum Reverseprogramm!!!111
>>>Hallo
ollaH
}}


== Datenströme (Optional) ==
==== Bonus Aufagabe) ====
Dieses Thema haben wir nicht bearbeitet. Wer trotzdem eine Herausforderung sucht, für den ist das etwas.
Erstelle einen schönen tabellarischen Ausgabe aus den folgenden Arrays:
{{JML|code=
String[] firstName = {"Alfonso", "Beatrix-Eleonor", "Cecil", "Daniel", "Elmar"};
String[] lastName = {"Klein", "Kinderdorfer", "Al Elmenar", "Schmidt", "Simma"};
int[] age = {40, 78, 5, 18, 81};
String[] place = {"Wien", "Schwarzach", "Wiener Neudorf", "Sankt Pölten", "Sankt Pölten"};
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};
}}


  Siehe Package: '''at/digitialcampus/codingcampus/streams/'''
  Denke daran, dass eine Tabelle eine Kopfzeile und Trennzeichen haben kann.


  '''Die Einlesemethode in allen Aufgaben ist frei wählbar'''
== Datenströme/Files ==


==== Aufgabe 1) ====
==== Aufgabe 1) ====
Lies die Datei '''assets/file.txt''' in einen {{JSL|String}} ein und gib diesen anschließend aus.
Mit der Hilfe von {{JSL|java.io.File}} soll der Inhalt eines bestimmten Verzeichnisses ausgegeben werden. Gib hierfür eine Liste aller Dateien aus.
 
[https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html Dokumentation von File]


==== Aufgabe 2) ====
==== Aufgabe 2) ====
Lies die Datei '''assets/file.txt''' in einen {{JSL|String}} ein und gib die Anzahl der Worte des {{JSL|String}} aus.
Liste die Dateien in folgender Rheinfolge auf.
* Unterverzeichnisse
* Dateien nach Größe absteigend


==== Aufgabe 3) ====
Lies die Datei '''assets/file.txt''' in einen {{JSL|String}} ein, zerlege diesen in Worte und sortiere diese mittels '''Bubblesort''' '''lexikographisch''' ({{JSL|string.compareTo(otherString)}} und gib das sortierte {{JSL|String[]}} aus.


==== Aufgabe 4) Bonus ====
==== Bonus Aufgabe) ====
Sortiere wie in der vorhergehenden Aufgabe. Bei der Ausgabe sollen Wörter nicht mehrfach ausgegeben werden, weiters füge bei jedem Wort die Anzahl der vorkommnisse hinzu.
 
Mit der Hilfe von {{JSL|java.io.File}} soll der Inhalt eines bestimmten Verzeichnisses '''und aller Unterverzeichnisse''' verarbeitet und in der Konsole ausgedrückt werden.
Verwende eine Funktion rekursiv und achte beim Ausdruck darauf, dass für jedes Unterverzeichnis die Einrückung größer wird.

Aktuelle Version vom 25. Oktober 2024, 06:59 Uhr

Zeitlicher Ablauf

Geschätzte Zeit : 4-6 Stunden. (Das ist nur eine ungefähre Richtlinie, nicht eine zeitliche Vorgabe!) ...wer es schneller schafft = GUT, wer noch länger daran arbeitet = UM SO BESSER!...

Lies dir die Aufgaben alle zuerst durch und überlege dir vor dem Coden wie du die Probleme in einzelne Schritte zerlegen und dann behandeln kannst. Versuche so gut du kannst alle Übungen alleine ohne Hilfe zu lösen und notiere dir die Übungen, bei denen du dir schwer getan hast.

Viel Spaß und Erfolg

Schleifen

Aufgabe 1)

Zähle in einer for-Schleife rückwärts von 10 bis inklusive 0 und gib jede Zahl aus.

Ausgabe

10 9 8 7 6 5 4 3 2 1 0

Aufgabe 2)

Zähle in einer for-Schleife von -30 bis inklusive 30 und gib jede Zahl aus die ohne Rest durch 3 teilbar ist.

Ausgabe

-30
-27
-24
...
24
27
30

Bonus Aufgabe)

Zähle mit Hilfe einer while-Schleife und einer separaten Zählvariable von 0 bis inklusive 10 und gib die Zahlen aus. Wenn die Zahl größer als 5 ist mach 2 Zeilenumbrüche.

Ausgabe

0
1
2
3
4
5
6

7

8

9

10

Methoden

Aufgabe 1)

Erstelle eine Methode welche einen String und einen int Parameter erhält. Der angegebene String soll so oft wie beim int angegeben, in einer Zeile wiederholt ausgegeben und mit einem Whitespace getrennt werden.

Aufruf

printLineStipple("X", 10);

Ausgabe

X X X X X X X X X X

Aufgabe 2)

Erstelle eine Methode welche einen String und einen int Parameter erhält. Nun sollen mit diesen beiden Parametern die beiden Methoden aus den vorhergehenden Aufgaben aufgerufen werden. Die Methoden aus den vorhergehenden Aufgaben sollen nicht neu geschrieben werden.

Aufruf

printStippleL("X", 3);

Ausgabe

X X X
X

X

X

Bonus Aufgabe)

Erstelle eine Methode welche einen Rhombus von variabler Größe und mit angegebene Zeichen ausgibt. Die Größe soll dabei die Höhe des Rhombus sein.

  1. Löse das Problem wie es dir gefällt
  2. Löse das Problem mit nur zwei ineinander verschachtelten Schleifen

Aufruf: printRhombus("x", 7);

#Diese Zeile gehört nicht zur Ausgabe! Leider verhaut es mir die Formatierung wenn die erste Zeile mit einem Leerzeichen beginnt :-|
......X......
.....X.X.....
....X...X....
...X.....X...
..X.......X..
.X.........X.
X...........X
.X.........X.
..X.......X..
...X.....X...
....X...X....
.....X.X.....
......X......

Input

Aufgabe 1)

Lies einen String vom Benutzer ein (ganze Zeile) und einen int. Die Zahl besagt wie oft der String ausgegeben werden soll. Wird ein leerer String oder eine ungültiger int eingegeben, so soll die Eingabe erneut erfolgen.

Eingabe

Bitte geben Sie einen Text ein:
>> Heute wird ein guter Tag
Wie oft soll der Text ausgegeben werden:
>> 3

Ausgabe

Heute wird ein guter Tag
Heute wird ein guter Tag
Heute wird ein guter Tag

Aufgabe 2)

Es soll eine beliebige Zahl zwischen 0 und 100 mittels new Random().nextInt(...) gewählt werden. Nun soll die Zahl durch Eingabe über die Konsole erraten werden. Ist die Zahl zu hoch oder zu niedrig, so soll diese Information ausgegeben werden. Wurde die Zahl getroffen, so ist das Spiel gewonnen und das Programm wird beendet.

Wird keine Zahl eingegeben so darf das Programm nicht abstürzen und es soll erneut nach einer Zahl gefragt werden.

Ausgabe

Willkommen beim super coolen Zahlen Ratespiel!
Errate die Zahl zwischen 0 und 100!
Gib die Zahl nun ein:
>>>4
Die Zahl ist zu niedrig!
>>>90
Die Zahl ist zu hoch!
>>>30
Die Zahl ist zu hoch!
>>>15
Du hast gewonnen!!!

Bonus Aufgabe)

Erweitere das Ratespiel so, dass die Parameter über die Konsole eingegeben werden können. Wie zum Beispiel die Min und Max Value der Zahlen des random.nextInt(), oder die Versuche die der User hat bis das Spiel zu Ende ist.

Arrays

Aufgabe 1)

Ertelle jeweils eine Methode für Minimum (min), Maximum (max), und Durchschnitt (avg), welche den jeweiligen Wert für ein übergebenes int[] berechnet. Teste alle Methoden in der main Methode mit allen gegebenen int[] der Klasse.

Beispiel Aufruf

System.out.println("Minimum: " + getMin(arr));

Beispiel Ausgabe

Minimum: 0

Beispiel Aufruf

System.out.println("Maximum: " + getMax(arr));

Beispiel Ausgabe

Maximum: 23

Aufgabe 2)

Erstelle ein int[] und sortiere es mit einem selbsterstellten Bubblesort Algorithmus und gib es dann aus. Der Bubblesort Algorithmus soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der main Methode.

  1. Sortiere der Größe nach aufsteigend (Ascending)
  2. Sortiere der Größe nach absteigend (Descending)

Bonus Aufgabe)

Erstelle ein 2D-Array mit der Größe von 10 und mache das Pascal-Dreieck. Achte beim finalen Print auch auf die Formatierung des Ausdrucks in der Konsole.

Regel: Jede Zahl in der Matrix ist gleich die Summe der Nachbarzahlen nach Links und nach Oben.

Aufruf:

>>>10

 1       1       1       1       1       1       1       1       1       1 
 1       2       3       4       5       6       7       8       9      10 
 1       3       6      10      15      21      28      36      45      55 
 1       4      10      20      35      56      84     120     165     220 
 1       5      15      35      70     126     210     330     495     715 
 1       6      21      56     126     252     462     792    1287    2002 
 1       7      28      84     210     462     924    1716    3003    5005 
 1       8      36     120     330     792    1716    3432    6435   11440 
 1       9      45     165     495    1287    3003    6435   12870   24310 
 1      10      55     220     715    2002    5005   11440   24310   48620

Kalender

Aufgabe 1)

Gib mit Hilfe der Calendar Api den Wochentag des aktuellen Tages inklusive Datum aus.

Ausgabe

DI 19.10.2024

Aufgabe 2)

Erstelle ein Programm, das das aktuelle Datum und die Uhrzeit ausgibt. Verwende für jede unten angegebene ausgabe ein eigenes SimpleDateFormat und erstelle eine 3 Zeilige Ausgabe:

  1. Nur das Datum
  2. Nur die Uhrzeit
  3. Datum und Uhrzeit
  4. Datum und Uhrzeit mit Zeitzone
  5. Die aktuelle Sekunde mit Millisekunde


Bonus Aufgabe)

Erstelle eine neue Calendar Instanz und gib das Datum des nächsten Sonntags aus.

String manipulation

Aufgabe 1)

Verwende den gegebenen String[] und sortiere es mit einem selbsterstellten Bubblesort Algorithmus und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der Bubblesort Algorithmus soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der main Methode.

  1. Sortiere die Namen nach Länge aufsteigend (Ascending)
  2. Sortiere die Namen nach Länge absteigend (Descending)
  3. Sortiere die Namen lexikographisch aufsteigend (Ascending)
  4. Sortiere die Namen lexikographisch absteigend (Descending)
Tip.: Strings können mit der Instanz Methode compareTo der String Klasse verglichen werden: "a".compareTo("b")
String[] names = new String[]{"Furkan", "Aylin", "Thiemo", "Erik", "Akif", "Sandro", "Gyula", "Ölaf", "Ümit" };


Aufgabe 2)

Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür text.toCharArray() für das Aufsplitten und new String(charArray) zum Zusammenfügen.

Ausgabe

Willkommen zum Reverseprogramm!!!111
>>>Hallo
ollaH

Bonus Aufagabe)

Erstelle einen schönen tabellarischen Ausgabe aus den folgenden Arrays:

String[] firstName = {"Alfonso", "Beatrix-Eleonor", "Cecil", "Daniel", "Elmar"};
String[] lastName = {"Klein", "Kinderdorfer", "Al Elmenar", "Schmidt", "Simma"};
int[] age = {40, 78, 5, 18, 81};
String[] place = {"Wien", "Schwarzach", "Wiener Neudorf", "Sankt Pölten", "Sankt Pölten"};
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};
Denke daran, dass eine Tabelle eine Kopfzeile und Trennzeichen haben kann.

Datenströme/Files

Aufgabe 1)

Mit der Hilfe von java.io.File soll der Inhalt eines bestimmten Verzeichnisses ausgegeben werden. Gib hierfür eine Liste aller Dateien aus.

Dokumentation von File

Aufgabe 2)

Liste die Dateien in folgender Rheinfolge auf.

  • Unterverzeichnisse
  • Dateien nach Größe absteigend


Bonus Aufgabe)

Mit der Hilfe von java.io.File soll der Inhalt eines bestimmten Verzeichnisses und aller Unterverzeichnisse verarbeitet und in der Konsole ausgedrückt werden. Verwende eine Funktion rekursiv und achte beim Ausdruck darauf, dass für jedes Unterverzeichnis die Einrückung größer wird.