12. Januar 2017

'Grundlagen der Programmierlogik' von Marcus Pérez

Programmiersprachen unterscheiden sich in ihrer Ausdrucks- und Schreibweise, die Konzepte dahinter sind jedoch meist sehr ähnlich. Daher ist es zunächst wichtig, die grundlegende Logik zu verstehen, welche alle gängigen Programmiersprachen miteinander gemein haben.

Die Programmierlogik bildet den Grundstein, um die Struktur von Computer-Programmen planen und entwickeln zu können. Erst wenn das Konzept steht, erfolgt die Umsetzung in einer sprachenspezifischen Schreibweise.

Unabhängig von einer speziellen Sprache dient dieses Buch als Vorbereitung zum Erlernen der ersten Programmiersprache. Ein wichtiges Hilfsmittel hierfür ist der Programmablaufplan, mit dem sich die logische Struktur leicht verständlich und nachvollziehbar darstellen lässt.

Gleich lesen: Grundlagen der Programmierlogik

Leseprobe:
Was ist eigentlich Programmierung?

Definition Programmierung (Informatik):
In der Informatik versteht man unter der Programmierung die Planung, Entwicklung und Umsetzung (Codierung) eines (Computer-)Programms.

Sicher stellt die Aussage, dass mit Programmierung das Erstellen eines Programms gemeint ist, keine besonders neue Erkenntnis für Sie dar. Allerdings gehört zur Programmierung mehr als nur das Eintippen von Computerbefehlen. Zwischen dem zu lösenden Problem und dem fertig ausführbaren Programm liegen viele Schritte. Grob lässt sich das in Planung, Entwicklung und Umsetzung gliedern. Zur Planung kann man die Problembeschreibung und -analyse, zur Entwicklung den Lösungsentwurf und deren Verbesserung zählen. In der Umsetzung wird daraus dann ein fertiges Programm. Doch was ist eigentlich genau ein (Computer-) Programm?

Definition (Computer-)Programm:
Ein Programm ist eine Folge von Befehlen, die dem Computer mitteilen, wie er eine Aufgabe zur Problemlösung abarbeiten soll.

Ein Programm ist folglich eine Beschreibung für die Vorgehensweise, um zu einer Lösung für ein bestimmtes Problem zu kommen. Wir selbst begegnen im Alltag ständig solchen Beschreibungen, die wir abarbeiten, wie z.B. in Form von Rezepten oder Wegbeschreibungen.
Nehmen wir an, Sie möchten zum Bahnhof und fragen einen Passanten, wie Sie dorthin kommen. Sie erhalten folgende Beschreibung:
▪ Fahren Sie die Straße bis zur 3. Ampel, dort biegen Sie links ab
▪ Nach 300m kommt ein gläserner Bürokomplex, hier rechts abbiegen
▪ Noch ein paar Straßen, dann sehen Sie auf der linken Siete den Parkplatz vom Bahnhof
Diese Beschreibung stellt im Prinzip eine Folge von Befehlen dar, mit deren Abarbeitung man das definierte Problem lösen kann. Folgen Sie den Anweisungen, löst dies Ihr Problem – nämlich wie Sie zum Bahnhof kommen. Doch ist es in der Form kein (Computer-) Programm, sondern eher ein Algorithmus.

Definition Algorithmus:
Ein Algorithmus ist die präzise und eindeutig verfasste endliche Folge von Anweisungen zur Lösung einer gegebenen Aufgabe bzw. eines Problems.

