Bunte Bits

9. Programmieren


9.1 Unsere erste Programmieraufgabe

Betrachten wir also mal ein einfaches Problem, für das du deinen Computer programmieren könntest:

Du möchtest eine Zahl eingeben können und wissen, durch welche Zahlen man sie ohne Rest teilen kann. Du möchtest also die Teiler einer Zahl berechnen.

Versuche zunächst einmal selbst, dir zu überlegen, was der Computer tun könnte, damit du vom Ausgangspunkt Zahl eingeben zum Ziel Teiler ausgeben kommst, und lies erst danach weiter!

Damit wir uns über die Zahlen mit denen wir rechnen, besser unterhalten können, hier eine Festlegung, welche Zahl bei einer Teilaufgabe wie heißt:

Eine Aufgabe, bei der man eine Zahl durch eine andere teilt, heißt Division.
Die Zahl, die geteilt werden soll, nennt man Dividend.
Der Name der Zahl, durch die der Dividend geteilt wird, ist der Divisor.
Das Ergebnis der Divisionsaufgabe schließlich ist der Quotient.
Also:
Dividend : Divisor = Quotient

Hier ein Lösungsvorschlag:

Wir probieren einfach alle in Frage kommenden Zahlen aus, ob sie Teiler des Dividenden sind! Erst teilen wir unsere Zahl durch 2 und schauen ob ein Rest bleibt, dann durch 3, durch 4 usw. so lange bis unser Teiler genauso groß ist wie die eingegebene Zahl. Jedes Mal wenn es uns gelingt, unsere Zahl ohne Rest zu teilen, geben wir die Zahl, durch die wir gerade geteilt haben, als Teiler unserer Eingabezahl aus.

Den Ablauf des Programms könnte man also wie folgt zusammenfassen:

  1. Dividend eingeben und speichern
  2. Divisor auf 2 setzen
  3. Rest der Division Dividend durch Divisor berechnen
  4. Falls der Rest Null ist, Divisor als Teiler ausgeben
  5. Divisor um 1 vergrößern (das nennt man auch inkrementieren)
  6. Prüfen ob der Divisor gleich dem Dividenden ist,
    falls ja, Programm beenden
    falls nein zu Schritt 3 zurückgehen.

Schon wenn man versucht, das Programm als Text zu formulieren, fällt einem auf, dass man für die Zahlen, mit denen gerechnet werden soll, Bezeichnungen braucht - irgendwelche Namen oder Platzhalter. Deshalb habe ich diese komischen Worte, Dividend und Divisor eingeführt. Man weiß ja noch gar nicht, welche Zahl nachher wirklich der Dividend, der Divisor oder der Rest sein wird.

Beim richtigen Programmieren ist das genauso: Egal welche Sprache man verwendet, es gibt immer sogenannte Variablen, die als Platzhalter für die Daten verwendet werden, mit denen später gerechnet wird. Du kannst dir Variablen auch als Namen der Speicherplätze vorstellen, in denen die Rechengrößen gespeichert werden.

Der Begriff kommt von variabel, was veränderlich bedeutet. Variablen verwendet man, um die veränderlichen Werte zu beschreiben.

Unser Programm beginnt also im Schritt 1 mit der Eingabe der Zahl, die auf Teiler untersucht werden soll, dem Dividenden. Und natürlich muss die Zahl gespeichert werden, weil der Computer sie in den Berechnungen ja immer wieder brauchen wird.

Im nächsten Schritt überlegen wir, welches die erste Zahl ist, die wir als Teiler ausprobieren wollen. Wir könnten auch 1 als ersten Wert wählen, aber das ist unnötig, weil ja jede ganze Zahl durch 1 teilbar ist; also brauchen wir das auch nicht ausprobieren.

In Schritt 3 findet dann der Test statt, ob die Division einen Rest hat. Je nachdem, ob unsere Programmiersprache einen Befehl zur Berechnung des Rests einer Division hat oder nicht, müssen wir diesen Schritt später vielleicht mit mehreren Programmbefehlen realisieren. Aber das ist das Schöne an einer solchen Programmbeschreibung: Wenn das Gerüst erst mal steht, kann man die einzelnen Schritte später immer noch genauer beschreiben.

Wenn wir die Division durchgeführt haben, müssen wir das Ergebnis in Schritt 4 noch bewerten: War unser Divisor nun ein Teiler oder nicht. Wenn er ein Teiler war, wenn also der Rest der Division Null war, dann geben wir den Divisor aus, und sagen damit dem Bediener des Programms, dass dieser Wert des Divisors ein Teiler des Dividenden ist.

Danach wollen wir mit der nächsten Zahl weitermachen und erhöhen deshalb in Schritt 5 den Divisor um Eins.

Natürlich soll das Programm auch irgendwann fertig werden. Deshalb müssen wir prüfen, ob der Divisor denn schon seinen Endwert erreicht hat, bevor wir erneut versuchen, ob es einen Rest gibt. Der letzte Wert, den der Divisor annehmen soll, ist der des Dividenden. Dafür brauchen wir die Division aber nicht mehr ausprobieren, weil wir ebenso wie bei der Division durch 1 genau wissen, dass es nie einen Rest gibt, wenn wir zwei gleiche Zahlen durcheinander teilen: 3:3=1; 12:12=1 und ohne groß nachzudenken kann ich behaupten

323.297.632.974.563.875 : 323.297.632.974.563.875 = 1

Wenn der Divisor also gleich dem Dividenden ist, endet das Programm!

Eine solche Beschreibung, wie man in endlicher Zeit von einer definierten Ausgangssituation zu einem bestimmten gewünschten Ergebnis kommt, nennt man auch einen Algorithmus. Das Programm ist dann die Übersetzung eines Algorithmus in eine bestimmte Computersprache.



9. Programmieren Inhaltsverzeichnis
Index
9.1.1 Testen des Algorithmus