Written by Daniel Wolleb-Graf.
Contents
Dieses erste Kapitel soll dir den Einstieg in die Programmierung von SOI-Aufgaben erleichtern. Es ist keine Anleitung an sich, sondern viel mehr ein Ratgeber, der dir sagt, womit du starten kannst.
Ich möchte Programmieren lernen!
Hast du noch nie etwas programmiert? Dann bist du hier richtig. Für die SOI empfehlen wir dir eine von folgenden zwei Programmiersprachen zu lernen:
- Python (in der Version 3) [super für Einsteiger, reicht bis zum SOI-Final aus]
- C++ (in der Version C++11 oder neuer) [etwas schwieriger, dafür auch mächtiger]
Die meisten von uns haben mit Programmieren begonnen, indem sie ein Einsteigerbuch zu einer Programmiersprache gelesen haben. Wenn du möchtest, kauf dir ein Buch über Python oder C++ und fahre danach mit den Punkten unten fort.
Es gibt aber auch einige Möglichkeiten, um Programmieren zu lernen, die interaktiver und anfängerfreundlicher sind - Bücher können manchmal auch etwas trocken sein. Hier zwei solche Programmiereinstiege für Anfänger:
LOGO-Heft des ABZ der ETH
In der Schildkrötenprogrammiersprache LOGO kannst du zwar keine SOI-Aufgaben lösen, aber sie ist wunderbar einfach zu lernen und man kann tolle Dinge damit zeichnen. Das Ausbildungs- und Beratungszentrum für Informatikunterricht der ETH Zürich hat eine schöne Anleitung samt Programmierumgebung für LOGO zusammengestellt.
Interaktives Python-Tutorial des BWInf
Unsere Kollegen von der deutschen Informatikolympiade (Bundeswettbewerb Informatik, kurz BWInf) und der kanadischen Informatikolympiade haben ein interaktives Tutorial für Python zusammengestellt, was du auch an der SOI benutzen kannst. Du lernst Schritt für Schritt die wichtigsten Befehle und kannst sie gleich ausprobieren.
Ich möchte SOI-Aufgaben lösen lernen!
Für diejenigen von euch die schon etwas Programmiererfahrung mitbringen, haben wir hier einige Unterlagen zusammengestellt, die euch den Start mit unseren Aufgaben erleichtern.
Python für die SOI
Python ist die ideale Einstiegsprogrammiersprache und auch ausreichend, um die Aufgaben der Qualifikationsrunde der SOI zu lösen. Neben dem Python-Tutorial von oben können wir auch das offizielle Python-Tutorial (auf Englisch) empfehlen.
Workshopunterlagen zu Python
An unseren Einsteigerworkshops im Herbst unterrichten wir ebenfalls in Python. Auf der entsprechenden Seite findest du viele Unterlagen dazu:
Python-Skript im Wiki
Johannes Kapfhammer hat ein Kapitel spezifisch zu Python für die Qualifikationsrunde geschrieben mit vielen nützlichen Tricks:
C++ für die SOI
In der Qualifikationsrunde der SOI ist jede Programmiersprache zugelassen. Wenn du also bereits etwas anderes beherrschst, z.B. Python oder Java, dann darfst du gerne damit teilnehmen. Python ist auch in den weiteren Runden der SOI erlaubt, nicht aber an der IOI. Deshalb empfehlen wir dir, früher oder später auf C++ umzusteigen.
Ein- und Umstieg auf C++
Sandro Feuz (sandro@soi.ch) hat ein ausführliches Tutorial zu den für die SOI relevanten Features von C++ geschrieben. Wenn du bereits gute Vorkenntnisse in irgendeiner Programmiersprache hast, dann kannst du direkt hier einsteigen (ansonsten solltest du vielleicht eher weiter oben beginnen).
Die C++ Standardbibliothek
Wenn du es bis hierhin geschafft hast, dann kannst du dich locker an die ersten SOI-Aufgaben in C++ heranwagen. C++ kann aber noch viel mehr! Insbesondere die Standardbibliothek enthält sehr viele nützliche Hilfsmittel, zum Beispiel eine Funktion, die das Sortieren von Arrays für dich übernimmt. Das Tutorial von Johannes Kapfhammer (johannesk@soi.ch) stellt dir die nützlichsten Datenstrukturen und Tricks daraus vor.