DCV 2023 03/Selbstkontrolle Strukturierte Programmierung: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
Sandro (Diskussion | Beiträge)
Sandro (Diskussion | Beiträge)
 
(17 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 135: Zeile 135:


== Arrays ==
== Arrays ==
Siehe Package: '''at/digitialcampus/codingcampus/array/'''
Array für Aufgabe 1 und 2.
 
{{JML|code=
int[] arr = new int[]{0, 1, 23, 5, 12, 4, 4, 2, 5, 2, 10};
 
int[] arr2 = new int[]{123, 19471, 1, 4, 15715, 15, 1, 5, 15, 1, -10, -100};
 
int[] arr3 = new int[]{478199, 7812973, 12387123, 12, 3, 123, 12, 3, 1, 3, 1, 3, 1, 8, 9, 15, 1, 5, 1, 5, 1, 5, 15, 1, 5, 0};
}}
 


==== 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.
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 für alle 3 Arrays aus.


'''Aufruf'''
'''Aufruf'''


{{JSL|System.out.println(getFirstAndLast(arr));}}
{{JSL|PrintFirstAndLast(arr);}}


'''Ausgabe'''
'''Ausgabe'''


{{BSL|First: 0, last: 10}}
{{BSL|First: 0, Last: 10}}
 


==== Aufgabe 2) ====
==== 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 {{JSL|int[]}} berechnet und zurückgeben kann. Teste alle Methoden in der {{JSL|Start}} Methode mit allen gegebenen {{JSL|int[]}} der Klasse.
 
Erstelle eine Print Methode die einen {{JSL|string}} und einen {{JSL|int}} bekommt.


'''Beispiel Aufruf'''
'''Beispiel Aufruf'''


{{JSL|System.out.println("Minimum: " + getMin(arr));}}
{{JSL|PrintMyResult("Minimum",GetMin(arr));}}


'''Beispiel Ausgabe'''
'''Beispiel Ausgabe'''
Zeile 161: Zeile 173:
'''Beispiel Aufruf'''
'''Beispiel Aufruf'''


{{JSL|System.out.println("Maximum: " + getMax(arr));}}
{{JSL|PrintMyResult("Maximum",GetMax(arr));}}


'''Beispiel Ausgabe'''
'''Beispiel Ausgabe'''


{{BSL|Maximum: 23}}
{{BSL|Maximum: 23}}


==== Aufgabe 3) ====
==== Aufgabe 3) ====
Erstelle eine '''Methode''' welche einen {{JSL|int}} als Parameter nimmt. Diese '''Methode''' soll ein {{JSL|int[]}} erstellen und das {{JSL|int[]}} mit den Zahlen von '''0''' bis '''inklusive der angegebenen Zahl''' befüllen und dann zurückgeben. Teste diese '''Methode''' in der {{JSL|main}} '''Methode''' und gib das Array aus (egal wie, z.b.: Schleife, oder {{JSL|Arrays.toString(...)}})
Erstelle eine '''Methode''' welche einen {{JSL|int}} als Parameter nimmt. Diese '''Methode''' soll ein {{JSL|int[]}} erstellen und das {{JSL|int[]}} mit den Zahlen von '''0''' bis '''inklusive der angegebenen Zahl''' befüllen und dann zurückgeben. Teste diese '''Methode''' in der {{JSL|Start}} '''Methode''' und gib das Array auf verschiede Arten aus ('''for-Schleife''', '''foreach-Schleife''' und {{JSL|Console.WriteLine("[{0}]", string.Join(", ", arr))}})


'''Aufruf'''
'''Aufruf'''
Zeile 179: Zeile 192:
0 1 2 3 4 5 6 7 8 9 10
0 1 2 3 4 5 6 7 8 9 10
}}
}}


==== Aufgabe 4) ====
==== Aufgabe 4) ====
Sortiere das in der Klasse gegebene {{JSL|int[]}} mit Hilfe von '''Bubblesort''' und gib das Array aus. Ob '''aufsteigend''' oder '''absteigend''' Sortiert bleibt dir überlassen.
Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von 0 bis 100.
Sortiere das gegebene {{JSL|int[]}} mit Hilfe von '''Bubblesort''' und gib das Array aus.


