Selbstkontrolle Strukturierte Programmierung: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
 
(54 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Zeitlicher Ablauf ==
Ich würde eine Dauer von 3 Stunden vorschlagen.
== Viel Spaß und Erfolg ==
== Vorbereitung ==
# Öffne '''IntelliJ'''
# Schließe das bestehende Projekt
## File
## Close Project
# Nun solltest du den Welcome Screen von '''IntelliJ''' sehen
# Klicke auf '''Get from VCS'''
## Version control: '''Git'''
## URL: '''https://gitlab.drlue.at/digitalcampus/codingcampus_2021.09.selbstkontrolle.git'''
## Clone
== Abgabe ==
# File
# Export
# Export to zip file
# [vorname]_[nachname]_selbstkontrolle.zip
# Zip an Gyula senden
{{TOC limit|4}}
== Schleifen ==
== Schleifen ==
  Siehe Package: '''at/digitialcampus/selbstkontrolle/loops/'''
  Siehe Package: '''at/digitialcampus/codingcampus/loops/'''
==== Aufgabe 1) ====
==== Aufgabe 1) ====
Zähle in einer '''for-Schleife''' '''rückwärts''' von '''10''' bis '''inklusive 0''' und gib jede Zahl aus. Die Ausgabe soll in einer Zeile erfolgen und wie folgt aussehen.
Zähle in einer '''for-Schleife''' '''rückwärts''' von '''10''' bis '''inklusive 0''' und gib jede Zahl aus.
 
'''Ausgabe'''


{{BSL|10 9 8 7 6 5 4 3 2 1 0}}
{{BSL|10 9 8 7 6 5 4 3 2 1 0}}
==== Aufgabe 2) ====
==== 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.
Zähle in einer '''for-Schleife''' von '''-30''' bis '''inklusive 30''' und gib jede Zahl aus die '''ohne Rest''' durch '''3''' teilbar ist.
'''Ausgabe'''
{{BML|code=
{{BML|code=
-30
-30
Zeile 18: Zeile 49:


==== Aufgabe 3) ====
==== 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.
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'''
 
{{BML|code=
{{BML|code=
0
0
Zeile 38: Zeile 72:


== Methoden ==
== Methoden ==
  Siehe Package: '''at/digitialcampus/selbstkontrolle/methods/'''
  Siehe Package: '''at/digitialcampus/codingcampus/methods/'''
==== Aufgabe 1) ====
==== Aufgabe 1) ====
Erstelle eine '''Methode''' welche einen gegebenen {{JSL|String}} Parameter in einer gegebenen Anzahl in einer Zeile ausgibt und mit einem '''Whitespace''' trennt.
Erstelle eine '''Methode''' welche einen {{JSL|String}} und einen {{JSL|int}} Parameter erhält. Der angegebene {{JSL|String}} soll so oft wie beim {{JSL|int}} angegeben, in einer Zeile wiederholt ausgegeben und mit einem '''Whitespace''' getrennt werden.


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


{{JSL|printLineStipple("X", 10);}}
{{JSL|printLineStipple("X", 10);}}


'''Ausgabe'''
'''Ausgabe'''
Zeile 52: Zeile 85:


==== Aufgabe 2) ====
==== Aufgabe 2) ====
Erstelle eine '''Methode''' welche einen gegebenen {{JSL|String}} Parameter in einer gegebenen Anzahl in mehreren Zeilen ausgibt und mit einem zusätzlichen '''Linebreak''' trennt.
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'''
'''Aufruf'''


{{JSL|printLineStipple("X", 3);}}
{{JSL|printRowStipple("X", 3);}}




Zeile 69: Zeile 102:


==== Aufgabe 3) ====
==== Aufgabe 3) ====
Erstelle eine '''Methode''' welche einen gegebenen {{JSL|String}} Parameter in einer gegebenen Anzahl nimmt und die beiden '''Methoden''' aus den vorhergehenden Aufgaben aufruft. 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.


'''Aufruf'''
'''Aufruf'''
Zeile 86: Zeile 119:


== Input ==
== Input ==
  Siehe Package: '''at/digitialcampus/selbstkontrolle/input/'''
  Siehe Package: '''at/digitialcampus/codingcampus/input/'''


==== Aufgabe 1) ====
==== Aufgabe 1) ====
Lies einen {{JSL|String}} vom Benutzer ein (ganze Zeile) und wie oft dieser Ausgegeben werden soll. Wird ein leerer {{JSL|String}} oder eine ungültige '''Zahl''' eingegeben, so soll erneut nachgefragt werden.
Lies einen {{JSL|String}} vom Benutzer ein (ganze Zeile) und einen {{JSL|int}}. Die Zahl besagt wie oft der {{JSL|String}} ausgegeben werden soll. Wird ein leerer {{JSL|String}} oder eine ungültiger {{JSL|int}} eingegeben, so soll die Eingabe erneut erfolgen.


'''Eingabe'''
'''Eingabe'''
Zeile 107: Zeile 140:


== Arrays ==
== Arrays ==
  Siehe Package: '''at/digitialcampus/selbstkontrolle/array/'''
  Siehe Package: '''at/digitialcampus/codingcampus/array/'''


==== Aufgabe 1) ====
==== Aufgabe 1) ====
Erstelle eine '''Methode''' welche das erste und letzte Element eines {{JSL|int[]}} nimmt und diese 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 aus.


'''Aufruf'''
'''Aufruf'''
Zeile 121: Zeile 154:


