Sie sind auf Seite 1von 30

Informatik 1

Einheit 1
Einleitung

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 1


Lernziele der heutigen Einheit

Begriffsbestimmung
Informatik
Algorithmus
Programm/Programmieren
Korrektheit
Programmiersprache
Sie wissen, was eine Problemspezifikation in Form von Eingabe
und Ausgabe ausmacht.
Sie verstehen die Lösungsschritte Problem → Algorithmus →
Programm
Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 2
Was ist Informatik?

Informatik ist die Wissenschaft von der systematischen


Darstellung, Speicherung, Verarbeitung und Übertragung von
Informationen.
Zentraler Untersuchungsgegenstand sind Algorithmen.
Ein weiterer wichtiger Aspekt sind Datenstrukturen, auf
denen Algorithmen operieren.
Relevanz haben diese Dinge für die Programmierung von
Computern.
Motiviert sind sie durch den Bedarf, Problemlösungen zu
automatisieren.

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 3


Was ist Informatik?

Smartphone-Apps und Internet-Dienste lösen eine Reihe von


nicht-trivialen Problemen.
Navigation: Finden des schnellsten Pfade von A nach B durch
ein kompliziertes Netzwerk von Straßen
Suchmaschinen: Sortierung von Webseiten anhand ihrer
Passung zu Suchbegriffen
Kompression von Bildern, Videos und Musik
Sichere Datenkanäle durch Verschlüsselung
Wie funktioniert das?

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 4


Was ist Informatik?

Problem

Lösung

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 5


Was ist Informatik?

Problem Algorithmus

Lösung Programm

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 6


Problemstellung

Problem Algorithmus

Lösung Programm

Das zu lösende Problem wird in natürlicher Sprache formuliert.


Es muss hinreichend klar und eindeutig definiert sein.
Ein Problem ist eine Transformation einer Eingabe (welche wir
bereits haben) in eine Ausgabe (welche wir gern hätten).
Eingabe und Ausgabe sind von endlicher Länge.
Ein Problem ist eine Klasse von Problem-Instanzen. Jede
gültige Eingabe definiert eine Probleminstanz.
Sehr viele relevante Probleme sind algorithmisch lösbar, aber
nicht alle (→ theoretische Informatik).
Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 7
Problemstellung – Beispiel

Problemstellung: Wir wollen zwei natürliche Zahlen addieren.


Eingabe: Zahlen x, y ∈ N. Ausgabe: z = x + y ∈ N.
Probleminstanz: Wieviel ist 12477 + 26346?
Genauer: Die Zahlen sind in ihrer Dezimaldarstellung als Folge
von Ziffern aus dem Vorrat {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} gegeben.

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 8


Problemstellung – Beispiel

Problemstellung: Gegeben eine Anzahl n und zwei Ziffernfolgen


x0 , x1 , x2 , . . . , xn−1 und y0 , y1 , y2 , . . . , yn−1 , welche die Zahlen
n−1
X n−1
X
x= 10i · xi und y = 10j · yj
i=0 j=0

definieren, berechne die Anzahl der Ziffern k und die Ziffernfolge


z0 , z1 , z2 , . . . , zk−1 der Summe z = x + y mit Darstellung
k−1
X
z= 10i · zi .
i=0

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 9


Algorithmus

Ein Algorithmus definiert eine Abfolge elementarer


Anweisungen.
Beispiele:
Kochrezept
Bauanleitung (Möbel, Überraschungsei, LEGO, Minecraft)
Partitur
schriftliche Addition
Das Finden eines Algorithmus für ein Problem ist oft eine sehr
schwierige Aufgabe, die viele Jahre an Entwicklungsarbeit
erfordert.
Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 10
Algorithmus – Beispiel

Schriftliche Addition

12477 + 26346
-------------
13
11.
7..
8...
3....
-------------
38823

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 11


Algorithmus – Beispiel

Wir haben die Addition in kleinere Operationen zerlegt.


Muss das sein? Können wir nicht 12477 + 26346 als
“elementare Operation” betrachten?
Wohl kaum, denn das können wir nicht (einfach) im Kopf
rechnen.
Übliche Konvention für elementare Rechenoperationen:
Addition einzelner Ziffern.

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 12


Algorithmus – Beispiel

Elementare Operation: Addition “mit Übertrag”


