1.2. Arten der Programmierung

Ereignisorientierte Programme stehen nach dem Start immer in Interaktion mit dem Anwender. Das gilt zum Beispiel für die Webseiten dieses Scriptes. Niemand weiss vorher, wann auf der Webseite ein Hyperlink, eine Schaltfläche oder ein Bild angeklickt werden wird. Die Seite muss also auf diese Ereignisse vorbereitet sein.

Der Anwender steuert heute normalerweise die Programme auf seinem PC durch Klicken, durch Tastatureingaben und durch Mausbewegungen. Andere Arten der Steuerung können darauf aufbauen (z.B. die Sprachsteuerung). Unter den Betriebssystemen Windows und MacOS und auf dem Linux-Desktop sind ereignisorientierte Programme inzwischen für die meisten Anwender der Normalfall. Sie kennen sicher folgende Beispiele:

Es gibt aber nicht nur ereignisorientierte Programme. Diese eignen sich nämlich nicht für Routineaufgaben und auch nicht für die Verarbeitung von großen Datenmengen. Programmierer und fortgeschrittene Anwender arbeiten daher oft auch mit sequentiellen Programmen. Man programmiert nach einem bestimmten Algorithmus, startet dann das fertige Programm und wartet auf die Ergebnisse. Oft werden dabei Eingabedaten aus Dateien gelesen, bearbeitet, und wieder in andere Dateien geschrieben. Beispiele für sequentielle Programme sind:

Wir werden in diesem Kurs vorwiegend mit der ereignisorientierten Programmierung in Berührung kommen. Darin gibt es aber auch sequentielle Teile (z.B. die Abarbeitung von Listen). Zur interaktiven Kommunikation mit dem Anwender verfügen ereignisorientierte Programme über verschiedene Elemente, mit denen der Anwender den Ablauf steuert und Daten eingibt, so zum Beispiel:


Abbildung 1-1. Bedienungselemente für Windows-Anwendungen (Auswahl)


Ereignisorientierte Programme besitzen deshalb auch eine andere Struktur als sequentielle Programme. Mit einer Liste von Befehlen, die einem festen Algorithmus folgen, können wir hier nichts anfangen. Statt dessen verwenden wir eine Sammlung von kleinen Unterprogrammen (Prozeduren und Funktionen), die jeweils für ganz spezielle Aufgaben bestimmt sind. Diese Unterprogramme arbeiten im "teamwork" gemeinsam daran, dass die Eingaben des Benutzers jederzeit verarbeitet werden können.

Wir verfügen also nicht über ein geplantes, festes Ablaufschema, sondern der Ablauf wird mit jeder Benutzung durch die Anwender neu bestimmt. Die einzelnen Prozeduren müssen deshalb in unterschiedlichem Kontext lauffähig sein. Man bemüht sich, jede Prozedur oder Funktion so zu effektivieren, dass sie auch in anderen Projekten wieder einsetzbar ist. Dies erfordert eine klare Vorstellung von der Aufgabenstellung des Programmes und den verschiedenen möglichen Abläufen. Daraus ergeben sich dann Schnittstellen für die verschiedenen Prozeduren.