Wer Freude am Programmieren hat, der braucht Programmieraufgaben, die er lösen kann. Geeignete Aufgaben zu finden ist manchmal schwieriger, als das Lösen der Aufgaben selbst. Im Internet gibt es eine Reihe von Online-Programmierwettbewerben, die für jedermann offen sind. Die Teilnahme ist unverbindlich, kostenlos und ohne Risiko. Im folgenden stelle ich einen solchen Wettbewerb vor, der zeitlich unbegrenzt läuft und auch Aufgaben enthält, die von Schülern der Klassen 8/9 gelöst werden können.
Beim Shortening Contest geht es nicht nur darum, eine bestimmte Programmieraufgabe zu lösen, sondern ein möglichst kurzes Programm zu schreiben, das die gestellte Aufgabe löst. Je kürzer das Programm, desto mehr Punkte bekommt man dafür. Man nennt so etwas auch "Code-Golf" - mit möglichst wenigen "Schlägen" ans Ziel. Da das Ziel also nicht allein im Lösen der Aufgabe an sich besteht, sind die Aufgabenstellungen selbst in vielen Fällen nicht so schwierig. Schwierig kann es jedoch sein, die Aufgabe mit einem sehr kurzen Programm zu lösen.
Wie der Name des Wettbewerbs erahnen lässt, handelt es sich um einen englischsprachigen Wettbewerb, die Programmieraufgaben sind also alle in englischer Sprache formuliert. Das sollte allerdings kein großes Problem darstellen, weil durch (Zahlen-)Beispiele erläutert wird, was zu tun ist. Für einige der Aufgaben gibt es inzwischen auch deutsche Übersetzungen und außerdem Verlinkungen zu Wikipedia Artikeln, die beim Verstehen helfen.
Nachfolgend drei ausgewählte Aufgaben des Shortening Contest, die für Schüler der Mittelstufe geeignet sind:
Das ist einfach. Man muss sich einmalig registrieren mit (s)einer E-Mail-Adresse. Seinen richtigen Namen oder sonstige persönliche Daten braucht man nicht anzugeben. Danach kann man loslegen. Man entwickelt zu Hause am Rechner sein Programm und wenn man meint, es wäre richtig, wird es hochgeladen (engl. "to submit"). Man fügt den Quelltext via copy & paste in das Auswahlfenster ein, wählt die passende Programmiersprache aus und schickt es ab. Das hochgeladene Programm wird dann auf einem Server ausgeführt, mit (für den Programmierer unbekannten) Eingabedaten gefüttert und geprüft, ob die Ausgabe des Programms korrekt ist. Danach erscheint die Status-Tabelle, wo man wenige Augenblicke später ablesen kann, ob das Programm die gestellte Aufgabe richtig gelöst hat oder nicht.
Eigentlich nicht viel. Anstelle von allgemeinen Erläuterungen zeige ich einfach am Beispiel der Aufgabe SIZECON wie das konkret aussehen kann. Die Aufgabenstellung besteht darin, alle Eingabewerte daraufhin zu untersuchen, ob sie positiv sind oder nicht und am Ende die Summe aller positiven Werte auszugeben. Der erste Eingabewert gibt an, wie viele Werte danach noch folgen. Die Ein- und Ausgabe erfolgt also genauso, als säße da ein Anwender, der die Daten der Reihe nach eingibt. Die Ausgabe erfolgt wie üblich auf den Bildschirm.
# Python 3.x Lösung für die Aufgabe SIZECON
n = int(input()) # Anzahl der nun folgenden Zeilen
summe = 0
for k in range(n):
zahl = int(input())
if zahl > 0:
summe = summe + zahl
print(summe)
Den gezeigten Quelltext könnte man so für das SIZECON Problem verwenden - mit einer Länge von 96 (gezählten) Zeichen (natürlich ohne Kommentare!) erreicht man allerdings keinen der vorderen Plätze. Die (bislang) kürzeste funktionierende Python-Lösung enthält gerade einmal 29 (gezählte) Zeichen ...