Addiere zwei Ziffern, und dazu möglicherweise noch eine 1
(den Übertrag).
Ergebnis: Eine Ziffer, möglicherweise eine 1 als Übertrag für
die nächste Operation.

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 13


Algorithmus – Beispiel

12477 + 26346
-------------
13
11.
7..
8...
3....
-------------
38823

Beispiel Zehner-Stelle: 7 + 4 + 1 = 12
Eingaben: 7 (erste Ziffer), 4 (zweite Ziffer), 1 (Übertrag)
Ausgaben: 2 (Ergebnis), 1 (Übertrag)

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 14


Algorithmus – Beispiel

Algorithmus: Schriftliche Addition natürlicher Zahlen


Eingabe: Ziffernfolgen x0 , x1 , . . . , xn−1 und y0 , y1 , . . . , yn−1 .
1 Setze den Übertrag c auf 0, setze i auf 0.
2 Addiere elementar xi + yi + c.
3 Schreibe das Ergebnis in zi und den Übertrag in c.
4 Erhöhe i um 1.
5 Falls i < n ist dann springe zu Schritt 3.
6 Falls c = 1 ist dann setze zi = 1 und erhöhe i um 1.
Ausgabe: Ziffernfolge z0 , . . . , zi−1 .

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 15


Algorithmus – Beispiel

c <− 0

i <− 0

z[i], c <− add(x[i], y[i], c)

i <− i + 1

no yes
i < n?

yes
c = 1? z[i] <− 1

no

return z i <− i + 1

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 16


Algorithmus

Wir haben Platzhalter namens zi und c verwendet (im


Flussdiagramm z[i] und c).
Diese heißen Variablen.
Sie unterscheiden sich von mathematischen Variablen – obwohl
wir oft mit ihnen rechnen!
In einer Variablen kann ein Ergebnis oder Zwischenergebnis
gespeichert werden.
Eine Variable ist also ein “Gedächtnis” oder “Speicherplatz”.
Im Gegensatz zur mathematischen Variablen kann sich der
Wert einer Variable im Algorithmus während der Abarbeitung
ändern, wie beim Übertrag c.

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 17


Algorithmus

Neben Rechenoperationen benötigen wir weitere elementare


Operationen:
Setze eine Variable auf einen Wert.
Vergleiche zwei Variablen, oder vergleiche eine Variable mit
einem Wert.
Springe zu einer anderen Anweisung.
Gib ein Ergebnis aus.

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 18


Algorithmus

Ein Algorithmus führt ein kompliziertes Problem auf eine Reihe


einfacher Probleme zurück, die wir bereits lösen können.
Die Lösungen dieser einfachen Probleme heißen elementare
Operationen.
Was macht eine Operation elementar? Das hängt von den
Fähigkeiten dessen ab, der den Algorithmus ausführen soll.

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 19


Algorithmus

Wer im Kopf zwei 10-stellige Zahlen addieren kann, benötigt


dafür keinen Algorithmus – die Operation wird elementar.
Die meisten Menschen können das nicht. Stattdessen arbeiten
wir mit der Addition einzelner Ziffern.
Die Menge der elementaren Operationen ist eine Konvention,
und somit zu einem hohen Grad beliebig.
Im Fall von Computern stützt sie sich meist auf die
Operationen, die ein Prozessor in Hardware ausführen kann
(→ Rechnerarchitekturen).

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 20


Algorithmus

c <− 0

i <− 0

z[i], c <− add(x[i], y[i], c)

i <− i + 1

no yes
i < n?

yes
c = 1? z[i] <− 1

no

return z i <− i + 1

Die Kunst des Algorithmenentwurfs ist es, die elementaren


Operationen so zu verknüpfen, dass das komplizierte Problem
gelöst wird.
Ist ein Problem einmal gelöst, so steht es als neuer Baustein
zur Verfügung – fast wie eine elementare Operation.

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 21


Algorithmus

c <− 0

i <− 0

z[i], c <− add(x[i], y[i], c)

i <− i + 1

no yes
i < n?

yes
c = 1? z[i] <− 1

no

return z i <− i + 1

Aus einfachen Operationen (Addition von Ziffern) werden


stückweise immer komplexere Operationen (Kompression von
Bildern) zusammengesetzt.
Oft gibt es mehrere sinnvolle Algorithmen zur Lösung
desselben Problems.

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 22


Korrektheit

Ein Algorithmus heißt korrekt, wenn er