== Kalender ==
# Sortiere der Größe nach aufsteigend (Ascending)
Siehe Package: '''at/digitialcampus/codingcampus/calendar/'''
# Sortiere der Größe nach absteigend (Descending)
==== Aufgabe 1) ====
Gib mit Hilfe der {{JSL|Calendar}} Api den Wochentag des aktuellen Tages inklusive Datum aus.
 
'''Ausgabe'''


{{BSL|DI 19.10.2021}}
Erstelle eine Neue, oder erweitere deine Methode! Diese soll nun zusätzlich zum {{JSL|int[]}} Parameter einen weiteren {{JSL|bool}} als Parameter erhalten. Dieser {{JSL|bool}} entscheidet, ob das {{JSL|int[]}} '''aufsteigend''', oder '''absteigend''' sortiert wird.


== String manipulation ==
== String manipulation ==
Siehe Package: '''at/digitialcampus/codingcampus/stringmanipulation/'''
{{BSL|Heute der 19.10.2021 wird ein sehr guter Tag. Zwar gibt es sowas wie einen Test, den 14 Leute schreiben, aber das ist doch egal!}}


==== Aufgabe 1) ====
==== 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.
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'''
* '''a''' bis '''c''' durch '''X'''
* '''f''' bis '''z''' durch '''Y'''
* '''f''' bis '''z''' durch '''Y'''
* '''1''' bis '''5''' durch '''a'''
* '''1''' bis '''5''' durch '''a'''
* '''4''' bis '''9''' durch '''b'''
* '''4''' bis '''9''' durch '''b'''
und gib den {{JSL|String}}, bei dem alles ersetzt wurde, aus.
und gib den {{JSL|string}}, bei dem alles ersetzt wurde, aus.


'''Ausgabe'''
'''Ausgabe'''
Zeile 208: Zeile 219:


==== Aufgabe 2) ====
==== 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:
Erstelle einen regulären Ausdruck der folgendem Sachverhalt entspricht und prüfe diesen in der {{JSL|Start}} '''Methode'''. Die Punkte gehören alle zum gleichen regulären Ausdruck und sollen nacheinander zutreffen:
# Drei oder mehr Kleinbuchstaben
# Drei oder mehr Kleinbuchstaben
# Eine Zahl größer als 0
# Eine Zahl größer als 0
Zeile 214: Zeile 225:
# Ein oder mehr Großbuchstaben
# Ein oder mehr Großbuchstaben


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


'''Aufruf'''{{Space10}}{{JSL|"Abc100A".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
'''Aufruf'''{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch("abc100A", regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}


'''Aufruf'''{{Space10}}{{JSL|"luke010A".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
'''Aufruf'''{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch("Abc100A", regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}


'''Aufruf'''{{Space10}}{{JSL|"test101ABCDE".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}
'''Aufruf'''{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch("luke010A", regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}


'''Aufruf'''{{Space10}}{{JSL|"test1ABCDE".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
'''Aufruf'''{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch("test101ABCDE", regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}


== Datenströme ==
'''Aufruf'''{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch("test1ABCDE", regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}
Siehe Package: '''at/digitialcampus/codingcampus/streams/'''


'''Die Einlesemethode in allen Aufgaben ist frei wählbar'''
== Kalender ==


==== Aufgabe 1) ====
==== Aufgabe 1) ====
Lies die Datei '''assets/file.txt''' in einen {{JSL|String}} ein und gib diesen anschließend aus.
Gib mit Hilfe der {{JSL|Calendar}} Api den Wochentag des aktuellen Tages inklusive Datum aus.


==== Aufgabe 2) ====
'''Ausgabe'''
Lies die Datei '''assets/file.txt''' in einen {{JSL|String}} ein und gib die Anzahl der Worte des {{JSL|String}} aus.


==== Aufgabe 3) ====
{{BSL|DI 19.10.2021}}
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 ====
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.

Aktuelle Version vom 27. Oktober 2023, 08:37 Uhr

Zeitlicher Ablauf

Ca. 3~6 Stunden

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

Aufgabe 3)

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.

Initialisiere Variablen für deine Parameter und gib diese dann der Methode weiter, damit du deine Methoden wieder verwenden kannst.

Aufruf

string symbol = "X";

int amount = 10;

PrintLineStipple(symbol, amount);


Ausgabe

X X X X X X X X X X

Aufgabe 2)

Erstelle eine Methode welche einen string und einen int Parmeter erhält. Der angegebene string soll so oft wie beim int angegeben in einer eigenen Zeile wiederholt werden. Trenne die Zeilen zusätzlich durch ein Linebreak.

Aufruf

string symbol = "X";

int amount = 3;

PrintRowStipple(symbol, amount);


Ausgabe

X

X

X

Aufgabe 3)

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

string symbol = "X";

int amount = 3;

PrintStippleL(symbol, amount);


Ausgabe

X X X
X

X

X

Input

Aufgabe 1)

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

Erstelle eine Methode ReadString() und ReadNumber().

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

Arrays

Array für Aufgabe 1 und 2.

int[] arr = new int[]{0, 1, 23, 5, 12, 4, 4, 2, 5, 2, 10};

int[] arr2 = new int[]{123, 19471, 1, 4, 15715, 15, 1, 5, 15, 1, -10, -100};

int[] arr3 = new int[]{478199, 7812973, 12387123, 12, 3, 123, 12, 3, 1, 3, 1, 3, 1, 8, 9, 15, 1, 5, 1, 5, 1, 5, 15, 1, 5, 0};


Aufgabe 1)

Erstelle eine Methode die ein int[] als Parameter erhält und das erste und letzte Element zu einem string zusammenfügt und zurückgibt. Verwende dazu die Beispielarrays in der Klasse und gib das Ergebnis für alle 3 Arrays aus.

Aufruf

PrintFirstAndLast(arr);

Ausgabe

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 int[] berechnet und zurückgeben kann. Teste alle Methoden in der Start Methode mit allen gegebenen int[] der Klasse.

Erstelle eine Print Methode die einen string und einen int bekommt.

Beispiel Aufruf

PrintMyResult("Minimum",GetMin(arr));

Beispiel Ausgabe

Minimum: 0

Beispiel Aufruf

PrintMyResult("Maximum",GetMax(arr));

Beispiel Ausgabe

Maximum: 23


Aufgabe 3)

Erstelle eine Methode welche einen int als Parameter nimmt. Diese Methode soll ein int[] erstellen und das int[] mit den Zahlen von 0 bis inklusive der angegebenen Zahl befüllen und dann zurückgeben. Teste diese Methode in der Start Methode und gib das Array auf verschiede Arten aus (for-Schleife, foreach-Schleife und Console.WriteLine("[{0}]", string.Join(", ", arr)))

Aufruf

int[] arr = fillArr(10);
//Ausgabe arr

Ausgabe

0 1 2 3 4 5 6 7 8 9 10


Aufgabe 4)

Erstelle ein int[] und befülle es mit Zufallszahlen von 0 bis 100. Sortiere das gegebene int[] mit Hilfe von Bubblesort und gib das Array aus.

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

Erstelle eine Neue, oder erweitere deine Methode! Diese soll nun zusätzlich zum int[] Parameter einen weiteren bool als Parameter erhalten. Dieser bool entscheidet, ob das int[] aufsteigend, oder absteigend sortiert wird.

String manipulation

Heute der 19.10.2021 wird ein sehr guter Tag. Zwar gibt es sowas wie einen Test, den 14 Leute schreiben, aber das ist doch egal!

Aufgabe 1)

Ersetze mit Hilfe von regulären Ausdrücken folgendes aus dem in der Klasse gegebenen 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 string, bei dem alles ersetzt wurde, aus.

Ausgabe

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!

Aufgabe 2)

Erstelle einen regulären Ausdruck der folgendem Sachverhalt entspricht und prüfe diesen in der Start Methode. Die Punkte gehören alle zum gleichen regulären Ausdruck und sollen nacheinander zutreffen:

  1. Drei oder mehr Kleinbuchstaben
  2. Eine Zahl größer als 0
  3. Zwei Zahlen
  4. Ein oder mehr Großbuchstaben


Aufruf          Console.WriteLine(Regex.IsMatch("abc100A", regex));          Ausgabe          true

Aufruf          Console.WriteLine(Regex.IsMatch("Abc100A", regex));          Ausgabe          true

Aufruf          Console.WriteLine(Regex.IsMatch("luke010A", regex));          Ausgabe          true

Aufruf          Console.WriteLine(Regex.IsMatch("test101ABCDE", regex));          Ausgabe          true

Aufruf          Console.WriteLine(Regex.IsMatch("test1ABCDE", regex));          Ausgabe          true

Kalender

Aufgabe 1)

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

Ausgabe

DI 19.10.2021