Abitur Hessen Informatik 2022 · LK
Abiturprüfung Informatik in Hessen 2022, LK: 27 Aufgaben mit Lösungen. Themen: Objektorientierte Modellierung mit UML. Mit automatischer Korrektur.
Themen der Prüfung: Objektorientierte Modellierung mit UML · Dynamische Datenstrukturen und Rekursion · ER-Modell und Relationenmodell · Normalisierung und Anomalien · SQL-Abfragen und -Anweisungen · Grammatiken, reguläre Ausdrücke und Syntaxdiagramme · Registermaschine und Berechenbarkeit
Aufgabe Vorschlag AJ - Aufgabe 1 · Objektorientierte Modellierung mit UML
Ticketsystem
In einem Möbelhaus gibt es für Warenausgabe und Reklamation ein gemeinsames Ticketsystem. Die Kunden müssen beim Betreten des Servicebereichs einen von zwei Knöpfen drücken, um entweder ihr Anliegen „Warenausgabe“ (Servicetyp: w) oder „Reklamation“ (Servicetyp: r) anzumelden. Sie erhalten dann ein Ticket mit eindeutiger Ticketnummer. Im Falle einer „Warenausgabe“ muss der Kunde zusätzlich noch den Kassenbon unter einen Barcode-Scanner halten. Eine Servicekraft kann dadurch die passenden Waren für die Abholung bereitstellen.
Die Kunden werden anhand ihrer Ticketnummer für die Bearbeitung ihres Tickets aufgerufen.
Material 1
Die Klassen Ticketsystem, Ticket und Kassenbon
Material 2
Die Methode bearbeiteErstesTicket()
01 public void bearbeiteErstesTicket() {
02 if (Erstes == null)
03 System.out.println("Liste ist leer");
04 else {
05 System.out.println("Nummer: " + Erstes.getNummer());
06 System.out.print("Typ: ");
07 if (Erstes.getTyp() == 'r') {
08 System.out.println("Reklamation");
09 } else {
10 System.out.println("Warenausgabe");
11 Kassenbon einKassenbon = Erstes.getKassenbon();
12 for (int i = 0; i < einKassenbon.getArtikelnummern().length; i++) {
13 System.out.println(einKassenbon.getArtikelnummern()[i]);
14 }
15 }
16 Erstes = Erstes.getNächstes();
17 }
18 }
Material 3
Die Methoden gibNächsteArtikelnummernAus() und gibArtikelnummernAus(...)
01 public void gibNächsteArtikelnummernAus() {
02 gibArtikelnummernAus(Erstes);
03 }
04
05 public void gibArtikelnummernAus(Ticket einTicket) {
06 // siehe Aufgabe 3
07 }
Material 4
UML-Diagramm der abstrakten Klasse TicketA
Aufgabe 1 [4 BE]
Zeichnen Sie die Beziehungen der Klassen in Material 1 ein und begründen Sie Ihre Wahl.
a)
b)
Aufgabe Vorschlag AJ - Aufgabe 2 · Dynamische Datenstrukturen und Rekursion
Ticketsystem
In einem Möbelhaus gibt es für Warenausgabe und Reklamation ein gemeinsames Ticketsystem. Die Kunden müssen beim Betreten des Servicebereichs einen von zwei Knöpfen drücken, um entweder ihr Anliegen „Warenausgabe“ (Servicetyp: w) oder „Reklamation“ (Servicetyp: r) anzumelden. Sie erhalten dann ein Ticket mit eindeutiger Ticketnummer. Im Falle einer „Warenausgabe“ muss der Kunde zusätzlich noch den Kassenbon unter einen Barcode-Scanner halten. Eine Servicekraft kann dadurch die passenden Waren für die Abholung bereitstellen.
Die Kunden werden anhand ihrer Ticketnummer für die Bearbeitung ihres Tickets aufgerufen.
Material 1
Die Klassen Ticketsystem, Ticket und Kassenbon
Material 2
Die Methode bearbeiteErstesTicket()
01 public void bearbeiteErstesTicket() {
02 if (Erstes == null)
03 System.out.println("Liste ist leer");
04 else {
05 System.out.println("Nummer: " + Erstes.getNummer());
06 System.out.print("Typ: ");
07 if (Erstes.getTyp() == 'r') {
08 System.out.println("Reklamation");
09 } else {
10 System.out.println("Warenausgabe");
11 Kassenbon einKassenbon = Erstes.getKassenbon();
12 for (int i = 0; i < einKassenbon.getArtikelnummern().length; i++) {
13 System.out.println(einKassenbon.getArtikelnummern()[i]);
14 }
15 }
16 Erstes = Erstes.getNächstes();
17 }
18 }
Material 3
Die Methoden gibNächsteArtikelnummernAus() und gibArtikelnummernAus(...)
01 public void gibNächsteArtikelnummernAus() {
02 gibArtikelnummernAus(Erstes);
03 }
04
05 public void gibArtikelnummernAus(Ticket einTicket) {
06 // siehe Aufgabe 3
07 }
Material 4
UML-Diagramm der abstrakten Klasse TicketA
Aufgabe 2 [7 BE]
2.1
Implementieren Sie die Methode fügeTicketHinzu(...) der Klasse Ticketsystem. [3 BE]
public void fügeTicketHinzu(Ticket einTicket)
2.2
Analysieren Sie die Methode bearbeiteErstesTicket() der Klasse Ticketsystem aus Material 2. [4 BE]
Aufgabe Vorschlag AJ - Aufgabe 3 · Dynamische Datenstrukturen und Rekursion
Ticketsystem
In einem Möbelhaus gibt es für Warenausgabe und Reklamation ein gemeinsames Ticketsystem. Die Kunden müssen beim Betreten des Servicebereichs einen von zwei Knöpfen drücken, um entweder ihr Anliegen „Warenausgabe“ (Servicetyp: w) oder „Reklamation“ (Servicetyp: r) anzumelden. Sie erhalten dann ein Ticket mit eindeutiger Ticketnummer. Im Falle einer „Warenausgabe“ muss der Kunde zusätzlich noch den Kassenbon unter einen Barcode-Scanner halten. Eine Servicekraft kann dadurch die passenden Waren für die Abholung bereitstellen.
Die Kunden werden anhand ihrer Ticketnummer für die Bearbeitung ihres Tickets aufgerufen.
Material 1
Die Klassen Ticketsystem, Ticket und Kassenbon
Material 2
Die Methode bearbeiteErstesTicket()
01 public void bearbeiteErstesTicket() {
02 if (Erstes == null)
03 System.out.println("Liste ist leer");
04 else {
05 System.out.println("Nummer: " + Erstes.getNummer());
06 System.out.print("Typ: ");
07 if (Erstes.getTyp() == 'r') {
08 System.out.println("Reklamation");
09 } else {
10 System.out.println("Warenausgabe");
11 Kassenbon einKassenbon = Erstes.getKassenbon();
12 for (int i = 0; i < einKassenbon.getArtikelnummern().length; i++) {
13 System.out.println(einKassenbon.getArtikelnummern()[i]);
14 }
15 }
16 Erstes = Erstes.getNächstes();
17 }
18 }
Material 3
Die Methoden gibNächsteArtikelnummernAus() und gibArtikelnummernAus(...)
01 public void gibNächsteArtikelnummernAus() {
02 gibArtikelnummernAus(Erstes);
03 }
04
05 public void gibArtikelnummernAus(Ticket einTicket) {
06 // siehe Aufgabe 3
07 }
Material 4
UML-Diagramm der abstrakten Klasse TicketA
Aufgabe 3
Die Abteilungsleiterin des Servicebereiches möchte die Bearbeitung der Tickets optimieren. Dazu soll das nächste Ticket vom Typ „Warenausgabe“ in der Warteschlange gesucht werden und es sollen alle Artikelnummern auf der Konsole ausgegeben werden, damit ein Servicemitarbeiter die Artikel schon bereitstellen kann.
Liegt im Moment kein Ticket mit Warenausgabe vor, soll eine entsprechende Meldung erscheinen.
Implementieren Sie eine rekursive Methode gibArtikelnummernAus(Ticket einTicket) der Klasse Ticketsystem, die diese Aufgabe erledigt. Beachten Sie dazu Material 3.
Material 3
Die Methoden gibNächsteArtikelnummernAus() und gibArtikelnummernAus(...)
01 public void gibNächsteArtikelnummernAus() {
02 gibArtikelnummernAus(Erstes);
03 }
04
05 public void gibArtikelnummernAus(Ticket einTicket) {
06 // siehe Aufgabe 3
07 }
Aufgabe Vorschlag AJ - Aufgabe 4 · Dynamische Datenstrukturen und Rekursion
Ticketsystem
In einem Möbelhaus gibt es für Warenausgabe und Reklamation ein gemeinsames Ticketsystem. Die Kunden müssen beim Betreten des Servicebereichs einen von zwei Knöpfen drücken, um entweder ihr Anliegen „Warenausgabe“ (Servicetyp: w) oder „Reklamation“ (Servicetyp: r) anzumelden. Sie erhalten dann ein Ticket mit eindeutiger Ticketnummer. Im Falle einer „Warenausgabe“ muss der Kunde zusätzlich noch den Kassenbon unter einen Barcode-Scanner halten. Eine Servicekraft kann dadurch die passenden Waren für die Abholung bereitstellen.
Die Kunden werden anhand ihrer Ticketnummer für die Bearbeitung ihres Tickets aufgerufen.
Material 1
Die Klassen Ticketsystem, Ticket und Kassenbon
Material 2
Die Methode bearbeiteErstesTicket()
01 public void bearbeiteErstesTicket() {
02 if (Erstes == null)
03 System.out.println("Liste ist leer");
04 else {
05 System.out.println("Nummer: " + Erstes.getNummer());
06 System.out.print("Typ: ");
07 if (Erstes.getTyp() == 'r') {
08 System.out.println("Reklamation");
09 } else {
10 System.out.println("Warenausgabe");
11 Kassenbon einKassenbon = Erstes.getKassenbon();
12 for (int i = 0; i < einKassenbon.getArtikelnummern().length; i++) {
13 System.out.println(einKassenbon.getArtikelnummern()[i]);
14 }
15 }
16 Erstes = Erstes.getNächstes();
17 }
18 }
Material 3
Die Methoden gibNächsteArtikelnummernAus() und gibArtikelnummernAus(...)
01 public void gibNächsteArtikelnummernAus() {
02 gibArtikelnummernAus(Erstes);
03 }
04
05 public void gibArtikelnummernAus(Ticket einTicket) {
06 // siehe Aufgabe 3
07 }
Material 4
UML-Diagramm der abstrakten Klasse TicketA
4 Zur weiteren Prozessoptimierung sollen die Serviceaufträge neu strukturiert werden. Es soll eine Möglichkeit geben, die Tickets für die Warenausgabe im Ticketsystem an den Anfang tauschen zu können. Reklamationen sollen erst nach Abarbeitung aller Warenausgaben behandelt werden. Die Reihenfolge innerhalb der Warenausgaben und der Reklamationen soll dabei erhalten bleiben.
4.1
Beschreiben Sie einen Algorithmus, der die Tickets entsprechend dieser Vorgaben sortiert. [4 BE]
4.2
Um die neue Ordnung ständig beizubehalten, muss eine neue Warenausgabe hinter allen Warenausgaben und vor allen Reklamationen eingefügt werden. Implementieren Sie dazu die Methode neuesTicketNachTyp(...) der Klasse Ticketsystem. [8 BE]
public void neuesTicketNachTyp(Ticket einTicket)
Aufgabe Vorschlag AJ - Aufgabe 5 · Objektorientierte Modellierung mit UML
Ticketsystem
In einem Möbelhaus gibt es für Warenausgabe und Reklamation ein gemeinsames Ticketsystem. Die Kunden müssen beim Betreten des Servicebereichs einen von zwei Knöpfen drücken, um entweder ihr Anliegen „Warenausgabe“ (Servicetyp: w) oder „Reklamation“ (Servicetyp: r) anzumelden. Sie erhalten dann ein Ticket mit eindeutiger Ticketnummer. Im Falle einer „Warenausgabe“ muss der Kunde zusätzlich noch den Kassenbon unter einen Barcode-Scanner halten. Eine Servicekraft kann dadurch die passenden Waren für die Abholung bereitstellen.
Die Kunden werden anhand ihrer Ticketnummer für die Bearbeitung ihres Tickets aufgerufen.
Material 1
Die Klassen Ticketsystem, Ticket und Kassenbon
Material 2
Die Methode bearbeiteErstesTicket()
01 public void bearbeiteErstesTicket() {
02 if (Erstes == null)
03 System.out.println("Liste ist leer");
04 else {
05 System.out.println("Nummer: " + Erstes.getNummer());
06 System.out.print("Typ: ");
07 if (Erstes.getTyp() == 'r') {
08 System.out.println("Reklamation");
09 } else {
10 System.out.println("Warenausgabe");
11 Kassenbon einKassenbon = Erstes.getKassenbon();
12 for (int i = 0; i < einKassenbon.getArtikelnummern().length; i++) {
13 System.out.println(einKassenbon.getArtikelnummern()[i]);
14 }
15 }
16 Erstes = Erstes.getNächstes();
17 }
18 }
Material 3
Die Methoden gibNächsteArtikelnummernAus() und gibArtikelnummernAus(...)
01 public void gibNächsteArtikelnummernAus() {
02 gibArtikelnummernAus(Erstes);
03 }
04
05 public void gibArtikelnummernAus(Ticket einTicket) {
06 // siehe Aufgabe 3
07 }
Material 4
UML-Diagramm der abstrakten Klasse TicketA
Für die Modellierung des Ticketsystems kommen noch zwei andere Ansätze in Frage:
Modell A: Reklamation und Warenausgabe werden als eigenständige Klassen der abstrakten Oberklasse TicketA (Material 4) modelliert. Die Klasse Ticketsystem verwaltet eine Liste von TicketA -Objekten.
Modell B: Warenausgabe ist eine Unterklasse der Klasse Reklamation. Die Klasse Ticket entfällt. Die Klasse Ticketsystem verwaltet eine Liste von Reklamation -Objekten.
5.1
Vergleichen Sie die Modellierungen A, B und die in Material 1 gegebene Modellierung unter dem Gesichtspunkt der möglichst realitätsnahen Abbildung der gegebenen Situation. [4 BE]
5.2
Erläutern Sie, welche Änderungen sich für die Implementierung der Methode bearbeiteErstesTicket() (Material 2) der Klasse Ticketsystem bei Modell A ergeben. [3 BE]
Aufgabe Vorschlag B1 - Aufgabe 1 · Normalisierung und Anomalien
Fitnessstudio
In einer Fitnessstudio-Datenbank werden alle relevanten Daten der Kunden, der Trainer und der vorhandenen Geräte verwaltet. Die im Material dargestellten Tabellen geben einen Ausschnitt dieser Datenbank wieder.
Material: Tabellen mit Ausschnitt aus der Fitnessstudio-Datenbank
Kunde
Kundennummer · Vorname · Nachname · Adresse · Geburtsdatum · Trainer · Tarif
K21543 · Jörn · Büchner · Finkenweg 34
55131 Mainz · 12.04.1992 · 106, 712 · T1
K65342 · Hans · Müller · Goethestraße 7
65187 Wiesbaden · 25.11.1965 · 231 · T1
K89873 · Agathe · Bauer · Goethestraße 7
65187 Wiesbaden · 17.06.1968 · 231 · T3
K76105 · Bruno · Meyer · Am Ufer 5
55128 Mainz · 06.08.1957 · · T6
K23704 · Katharina · Schmidt · Bienenweg 26
60306 Frankfurt · 28.02.1993 · 106, 540 · T4
Trainer
ID · Vorname · Nachname · Spezialgebiet
106 · Johannes · Müller · Bodybuilding
712 · Lena · Hofmann · Cardio
540 · Thomas · Schulze · Physio
231 · Annemarie · Zimmer · Bodybuilding
Gerät
Gerätenummer · Bezeichnung · Muskelgruppe · Maximalgewicht · Hersteller · Firmensitz
1 · Lastzug · Rücken · 120 · Superfit · München
2 · Lastzug · Rücken · 100 · Vario · Köln
3 · Adduktion · Oberschenkel · 80 · Vario · Köln
4 · Brustpresse · Brust · 120 · PumpX · Hamburg
5 · Butterfly · Brust · 100 · Superfit · München
6 · Butterfly reverse · Rücken · 100 · PumpX · Hamburg
7 · Adduktion · Oberschenkel · 80 · Vario · Köln
trainiert_an
Kundennummer · Gerätenummer · Gewicht
K21543 · 1 · 45
K21543 · 3 · 40
K21543 · 5 · 35
K65342 · 1 · 40
K65342 · 2 · 80
K65342 · 5 · 40
Aufgaben
1.1
Entscheiden Sie, in welchen Normalformen sich die Relationen Kunde und Gerät befinden.
[3 BE]
1.2
Beschreiben Sie anhand je eines Beispiels zwei verschiedene Anomalien, welche bei der Relation Gerät auftreten können.
[3 BE]
1.3
Überführen Sie die Relationen Kunde und Gerät in die dritte Normalform unter Angabe der Primär- und Fremdschlüssel und erläutern Sie Ihr Vorgehen.
[4 BE]
1.4
Begründen Sie, warum bei den vorgegebenen Daten in der Relation Kunde auf das Attribut Kundennummer verzichtet werden kann, das Attribut Gerätenummer in der Relation Gerät aber notwendig ist.
[2 BE]
Aufgabe Vorschlag B1 - Aufgabe 2 · ER-Modell und Relationenmodell
Fitnessstudio
In einer Fitnessstudio-Datenbank werden alle relevanten Daten der Kunden, der Trainer und der vorhandenen Geräte verwaltet. Die im Material dargestellten Tabellen geben einen Ausschnitt dieser Datenbank wieder.
Material: Tabellen mit Ausschnitt aus der Fitnessstudio-Datenbank
Kunde
Kundennummer · Vorname · Nachname · Adresse · Geburtsdatum · Trainer · Tarif
K21543 · Jörn · Büchner · Finkenweg 34
55131 Mainz · 12.04.1992 · 106, 712 · T1
K65342 · Hans · Müller · Goethestraße 7
65187 Wiesbaden · 25.11.1965 · 231 · T1
K89873 · Agathe · Bauer · Goethestraße 7
65187 Wiesbaden · 17.06.1968 · 231 · T3
K76105 · Bruno · Meyer · Am Ufer 5
55128 Mainz · 06.08.1957 · · T6
K23704 · Katharina · Schmidt · Bienenweg 26
60306 Frankfurt · 28.02.1993 · 106, 540 · T4
Trainer
ID · Vorname · Nachname · Spezialgebiet
106 · Johannes · Müller · Bodybuilding
712 · Lena · Hofmann · Cardio
540 · Thomas · Schulze · Physio
231 · Annemarie · Zimmer · Bodybuilding
Gerät
Gerätenummer · Bezeichnung · Muskelgruppe · Maximalgewicht · Hersteller · Firmensitz
1 · Lastzug · Rücken · 120 · Superfit · München
2 · Lastzug · Rücken · 100 · Vario · Köln
3 · Adduktion · Oberschenkel · 80 · Vario · Köln
4 · Brustpresse · Brust · 120 · PumpX · Hamburg
5 · Butterfly · Brust · 100 · Superfit · München
6 · Butterfly reverse · Rücken · 100 · PumpX · Hamburg
7 · Adduktion · Oberschenkel · 80 · Vario · Köln
trainiert_an
Kundennummer · Gerätenummer · Gewicht
K21543 · 1 · 45
K21543 · 3 · 40
K21543 · 5 · 35
K65342 · 1 · 40
K65342 · 2 · 80
K65342 · 5 · 40
Die Datenbank soll um weitere Mitarbeiter ergänzt werden. Neben den Daten der Trainer sollen auch die Daten der Büromitarbeiter sowie der Reinigungskräfte in der Datenbank verwaltet werden. Für alle Mitarbeiter sollen die ID sowie der Vor- und der Nachname gespeichert werden. Für Büroangestellte soll zusätzlich ihr Ausbildungsberuf gespeichert werden. Für Reinigungskräfte soll nachvollziehbar sein, welche Geräte sie an welchem Tag zu welcher Uhrzeit gereinigt haben.
2.1
Modellieren Sie anhand der Materialvorgabe und unter Berücksichtigung Ihrer Ergebnisse von Aufgabe 1 für die beschriebene Datenbank ein vollständig beschriftetes ER-Diagramm mit Angabe der Kardinalitäten und Optionalitäten.
[6 BE]
2.2
Überführen Sie Ihr ER-Diagramm in ein optimiertes Relationenmodell und kennzeichnen Sie die Primär- und Fremdschlüssel. Auf die bereits in der Aufgabe 1.3 angegebenen Relationen kann verzichtet werden.
[3 BE]
Aufgabe Vorschlag B1 - Aufgabe 3 · SQL-Abfragen und -Anweisungen
Fitnessstudio
In einer Fitnessstudio-Datenbank werden alle relevanten Daten der Kunden, der Trainer und der vorhandenen Geräte verwaltet. Die im Material dargestellten Tabellen geben einen Ausschnitt dieser Datenbank wieder.
Material: Tabellen mit Ausschnitt aus der Fitnessstudio-Datenbank
Kunde
Kundennummer · Vorname · Nachname · Adresse · Geburtsdatum · Trainer · Tarif
K21543 · Jörn · Büchner · Finkenweg 34
55131 Mainz · 12.04.1992 · 106, 712 · T1
K65342 · Hans · Müller · Goethestraße 7
65187 Wiesbaden · 25.11.1965 · 231 · T1
K89873 · Agathe · Bauer · Goethestraße 7
65187 Wiesbaden · 17.06.1968 · 231 · T3
K76105 · Bruno · Meyer · Am Ufer 5
55128 Mainz · 06.08.1957 · · T6
K23704 · Katharina · Schmidt · Bienenweg 26
60306 Frankfurt · 28.02.1993 · 106, 540 · T4
Trainer
ID · Vorname · Nachname · Spezialgebiet
106 · Johannes · Müller · Bodybuilding
712 · Lena · Hofmann · Cardio
540 · Thomas · Schulze · Physio
231 · Annemarie · Zimmer · Bodybuilding
Gerät
Gerätenummer · Bezeichnung · Muskelgruppe · Maximalgewicht · Hersteller · Firmensitz
1 · Lastzug · Rücken · 120 · Superfit · München
2 · Lastzug · Rücken · 100 · Vario · Köln
3 · Adduktion · Oberschenkel · 80 · Vario · Köln
4 · Brustpresse · Brust · 120 · PumpX · Hamburg
5 · Butterfly · Brust · 100 · Superfit · München
6 · Butterfly reverse · Rücken · 100 · PumpX · Hamburg
7 · Adduktion · Oberschenkel · 80 · Vario · Köln
trainiert_an
Kundennummer · Gerätenummer · Gewicht
K21543 · 1 · 45
K21543 · 3 · 40
K21543 · 5 · 35
K65342 · 1 · 40
K65342 · 2 · 80
K65342 · 5 · 40
3 Erläutern Sie den Aufbau und die inhaltliche Bedeutung der folgenden SQL-Anweisungen:
3.1
SELECT Kunde.Kundennummer, Kunde.Nachname, Kunde.Vorname
FROM Kunde, betreut, Trainer, Mitarbeiter
WHERE Kunde.Kundennummer = betreut.Kundennummer
AND Trainer.ID = betreut.ID
AND Trainer.ID = Mitarbeiter.ID
AND Mitarbeiter.Vorname = 'Thomas'
AND Mitarbeiter.Nachname = 'Schulze'
3.2
SELECT DISTINCT Bezeichnung
FROM Gerät INNER JOIN trainiert_an
ON Gerät.Gerätenummer = trainiert_an.Gerätenummer
WHERE Gewicht > 99
3.3
SELECT COUNT(Kunde.Kundennummer), Trainer.ID, Mitarbeiter.Nachname, Mitarbeiter.Vorname
FROM Kunde INNER JOIN (betreut NATURAL JOIN (
Trainer NATURAL JOIN Mitarbeiter)) ON
Kunde.Kundennummer = betreut.Kundennummer
WHERE Spezialgebiet = 'Bodybuilding'
GROUP BY Trainer.ID, Mitarbeiter.Nachname, Mitarbeiter.Vorname
HAVING MIN(Geburtsdatum) < '1952-01-01'
Aufgabe Vorschlag B1 - Aufgabe 4 · SQL-Abfragen und -Anweisungen
Fitnessstudio
In einer Fitnessstudio-Datenbank werden alle relevanten Daten der Kunden, der Trainer und der vorhandenen Geräte verwaltet. Die im Material dargestellten Tabellen geben einen Ausschnitt dieser Datenbank wieder.
Material: Tabellen mit Ausschnitt aus der Fitnessstudio-Datenbank
Kunde
Kundennummer · Vorname · Nachname · Adresse · Geburtsdatum · Trainer · Tarif
K21543 · Jörn · Büchner · Finkenweg 34
55131 Mainz · 12.04.1992 · 106, 712 · T1
K65342 · Hans · Müller · Goethestraße 7
65187 Wiesbaden · 25.11.1965 · 231 · T1
K89873 · Agathe · Bauer · Goethestraße 7
65187 Wiesbaden · 17.06.1968 · 231 · T3
K76105 · Bruno · Meyer · Am Ufer 5
55128 Mainz · 06.08.1957 · · T6
K23704 · Katharina · Schmidt · Bienenweg 26
60306 Frankfurt · 28.02.1993 · 106, 540 · T4
Trainer
ID · Vorname · Nachname · Spezialgebiet
106 · Johannes · Müller · Bodybuilding
712 · Lena · Hofmann · Cardio
540 · Thomas · Schulze · Physio
231 · Annemarie · Zimmer · Bodybuilding
Gerät
Gerätenummer · Bezeichnung · Muskelgruppe · Maximalgewicht · Hersteller · Firmensitz
1 · Lastzug · Rücken · 120 · Superfit · München
2 · Lastzug · Rücken · 100 · Vario · Köln
3 · Adduktion · Oberschenkel · 80 · Vario · Köln
4 · Brustpresse · Brust · 120 · PumpX · Hamburg
5 · Butterfly · Brust · 100 · Superfit · München
6 · Butterfly reverse · Rücken · 100 · PumpX · Hamburg
7 · Adduktion · Oberschenkel · 80 · Vario · Köln
trainiert_an
Kundennummer · Gerätenummer · Gewicht
K21543 · 1 · 45
K21543 · 3 · 40
K21543 · 5 · 35
K65342 · 1 · 40
K65342 · 2 · 80
K65342 · 5 · 40
4 Implementieren Sie SQL-Anweisungen für die folgenden Anforderungen/Abfragen:
4.1
Die Gerätenummern, Bezeichnungen und die Hersteller aller Geräte, an denen der Kunde Bruno Meyer trainiert, sollen ausgegeben werden.
4.2
Der Firmensitz des Herstellers Superfit soll zu 'Wiesbaden' geändert werden.
4.3
Für alle Kundennummern soll die Anzahl der Geräte, die sie nutzen, ausgegeben werden.
Aufgabe Vorschlag B1 - Aufgabe 5 · SQL-Abfragen und -Anweisungen
Fitnessstudio
In einer Fitnessstudio-Datenbank werden alle relevanten Daten der Kunden, der Trainer und der vorhandenen Geräte verwaltet. Die im Material dargestellten Tabellen geben einen Ausschnitt dieser Datenbank wieder.
Material: Tabellen mit Ausschnitt aus der Fitnessstudio-Datenbank
Kunde
Kundennummer · Vorname · Nachname · Adresse · Geburtsdatum · Trainer · Tarif
K21543 · Jörn · Büchner · Finkenweg 34
55131 Mainz · 12.04.1992 · 106, 712 · T1
K65342 · Hans · Müller · Goethestraße 7
65187 Wiesbaden · 25.11.1965 · 231 · T1
K89873 · Agathe · Bauer · Goethestraße 7
65187 Wiesbaden · 17.06.1968 · 231 · T3
K76105 · Bruno · Meyer · Am Ufer 5
55128 Mainz · 06.08.1957 · · T6
K23704 · Katharina · Schmidt · Bienenweg 26
60306 Frankfurt · 28.02.1993 · 106, 540 · T4
Trainer
ID · Vorname · Nachname · Spezialgebiet
106 · Johannes · Müller · Bodybuilding
712 · Lena · Hofmann · Cardio
540 · Thomas · Schulze · Physio
231 · Annemarie · Zimmer · Bodybuilding
Gerät
Gerätenummer · Bezeichnung · Muskelgruppe · Maximalgewicht · Hersteller · Firmensitz
1 · Lastzug · Rücken · 120 · Superfit · München
2 · Lastzug · Rücken · 100 · Vario · Köln
3 · Adduktion · Oberschenkel · 80 · Vario · Köln
4 · Brustpresse · Brust · 120 · PumpX · Hamburg
5 · Butterfly · Brust · 100 · Superfit · München
6 · Butterfly reverse · Rücken · 100 · PumpX · Hamburg
7 · Adduktion · Oberschenkel · 80 · Vario · Köln
trainiert_an
Kundennummer · Gerätenummer · Gewicht
K21543 · 1 · 45
K21543 · 3 · 40
K21543 · 5 · 35
K65342 · 1 · 40
K65342 · 2 · 80
K65342 · 5 · 40
5 In SQL können auch Mengenoperationen angewandt werden. Durch die SQL-Klausel MINUS werden die Zeilen ausgegeben, die in der ersten Menge, nicht aber in der zweiten Menge enthalten sind. Beispiel:
SELECT Gerätenummer FROM Gerät
MINUS SELECT Gerätenummer FROM reinigt WHERE Datum = '2022-03-01'
Formulieren Sie ein SQL-Statement, das die gleiche Ausgabe mit Hilfe einer geschachtelten SQL-Anweisung erzeugt.
Aufgabe Vorschlag B2 - Aufgabe 1 · Normalisierung und Anomalien
Endgeräte-Verleih
Eine Schülergruppe hat ein computergesteuertes Regalsystem mit Behältern entwickelt, das die Ausleihe von Endgeräten an Schülerinnen und Schüler kontaktlos, sicher und kurzfristig möglich machen soll.
Der Verschluss jedes Behälters im Regal kann elektronisch gesteuert geöffnet werden, so dass man dem Behälter Objekte entnehmen oder sie zurücklegen kann. Ein Computer kontrolliert den Zugriff und gibt einen oder mehrere Behälter frei, wenn die Schülerin oder der Schüler innerhalb des gebuchten Zeitraums den korrekten Einmal-Code eingibt.
Die Schülerinnen und Schüler nutzen zur Buchung eine App, die wie der Computer des Regalsystems Zugriff auf eine Relationale Datenbank hat. In der Datenbank sollen die folgenden Informationen berücksichtigt werden:
Jeder Behälter hat eine eindeutige Behälternummer, eine bestimmte Lage im Regal und kann mehrere Objekte enthalten, die am Ende der Nutzung alle gemeinsam zurückgegeben werden müssen. Die Objekte sind jeweils einem Behälter fest zugeordnet.
Jedes Objekt, das sich in einem Behälter befinden kann, hat eine ID, eine Beschreibung und einen Status (ok, defekt, unvollständig).
Jeder Schüler hat eine eindeutige Schülernummer, einen Vor- und einen Nachnamen, eine Klassenbezeichnung sowie ein Passwort.
Jeder Schüler darf die Buchung von einem oder mehreren Behältern für einen beliebigen Zeitraum, von dem das Anfangsdatum und das Enddatum festgehalten werden, veranlassen, wenn in diesem Zeitraum bisher keine anderen Buchungen für diese Behälter vorliegen. Die Buchungen sind durch eine eindeutige Buchungsnummer unterscheidbar.
Zu jeder Buchung zeigt die App einen nach festem Schema zufällig generierten Code an, der am Regal in der Schule eingegeben werden muss, um den oder die Behälter öffnen zu können.
Es wird außerdem im Attribut Öffnung dokumentiert, wann die Öffnung erfolgt ist. Gleichzeitig gebuchte Behälter werden auch zur gleichen Zeit geöffnet.
Material 1
Ausschnitt der Relation Behälterbuchung
Behälternummer
Anfangsdatum
Enddatum
ObjektID
Code
1
2022-03-14
2022-03-19
65
Lm432L
2
2022-03-20
2022-03-25
134
Xr435K
3
2022-03-14
2022-03-19
132
Az420H
3
2022-03-22
2022-03-25
132
Ur231J
3
2022-03-14
2022-03-19
298
Az420H
3
2022-03-22
2022-03-25
298
Ur231J
Material 2
Ausschnitt eines ER-Diagramms
Aufgabe 1
Die im Material 1 gegebene Relation ist ein erster Ansatz der Datenbank.
1.1
Begründen Sie, dass die Relation Behälterbuchung nicht in zweiter Normalform vorliegt. [2 BE]
1.2
Überführen Sie die Relation Behälterbuchung in ein Relationenmodell, das sich in dritter Normalform befindet. [2 BE]
Aufgabe Vorschlag B2 - Aufgabe 2 · ER-Modell und Relationenmodell
Endgeräte-Verleih
Eine Schülergruppe hat ein computergesteuertes Regalsystem mit Behältern entwickelt, das die Ausleihe von Endgeräten an Schülerinnen und Schüler kontaktlos, sicher und kurzfristig möglich machen soll.
Der Verschluss jedes Behälters im Regal kann elektronisch gesteuert geöffnet werden, so dass man dem Behälter Objekte entnehmen oder sie zurücklegen kann. Ein Computer kontrolliert den Zugriff und gibt einen oder mehrere Behälter frei, wenn die Schülerin oder der Schüler innerhalb des gebuchten Zeitraums den korrekten Einmal-Code eingibt.
Die Schülerinnen und Schüler nutzen zur Buchung eine App, die wie der Computer des Regalsystems Zugriff auf eine Relationale Datenbank hat. In der Datenbank sollen die folgenden Informationen berücksichtigt werden:
Jeder Behälter hat eine eindeutige Behälternummer, eine bestimmte Lage im Regal und kann mehrere Objekte enthalten, die am Ende der Nutzung alle gemeinsam zurückgegeben werden müssen. Die Objekte sind jeweils einem Behälter fest zugeordnet.
Jedes Objekt, das sich in einem Behälter befinden kann, hat eine ID, eine Beschreibung und einen Status (ok, defekt, unvollständig).
Jeder Schüler hat eine eindeutige Schülernummer, einen Vor- und einen Nachnamen, eine Klassenbezeichnung sowie ein Passwort.
Jeder Schüler darf die Buchung von einem oder mehreren Behältern für einen beliebigen Zeitraum, von dem das Anfangsdatum und das Enddatum festgehalten werden, veranlassen, wenn in diesem Zeitraum bisher keine anderen Buchungen für diese Behälter vorliegen. Die Buchungen sind durch eine eindeutige Buchungsnummer unterscheidbar.
Zu jeder Buchung zeigt die App einen nach festem Schema zufällig generierten Code an, der am Regal in der Schule eingegeben werden muss, um den oder die Behälter öffnen zu können.
Es wird außerdem im Attribut Öffnung dokumentiert, wann die Öffnung erfolgt ist. Gleichzeitig gebuchte Behälter werden auch zur gleichen Zeit geöffnet.
Material 1
Ausschnitt der Relation Behälterbuchung
Behälternummer
Anfangsdatum
Enddatum
ObjektID
Code
1
2022-03-14
2022-03-19
65
Lm432L
2
2022-03-20
2022-03-25
134
Xr435K
3
2022-03-14
2022-03-19
132
Az420H
3
2022-03-22
2022-03-25
132
Ur231J
3
2022-03-14
2022-03-19
298
Az420H
3
2022-03-22
2022-03-25
298
Ur231J
Material 2
Ausschnitt eines ER-Diagramms
2
Modellieren Sie für die beschriebene Situation ein ER-Diagramm mit Angabe der Kardinalitäten und Optionalitäten. (5 BE)
Aufgabe Vorschlag B2 - Aufgabe 3 · ER-Modell und Relationenmodell
Endgeräte-Verleih
Eine Schülergruppe hat ein computergesteuertes Regalsystem mit Behältern entwickelt, das die Ausleihe von Endgeräten an Schülerinnen und Schüler kontaktlos, sicher und kurzfristig möglich machen soll.
Der Verschluss jedes Behälters im Regal kann elektronisch gesteuert geöffnet werden, so dass man dem Behälter Objekte entnehmen oder sie zurücklegen kann. Ein Computer kontrolliert den Zugriff und gibt einen oder mehrere Behälter frei, wenn die Schülerin oder der Schüler innerhalb des gebuchten Zeitraums den korrekten Einmal-Code eingibt.
Die Schülerinnen und Schüler nutzen zur Buchung eine App, die wie der Computer des Regalsystems Zugriff auf eine Relationale Datenbank hat. In der Datenbank sollen die folgenden Informationen berücksichtigt werden:
Jeder Behälter hat eine eindeutige Behälternummer, eine bestimmte Lage im Regal und kann mehrere Objekte enthalten, die am Ende der Nutzung alle gemeinsam zurückgegeben werden müssen. Die Objekte sind jeweils einem Behälter fest zugeordnet.
Jedes Objekt, das sich in einem Behälter befinden kann, hat eine ID, eine Beschreibung und einen Status (ok, defekt, unvollständig).
Jeder Schüler hat eine eindeutige Schülernummer, einen Vor- und einen Nachnamen, eine Klassenbezeichnung sowie ein Passwort.
Jeder Schüler darf die Buchung von einem oder mehreren Behältern für einen beliebigen Zeitraum, von dem das Anfangsdatum und das Enddatum festgehalten werden, veranlassen, wenn in diesem Zeitraum bisher keine anderen Buchungen für diese Behälter vorliegen. Die Buchungen sind durch eine eindeutige Buchungsnummer unterscheidbar.
Zu jeder Buchung zeigt die App einen nach festem Schema zufällig generierten Code an, der am Regal in der Schule eingegeben werden muss, um den oder die Behälter öffnen zu können.
Es wird außerdem im Attribut Öffnung dokumentiert, wann die Öffnung erfolgt ist. Gleichzeitig gebuchte Behälter werden auch zur gleichen Zeit geöffnet.
Material 1
Ausschnitt der Relation Behälterbuchung
Behälternummer
Anfangsdatum
Enddatum
ObjektID
Code
1
2022-03-14
2022-03-19
65
Lm432L
2
2022-03-20
2022-03-25
134
Xr435K
3
2022-03-14
2022-03-19
132
Az420H
3
2022-03-22
2022-03-25
132
Ur231J
3
2022-03-14
2022-03-19
298
Az420H
3
2022-03-22
2022-03-25
298
Ur231J
Material 2
Ausschnitt eines ER-Diagramms
Es gibt immer wieder Beschwerden über vorangegangene Buchungen, die zusätzlich gespeichert werden sollen. Es kann ein kurzer Beschwerdetext verfasst werden. Dazu werden die aktuelle Buchungsnummer sowie die Buchungsnummer der Buchung, über die die Beschwerde erfolgt, in der Datenbank gespeichert. Eine mögliche Modellierung ist im Material 2 gegeben.
3.1
Überführen Sie das gegebene ER-Diagramm (Material 2) in das Relationenmodell und erläutern Sie Ihr Vorgehen. [3 BE]
3.2
Modellieren Sie den im Material 2 gegebenen Ausschnitt mit Angabe von Kardinalitäten und Optionalitäten mit Hilfe eines Beziehungstyps beschwert_sich_über anstatt des zusätzlichen Entitätstyps Beschwerde. [2 BE]
3.3
Vergleichen Sie beide Modellierungen (Aufgaben 3.1 und 3.2) auf der Ebene des Relationenmodells. [1 BE]
Aufgabe Vorschlag B2 - Aufgabe 4 · ER-Modell und Relationenmodell
Endgeräte-Verleih
Eine Schülergruppe hat ein computergesteuertes Regalsystem mit Behältern entwickelt, das die Ausleihe von Endgeräten an Schülerinnen und Schüler kontaktlos, sicher und kurzfristig möglich machen soll.
Der Verschluss jedes Behälters im Regal kann elektronisch gesteuert geöffnet werden, so dass man dem Behälter Objekte entnehmen oder sie zurücklegen kann. Ein Computer kontrolliert den Zugriff und gibt einen oder mehrere Behälter frei, wenn die Schülerin oder der Schüler innerhalb des gebuchten Zeitraums den korrekten Einmal-Code eingibt.
Die Schülerinnen und Schüler nutzen zur Buchung eine App, die wie der Computer des Regalsystems Zugriff auf eine Relationale Datenbank hat. In der Datenbank sollen die folgenden Informationen berücksichtigt werden:
Jeder Behälter hat eine eindeutige Behälternummer, eine bestimmte Lage im Regal und kann mehrere Objekte enthalten, die am Ende der Nutzung alle gemeinsam zurückgegeben werden müssen. Die Objekte sind jeweils einem Behälter fest zugeordnet.
Jedes Objekt, das sich in einem Behälter befinden kann, hat eine ID, eine Beschreibung und einen Status (ok, defekt, unvollständig).
Jeder Schüler hat eine eindeutige Schülernummer, einen Vor- und einen Nachnamen, eine Klassenbezeichnung sowie ein Passwort.
Jeder Schüler darf die Buchung von einem oder mehreren Behältern für einen beliebigen Zeitraum, von dem das Anfangsdatum und das Enddatum festgehalten werden, veranlassen, wenn in diesem Zeitraum bisher keine anderen Buchungen für diese Behälter vorliegen. Die Buchungen sind durch eine eindeutige Buchungsnummer unterscheidbar.
Zu jeder Buchung zeigt die App einen nach festem Schema zufällig generierten Code an, der am Regal in der Schule eingegeben werden muss, um den oder die Behälter öffnen zu können.
Es wird außerdem im Attribut Öffnung dokumentiert, wann die Öffnung erfolgt ist. Gleichzeitig gebuchte Behälter werden auch zur gleichen Zeit geöffnet.
Material 1
Ausschnitt der Relation Behälterbuchung
Behälternummer
Anfangsdatum
Enddatum
ObjektID
Code
1
2022-03-14
2022-03-19
65
Lm432L
2
2022-03-20
2022-03-25
134
Xr435K
3
2022-03-14
2022-03-19
132
Az420H
3
2022-03-22
2022-03-25
132
Ur231J
3
2022-03-14
2022-03-19
298
Az420H
3
2022-03-22
2022-03-25
298
Ur231J
Material 2
Ausschnitt eines ER-Diagramms
Überführen Sie Ihr ER-Diagramm mit der in Material 2 gegebenen Erweiterung in ein optimiertes Relationenmodell und kennzeichnen Sie die Primär- und Fremdschlüssel. [4 BE]
Aufgabe Vorschlag B2 - Aufgabe 5 · SQL-Abfragen und -Anweisungen
Endgeräte-Verleih
Eine Schülergruppe hat ein computergesteuertes Regalsystem mit Behältern entwickelt, das die Ausleihe von Endgeräten an Schülerinnen und Schüler kontaktlos, sicher und kurzfristig möglich machen soll.
Der Verschluss jedes Behälters im Regal kann elektronisch gesteuert geöffnet werden, so dass man dem Behälter Objekte entnehmen oder sie zurücklegen kann. Ein Computer kontrolliert den Zugriff und gibt einen oder mehrere Behälter frei, wenn die Schülerin oder der Schüler innerhalb des gebuchten Zeitraums den korrekten Einmal-Code eingibt.
Die Schülerinnen und Schüler nutzen zur Buchung eine App, die wie der Computer des Regalsystems Zugriff auf eine Relationale Datenbank hat. In der Datenbank sollen die folgenden Informationen berücksichtigt werden:
Jeder Behälter hat eine eindeutige Behälternummer, eine bestimmte Lage im Regal und kann mehrere Objekte enthalten, die am Ende der Nutzung alle gemeinsam zurückgegeben werden müssen. Die Objekte sind jeweils einem Behälter fest zugeordnet.
Jedes Objekt, das sich in einem Behälter befinden kann, hat eine ID, eine Beschreibung und einen Status (ok, defekt, unvollständig).
Jeder Schüler hat eine eindeutige Schülernummer, einen Vor- und einen Nachnamen, eine Klassenbezeichnung sowie ein Passwort.
Jeder Schüler darf die Buchung von einem oder mehreren Behältern für einen beliebigen Zeitraum, von dem das Anfangsdatum und das Enddatum festgehalten werden, veranlassen, wenn in diesem Zeitraum bisher keine anderen Buchungen für diese Behälter vorliegen. Die Buchungen sind durch eine eindeutige Buchungsnummer unterscheidbar.
Zu jeder Buchung zeigt die App einen nach festem Schema zufällig generierten Code an, der am Regal in der Schule eingegeben werden muss, um den oder die Behälter öffnen zu können.
Es wird außerdem im Attribut Öffnung dokumentiert, wann die Öffnung erfolgt ist. Gleichzeitig gebuchte Behälter werden auch zur gleichen Zeit geöffnet.
Material 1
Ausschnitt der Relation Behälterbuchung
Behälternummer
Anfangsdatum
Enddatum
ObjektID
Code
1
2022-03-14
2022-03-19
65
Lm432L
2
2022-03-20
2022-03-25
134
Xr435K
3
2022-03-14
2022-03-19
132
Az420H
3
2022-03-22
2022-03-25
132
Ur231J
3
2022-03-14
2022-03-19
298
Az420H
3
2022-03-22
2022-03-25
298
Ur231J
Material 2
Ausschnitt eines ER-Diagramms
Implementieren Sie auf der Grundlage Ihres Relationenmodells aus Aufgabe 4 SQL-Anweisungen für die folgenden Anforderungen:
5.1
Die Anzahl der Objekte, in deren Beschreibung die Zeichenfolgen 'Netzteil' und '19V' vorkommen, soll ausgegeben werden. [2 BE]
5.2
Es sollen alle Buchungen des Behälters mit der Behälternummer 4 ausgegeben werden, die sich mit dem Zeitraum '2022-05-17' bis '2022-05-25' überschneiden. [2 BE]
5.3
Es sollen die Schülernummern aller Schüler, die Behälter 3 bereits gebucht haben, absteigend sortiert nach dem Enddatum der Buchung ausgegeben werden. [2 BE]
5.4
Der Status des Objektes mit der Beschreibung 'Laptop 15 Zoll' aus der Buchung mit der Buchungsnummer 455 soll auf unvollständig gesetzt werden. Es kann davon ausgegangen werden, dass nur ein Laptop mit dieser Beschreibung in den Behältern der Buchung 455 vorhanden ist. [3 BE]
Aufgabe Vorschlag B2 - Aufgabe 6 · SQL-Abfragen und -Anweisungen
Endgeräte-Verleih
Eine Schülergruppe hat ein computergesteuertes Regalsystem mit Behältern entwickelt, das die Ausleihe von Endgeräten an Schülerinnen und Schüler kontaktlos, sicher und kurzfristig möglich machen soll.
Der Verschluss jedes Behälters im Regal kann elektronisch gesteuert geöffnet werden, so dass man dem Behälter Objekte entnehmen oder sie zurücklegen kann. Ein Computer kontrolliert den Zugriff und gibt einen oder mehrere Behälter frei, wenn die Schülerin oder der Schüler innerhalb des gebuchten Zeitraums den korrekten Einmal-Code eingibt.
Die Schülerinnen und Schüler nutzen zur Buchung eine App, die wie der Computer des Regalsystems Zugriff auf eine Relationale Datenbank hat. In der Datenbank sollen die folgenden Informationen berücksichtigt werden:
Jeder Behälter hat eine eindeutige Behälternummer, eine bestimmte Lage im Regal und kann mehrere Objekte enthalten, die am Ende der Nutzung alle gemeinsam zurückgegeben werden müssen. Die Objekte sind jeweils einem Behälter fest zugeordnet.
Jedes Objekt, das sich in einem Behälter befinden kann, hat eine ID, eine Beschreibung und einen Status (ok, defekt, unvollständig).
Jeder Schüler hat eine eindeutige Schülernummer, einen Vor- und einen Nachnamen, eine Klassenbezeichnung sowie ein Passwort.
Jeder Schüler darf die Buchung von einem oder mehreren Behältern für einen beliebigen Zeitraum, von dem das Anfangsdatum und das Enddatum festgehalten werden, veranlassen, wenn in diesem Zeitraum bisher keine anderen Buchungen für diese Behälter vorliegen. Die Buchungen sind durch eine eindeutige Buchungsnummer unterscheidbar.
Zu jeder Buchung zeigt die App einen nach festem Schema zufällig generierten Code an, der am Regal in der Schule eingegeben werden muss, um den oder die Behälter öffnen zu können.
Es wird außerdem im Attribut Öffnung dokumentiert, wann die Öffnung erfolgt ist. Gleichzeitig gebuchte Behälter werden auch zur gleichen Zeit geöffnet.
Material 1
Ausschnitt der Relation Behälterbuchung
Behälternummer
Anfangsdatum
Enddatum
ObjektID
Code
1
2022-03-14
2022-03-19
65
Lm432L
2
2022-03-20
2022-03-25
134
Xr435K
3
2022-03-14
2022-03-19
132
Az420H
3
2022-03-22
2022-03-25
132
Ur231J
3
2022-03-14
2022-03-19
298
Az420H
3
2022-03-22
2022-03-25
298
Ur231J
Material 2
Ausschnitt eines ER-Diagramms
Erläutern Sie den Aufbau und die inhaltliche Bedeutung der folgenden SQL-Anweisung:
SELECT Vorname, Nachname, Klassenbezeichnung, COUNT(Buchungsnummer) AS Buchungsanzahl
FROM Schüler NATURAL JOIN Buchung
WHERE Öffnung IS NULL
AND Enddatum < '2022-04-01'
GROUP BY Vorname, Nachname, Klassenbezeichnung
HAVING Buchungsanzahl > 1
ORDER BY Buchungsanzahl DESC
Aufgabe Vorschlag B2 - Aufgabe 7 · SQL-Abfragen und -Anweisungen
Endgeräte-Verleih
Eine Schülergruppe hat ein computergesteuertes Regalsystem mit Behältern entwickelt, das die Ausleihe von Endgeräten an Schülerinnen und Schüler kontaktlos, sicher und kurzfristig möglich machen soll.
Der Verschluss jedes Behälters im Regal kann elektronisch gesteuert geöffnet werden, so dass man dem Behälter Objekte entnehmen oder sie zurücklegen kann. Ein Computer kontrolliert den Zugriff und gibt einen oder mehrere Behälter frei, wenn die Schülerin oder der Schüler innerhalb des gebuchten Zeitraums den korrekten Einmal-Code eingibt.
Die Schülerinnen und Schüler nutzen zur Buchung eine App, die wie der Computer des Regalsystems Zugriff auf eine Relationale Datenbank hat. In der Datenbank sollen die folgenden Informationen berücksichtigt werden:
Jeder Behälter hat eine eindeutige Behälternummer, eine bestimmte Lage im Regal und kann mehrere Objekte enthalten, die am Ende der Nutzung alle gemeinsam zurückgegeben werden müssen. Die Objekte sind jeweils einem Behälter fest zugeordnet.
Jedes Objekt, das sich in einem Behälter befinden kann, hat eine ID, eine Beschreibung und einen Status (ok, defekt, unvollständig).
Jeder Schüler hat eine eindeutige Schülernummer, einen Vor- und einen Nachnamen, eine Klassenbezeichnung sowie ein Passwort.
Jeder Schüler darf die Buchung von einem oder mehreren Behältern für einen beliebigen Zeitraum, von dem das Anfangsdatum und das Enddatum festgehalten werden, veranlassen, wenn in diesem Zeitraum bisher keine anderen Buchungen für diese Behälter vorliegen. Die Buchungen sind durch eine eindeutige Buchungsnummer unterscheidbar.
Zu jeder Buchung zeigt die App einen nach festem Schema zufällig generierten Code an, der am Regal in der Schule eingegeben werden muss, um den oder die Behälter öffnen zu können.
Es wird außerdem im Attribut Öffnung dokumentiert, wann die Öffnung erfolgt ist. Gleichzeitig gebuchte Behälter werden auch zur gleichen Zeit geöffnet.
Material 1
Ausschnitt der Relation Behälterbuchung
Behälternummer
Anfangsdatum
Enddatum
ObjektID
Code
1
2022-03-14
2022-03-19
65
Lm432L
2
2022-03-20
2022-03-25
134
Xr435K
3
2022-03-14
2022-03-19
132
Az420H
3
2022-03-22
2022-03-25
132
Ur231J
3
2022-03-14
2022-03-19
298
Az420H
3
2022-03-22
2022-03-25
298
Ur231J
Material 2
Ausschnitt eines ER-Diagramms
Da es immer lange dauert, bis der technische Support defekt gemeldete Geräte überprüft und ggf. repariert, soll die Überprüfung von Geräten durch Paten aus der Schülerschaft erfolgen. Dafür soll eine neue Relation durch folgenden Befehl erzeugt werden. Ein Gerät soll maximal einem Paten zugewiesen werden können.
CREATE TABLE ist_Pate_für (
ID INT,
Schülernummer INT,
PRIMARY KEY (ID, Schülernummer),
FOREIGN KEY (ID) REFERENCES Objekt(ID),
FOREIGN KEY (Schülernummer) REFERENCES Schüler (Schülernummer)
)
Analysieren Sie den gegebenen Befehl und prüfen Sie, ob die zugrundeliegende Modellierung den Anforderungen gerecht wird.
Aufgabe Vorschlag C1 - Aufgabe 1 · Grammatiken, reguläre Ausdrücke und Syntaxdiagramme
WHILE-Programme
WHILE-Programme sind ein Berechnungsformalismus, der an traditionelle Programmiersprachen angelehnt ist.
WHILE-Programme bestehen aus:
Variablen (), Konstanten (), Trennsymbolen (),
Operationszeichen () und Schlüsselwörtern ( WHILE, DO, END).
WHILE-Programme sind wie folgt definiert:
Jede Wertzuweisung mit den Variablen und und der Konstanten der Form bzw. ist ein WHILE-Programm.
Falls und WHILE-Programme sind, dann ist auch ein WHILE-Programm.
Falls ein WHILE-Programm ist und eine Variable, dann ist auch WHILE DO END ein WHILE-Programm.
Bei der Wertzuweisung wird der Variablen die Summe der Werte von und zugewiesen. Bei der Wertzuweisung ist dies entsprechend die Differenz, wenn der Wert nicht negativ ist. Ist , wird der Variablen der Wert zugewiesen.
Die Komposition wird so interpretiert, dass zuerst und anschließend ausgeführt wird.
Innerhalb einer WHILE-Schleife WHILE DO END ist das Programm solange wiederholt auszuführen, wie der Wert von ungleich Null ist.
Material 1
WHILE-Programm für die WHILE-berechenbare Funktion
01 x3:= x1 + 0;
02 WHILE x2 ≠ 0 DO
03 WHILE x1 ≠ 0 DO
04 x0:= x0 + 1;
05 x1:= x1 - 1
06 END;
07 x1:= x3 + 0;
08 x2:= x2 - 1
09 END Hinweis: In den Variablen und stehen anfangs die Werte und . Die restlichen Variablen sind mit dem Wert vorbelegt.
Material 2
WHILE-Programm für die WHILE-berechenbare Funktion
01 x0:= x0 + 1;
02 WHILE x2 ≠ 0 DO
03 x0:= x0 * x1;
04 x2:= x2 - 1
05 END Hinweis: Zur Abkürzung wurde hier x0:= x0 * x1; verwendet, da dieser Ausdruck WHILE-berechenbar ist (siehe Material 1). Die Vorbelegung der Variablen , und entspricht der in Material 1 beschriebenen.
Material 3
Beispiel eines WHILE-Programms
01 x2:= x1 + 0;
02 WHILE x2 ≠ 0 DO
03 x3:= x3 + 1;
04 x2:= x2 - 2
05 END;
06 WHILE x3 ≠ 0 DO
07 x2:= x2 + 2;
08 x3:= x3 - 1
09 END;
10 WHILE x1 ≠ 0 DO
11 x2:= x2 - 1;
12 x1:= x1 - 1
13 END;
14 WHILE x2 ≠ 0 DO
15 x1:= x1 + 1;
16 END Hinweis: ist mit dem Wert vorbelegt.
Aufgabe 1 [3 BE]
Entscheiden Sie jeweils, ob es sich um ein gültiges WHILE-Programm handelt.
a)
x1:= 10;
WHILE x1 ≠ 0 DO
x1:= x1 - 1;
x2:= x1 + 2
END
b)
x2:= x1 + 3;
WHILE x2 ≠ 0 DO
x1:= x2 - 1
WHILE x1 ≠ 0 DO
x1:= x1+1
END
END
Aufgabe Vorschlag C1 - Aufgabe 2 · Grammatiken, reguläre Ausdrücke und Syntaxdiagramme
WHILE-Programme
WHILE-Programme sind ein Berechnungsformalismus, der an traditionelle Programmiersprachen angelehnt ist.
WHILE-Programme bestehen aus:
Variablen (), Konstanten (), Trennsymbolen (),
Operationszeichen () und Schlüsselwörtern ( WHILE, DO, END).
WHILE-Programme sind wie folgt definiert:
Jede Wertzuweisung mit den Variablen und und der Konstanten der Form bzw. ist ein WHILE-Programm.
Falls und WHILE-Programme sind, dann ist auch ein WHILE-Programm.
Falls ein WHILE-Programm ist und eine Variable, dann ist auch WHILE DO END ein WHILE-Programm.
Bei der Wertzuweisung wird der Variablen die Summe der Werte von und zugewiesen. Bei der Wertzuweisung ist dies entsprechend die Differenz, wenn der Wert nicht negativ ist. Ist , wird der Variablen der Wert zugewiesen.
Die Komposition wird so interpretiert, dass zuerst und anschließend ausgeführt wird.
Innerhalb einer WHILE-Schleife WHILE DO END ist das Programm solange wiederholt auszuführen, wie der Wert von ungleich Null ist.
Material 1
WHILE-Programm für die WHILE-berechenbare Funktion
01 x3:= x1 + 0;
02 WHILE x2 ≠ 0 DO
03 WHILE x1 ≠ 0 DO
04 x0:= x0 + 1;
05 x1:= x1 - 1
06 END;
07 x1:= x3 + 0;
08 x2:= x2 - 1
09 END Hinweis: In den Variablen und stehen anfangs die Werte und . Die restlichen Variablen sind mit dem Wert vorbelegt.
Material 2
WHILE-Programm für die WHILE-berechenbare Funktion
01 x0:= x0 + 1;
02 WHILE x2 ≠ 0 DO
03 x0:= x0 * x1;
04 x2:= x2 - 1
05 END Hinweis: Zur Abkürzung wurde hier x0:= x0 * x1; verwendet, da dieser Ausdruck WHILE-berechenbar ist (siehe Material 1). Die Vorbelegung der Variablen , und entspricht der in Material 1 beschriebenen.
Material 3
Beispiel eines WHILE-Programms
01 x2:= x1 + 0;
02 WHILE x2 ≠ 0 DO
03 x3:= x3 + 1;
04 x2:= x2 - 2
05 END;
06 WHILE x3 ≠ 0 DO
07 x2:= x2 + 2;
08 x3:= x3 - 1
09 END;
10 WHILE x1 ≠ 0 DO
11 x2:= x2 - 1;
12 x1:= x1 - 1
13 END;
14 WHILE x2 ≠ 0 DO
15 x1:= x1 + 1;
16 END Hinweis: ist mit dem Wert vorbelegt.
2 Entwerfen Sie eine Grammatik, die die Sprache der WHILE-Programme erzeugt.
Aufgabe Vorschlag C1 - Aufgabe 3 · Grammatiken, reguläre Ausdrücke und Syntaxdiagramme
WHILE-Programme
WHILE-Programme sind ein Berechnungsformalismus, der an traditionelle Programmiersprachen angelehnt ist.
WHILE-Programme bestehen aus:
Variablen (), Konstanten (), Trennsymbolen (),
Operationszeichen () und Schlüsselwörtern ( WHILE, DO, END).
WHILE-Programme sind wie folgt definiert:
Jede Wertzuweisung mit den Variablen und und der Konstanten der Form bzw. ist ein WHILE-Programm.
Falls und WHILE-Programme sind, dann ist auch ein WHILE-Programm.
Falls ein WHILE-Programm ist und eine Variable, dann ist auch WHILE DO END ein WHILE-Programm.
Bei der Wertzuweisung wird der Variablen die Summe der Werte von und zugewiesen. Bei der Wertzuweisung ist dies entsprechend die Differenz, wenn der Wert nicht negativ ist. Ist , wird der Variablen der Wert zugewiesen.
Die Komposition wird so interpretiert, dass zuerst und anschließend ausgeführt wird.
Innerhalb einer WHILE-Schleife WHILE DO END ist das Programm solange wiederholt auszuführen, wie der Wert von ungleich Null ist.
Material 1
WHILE-Programm für die WHILE-berechenbare Funktion
01 x3:= x1 + 0;
02 WHILE x2 ≠ 0 DO
03 WHILE x1 ≠ 0 DO
04 x0:= x0 + 1;
05 x1:= x1 - 1
06 END;
07 x1:= x3 + 0;
08 x2:= x2 - 1
09 END Hinweis: In den Variablen und stehen anfangs die Werte und . Die restlichen Variablen sind mit dem Wert vorbelegt.
Material 2
WHILE-Programm für die WHILE-berechenbare Funktion
01 x0:= x0 + 1;
02 WHILE x2 ≠ 0 DO
03 x0:= x0 * x1;
04 x2:= x2 - 1
05 END Hinweis: Zur Abkürzung wurde hier x0:= x0 * x1; verwendet, da dieser Ausdruck WHILE-berechenbar ist (siehe Material 1). Die Vorbelegung der Variablen , und entspricht der in Material 1 beschriebenen.
Material 3
Beispiel eines WHILE-Programms
01 x2:= x1 + 0;
02 WHILE x2 ≠ 0 DO
03 x3:= x3 + 1;
04 x2:= x2 - 2
05 END;
06 WHILE x3 ≠ 0 DO
07 x2:= x2 + 2;
08 x3:= x3 - 1
09 END;
10 WHILE x1 ≠ 0 DO
11 x2:= x2 - 1;
12 x1:= x1 - 1
13 END;
14 WHILE x2 ≠ 0 DO
15 x1:= x1 + 1;
16 END Hinweis: ist mit dem Wert vorbelegt.
3 Die Sprache besteht aus WHILE-Programmen, bei denen in WHILE-Schleifen nur Wertzuweisungen anstatt beliebiger WHILE-Programme zugelassen sind.
Modellieren Sie die Syntaxdiagramme Schleife und Zuweisung für die Sprache . Syntaxdiagramme für Variable und Konstante müssen nicht modelliert werden.
Aufgabe Vorschlag C1 - Aufgabe 4 · Registermaschine und Berechenbarkeit
WHILE-Programme
WHILE-Programme sind ein Berechnungsformalismus, der an traditionelle Programmiersprachen angelehnt ist.
WHILE-Programme bestehen aus:
Variablen (), Konstanten (), Trennsymbolen (),
Operationszeichen () und Schlüsselwörtern ( WHILE, DO, END).
WHILE-Programme sind wie folgt definiert:
Jede Wertzuweisung mit den Variablen und und der Konstanten der Form bzw. ist ein WHILE-Programm.
Falls und WHILE-Programme sind, dann ist auch ein WHILE-Programm.
Falls ein WHILE-Programm ist und eine Variable, dann ist auch WHILE DO END ein WHILE-Programm.
Bei der Wertzuweisung wird der Variablen die Summe der Werte von und zugewiesen. Bei der Wertzuweisung ist dies entsprechend die Differenz, wenn der Wert nicht negativ ist. Ist , wird der Variablen der Wert zugewiesen.
Die Komposition wird so interpretiert, dass zuerst und anschließend ausgeführt wird.
Innerhalb einer WHILE-Schleife WHILE DO END ist das Programm solange wiederholt auszuführen, wie der Wert von ungleich Null ist.
Material 1
WHILE-Programm für die WHILE-berechenbare Funktion
01 x3:= x1 + 0;
02 WHILE x2 ≠ 0 DO
03 WHILE x1 ≠ 0 DO
04 x0:= x0 + 1;
05 x1:= x1 - 1
06 END;
07 x1:= x3 + 0;
08 x2:= x2 - 1
09 END Hinweis: In den Variablen und stehen anfangs die Werte und . Die restlichen Variablen sind mit dem Wert vorbelegt.
Material 2
WHILE-Programm für die WHILE-berechenbare Funktion
01 x0:= x0 + 1;
02 WHILE x2 ≠ 0 DO
03 x0:= x0 * x1;
04 x2:= x2 - 1
05 END Hinweis: Zur Abkürzung wurde hier x0:= x0 * x1; verwendet, da dieser Ausdruck WHILE-berechenbar ist (siehe Material 1). Die Vorbelegung der Variablen , und entspricht der in Material 1 beschriebenen.
Material 3
Beispiel eines WHILE-Programms
01 x2:= x1 + 0;
02 WHILE x2 ≠ 0 DO
03 x3:= x3 + 1;
04 x2:= x2 - 2
05 END;
06 WHILE x3 ≠ 0 DO
07 x2:= x2 + 2;
08 x3:= x3 - 1
09 END;
10 WHILE x1 ≠ 0 DO
11 x2:= x2 - 1;
12 x1:= x1 - 1
13 END;
14 WHILE x2 ≠ 0 DO
15 x1:= x1 + 1;
16 END Hinweis: ist mit dem Wert vorbelegt.
Eine zweistellige Funktion heißt WHILE-berechenbar, falls es ein WHILE-Programm gibt, das berechnet, d.h. gestartet mit und in den Variablen und sowie mit in den restlichen Variablen stoppt mit dem Wert in der Variable , falls definiert ist. Sonst stoppt nicht.
Zeigen Sie, dass die Funktion mit WHILE-berechenbar ist, indem Sie ein entsprechendes WHILE-Programm angeben und kurz begründen.
Aufgabe Vorschlag C1 - Aufgabe 5 · Registermaschine und Berechenbarkeit
WHILE-Programme
WHILE-Programme sind ein Berechnungsformalismus, der an traditionelle Programmiersprachen angelehnt ist.
WHILE-Programme bestehen aus:
Variablen (), Konstanten (), Trennsymbolen (),
Operationszeichen () und Schlüsselwörtern ( WHILE, DO, END).
WHILE-Programme sind wie folgt definiert:
Jede Wertzuweisung mit den Variablen und und der Konstanten der Form bzw. ist ein WHILE-Programm.
Falls und WHILE-Programme sind, dann ist auch ein WHILE-Programm.
Falls ein WHILE-Programm ist und eine Variable, dann ist auch WHILE DO END ein WHILE-Programm.
Bei der Wertzuweisung wird der Variablen die Summe der Werte von und zugewiesen. Bei der Wertzuweisung ist dies entsprechend die Differenz, wenn der Wert nicht negativ ist. Ist , wird der Variablen der Wert zugewiesen.
Die Komposition wird so interpretiert, dass zuerst und anschließend ausgeführt wird.
Innerhalb einer WHILE-Schleife WHILE DO END ist das Programm solange wiederholt auszuführen, wie der Wert von ungleich Null ist.
Material 1
WHILE-Programm für die WHILE-berechenbare Funktion
01 x3:= x1 + 0;
02 WHILE x2 ≠ 0 DO
03 WHILE x1 ≠ 0 DO
04 x0:= x0 + 1;
05 x1:= x1 - 1
06 END;
07 x1:= x3 + 0;
08 x2:= x2 - 1
09 END Hinweis: In den Variablen und stehen anfangs die Werte und . Die restlichen Variablen sind mit dem Wert vorbelegt.
Material 2
WHILE-Programm für die WHILE-berechenbare Funktion
01 x0:= x0 + 1;
02 WHILE x2 ≠ 0 DO
03 x0:= x0 * x1;
04 x2:= x2 - 1
05 END Hinweis: Zur Abkürzung wurde hier x0:= x0 * x1; verwendet, da dieser Ausdruck WHILE-berechenbar ist (siehe Material 1). Die Vorbelegung der Variablen , und entspricht der in Material 1 beschriebenen.
Material 3
Beispiel eines WHILE-Programms
01 x2:= x1 + 0;
02 WHILE x2 ≠ 0 DO
03 x3:= x3 + 1;
04 x2:= x2 - 2
05 END;
06 WHILE x3 ≠ 0 DO
07 x2:= x2 + 2;
08 x3:= x3 - 1
09 END;
10 WHILE x1 ≠ 0 DO
11 x2:= x2 - 1;
12 x1:= x1 - 1
13 END;
14 WHILE x2 ≠ 0 DO
15 x1:= x1 + 1;
16 END Hinweis: ist mit dem Wert vorbelegt.
Die Laufzeit eines WHILE-Programms ist die Anzahl der Schritte, die durchlaufen werden, wenn mit dem Wert in der Variable und Wert in der Variable gestartet wird. Jede Wertzuweisung und jede Auswertung einer Schleifenbedingung wird als ein Schritt gezählt.
Bestimmen Sie die Laufzeit des WHILE-Programms in Material 1 in Abhängigkeit von und .
[3 BE]
Aufgabe Vorschlag C1 - Aufgabe 6 · Registermaschine und Berechenbarkeit
WHILE-Programme
WHILE-Programme sind ein Berechnungsformalismus, der an traditionelle Programmiersprachen angelehnt ist.
WHILE-Programme bestehen aus:
Variablen (), Konstanten (), Trennsymbolen (),
Operationszeichen () und Schlüsselwörtern ( WHILE, DO, END).
WHILE-Programme sind wie folgt definiert:
Jede Wertzuweisung mit den Variablen und und der Konstanten der Form bzw. ist ein WHILE-Programm.
Falls und WHILE-Programme sind, dann ist auch ein WHILE-Programm.
Falls ein WHILE-Programm ist und eine Variable, dann ist auch WHILE DO END ein WHILE-Programm.
Bei der Wertzuweisung wird der Variablen die Summe der Werte von und zugewiesen. Bei der Wertzuweisung ist dies entsprechend die Differenz, wenn der Wert nicht negativ ist. Ist , wird der Variablen der Wert zugewiesen.
Die Komposition wird so interpretiert, dass zuerst und anschließend ausgeführt wird.
Innerhalb einer WHILE-Schleife WHILE DO END ist das Programm solange wiederholt auszuführen, wie der Wert von ungleich Null ist.
Material 1
WHILE-Programm für die WHILE-berechenbare Funktion
01 x3:= x1 + 0;
02 WHILE x2 ≠ 0 DO
03 WHILE x1 ≠ 0 DO
04 x0:= x0 + 1;
05 x1:= x1 - 1
06 END;
07 x1:= x3 + 0;
08 x2:= x2 - 1
09 END Hinweis: In den Variablen und stehen anfangs die Werte und . Die restlichen Variablen sind mit dem Wert vorbelegt.
Material 2
WHILE-Programm für die WHILE-berechenbare Funktion
01 x0:= x0 + 1;
02 WHILE x2 ≠ 0 DO
03 x0:= x0 * x1;
04 x2:= x2 - 1
05 END Hinweis: Zur Abkürzung wurde hier x0:= x0 * x1; verwendet, da dieser Ausdruck WHILE-berechenbar ist (siehe Material 1). Die Vorbelegung der Variablen , und entspricht der in Material 1 beschriebenen.
Material 3
Beispiel eines WHILE-Programms
01 x2:= x1 + 0;
02 WHILE x2 ≠ 0 DO
03 x3:= x3 + 1;
04 x2:= x2 - 2
05 END;
06 WHILE x3 ≠ 0 DO
07 x2:= x2 + 2;
08 x3:= x3 - 1
09 END;
10 WHILE x1 ≠ 0 DO
11 x2:= x2 - 1;
12 x1:= x1 - 1
13 END;
14 WHILE x2 ≠ 0 DO
15 x1:= x1 + 1;
16 END Hinweis: ist mit dem Wert vorbelegt.
Eine Funktion ist genau dann WHILE-berechenbar, wenn sie Registermaschinen-berechenbar ist.
6.1
In Material 2 ist ein WHILE-Programm gegeben, das eine Funktion berechnet.
Implementieren Sie ein kommentiertes Registermaschinenprogramm, das ebenfalls berechnet.
[5 BE]
6.2
Bestätigen Sie die Aussage, dass jede WHILE-berechenbare Funktion Registermaschinen-berechenbar ist.
[4 BE]
Aufgabe Vorschlag C1 - Aufgabe 7 · Registermaschine und Berechenbarkeit
WHILE-Programme
WHILE-Programme sind ein Berechnungsformalismus, der an traditionelle Programmiersprachen angelehnt ist.
WHILE-Programme bestehen aus:
Variablen (), Konstanten (), Trennsymbolen (),
Operationszeichen () und Schlüsselwörtern ( WHILE, DO, END).
WHILE-Programme sind wie folgt definiert:
Jede Wertzuweisung mit den Variablen und und der Konstanten der Form bzw. ist ein WHILE-Programm.
Falls und WHILE-Programme sind, dann ist auch ein WHILE-Programm.
Falls ein WHILE-Programm ist und eine Variable, dann ist auch WHILE DO END ein WHILE-Programm.
Bei der Wertzuweisung wird der Variablen die Summe der Werte von und zugewiesen. Bei der Wertzuweisung ist dies entsprechend die Differenz, wenn der Wert nicht negativ ist. Ist , wird der Variablen der Wert zugewiesen.
Die Komposition wird so interpretiert, dass zuerst und anschließend ausgeführt wird.
Innerhalb einer WHILE-Schleife WHILE DO END ist das Programm solange wiederholt auszuführen, wie der Wert von ungleich Null ist.
Material 1
WHILE-Programm für die WHILE-berechenbare Funktion
01 x3:= x1 + 0;
02 WHILE x2 ≠ 0 DO
03 WHILE x1 ≠ 0 DO
04 x0:= x0 + 1;
05 x1:= x1 - 1
06 END;
07 x1:= x3 + 0;
08 x2:= x2 - 1
09 END Hinweis: In den Variablen und stehen anfangs die Werte und . Die restlichen Variablen sind mit dem Wert vorbelegt.
Material 2
WHILE-Programm für die WHILE-berechenbare Funktion
01 x0:= x0 + 1;
02 WHILE x2 ≠ 0 DO
03 x0:= x0 * x1;
04 x2:= x2 - 1
05 END Hinweis: Zur Abkürzung wurde hier x0:= x0 * x1; verwendet, da dieser Ausdruck WHILE-berechenbar ist (siehe Material 1). Die Vorbelegung der Variablen , und entspricht der in Material 1 beschriebenen.
Material 3
Beispiel eines WHILE-Programms
01 x2:= x1 + 0;
02 WHILE x2 ≠ 0 DO
03 x3:= x3 + 1;
04 x2:= x2 - 2
05 END;
06 WHILE x3 ≠ 0 DO
07 x2:= x2 + 2;
08 x3:= x3 - 1
09 END;
10 WHILE x1 ≠ 0 DO
11 x2:= x2 - 1;
12 x1:= x1 - 1
13 END;
14 WHILE x2 ≠ 0 DO
15 x1:= x1 + 1;
16 END Hinweis: ist mit dem Wert vorbelegt.
Entscheiden Sie für welche Werte der Variable das WHILE-Programm in Material 3 terminiert.
[3 BE]
Aufgabe Vorschlag C2 - Aufgabe 1 · Grammatiken, reguläre Ausdrücke und Syntaxdiagramme
Auszeichnungssprache YAML
YAML ist eine Auszeichnungssprache zur Darstellung strukturierter Daten in einfach lesbarer Textform. Die Sprache zeichnet sich dadurch aus, dass sie jede Datenstruktur allein durch Verwendung von Konstanten, Listen und assoziativen Listen darstellen kann. Elemente von Listen und assoziativen Listen werden durch Zeilenumbrüche (<CR> <LF>) getrennt dargestellt. Dabei besitzen diese Elemente in aufeinanderfolgenden Zeilen die gleiche Einrückung. Elemente einer Liste beginnen mit dem Zeichen „-“ und Elemente einer assoziativen Liste bestehen aus einem Schlüssel:Wert-Paar. Listen und assoziative Listen enthalten jeweils nur gleichartige Listenelemente (Material 1).
Alle Elemente einer Liste und alle Werte einer assoziativen Liste können entweder Konstanten oder auch wieder Listen oder assoziative Listen sein. In den beiden letztgenannten Fällen spricht man dann von geschachtelten Listen. Die Schachtelung wird durch einen Zeilenumbruch und eine Einrückung mit Leerzeichen (<SP>) dargestellt (Material 1).
Material 1
Beispiel von Listen und assoziativen Listen in YAML
Liste
assoziative Liste
- Apfel
- Banane
- Karotte
Name: Frank
Alter: 19
Sport: Fußball
geschachtelte Liste
geschachtelte assoziative Liste
assoziative Liste mit einer Liste als Wert
- HTML
-
- Überschrift H1
- Absatz p
- CSS
- JavaScript
Datum: 2021 05 17
Name: Lisa
Adresse:
Straße: Allee 17
PLZ: 64646
Ort: Heppenheim
Datum: 2021 05 17
Name: Frank
Interessen:
- Sport
- Politik
Alter: 19
Material 2
YAML-Texte
a
b
Datum: 2021 04 05
RechnungNr: 7266
Produkt:
-
Beschreibung: Basketball
Preis: 86
Menge: 4
-
Beschreibung: Hantel
Preis: 48
Menge: 2
-
Name: Martin Schmidt
Anstellung: Entwickler
Fachkompetenz:
- Python
- Java
- Pascal
-
Name: Tabitha Bitumen
Anstellung: Entwicklerin
Fachkompetenzen:
- Lisp
- Fortran
- Erlang
Material 3
Text in einer Konfigurationsdatei
packages:
yum:
mod_ssl: false
files:
servercrt:
mod: 000400
owner: admin
- group root
script:
- cd tools
- tox ecover
Material 4
Unvollständige Grammatik G zur Sprache YAML
$\begin{aligned}
P = \{ & \text{YAML} & \to & \ \text{Liste} \mid \text{AssoziativeListe}, \\
& \text{Liste} & \to & \ \text{Element } <\text{CR}> <\text{LF}> \mid \text{Element } <\text{CR}> <\text{LF}> \text{Liste}, \\
& \text{AssoziativeListe} & \to & \ \text{Schlüssel}: <\text{SP}> \text{Wert } <\text{CR}> <\text{LF}> \mid \\
& & & \ \text{Schlüssel}: <\text{SP}> \text{Wert } <\text{CR}> <\text{LF}> \text{AssoziativeListe}, \\
& \text{Element} & \to & \ \text{- } <\text{SP}> \text{Wert}, \\
& \text{Schlüssel} & \to & \ \text{Zeichenkette}, \\
& \text{Wert} & \to & \ \text{Konstante} \mid <\text{CR}> <\text{LF}> <\text{INDENT}> \text{Liste } <\text{DEDENT}> \mid \\
& & & \ <\text{CR}> <\text{LF}> <\text{INDENT}> \text{AssoziativeListe } <\text{DEDENT}>, \\
& \text{Konstante} & \to & \ \text{Zeichenketten} \mid \text{Zahl} \mid \text{true} \mid \text{false} \mid \text{null}, \\
& \text{Zeichenketten} & \to & \ \text{Zeichenkette} \mid \text{Zeichenkette } <\text{SP}> \text{Zeichenketten}, \\
& \dots \\
\} & & &
\end{aligned}$
Hinweis: Die Terminale <INDENT> und <DEDENT> stehen für eine Ein- bzw. Ausrückung.
Aufgaben
1.1
Erläutern Sie die Struktur der zwei YAML-Texte in Material 2. [4 BE]
1.2
In einer Konfigurationsdatei steht der Text aus Material 3. Entscheiden Sie, ob dies ein gültiger YAML-Text ist. [2 BE]
Aufgabe Vorschlag C2 - Aufgabe 2 · Registermaschine und Berechenbarkeit
Auszeichnungssprache YAML
YAML ist eine Auszeichnungssprache zur Darstellung strukturierter Daten in einfach lesbarer Textform. Die Sprache zeichnet sich dadurch aus, dass sie jede Datenstruktur allein durch Verwendung von Konstanten, Listen und assoziativen Listen darstellen kann. Elemente von Listen und assoziativen Listen werden durch Zeilenumbrüche (<CR> <LF>) getrennt dargestellt. Dabei besitzen diese Elemente in aufeinanderfolgenden Zeilen die gleiche Einrückung. Elemente einer Liste beginnen mit dem Zeichen „-“ und Elemente einer assoziativen Liste bestehen aus einem Schlüssel:Wert-Paar. Listen und assoziative Listen enthalten jeweils nur gleichartige Listenelemente (Material 1).
Alle Elemente einer Liste und alle Werte einer assoziativen Liste können entweder Konstanten oder auch wieder Listen oder assoziative Listen sein. In den beiden letztgenannten Fällen spricht man dann von geschachtelten Listen. Die Schachtelung wird durch einen Zeilenumbruch und eine Einrückung mit Leerzeichen (<SP>) dargestellt (Material 1).
Material 1
Beispiel von Listen und assoziativen Listen in YAML
Liste
assoziative Liste
- Apfel
- Banane
- Karotte
Name: Frank
Alter: 19
Sport: Fußball
geschachtelte Liste
geschachtelte assoziative Liste
assoziative Liste mit einer Liste als Wert
- HTML
-
- Überschrift H1
- Absatz p
- CSS
- JavaScript
Datum: 2021 05 17
Name: Lisa
Adresse:
Straße: Allee 17
PLZ: 64646
Ort: Heppenheim
Datum: 2021 05 17
Name: Frank
Interessen:
- Sport
- Politik
Alter: 19
Material 2
YAML-Texte
a
b
Datum: 2021 04 05
RechnungNr: 7266
Produkt:
-
Beschreibung: Basketball
Preis: 86
Menge: 4
-
Beschreibung: Hantel
Preis: 48
Menge: 2
-
Name: Martin Schmidt
Anstellung: Entwickler
Fachkompetenz:
- Python
- Java
- Pascal
-
Name: Tabitha Bitumen
Anstellung: Entwicklerin
Fachkompetenzen:
- Lisp
- Fortran
- Erlang
Material 3
Text in einer Konfigurationsdatei
packages:
yum:
mod_ssl: false
files:
servercrt:
mod: 000400
owner: admin
- group root
script:
- cd tools
- tox ecover
Material 4
Unvollständige Grammatik G zur Sprache YAML
$\begin{aligned}
P = \{ & \text{YAML} & \to & \ \text{Liste} \mid \text{AssoziativeListe}, \\
& \text{Liste} & \to & \ \text{Element } <\text{CR}> <\text{LF}> \mid \text{Element } <\text{CR}> <\text{LF}> \text{Liste}, \\
& \text{AssoziativeListe} & \to & \ \text{Schlüssel}: <\text{SP}> \text{Wert } <\text{CR}> <\text{LF}> \mid \\
& & & \ \text{Schlüssel}: <\text{SP}> \text{Wert } <\text{CR}> <\text{LF}> \text{AssoziativeListe}, \\
& \text{Element} & \to & \ \text{- } <\text{SP}> \text{Wert}, \\
& \text{Schlüssel} & \to & \ \text{Zeichenkette}, \\
& \text{Wert} & \to & \ \text{Konstante} \mid <\text{CR}> <\text{LF}> <\text{INDENT}> \text{Liste } <\text{DEDENT}> \mid \\
& & & \ <\text{CR}> <\text{LF}> <\text{INDENT}> \text{AssoziativeListe } <\text{DEDENT}>, \\
& \text{Konstante} & \to & \ \text{Zeichenketten} \mid \text{Zahl} \mid \text{true} \mid \text{false} \mid \text{null}, \\
& \text{Zeichenketten} & \to & \ \text{Zeichenkette} \mid \text{Zeichenkette } <\text{SP}> \text{Zeichenketten}, \\
& \dots \\
\} & & &
\end{aligned}$
Hinweis: Die Terminale <INDENT> und <DEDENT> stehen für eine Ein- bzw. Ausrückung.
Aufgabe 2
Eine Registermaschine soll die maximale Einrücktiefe in einem YAML-Text ermitteln. Die einzelnen Zeichen des Textes werden mit dem ASCII-Zeichensatz kodiert (Zahlenwerte von 0 bis 127) und in aufeinanderfolgenden Registern ab Register R10 gespeichert. Das Leerzeichen <SP> wird in diesem Zeichensatz mit der Dezimalzahl 32 kodiert, das Steuerzeichen <LF> (LineFeed) mit der Dezimalzahl 10. Das Ende des YAML-Textes wird durch den Wert 128 markiert.
2.1
Implementieren Sie ein kommentiertes Registermaschinenprogramm, das die maximale Einrücktiefe eines YAML-Textes bestimmt und in den Akkumulator schreibt. [10 BE]
2.2
Bestimmen Sie die asymptotische Laufzeit Ihres Registermaschinenprogramms in Abhängigkeit von der Länge der Eingabe. [4 BE]
Aufgabe Vorschlag C2 - Aufgabe 3 · Grammatiken, reguläre Ausdrücke und Syntaxdiagramme
Auszeichnungssprache YAML
YAML ist eine Auszeichnungssprache zur Darstellung strukturierter Daten in einfach lesbarer Textform. Die Sprache zeichnet sich dadurch aus, dass sie jede Datenstruktur allein durch Verwendung von Konstanten, Listen und assoziativen Listen darstellen kann. Elemente von Listen und assoziativen Listen werden durch Zeilenumbrüche (<CR> <LF>) getrennt dargestellt. Dabei besitzen diese Elemente in aufeinanderfolgenden Zeilen die gleiche Einrückung. Elemente einer Liste beginnen mit dem Zeichen „-“ und Elemente einer assoziativen Liste bestehen aus einem Schlüssel:Wert-Paar. Listen und assoziative Listen enthalten jeweils nur gleichartige Listenelemente (Material 1).
Alle Elemente einer Liste und alle Werte einer assoziativen Liste können entweder Konstanten oder auch wieder Listen oder assoziative Listen sein. In den beiden letztgenannten Fällen spricht man dann von geschachtelten Listen. Die Schachtelung wird durch einen Zeilenumbruch und eine Einrückung mit Leerzeichen (<SP>) dargestellt (Material 1).
Material 1
Beispiel von Listen und assoziativen Listen in YAML
Liste
assoziative Liste
- Apfel
- Banane
- Karotte
Name: Frank
Alter: 19
Sport: Fußball
geschachtelte Liste
geschachtelte assoziative Liste
assoziative Liste mit einer Liste als Wert
- HTML
-
- Überschrift H1
- Absatz p
- CSS
- JavaScript
Datum: 2021 05 17
Name: Lisa
Adresse:
Straße: Allee 17
PLZ: 64646
Ort: Heppenheim
Datum: 2021 05 17
Name: Frank
Interessen:
- Sport
- Politik
Alter: 19
Material 2
YAML-Texte
a
b
Datum: 2021 04 05
RechnungNr: 7266
Produkt:
-
Beschreibung: Basketball
Preis: 86
Menge: 4
-
Beschreibung: Hantel
Preis: 48
Menge: 2
-
Name: Martin Schmidt
Anstellung: Entwickler
Fachkompetenz:
- Python
- Java
- Pascal
-
Name: Tabitha Bitumen
Anstellung: Entwicklerin
Fachkompetenzen:
- Lisp
- Fortran
- Erlang
Material 3
Text in einer Konfigurationsdatei
packages:
yum:
mod_ssl: false
files:
servercrt:
mod: 000400
owner: admin
- group root
script:
- cd tools
- tox ecover
Material 4
Unvollständige Grammatik G zur Sprache YAML
$\begin{aligned}
P = \{ & \text{YAML} & \to & \ \text{Liste} \mid \text{AssoziativeListe}, \\
& \text{Liste} & \to & \ \text{Element } <\text{CR}> <\text{LF}> \mid \text{Element } <\text{CR}> <\text{LF}> \text{Liste}, \\
& \text{AssoziativeListe} & \to & \ \text{Schlüssel}: <\text{SP}> \text{Wert } <\text{CR}> <\text{LF}> \mid \\
& & & \ \text{Schlüssel}: <\text{SP}> \text{Wert } <\text{CR}> <\text{LF}> \text{AssoziativeListe}, \\
& \text{Element} & \to & \ \text{- } <\text{SP}> \text{Wert}, \\
& \text{Schlüssel} & \to & \ \text{Zeichenkette}, \\
& \text{Wert} & \to & \ \text{Konstante} \mid <\text{CR}> <\text{LF}> <\text{INDENT}> \text{Liste } <\text{DEDENT}> \mid \\
& & & \ <\text{CR}> <\text{LF}> <\text{INDENT}> \text{AssoziativeListe } <\text{DEDENT}>, \\
& \text{Konstante} & \to & \ \text{Zeichenketten} \mid \text{Zahl} \mid \text{true} \mid \text{false} \mid \text{null}, \\
& \text{Zeichenketten} & \to & \ \text{Zeichenkette} \mid \text{Zeichenkette } <\text{SP}> \text{Zeichenketten}, \\
& \dots \\
\} & & &
\end{aligned}$
Hinweis: Die Terminale <INDENT> und <DEDENT> stehen für eine Ein- bzw. Ausrückung.
In Material 4 ist ein Ausschnitt einer Grammatik G der Sprache YAML dargestellt.
3.1
Überführen Sie die Produktionen für YAML, AssoziativeListe und Wert in Syntaxdiagramme. (5 BE)
3.2
Zeichenkette ist eine nicht leere Folge von Buchstaben und Ziffern. Zahl ist eine ganze Zahl, die führende Nullen haben kann und der optional ein „-“ vorangestellt werden kann.
Geben Sie Produktionen für Zeichenkette und Zahl an. (3 BE)
3.3
Ordnen Sie die Grammatik G in die Chomsky-Hierarchie ein. (2 BE)
Du kannst auch nach Themen lernen
Übe ein Thema mit gemischten Aufgaben aus den Prüfungen aller Jahre.
- ER-Modell und Relationenmodell · 16 Aufgaben · 80 % Wahrscheinlichkeit
- Grammatiken, reguläre Ausdrücke und Syntaxdiagramme · 16 Aufgaben · 80 % Wahrscheinlichkeit
- SQL-Abfragen und -Anweisungen · 13 Aufgaben · 80 % Wahrscheinlichkeit
- Objektorientierte Modellierung mit UML · 8 Aufgaben · 80 % Wahrscheinlichkeit
- Sortieren, Suchen und Laufzeit · 6 Aufgaben · 70 % Wahrscheinlichkeit
- Endliche Automaten · 6 Aufgaben · 70 % Wahrscheinlichkeit