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