ALP 1 - Einführung Algorithmen und Programmierung 1 Heinz Schweppe Inst. f. Informatik, R. 167 Tel. 838 75 120 [email protected] Sprechstunde: Mi. 14 c.t. - 15.45 hs / fub - alp1-1 1 ALP 1 - Einführung u Tutoren und Tutorinnen: Tutor Tutoriumszeit Joav Bally Mo 10 - 12 Fr 12 - 14 Manuel Scholz Mi 8:30 - 10 Raum Beratungszeit SR 053 Jan Schröter Fr 12 - 14 SR 046 Mo 14 - 16 Mi 14 - 16 hs / fub - alp1-1 2 1 ALP 1 Tutor - Einführung Tutoriumszeit Raum Klaus Bernd Schürmann Mi 12 - 14 Do 10 - 12 SR 046 Beratungszeit Andrea Steinmetz Do 10:00 - 11:30 Mo 10:00 - 11:30 Do 8 - 10 Thorsten Zippan Mi 8:30 - 10 hs / fub - alp1-1 3 ALP 1 - Einführung HEUTE u Übersicht Informatikstudium u Informatik als wissenschaftliche Disziplin u Kurzer historischer Abriß u Ziele der Veranstaltung u Intuitiver Algorithmenbegriff u Induktion u Einige Begriffe u Organisatorisches zum Übungsbetrieb (15 min) hs / fub - alp1-1 4 2 ALP 1 - Einführung Grundstudium u Algorithmen und Programmierung r Systematische Entwicklung von Algorithmen Funktionale Programmierung einige theoretische Grundlagen r Imperative Programmierung (mit Java) Objektorientierte Programmierung Korrektheit und Effizienz von Algorithmen r Algorithmen und Datenstukturen Bäume, Graphen, ... Datenabstraktion r Softwarepraktikum: Gemeinsame Entwicklung eines größeren Softwaresystems u Was noch? Rechnersysteme, Theorie der Informatik, Mathematik (nicht wenig!), Nebenfach hs / fub - alp1-1 5 ALP 1 - Einführung u Lehr- und Lernziele des Informatikstudiums r Formale Methoden - exakt beschreiben (Kalküle, Logik) - automatisch ausführen - Korrektheit eindeutig nachweisen r Abstraktion - von technischen Einzelheiten absehen --> allgemeine Gesetze erforschen --> grundsätzliche Aspekte erkennen --> Zusammenhänge herausarbeiten r Automatisierung (von Kopfarbeit!) - Verfahren, Algorithmen - Problemklassen identifizieren - Transformationsprozesse r Anwendungen hs / fub - alp1-1 6 3 ALP 1 - Einführung u Lehr- und Lernziele r Berufsqualifikation (--> “Dipl.- Inform.”) - Fakten, Kenntnisse und Fähigkeiten r Wissenschaftliches Arbeiten - systematisches, methodisches Vorgehen - Abstrahieren können; Denken in formalen Systemen - Lernen können r Soziale Kompetenz - Selbständigkeit <--> Teamfähigkeit - Kritik- und Urteilsfähigkeit - Verantwortungsbewußtsein hs / fub - alp1-1 7 ALP 1 - Einführung u Informatik und Beruf - m eist Software oder Software- gesteuerte Systeme r Informatik- Industrie - Entwicklung - Programmierung - Systemplanung - Projektmanagement - Vertrieb - z. B. Informationssysteme, Kommunikationssysteme, CAD... - Beratung - Wartung (Systempflege, Weiterentwicklung...) - Schulung - Ausbildung, Weiterbildung hs / fub - alp1-1 8 4 ALP 1 - Einführung r Informatik- Anwender, Wirtschaft - Entwicklung anwendungsbezogner Programmsysteme - Management von Netzen, DV- Infrastruktur... r Forschung - Universitäten, Forschungszentren, Großfirmen u Tätigkeiten - Eigentliches Programmieren von untergeordneter Bedeutung - Keine (reinen) "Hacker" unter Diplom- Informatikern - Kein ganztägiges Herumhängen vor dem Computer - Teamarbeit und Kooperationsfähigkeit notwendig - Gelegentlicher Termindruck, aber prinzipielle Flexibilität (" Telearbeit") (--> flexible Arbeitszeiten, Vereinbarkeit mit Familienleben, Teilzeit...) - Berufsaussichten für Anfänger wieder sehr gut hs / fub - alp1-1 9 ALP 1 - Einführung u Informatik an der Universität r vs. Schule - Tempo - Stoffmenge - Freiheit - Verantwortung - "tiefer", "höher", mehr r vs. Fachhochschule - grundlagenorientiert - längeres Studium - eigenmotiviertes Lernen - forschungsbezogen r vs. Jura, Medizin, ... - Denkweise - Methodik - kleineres Vokabular - weniger Wissen - mehr "innere Logik" hs / fub - alp1-1 10 5 ALP 1 - Einführung u Aufbau des Informatikstudiums Achtung: hohe „Dropout“-Quote (50%) Nebenfach ca. 32 SWS ~ 20% d. Studiums(!) - im Prinzip jedes Studienfach der FU - Studienfachberatung des NF aufsuchen prüfen: - Eigeninteresse - Berufsaussichten - Erfolgsaussichten - Aufwand hs / fub - alp1-1 11 ALP 1 - Einführung u Zahlen zum Informatikstudium 1995: ca 27.000 1997: ca 31.000 Erheblicher Anstieg der Anfängerzahlen seit 1998 hs / fub - alp1-1 12 6 ALP 1 - Einführung u Anfängerzahlen in den Naturwissenschaften (FU), 1998 Fach Anfänger Gesamt Informatik Mathematik Physik 269 93 58 633 593 467 Chemie Biochemie Biologie Pharmazie 115 35 147 134 681 381 1509 1274 Geografie Geologie Geophysik Meteorologie 97 52 12 79 912 401 61 223 1999: ca. 280 hs / fub - alp1-1 13 ALP 1 - Einführung HEUTE u Übersicht Informatikstudium u Informatik als wissenschaftliche Disziplin u Kurzer historischer Abriß u Ziele der Veranstaltung u Intuitiver Algorithmenbegriff u Induktion u Einige Begriffe u Organisatorisches zum Übungsbetrieb (15 min) hs / fub - alp1-1 14 7 ALP 1 - Einführung Informatik: Wissenschaft von der maschinellen Verarbeitung, Speicherung und Übertragung von Information Computer Science : Wissenschaft vom Computer Ingenieurwissenschaft Mathematik Informatik hs / fub - alp1-1 15 ALP 1 - Einführung Modellbildung und Formalisierung r von Daten r Operationen r Prozessen z.B. z.B.die dieDaten Messdaten eines der Unternehmens Luft z.B. z.B.Zahlung Mittelwerte verbuchen und Varianz berechnen z.B. z.B.Bestellungen Ausbreitung bearbeiten von Emissionen Modellierung: Reduktion der Komplexität durch Abstraktion von irrelevanten Details Formalisierung: Symbolische Darstellung von Sachverhalten macht Algorithmisierung möglich hs / fub - alp1-1 16 8 - Einführung ALP 1 Fachgebiete der Informatik u Technische Informatik r Wie baut man schnellere Rechner - oder Optimierung des von-Neumann-Rechner ä ä ä ä ä r Befehlssätze (reduced instruction set vs. Complex instruction set) Cache Prinzipien (Schnellspeicher) Beschleunigung der Ein- / Ausgabe Parallelarbeit Entwurf hochintegrierter Schaltungen Technologie ä Hochintegration ä Ein- / Ausgabegeräte ä Netztechnik hs / fub - alp1-1 17 ALP 1 - Einführung u Theoretische Informatik r Entwicklung und Untersuchung von Modellierungsmethoden z.B.: wie modelliert man Parallelität r Effizienz von Algorithmen r Berechenbarkeit z.B. wie „gut“ sind verschiedene Algorithmen für das gleiche Problem? u Praktische Informatik r r Konstruktion von Softwaresystemen Untersuchung ihrer Eigenschaften: Effizienz, Fehlertoleranz, Effektivität r Entwicklung von Sprachen und Werkzeugen hs / fub - alp1-1 18 9 ALP 1 - Einführung u Angewandte Informatik r Anwendungen in fast allen Bereichen des täglichen Lebens ... ä Kommerzielle Anwendungen z. B. in Handel, Banken, Industrie, im Öffentlichen Sektor ä Anwendungen in der Technik z.B. Fertigungssteuerung, Verkehrssteuerung, Rechner als Bestandteil anderer Systeme (ABS, Verkehrstechnik - embedded systems ) ä Anwendungen in der Wissenschaft (Medizintechnik, Geowissenschaften, Visualisierung von Daten....) ä Private Anwendungen (Textverarbeitung, Spiele) r ... macht enge Kooperation mit Fachleuten zwingend ä Fachwissen ä Kommunikationsfähigkeit ä Teamfähigkeit von Informatikern gefordert hs / fub - alp1-1 19 ALP 1 - Einführung Informatik und Gesellschaft Auf dem Weg in die Informationsgesellschaft r r r r r r „Mechanisierung der Kopfarbeit“ Wertschöpfungsprozesse verändern sich, nur noch 15 % der Bevölkerung sind mit Stoffumwandlung befaßt wirtschaftliche Aktivität nicht mehr ohne Rechner denkbar hohes Rationalisierungspotential Globalisierungseffekte Informationstechnik als ein dominierender Wirtschaftsfaktor hs / fub - alp1-1 20 10 ALP 1 - Einführung Nicht alles ist machbar.... r Theoretisch: ä Grenzen der Berechenbarkeit sind beweisbar r Praktisch: ä komplexe Systeme nicht mehr „verstehbar“ ä Fehlschläge, z.B. Automatisierung des Sprachverstehens Verantwortung der Informatiker r Wirtschaftsfaktor Informationstechnik fördern... r ... Und Computer-Euphorie bremsen r Bewußtsein für Verantwortung gegenüber Nutzern entwickeln hs / fub - alp1-1 21 ALP 1 - Einführung Wenn Sie unbedingt etwas schreiben wollen, müssen Sie halt einen zweiten Bildschirm anschließen. Cartoon: Tiki Küstenmacher hs / fub - alp1-1 22 11 ALP 1 - Einführung Non sunt multiplicanda entia praeter necessitatem (William von Occam, 13 Jhd.) Kümmere Dich nicht um unnütze Dinge hs / fub - alp1-1 23 ALP 1 - Einführung HEUTE u Übersicht Informatikstudium u Informatik als wissenschaftliche Disziplin u Kurzer historischer Abriß u Ziele der Veranstaltung u Intuitiver Algorithmenbegriff u Induktion u Einige Begriffe u Organisatorisches zum Übungsbetrieb (15 min) hs / fub - alp1-1 24 12 ALP 1 - Einführung Kleine Geschichte des mechanischen Rechnens r Erste mechanische Rechengeräte im 17. Jhd. (Schickard, Pascal) r Binärarithmetik von Leibniz vorgeschlagen r Analytical Engine von C. Babbage (ca. 1850): Entwurf eines Rechners mit Programmsteuerung r Konrad Zuse: entwickelt Z1 - Z3 1930 - 1941 in Berlin, Binärarithmetik, Speicher getrennt von Steuerung r Mathematik des mechanischen Rechnens: A. Turing (1936) , A. Church (1936), K. Gödel (1934) r Programmgesteuerte Rechner: Intensive Entwicklungen ab 1940 hs / fub - alp1-1 25 ALP 1 - Einführung u ENIAC (Electronic Numeric Integrator and Calculator) entworfen und gebaut von J. Mauchley u. J. Ecker 1942 - 44 ca. 25 m lang, 2,5 m hoch 18.000 Elektronenröhren hs / fub - alp1-1 26 13 ALP 1 - Einführung ENIAC 1900 Additionen / sec Programmierbar... ... Durch Umstecken von Kabeln u 1944 J.v.Neumann an Nachfolgeprojekt EDVAC (Electr. Discr. Variable Autom. Computer) beteiligt. Veröffentlicht grundlegende Konstruktionsprinzipien („von Neumann-Rechner“) u 1951 erster kommerzieller Rechner UNIVAC I (Universal Automatic Computer) hs / fub - alp1-1 27 ALP 1 - Einführung u 1954 / 56 Erste Programmiersprache (FORTRAN) u 1957 Erster volltransistorisierter Rechner, Magnetplatten u 1963 Rechnerfamilien (IBM/360, PDP11) u ca. 1970 Integrierte Bausteine in kommerziellen Rechnern u ca. 1975 Ethernet, Internet - Protokolle u 1977 Apple II u 1981 IBM PC u ab 1990 PC als Teil der Unterhaltungselektronik u ab 1993 World Wide Web hs / fub - alp1-1 28 14 ALP 1 - Einführung ... und heute Quelle: D. Patterson ALP 1 hs / fub - alp1-1 29 - Einführung HEUTE u Übersicht http://www.inf.fu-berlin.de/lehre/WS99/ALP1/index.html u Informatik als wissenschaftliche Disziplin u Kurzer historischer Abriß u Einige Begriffe u Ziele der Veranstaltung u Intuitiver Algorithmenbegriff u Induktion u Organisatorisches zum Übungsbetrieb (15 min) hs / fub - alp1-1 30 15 ALP 1 - Einführung Einige Begriffe r Hardware, Software .... r Betriebssystem: verwaltet die Betriebsmittel eines Rechnersystems (Speicher, Ein-/Ausgabegeräte, CPU, ...) r Maschinensprache: Elementaroperationen eines Rechnertyps Algorithmen für verschiedene Rechner unterschiedlich formulieren ?? r Höhere Programmiersprache: Sprachen zur maschinenunabhängigen Formulierung von Algorithmen Beispiele: Pascal, C, Java, Cobol („imperative Sprachen“) Lisp, Miranda, Haskell („funktionale Sprachen“) Prolog, SQL (teilweise) („relationale Sprachen“) hs / fub - alp1-1 31 ALP 1 - Einführung Übersetzung und Interpretation Programm in höherer Programmiersprache Maschinenprogramm Ausführbares Programm Übersetzerprogramm (Compiler ) (Ver-)Binden mit anderen Maschinenprogammen Programm implementiert Algorithmus in beliebiger Programmiersprache rechnerspezifisch hs / fub - alp1-1 32 16 ALP 1 - Einführung Übersetzung und Interpretation Programm in höherer Programmiersprache if a > b then a else b Interpretiererprogramm Programm ist Eingabe für das laufende Interpretiererprogramm oft Mischformen: Übersetzung in Zwischensprache, dann Interpretation hs / fub - alp1-1 33 ALP 1 - Einführung HEUTE u Übersicht Informatikstudium u Informatik als wissenschaftliche Disziplin u Kurzer historischer Abriß u Einige Begriffe u Ziele der Veranstaltung u Intuitiver Algorithmenbegriff u Induktion u Organisatorisches zum Übungsbetrieb (15 min) hs / fub - alp1-1 34 17 ALP 1 - Einführung Ziele der Veranstaltung u Systematisch Programme entwickeln lernen u Programmieren mit Funktionen: beherrschen einer u u u u u funktionalen Programmiersprache Abstraktion als zentrales Prinzip der Informatik verstehen Spezifikation und Korrektheit von Programmen: Programmeigenschaften beweisen Induktion / Rekursion beherrschen Theoretische Grundlagen von Computerprogrammen kennenlernen Interessante Anwendungen kennenlernen (z.B. Verschlüsselungsalgorithmen) hs / fub - alp1-1 35 ALP 1 - Einführung Intuitiver Algorithmenbegriff u Beispiele: Kaffeemaschine bedienen, Schach spielen, zwei Zahlen schriftlich multiplizieren,... u Typische Merkmale r Einzelschritte r Reihenfolge festgelegt r Ein Schritt zu einer Zeit tatsächlich? r Präzision hs / fub - alp1-1 36 18 - Einführung ALP 1 Definition Ein intuitiver Algorithmus ist ein endlich beschriebenes, präzises Verfahren von effektiv ausführbaren Einzelschritten, das eine Menge von Eingabegrößen in Ausgabegrößen überführt u Endliche Beschreibung Nicht: „berechne 1 + 1/2 + 1/3 + 1/4 + ...“ u Effektiv Nicht: „wenn 3 in Dezimalbruchentwicklung u endlich oft vorkommt“ Präzise Exakt definierte Sprache erforderlich hs / fub - alp1-1 37 ALP 1 - Einführung Beispiel Algorithmus GGT von zwei natürlichen Zahlen m und n Wenn die die Zahlen Zahlen gleich gleich sind, sind, Wenn dann ist ist der der GGT GGT der der gemeinsame gemeinsame Wert Wert dann sonst sonst subtrahiere die die kleinere kleinere von von der der größeren größeren und und subtrahiere bestimme den den GGT GGT der der Differenz Differenz und und der der kleineren kleineren Zahl Zahl bestimme GGT von 18 und 8 : GGT von 5 und 0 : GGT (18-8) 8 GGT (5-0) 0 GGT 8 2 GGT 5 0 GGT 6 2 GGT 5 0 GGT 4 2 GGT 2 2 .... Oh! fertig hs / fub - alp1-1 38 19 ALP 1 - Einführung Beispiel (leicht verbessert) Algorithmus GGT von zwei natürlichen Zahlen m und n Wenn die die kleinere kleinere Zahl Zahl 00 ist, ist, Wenn dann ist ist der der GGT GGT die die größere größere der der beiden beiden (>=) (>=) dann sonst sonst subtrahiere die die kleinere kleinere von von der der größeren größeren und und subtrahiere bestimme den den GGT GGT der der Differenz Differenz und und der der kleineren kleineren Zahl Zahl bestimme Alternative: vorherigen Algorithmus, aber Argumente auf positive natürliche Zahlen festlegen. hs / fub - alp1-1 39 ALP 1 - Einführung Weitere Eigenschaften von Algorithmen Algorithmus terminiert, wenn er in endlich vielen Schritten endet Algorithmus ist deterministisch, wenn der nächste Verfahrensschritt eindeutig bestimmt ist Algorithmus ist determiniert, wenn er für gleiche Eingabegrößen die gleichen Ausgabegrößen berechnet hs / fub - alp1-1 40 20 - Einführung ALP 1 Fragen über Fragen.... r Ist der Algorithmus korrekt? (partiell korrekt, wenn er nicht nachweisbar terminiert) r Was heißt korrekt? Wie spezifiziert man die Leistung des Algorithmus r Gibt es einen anderen (besseren) Algorithmus für dasselbe Problem? r Was heißt „besser“? Schneller (Effizienz), platzsparend, verständlich... r Was passiert bei fehlerhaften Eingaben? (Robustheit) r Gibt es nicht-algorithmische Lösungen? r Gibt es zu einem Problem überhaupt eine Lösung ? r Hängt das von der Sprache ab, in der man den Algorithmus formuliert? hs / fub - alp1-1 41 - Einführung ALP 1 Am Beispiel von 2807 ´ 7 im Papyrus Rhind, 16. Jh. v. Chr. u Noch ein Beispiel: r Das Ägyptische Multiplikation Auch bekannt als „Methode der Gegeben zwei natürliche Zahlen a, b > 0 russischen Bauern“ Halbiere b, verdopple a mit dem Ergebnis (a‘,b‘) solange, bis b‘= 1 Summiere alle a‘, für die b‘ungerade Wenn ihr nur duplieren und halbieren könnet, so könnet Ergebnis: ? 17 11 34 5 68 2 136 1 Verdoppeln! b=11 a=17 ihr das übrige ohne das Eins mal Eins multipliciren. Christian von Wolff, 1679- 1754 (Philosoph und Mathematiker, Univ. Halle) Ganzzahlig halbieren! hs / fub - alp1-1 42 21 ALP 1 - Einführung HEUTE u Übersicht http://www.inf.fu-berlin.de/lehre/WS98/ALP1/index.html u Fragen ? u Informatik als wissenschaftliche Disziplin u Kurzer historischer Abriß u Einige Begriffe u Ziele der Veranstaltung u Intuitiver Algorithmenbegriff Tafel u Induktion u Organisatorisches zum Übungsbetrieb (15 min) hs / fub - alp1-1 43 ALP 1 - Einführung u Beweis durch mathematische Induktion Gezeigt werden soll: Die von n ∈ N a bhä ng ig e Au s s a g e Png ilt fü r a lle n∈ N Bew eis s chem a : (1) P1 g ilt „P1 gilt, weil....“ (2) Angenommen Pk gilt für ein k ∈ N Zeig e a llg em ein, da s s Pk +1 g ilt „Wenn Pk dann .... und ... , also Pk+1“ Da nng iltPnfü r a lle na tü rlichenZa hlen hs / fub - alp1-1 44 22 ALP 1 - Einführung HEUTE u Übersicht http://www.inf.fu-berlin.de/lehre/WS98/ALP1/index.html u Informatik als wissenschaftliche Disziplin u Kurzer historischer Abriß u Ziele der Veranstaltung u Intuitiver Algorithmenbegriff u Induktion u Einige Begriffe u Organisatorisches zum Übungsbetrieb (15 min) hs / fub - alp1-1 45 23