Anders formuliert: Ein Algorithmus ist die Beschreibung einer begrenzten Anzahl von Arbeitsschritten, die den Zweck erfüllen eine bestimmte Aufgabe zu lösen. Er muss äußerst präzise und eindeutig sein.
Dabei ist „präzise und eindeutig“ leicht differenziert zu betrachten. Ein Algorithmus ist erst einmal eine Art Bedienungsanleitung, z. B. ist ein Rezept eine Form von Algorithmus. Es erklärt uns in einer Folge von Anweisungen, wie wir zur Lösung unseres Problems gelangen, z. B. einen Kuchen backen. Ein Rezept erfüllt auch die Vorgabe, dass es endlich ist. Bleibt noch das „präzise und eindeutig“.
Beispiel: Nachdem wir alle Zutaten vorbereitet haben, steht in unserem Rezept: „Bei 200° für 60 Minuten in den Backofen geben“. Für uns ist das relativ präzise und eindeutig, zumindest ausreichend, um die Anweisung erfolgreich auszuführen. Vor allem können wir u. U. auf einen passenden Erfahrungsschatz zurückgreifen, wenn das nicht unser erster Kuchen ist. Möglicherweise fehlt uns die Information, ob wir den Backofen auf Ober-/Unterhitze oder Umluft stellen sollen, letztlich würden wir aber selbst eine Entscheidung treffen (können).
Der Computer kann das nicht und steht da wahrscheinlich schon vor einem Problem, denn: Computer sind dumm!
Computer können nicht selbstständig denken oder interpretieren, das heißt Sie müssen für den Computer jeden Schritt genau definieren und mögliche Hindernisse oder Probleme berücksichtigen. Jeder Tippfehler führt zu Fehlern.
Wenn wir einen geschriebenen Text lesen, der Fehler in der Grammatik oder Rechtschreibung enthält, dann werden wir diese teilweise überlesen oder zumindest den Inhalt dennoch korrekt interpretieren können. Ein Computer kann das von Haus aus nicht, allenfalls, wenn es ihm von einem Programmierer beigebracht wurde. Er arbeitet lediglich die vorgegebenen Befehle akribisch Schritt für Schritt ab. Entsprechend genau muss das Programm jede mögliche Situation berücksichtigen.
Zurück zu unserem Kuchenbeispiel: der Computer dürfte hier noch ganz andere Probleme haben, denn für ihn ist das alles viel zu unpräzise. Wenn wir dem Computer den Befehl geben würden, den Kuchen in den Ofen zu stellen, dann würde er das blind ausführen oder zumindest versuchen auszuführen.
Doch was ist, wenn die Ofentür geschlossen ist? Vermutlich würde er an der Aufgabe scheitern oder ggf. den Kuchen durch die Glasscheibe drücken. Wir müssten dem Computer also viel konkreter erklären, was er tun muss, damit am Ende der Kuchen im Backofen landet.
Zunächst müsste er nachsehen, ob die Ofentür geöffnet oder geschlossen ist und dann ggf. öffnen. Außerdem müssten wir ihm dann noch sagen, was er nehmen soll, wo er es findet und wohin es genau gebracht werden muss. Zum Schluss müssten wir ihm noch mitteilen, dass er die Ofentür schließen soll.
Das waren jetzt nur die Anweisungen für „in den Ofen schieben“, für den ganzen Rest wären genauso präzise Anweisungen nötig. Der Computer braucht also eine Schritt-für-Schritt-Anweisung, um korrekt arbeiten zu können.
Die Beschreibung „Jeder Einzelschritt muss für sich so einfach und so exakt beschrieben sein, so dass es keinen Zweifel über seine Abwicklung gibt.“ trifft den Punkt ziemlich gut, denn ein Computer kann mit zweifelhaften Anweisungen nicht umgehen.
Das Gute ist, das Programmiersprachen viel Arbeit abnehmen können, da typische Aufgaben bereits programmiert wurden. Man muss also nicht mehr alles von Grund auf programmieren, sondern kann auf bestehende Funktionen zurückgreifen und diese nach eigenem Bedarf kombinieren.

Im Kindle-Shop: Grundlagen der Programmierlogik

Mehr über und von Marcus Pérez auf seiner Website.



Keine Kommentare:

Kommentar veröffentlichen