1 für jede erlaubte Eingabe das in der Problemstellung geforderte
Ergebnis produziert;
2 terminiert, also die Berechnung des Ergebnisses in endlicher
Zeit fertig wird.
correctness first – ein nicht korrekter Algorithmus ist sinnlos,
egal wie elegant oder schnell er ist.
Ob ein gegebener Algorithmus für ein Problem korrekt ist oder
nicht ist meist nicht offensichtlich.
Manchmal ist die Korrektheit eines Algorithmus mathematisch
beweisbar (→ formale Verifikation). Dann können wir dem
Ergebnis bedingungslos vertrauen.
Oft ist das viel zu aufwändig. Stattdessen werden Algorithmen
auf diversen Eingaben getestet (→ unit tests).

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 23


Laufzeit

Die Bedingung, dass ein Algorithmus in endlicher Zeit fertig


werden muss, ist sehr schwach.
In der Praxis muss er in (für die Problemstellung) sinnvoller
Zeit fertig werden.
Die Laufzeit von Algorithmen ist eine Funktion der Länge der
Eingabe.
Sie ist ein wichtiges Thema der → theoretischen Informatik.

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 24


Programm

c <− 0

Problem Algorithmus i <− 0

z[i], c <− add(x[i], y[i], c)

i <− i + 1

no yes
i < n?

yes
c = 1? z[i] <− 1
Lösung Programm
no

return z i <− i + 1

Kann ein Computer einen Algorithmus ausführen?


Nicht direkt, beziehungsweise nur dann, wenn er in den
elementaren Operationen des Computers formuliert ist.
Auf der untersten Ebene ist dies das Ein- oder Ausschalten von
Spannung auf Leitungen.
Auf einer etwas höheren Ebene sind dies die Befehle, die ein
Prozessor versteht, zum Beispiel die Addition von zwei Zahlen.

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 25


Programm

c <− 0

Problem Algorithmus i <− 0

z[i], c <− add(x[i], y[i], c)

i <− i + 1

no yes
i < n?

yes
c = 1? z[i] <− 1
Lösung Programm
no

return z i <− i + 1

Programmiersprachen setzen daraus noch höher abstrahierte


Operationen zusammen, wie etwa die Organisation von
Variablen in Listen.
Ein Programm ist die Umsetzung oder Implementierung eines
Algorithmus mit den elementaren Operationen einer
Programmiersprache.

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 26


Programm

Eine Programmiersprache
ist eine Sprache, in der
Anweisungen exakt
formuliert werden können.
Exaktheit ist wichtig
denn Computer sollen
unsere Anweisungen nicht
fehlinterpretieren.
Programmiersprachen unterliegen einer exakten Syntax
(“Rechtschreibregeln”, “Grammatik”).
Die Semantik (Bedeutung) jeder Anweisung ist exakt
definiert.

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 27


Programm

Algorithmus ←→ Programm
Idee ←→ Umsetzung

Ein Programm verhält sich zum Algorithmus wie das Konkrete


zum Abstrakten, oder wie die Umsetzung zur Idee.
Die Übersetzung Algorithmus → Programm ist größtenteils
mechanisch.
Programme behandeln wir ab der nächsten Einheit im Detail.

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 28


Zusammenfassung

Problemdefinition: Gegeben ein bestimmter Typ von Eingabe,


berechne die geforderte Ausgabe
Weg zur Lösung: Algorithmus und Programm
Algorithmus = Abfolge elementarer Operationen
Beispiele: schriftliche Addition
Algorithmus ist korrekt: richtiges Ergebnis in endlicher Zeit
Programmiersprache = Sammlung elementarer Anweisungen
mit sauber definierter Syntax und Semantik
Programm = Umsetzung eines Algorithmus in einer
Programmiersprache

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 29


Quellen

Diese Folien verwenden das folgende Bild


https://commons.wikimedia.org/wiki/File:Lego_Color_Bricks.jpg

von Wikipedia unter CC-Lizenz, Autor: Alan Chia.

Diese Folien verwenden das folgende Bild


https://en.wikipedia.org/wiki/Hourglass#/media/File:Wooden_hourglass_3.jpg

von Wikipedia unter CC-Lizenz, Autor: S Sepp.

Tobias Glasmachers Informatik 1 – Einheit 1 – Einleitung 30

Das könnte Ihnen auch gefallen