Kriterium | Gewicht | ausgezeichnet (4) | gut (3) | akzeptabel (2) | verbesserungswürdig (1) | inakzeptabel (0) |
---|---|---|---|---|---|---|
Hauptfunktion | 30% | Die Funktion erfüllt alle Anforderungen, ist effizient und gut dokumentiert. | Die Funktion erfüllt alle Anforderungen und ist korrekt, könnte aber in der Effizienz oder Dokumentation verbessert werden. | Die Funktion findet perfekte Zahlen, hat aber kleinere Mängel in der Logik oder Effizienz. | Die Funktion läuft, findet jedoch nicht alle perfekten Zahlen oder ist ineffizient. | Der Code ist nicht lauffähig oder wirft unbehandelte Fehler aus. |
Zusätzliche Funktionalität | 10% | Alle zusätzlichen Funktionalitäten sind implementiert und arbeiten fehlerfrei. | Die meisten zusätzlichen Funktionen sind implementiert und arbeiten korrekt. | Einige zusätzliche Funktionen fehlen oder weisen kleinere Fehler auf. | Es gibt nur eine oder zwei zusätzliche Funktionen, die nicht immer korrekt funktionieren. | Zusätzliche Funktionalitäten sind entweder nicht vorhanden oder fehlerhaft. |
Leistungsanalyse | 20% | Eine umfassende Analyse mit effizienten Algorithmen und detaillierten Vergleichen wurde durchgeführt. | Eine gute Analyse mit angemessener Effizienz und korrekten Vergleichen wurde durchgeführt. | Die Analyse wurde durchgeführt, jedoch mit Verbesserungspotenzial in Tiefe oder Genauigkeit. | Die Analyse ist oberflächlich und ohne klare Ergebnisse. | Keine oder eine völlig unzureichende Analyse wurde durchgeführt. |
Fehlerbehandlung | 5% | Fehlerbehandlung ist umfassend, und der Code fängt alle erwarteten Ausnahmen korrekt ab. | Die meisten Fehler werden abgefangen, aber einige weniger offensichtliche Fälle werden nicht behandelt. | Grundlegende Fehlerbehandlung ist vorhanden, aber nicht vollständig ausgereift. | Versuche einer Fehlerbehandlung sind erkennbar, aber nicht effektiv. | Es gibt keine Fehlerbehandlung, oder sie ist komplett wirkungslos. |
Variablennamen | 5% | Alle Variablennamen sind klar, eindeutig und konsistent, erhöhen die Lesbarkeit und befolgen die Namenskonventionen. | Variablennamen sind größtenteils deskriptiv und konsistent, mit kleinen Inkonsistenzen. | Variablennamen sind verständlich, aber nicht immer deskriptiv oder konsistent. | Einige Variablennamen sind nicht deskriptiv oder führen zu Verwirrung. | Variablennamen sind irreführend, inkonsistent oder nicht vorhanden. |
Modulare Programmierung | 10% | Der Code ist hervorragend in sinnvolle Funktionen aufgeteilt, jede mit klar definierten Verantwortlichkeiten. | Gute Aufteilung in Funktionen, aber mit einigen Funktionen, die zu viele Aufgaben haben. | Der Code ist in Funktionen aufgeteilt, aber die Aufteilung könnte logischer sein oder klarer. | Ansätze zur modularen Programmierung sind vorhanden, jedoch schlecht organisiert oder nicht konsequent durchgeführt. | Der Code ist monolithisch, ohne sinnvolle Aufteilung in Funktionen oder Module. |
Code-Erklärung | 20% | Die Erklärung ist klar, präzise und deckt alle Aspekte der Implementierung ab; das Verständnis des Problems und der Lösung ist offensichtlich. | Die Erklärung ist verständlich und deckt die meisten Aspekte der Implementierung ab, könnte jedoch in Detailgrad oder Klarheit verbessert werden. | Die Erklärung deckt die Grundlagen ab, lässt jedoch wichtige Details aus oder ist an einigen Stellen unklar. | Die Erklärung ist oberflächlich und lässt ein tieferes Verständnis der Problemstellung und der Lösungsstrategie vermissen. | Keine Erklärung oder eine, die keinen Zusammenhang mit der vorgelegten Arbeit zeigt. |
Hausarbeit 1
Programmierung in R
Aufgabe: Vollkommene Zahlen (10 Punkte)
Ziel
Eine vollkommene Zahl (auf englisch “perfect number”) ist eine natürliche Zahl, die gleich der Summe ihrer positiven Teiler (außer sie selbst) ist. Zum Beispiel ist 28 eine perfekte Zahl, weil ihre Teiler 1, 2, 4, 7 und 14 sind, und 1 + 2 + 4 + 7 + 14 = 28.
In dieser ersten Hausaufgabe sollen Sie das Programmieren mit R vertiefen. Entwickeln Sie dazu eine Funktion in R, die alle vollkommenen Zahlen in einem gegebenen Bereich identifiziert. Darüber hinaus soll die Funktion zusätzliche Funktionalitäten aufweisen und die Leistung verschiedener Varianzen zur Erkennung von vollkommenen Zahlen soll verglichen werden.
Detaillierte Anweisungen
- Hauptfunktion1:
- Erstellen Sie eine Funktion namens
perfect_number_finder
, die ein Argumente annimmt:start
undend
, die den Bereich darstellen, in dem nach vollkommenen Zahlen gesucht werden soll. - Die Funktion sollte eine Schleife verwenden, um durch die Zahlen im angegebenen Bereich zu iterieren, und bedingte Anweisungen verwenden, um zu überprüfen, ob eine Zahl vollkommen ist.
- Die Funktion sollte alle gefundenen vollkommenen Zahlen in einem Vektor speichern und diesen Vektor zurückgeben.
- Erstellen Sie eine Funktion namens
- Zusätzliche Funktionalität:
- Erweitern Sie die Funktion
perfect_number_finder
um die Fähigkeit, die Anzahl der gefundenen vollkommenen Zahlen zu zählen, die Summe der vollkommenen Zahlen zu berechnen und den Durchschnittswert der vollkommenen Zahlen im angegebenen Bereich zu ermitteln.
- Erweitern Sie die Funktion
- Leistungsanalyse:
- Recherchieren und implementieren Sie einen alternativen Algorithmus zur Identifizierung von vollkommenen Zahlen.
- Vergleichen Sie die Leistung Ihres ursprünglichen Algorithmus mit dem alternativen Algorithmus. Sie können die Systemzeit vor und nach der Ausführung messen, um die benötigte Zeit zu vergleichen.
- Fehlerbehandlung:
- Implementieren Sie eine Fehlerbehandlung in Ihrer Funktion, um mögliche Probleme zu verhiindernr, wie z.B. nicht-numerische oder negative Eingabewerte oder wenn der
start
-Wert größer als derend
-Wert ist.
- Implementieren Sie eine Fehlerbehandlung in Ihrer Funktion, um mögliche Probleme zu verhiindernr, wie z.B. nicht-numerische oder negative Eingabewerte oder wenn der
- Variablennamen1:
- Verwenden Sie spezifische, eindeutige Variablennamen in Ihrem Code, die sich von den in Online-Beispielen gefundenen Variablennamen unterscheiden.
- Modulare Programmierung:
- Teilen Sie Ihren Code in mehrere kleinere Funktionen auf, jede mit einer einzelnen Aufgabe.
- Code-Erklärung1:
- Reichen Sie ein Video von maximal 5 Minuten ein, in dem die Logik hinter Ihrer Implementierung, die von Ihnen vorgenommenen Entscheidungen und wie Sie das Problem angegangen sind, erklärt wird.2
Abgabe
Abgabe folgender Resultate über Teams bis zum 01.11.2024, 23:59 Uhr:
- Ihr R-Skript mit der Funktion
perfect_number_finder
. - Ein Video (am besten nur ein Link zum Video), in dem Sie Ihre Lösung und die durchgeführte Leistungsanalyse erläutern.
Bewertungskriterien
Fußnoten
Diese Bestandteile sind als Minimalanforderung für das Bestehen erforderlich. Um eine sehr gute Bewertung zu erreichen, sind auch die weiteren Bestandteile zu bearbeiten.↩︎
Für die Aufzeichnung des Videos (Ihr Bildschirm und Ton für die Erläuterungen) können sie z.B. die kostenlose Version von Loom verwenden.↩︎