2. Einführung

Werbung
2. Einführung
Informatik II für Verkehrsingenieure
Überblick
ZIEL
DER
EINFÜHRUNG
§ Was ist Informatik
§ Historische Entwicklung von Programmiersprachen
2
Was ist Informatik?
3
Was ist Informatik?
FRANZÖSISCH
§ Informatique (=information + mathematique)
ENGLISCH
§ Computer Science (neuerdings auch Informatics)
DUDEN INFORMATIK
§ „Wissenschaft von der systematischen Verarbeitung von Informationen, besonders der automatischen Verarbeitung
mit Computern“
GESELLSCHAFT
FÜR INFORMATIK
(GI)
§ „Wissenschaft, Technik und Anwendung der maschinellen Verarbeitung und Übermittlung von Informationen“
ASSOCIATION
FOR
COMPUTER MACHINERY (ACM)
§ Systematic study of algorithms and data structures“
Lernziel: Prinzipien und Techniken zur Verarbeitung von Informationen
4
Was ist Informatik?
INFORMATIK AN DER UNIVERSITÄT
WAS BEDEUTET
§
§
§
§
IST EIN WISSENSCHAFTLICHES
STUDIUM .
DIES?
Neue Denkweisen
Grundlagenorientiert
Steiler Anstieg, höheres Niveau
Angebote statt Zwang und Anwesenheitspflicht
Lernziel Nummer 1 an einer Universität für jedes Studienfach
Eigenverantwortung
5
Was ist Informatik?
WAS BEDEUTET EIGENVERANTWORTUNG?
§ Teilweise ist der Stoff sehr schwierig/theoretisch
(noch mehr in den Mathematik-Vorlesungen)
§ Trotzdem: Im Gegensatz zur Schule ist nicht mehr der Lehrer für Ihren Lernerfolg verantwortlich
§ Das Erarbeiten des Stoffes ist ihre eigene Verantwortung.
ZUSÄTZLICH
ZUM
BESUCH
VON
VORLESUNGEN
UND
ÜBUNGEN
ERFORDERLICH:
§ Recherche von Literatur zum Verstehen des Stoffes
§ Selbstständiges Lösen der Aufgaben
§ Vor Besuch der Vorlesung Sichtung des Materials
6
Was ist Informatik?
INFORMATIK HAT
SICH U. A. AUS DER
VIELE VORGEHENSWEISE
AUS DER
MATHEMATIK ENTWICKELT .
MATHEMATIK ENTLEHNT :
§ Definition, Satz, Beweis, ...
§ Ein Computer hat die Aufgaben, Berechnungen durchzuführen.
§ Er rechnet nicht nur mit Zahlen, sondern mit Informationen
z.B. Wörter aus Websites bei einer Google-Recherche.
ANALYSIS, ALGEBRA, STATISTIK UND NUMERIK SIND WICHTIGE VORLESUNGEN.
7
Was ist Informatik?
IN DIESER VORLESUNG
LERNEN WIR VOR ALLEM :
§ Einführung in die Programmierung anhand der Programmiersprache Java
(ABER: dies ist kein Java-Programmierkurs)
§ Entwerfen von Algorithmen
§ Grundlegende Datenstrukturen (Darstellungsmöglichkeiten von Informationen, Daten)
§ Grundlagen der Objektorientierung
WAS MACHEN
WIR NICHT
§ Hardware-Grundlagen der Informatik
§ Analysemethoden für Probleme, Algorithmen, Programme... u.v.m.
8
Was ist Informatik?
ALGORITHMUS
§ Grundlage jeglicher maschineller Informationsverarbeitung
§ Zentraler Begriff der Informatik
§ Systematische, „schematisch“ („automatisch“, „mechanisch“) ausführbare Verarbeitungsvorschrift
WICHTIGER INHALT
DER INFORMATIKAUSBILDUNG
§ Entwicklung von Algorithmen
§ Analyse von Algorithmen (Korrektheit, Laufzeit, Eigenschaften)
§ Oft weniger wichtig: Umsetzung in Programmiersprachen
Unser Alltag ist von Algorithmen geprägt ...
9
Algorithmus: Beispiel 1
BEISPIEL: MONTAGEANLEITUNG
10
Algorithmus. Beispiel 2
BEISPIEL: KOCHREZEPT
11
Algorithmus: Beispiel 3
DIE TÜRME VON HANOI
§ Turm von Links nach
Rechts bewegen
§ pro Zug darf nur eine
Scheibe bewegt
werden
§ Bedingung: größere
Scheibe darf niemals
auf kleinerer Scheibe
liegen
12
Beispiel: Türme von Hanoi
13
Algorithmus: Beispiel 3
DIE TÜRME VON HANOI
§ Turm von Links nach
Rechts bewegen
§ pro Zug darf nur eine
Scheibe bewegt
werden
§ Bedingung: größere
Scheibe darf niemals
auf kleinerer Scheibe
liegen
FRAGE
§ Wie sieht der Algorithmus für eine beliebige Anzahl von Scheiben aus????
14
8.2 Türme von Hanoi
Java-Code
Java-Code
void hanoi(int k, char start, char ziel, char hilfe) {
if (k > 0) {
hanoi(k - 1, start, hilfe, ziel);
System.out.print("Versetze Scheibe " + k);
System.out.print(" von " + start);
System.out.println(" nach " + ziel);
hanoi(k - 1, hilfe, ziel, start);
}
// else-Fall = Basisfall der Induktion ist leer
}
Der Fall k wird auf den Fall k-1 zurückgeführt.
Die Induktionsannahme wird doppelt angewendet.
Rekursion nicht nur am Ende des Rumpfs.
15
Was ist Informatik?
ZENTRALE AUFGABE DES INFORMATIKERS
§ Entwicklung von Algorithmen (und oft auch deren Realisierung auf dem Rechner als Programm)
PROGRAMM
§ Formale Darstellung eines Algorithmus (oder mehrerer) in einer Programmiersprache
PROGRAMMIERSPRACHE:
§ Formale (eindeutige) Sprache, stellt insbesondere elementare Verarbeitungsschritte und eindeutig definierte
Datentypen für die Ein-/Ausgabe zur Verfügung
16
Was ist Informatik?
SCHEMATISCH
IN DER VORLESUNG
§ Konzepte, Methoden und Techniken
- zur Entwicklung von Algorithmen
- zur Darstellung und Strukturierung von Daten
§ KEIN Programmierkurs (aber Anwendung des Erlernten mit Java)
17
Historische Entwicklung Programmiersprachen
Geschichte
ENTWICKLUNG
§ Seit der Entwicklung des ersten Computers wurden
§ Turm von Babylon der
Programmiersprachen
Programmiersprachen entwickelt.
(Sammet, J.: Programming Languages:
History and Fundamentals, Prentice
Hall, 1969)
19
Stammbaum
… DER PROGRAMMIERSPRACHEN
20
Historie
AUTOCODE UND FORTRAN
§ Anfang fünfziger Jahre „Autocode“ als erste Sprache vorgeschlagen, die arithmetische Ausdrücke, Schleifen und
bedingte Sprünge umfasst
§ Daraus wurde dann Fortran (FORmula TRANslator) entwickelt (erste Fassung 1954)
§ Einsatz im wissenschaftlich-technischen Bereich
ALGOL (ALGORITHMIC LANGUAGE)
§ Anfang der sechziger Jahre
§ Grundlage aller funktionalen Programmiersprachen
§ im Bereich der künstlichen Intelligenz noch heute im Einsatz
COBOL (COMMON BUSINESS ORIENTED LANGUAGE)
§ ebenfalls Anfang der sechziger Jahre entwickelt
§ am weitesten verbreitete Programmiersprache
21
Historie (2)
STRUKTURIERTE PROGRAMMIERUNG
§ wurde mit Pascal zu Beginn der siebziger Jahre begründet (Entwicklung von Niklaus Wirth)
§ Einführung von Sprachmitteln die heute in modernen Programmiersprachen noch zu finden sind
PROGRAMMIERSPRACHE C
§ Entwicklung Anfang der siebziger Jahre
§ Erstmals höhere Programmiersprache zur Implementierung des Betriebssystems UNIX eingesetzt
§ Vorteil: Maschinenunabhängigkeit erreicht und damit UNIX und Linux auf nahezu allen Hardwareplattformen
einsetzbar
MODULARE PROGRAMMIERUNG
§ Mitte der siebziger Jahre wiederum von Niklaus Wirth
§ Umsetzung in der Programmiersprache Ada
22
Historie (3)
OBJEKTORIENTIERTE PROGRAMMIERUNG
§ Ursprung in Simula-67
§ um 1967 in Norwegen entwickelt als eine Sprache für ereignisorientierte Simulation
§ Potential objektorientierter Sprachen nicht erkannt
SMALLTALK UND C++
§ Weiterentwicklung von Simula-67 Ende der siebziger Jahre
§ Konzepte wie „Klasse“ und „Vererbung“ fanden Einzug in die Programmierung
§ C++ 1983 durch AT&T entworfen, die Abwärtskompatibel zu C ist
J AVA
§ Arbeiten lassen sich bis in das Jahr 1990 zurückverfolgen (Sun Microsystems)
§ Name der Sprache Oak
§ Entwurfsziele: Plattformunabhängigkeit, Objektorientierung und Anlehnung an C/C++, um so den Lernaufwand für
Kenner dieser Sprachen gering zu halten
23
Klassifikation
KATEGORIEN
§ Programmiersprachen lassen sich in Kategorien einteilen, die sich im evolutionären Verlauf der Entwicklung als sog.
Programmierparadigmen gebildet haben
IMPERATIVE PROGRAMMIERSPRACHEN
§ Programm besteht aus Anweisungen (imperare = lat. befehlen), die beschreiben, wie das Programm seine Ergebnisse
erzeugt
24
Klassifikation (2)
DEKLARATIVE PROGRAMMIERSPRACHEN
§
§
§
§
umgekehrter Ansatz zu den imperativen Programmiersprachen
Programmierer beschreibt Bedingungen, was das Ergebnis sein soll.
Wie das Ergebnis erzeugt wird, wird automatisch aus der Beschreibung bestimmt
Beispiel: Datenbankanfragesprache SQL
UNTERTEILUNG
DER
DEKLARATIVEN PROGRAMMIERSPRACHEN
§ Abhängig von der Art der formulierten Bedingungen
§ Logische Programmiersprachen (Bedingungen in mathematischer Logik)
§ Funktionale Programmiersprachen (Bedingung in mathematischen Funktionen)
25
Modulare Sprachen
UNTERSTÜTZUNG
SOFTWARETECHNOLOGISCHER
KONZEPTE
§ Strukturiertes Programmieren
§ Modulare Abstraktion
MODULARE SPRACHE UNTERSTÜTZT MODULKONZEPT
§ Verbergen von Information (Sichtbarkeitsregeln)
§ Trennung von Schnittstelle eines Moduls von Implementierung eines Moduls
26
Objektorientiere Sprachen
UNTERSTÜTZUNG
SOFTWARETECHNOLOGISCHER
KONZEPTE
§ Datenabstraktion
§ Objektorientierung
OBJEKTORIENTIERTE SPRACHEN
§
§
§
§
KENNEN OBJEKTORIENTIERTE
KONZEPTE
Klassen
Vererbung
Polymorphie
Oft auch abstrakte
Klassen und
Sichtbarkeitsregeln
27
Zusammenfassung
SPRACHEN
LASSEN SICH IN
3 DIMENSIONEN
KLASSIFIZIEREN
§ 1. Dimension: imperativ vs. deskriptiv (logisch bzw. funktional)
§ 2. Dimension: nicht modular vs. modular
§ 3. Dimension: objektorientiert vs. nicht-objektorientiert
§ 2. und 3. Dimension entsprechen softwaretechnologischen Konzepten
J AVA, C++
§ Imperativ
§ Modular
§ Objektorientiert
28
Take Home Message
SCHEMATISCH
Aufgabe
Algorithmus
Eigentliche Entwicklung
der Verfahrensidee
Programm
Codierung
Konzeptionell getrennte Schritte (bei
kleineren Aufgaben oft verschmolzen)
IN DER VORLESUNG
§ Konzepte, Methoden und Techniken
- zur Darstellung und Strukturierung von Daten
- zur Entwicklung von Algorithmen
§ KEIN Programmierkurs (aber Anwendung des Erlernten mit Java)
29
Vorbereitung auf nächste Vorlesung
AUFGABE
§ In einem Zimmer befindet sich ein Haufen Abfall (1m³), der in den Müllcontainer im Keller gebracht werden muss.
30
Herunterladen