Imperatives Programmieren läßt sich am besten mittels einer Einkaufen-Analogie beschreiben. Beim imperativen Einkaufen verwende ich eine Einkaufsliste und habe eine "Speicher" (den Einkaufswagen) und der Supermarkt hat ebenfalls einen Speicher (die Regale). Vorgänge, die ich ausühre, verändern den Speicherzustand.
Also, ich gehe mit meiner Liste und einem definierten Startzustand los (mein Einkaufswagen ist
leer, der Supermarkt voll). Ich handle meine Liste ab, in dem ich Artikel in meinen Wagen lade,
solange die Liste nicht abgearbeitet ist.
Ich betrachte also den obersten Artikel auf meiner Liste. Stehe ich vor dem Regal, so nehme ich den
Artikel und lege ihn in den Einkaufswagen (verhindere so, daß ein anderer ihn nehmen kann und zwinge
einen Angestellten (=ein anderes Programm), den Artikel aufzuüllen).
Wenn ein gesuchter Artikel nicht vorrätig ist, so muß ich mir einen ähnlichen Artikel (=gleiche Funktion) suchen. Ist keiner da, so breche ich mein Einkaufen ab oder setze den Einkauf mit dem nächsten Artikel auf der Liste fort (Zutatenkauf für einen Nudelsalat breche ich ab, wenn keine Nudeln da sind, das Fehlen von Kaugummi verhindert nicht, daß ich meinen Sonntagsbraten machen kann).
Das Beispiel zeigt, wie ein imperatives Programm abläft. Es gibt eine Liste von Befehlen, die nacheinander abgearbeitet werden. Dabei können bestimmte Bedingungen überprüft werden (Nudeln da? Sonderangebot für Zahncreme?) oder Schleifen durchlaufen werden (solange die Liste nicht komplett abgearbeitet ist). Fast jede Zeile ändert den Speicherzustand (oder mein Wissen über die Welt).