CPP21 TOK 07.01.23 und 04.03.23
Verfasst: 15.03.23 20:21
Die Klausuren vom 07.01. und 04.03. waren identisch und stimmen mit der Beschreibung der TOK vom 09.04.22 überein. Hierzu ein paar Ergänzungen und Anmerkungen zu den vorgestellten Lösungen. Da ich im 1. Versuch knapp gescheitert bin und in der Einsicht war, kann ich dazu noch etwas anmerken. Der Zweitversuch lief gut 
Hier zu den Aufgaben:
Detail 1 (12P):Erstelle ein Array und fülle es mit den Quadratwerten von den ersten 10 ungeraden Zahlen. Mit einem Zeiger arbeiten! Der erste Wert ist 1. Greife mittels Zeiger auf das 6 Feld Element und gebe die nächsten 5 Stellen mit Zeigersemantik aus. Eine Lösung ähnlich der, die bei der Einsicht abgebildet war, ist im Anhang.
Detail 2 (8P): Erstelle eine Funktion double runden(double zahl) die eine Zahl bis auf 3 Nachkommastellen rundet. Wichtig war hier, dass es eine Funktion sein sollte. Im main kann dann ein Zahl über cin eingelesen werden und über "cout << "Die gerundete Zahl ist: " << runden(zahl) << endl" ausgegeben werden.
Detail 3 (6P): Erkläre den Unterschied von CallByValue und CallByReference. Ein Beispiel geben.
Detail 4 (6P): Was ist die Aufgabe eines Konstruktors und was ist die Aufgabe eines Destruktors. Wann ist sinnvoll einen Destruktor selbst zu schreiben
Detail 5 (8P): Überladen einer Funktion/Methode erklären und ein aussagekräftiges Beispiel dazu geben.
Die Komplexaufgabe 2 (Vererbung, abstrakte Klasse, virtuelle Methoden mit Zahl und Bruch) und 3 (Person mit mehreren Adressen, Vektor) sind im Anhang ausführlich beschrieben.

Hier zu den Aufgaben:
Detail 1 (12P):Erstelle ein Array und fülle es mit den Quadratwerten von den ersten 10 ungeraden Zahlen. Mit einem Zeiger arbeiten! Der erste Wert ist 1. Greife mittels Zeiger auf das 6 Feld Element und gebe die nächsten 5 Stellen mit Zeigersemantik aus. Eine Lösung ähnlich der, die bei der Einsicht abgebildet war, ist im Anhang.
Detail 2 (8P): Erstelle eine Funktion double runden(double zahl) die eine Zahl bis auf 3 Nachkommastellen rundet. Wichtig war hier, dass es eine Funktion sein sollte. Im main kann dann ein Zahl über cin eingelesen werden und über "cout << "Die gerundete Zahl ist: " << runden(zahl) << endl" ausgegeben werden.
Detail 3 (6P): Erkläre den Unterschied von CallByValue und CallByReference. Ein Beispiel geben.
Detail 4 (6P): Was ist die Aufgabe eines Konstruktors und was ist die Aufgabe eines Destruktors. Wann ist sinnvoll einen Destruktor selbst zu schreiben
Detail 5 (8P): Überladen einer Funktion/Methode erklären und ein aussagekräftiges Beispiel dazu geben.
Die Komplexaufgabe 2 (Vererbung, abstrakte Klasse, virtuelle Methoden mit Zahl und Bruch) und 3 (Person mit mehreren Adressen, Vektor) sind im Anhang ausführlich beschrieben.