Inhaltsverzeichnis

Algorithmen und ihre Grundstrukturen

Häufig begegnen uns Beschreibungen von Verfahren und Vorgängen:

Der arabische Mathematiker Abu Ja’far Mohammed ibn Musa al-Khowarizmi hat solche, speziell mathematische Verfahren in der ersten Hälfte des 9. Jahrhunderts beschrieben. Deshalb nennt man solche Beschreibungen von Vorgängen auch Algorithmus.

Definition:

„Ein Algorithmus ist eine Verarbeitungsvorschrift, die aus einer endlichen Folge von eindeutig ausführbaren Anweisungen besteht, mit der man eine Vielzahl gleichartiger Aufgaben lösen kann.“ 1)

Eigenschaften eines Algorithmus

  • Endlichkeit: Ein Algorithmus besteht aus endlich vielen Anweisungen.
  • Eindeutigkeit: Mit einer Anweisung ist auch die nächste Anweisung festgelegt. Gleiche Eingabedaten müssen zu gleichen Ausgabedaten führen.
  • Ausführbarkeit: Alle Anweisungen eines Algorithmus müssen für den Ausführenden verständlich und damit ausführbar sein.
  • Allgemeingültigkeit: Ein Algorithmus muss alle Probleme einer bestimmten Problemklasse lösen.
  • Terminiertheit: Ein Algorithmus muss nach endlich vielen Schritten eine Lösung gefunden haben. (In der theoretischen Informatik verzichtet man häufig auf diese Eigenschaft und betrachtet auch Algorithmen, die nicht terminieren.)

Darstellungsformen von Algorithmen

Einen Algorithmus kann man auf verschiedene Weisen darstellen:

Ein Beispiel

Ein berühmter Algorithmus ist der Euklidische Algorithmus, mit dem man den größten gemeinsamen Teiler zweier natürlicher Zahlen a und b ermitteln kann. Dieser Algorithmus wird hier (in der Differenzvariante) in den verschiedenen Darstellungsformen präsentiert:

Algorithmischen Grundstrukturen

Es gibt bestimmte Grundstrukturen, aus denen sich alle Algorithmen aufbauen lassen. Diese werden in den folgenden Abschnitten behandelt.

Computerprogramme und Programmiersprachen

„Ein Programm ist ein vom Computer umsetzbarer Algorithmus, der in einer für den Computer verständlichen Sprache (einer Programmiersprache) verfasst ist.“2)

Einteilung von Programmiersprachen

Einteilung nach historischer Entwicklung

Einteilung höherer Programmiersprachen nach der Art der Übersetzung

Einteilung höherer Programmiersprachen nach dem Programmierparadigma

Die folgende Übersicht zeigt eine mögliche Einteilung von Programmiersprachen nach ihrem Programmierparadigma. 3)

Durch viele Programmiersprachen können mehrere Paradigmen umgesetzt werden. Eine kleine Übersicht gibt die nachfolgende Tabelle:

Sprache prozedural objektorientiert funktional logisch
C X
C++ X X
Java X
Perl X X
Python X X X
Haskell X
Prolog X

>> Workshop: Erstellen von Programmen in verschiedenen Programmiersprachen

Erklärvideo

Im folgenden Video werden die Inhalte dieser Seite nochmal erklärt.


Aufgaben

Aufgabe 1

Beantworte die folgenden Fragen zum Inhalt der Seite und überprüfe deine Lösungen!

a) Welche der folgenden Prozesse sind Algorithmen?
b) Welcher Begriff gehört nicht zu den Eigenschaften von Algorithmen?
c) Mit welcher Programmiersprache ist nur logische Programmierung möglich?
c) Mit welcher Programmiersprache ist nur objektorientierte Programmierung möglich?
d) Mit welcher Programmiersprache ist sowohl struktorierte, objektorientierte als auch funktionale Programmierung möglich?
e) Welche Programmiersprache ist eine Sprache der 2. Generation?
You Scored % - /


Aufgabe 2

Informiere dich über die Sprache Scratch. Erstelle online einen kleinen Algorithmus und lade dir die Datei herunter.

>> Lineare Programme - Aus- und Eingabe

1)
Engelmann, Lutz (Hrsg.): Duden Informatik Lehrbuch S II, DUDEN PAETEC GmbH, Berlin 2006, S.30
2)
ebenda, S. 38
3)
ebenda