==== Aufgabe 2) ====
==== Aufgabe 2) ====
Ertelle jeweils eine '''Methode''' für '''min''' (Minimum), '''max''' (Maximum), und '''avg''' (Durchschnitt) welche den jeweiligen Wert für ein übergebenes {{JSL|int[]}} berechnet. Teste alle Methoden in der {{JSL|main}} Methode mit allen gegebenen {{JSL|int[]}}.
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.


'''Beispielaufruf'''
'''Beispiel Aufruf'''


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


'''Beispiel Ausgabe'''
'''Beispiel Ausgabe'''
{{BSL|Minimum: 0}}
{{BSL|Minimum: 0}}
'''Beispiel Aufruf'''
{{JSL|System.out.println("Maximum: " + getMax(arr));}}
'''Beispiel Ausgabe'''
{{BSL|Maximum: 23}}


==== Aufgabe 3) ====
==== Aufgabe 3) ====
Erstelle eine '''Methode''' welche eine '''Zahl''' 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.
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(...)}})
 
'''Aufruf'''
{{JML|code=
int[] arr = fillArr(10);
//Ausgabe arr}}
 
'''Ausgabe'''
{{BML|code=
0 1 2 3 4 5 6 7 8 9 10
}}
 
==== 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.
 
== Kalender ==
Siehe Package: '''at/digitialcampus/codingcampus/calendar/'''
==== Aufgabe 1) ====
Gib mit Hilfe der {{JSL|Calendar}} Api den Wochentag des aktuellen Tages inklusive Datum aus.
 
'''Ausgabe'''
 
{{BSL|DI 19.10.2021}}
 
== String manipulation ==
Siehe Package: '''at/digitialcampus/codingcampus/stringmanipulation/'''
 
==== 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'''
 
{{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!}}
 
==== 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}}
 
'''Aufruf'''{{Space10}}{{JSL|"Abc100A".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
 
'''Aufruf'''{{Space10}}{{JSL|"luke010A".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
 
'''Aufruf'''{{Space10}}{{JSL|"test101ABCDE".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}
 
'''Aufruf'''{{Space10}}{{JSL|"test1ABCDE".matches(regex);}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
 
== Datenströme ==
Siehe Package: '''at/digitialcampus/codingcampus/streams/'''
 
'''Die Einlesemethode in allen Aufgaben ist frei wählbar'''
 
==== Aufgabe 1) ====
Lies die Datei '''assets/file.txt''' in einen {{JSL|String}} ein und gib diesen anschließend aus.
 
==== Aufgabe 2) ====
Lies die Datei '''assets/file.txt''' in einen {{JSL|String}} ein und gib die Anzahl der Worte des {{JSL|String}} aus.
 
==== 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 ====
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 20. Oktober 2021, 09:53 Uhr

Zeitlicher Ablauf

Ich würde eine Dauer von 3 Stunden vorschlagen.

Viel Spaß und Erfolg

Vorbereitung

  1. Öffne IntelliJ
  2. Schließe das bestehende Projekt
    1. File
    2. Close Project
  3. Nun solltest du den Welcome Screen von IntelliJ sehen
  4. Klicke auf Get from VCS
    1. Version control: Git
    2. URL: https://gitlab.drlue.at/digitalcampus/codingcampus_2021.09.selbstkontrolle.git
    3. Clone

Abgabe

  1. File
  2. Export
  3. Export to zip file
  4. [vorname]_[nachname]_selbstkontrolle.zip
  5. Zip an Gyula senden


Schleifen

Siehe Package: at/digitialcampus/codingcampus/loops/

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

Siehe Package: at/digitialcampus/codingcampus/methods/

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

printRowStipple("X", 3);


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

printStippleL("X", 3);

Ausgabe

X X X
X

X

X

Input

Siehe Package: at/digitialcampus/codingcampus/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

Arrays

Siehe Package: at/digitialcampus/codingcampus/array/

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 aus.

Aufruf

System.out.println(getFirstAndLast(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 ü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 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 main Methode und gib das Array aus (egal wie, z.b.: Schleife, oder Arrays.toString(...))

Aufruf

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

Ausgabe

0 1 2 3 4 5 6 7 8 9 10

Aufgabe 4)

Sortiere das in der Klasse gegebene int[] mit Hilfe von Bubblesort und gib das Array aus. Ob aufsteigend oder absteigend Sortiert bleibt dir überlassen.

Kalender

Siehe Package: at/digitialcampus/codingcampus/calendar/

Aufgabe 1)

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

Ausgabe

DI 19.10.2021

String manipulation

Siehe Package: at/digitialcampus/codingcampus/stringmanipulation/

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 main 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          "abc100A".matches(regex);          Ausgabe          true

Aufruf          "Abc100A".matches(regex);          Ausgabe          false

Aufruf          "luke010A".matches(regex);          Ausgabe          false

Aufruf          "test101ABCDE".matches(regex);          Ausgabe          true

Aufruf          "test1ABCDE".matches(regex);          Ausgabe          false

Datenströme

Siehe Package: at/digitialcampus/codingcampus/streams/
Die Einlesemethode in allen Aufgaben ist frei wählbar

Aufgabe 1)

Lies die Datei assets/file.txt in einen String ein und gib diesen anschließend aus.

Aufgabe 2)

Lies die Datei assets/file.txt in einen String ein und gib die Anzahl der Worte des String aus.

Aufgabe 3)

Lies die Datei assets/file.txt in einen String ein, zerlege diesen in Worte und sortiere diese mittels Bubblesort lexikographisch (string.compareTo(otherString) und gib das sortierte 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.