Die Wissenschaft der systematischen Verarbeitung von Informationen,... insbesondere der automatischen Verarbeitung mit Hilfe von Digitalrechnern.

Ähnliche Dokumente
Das erste C++ Programm

Die Mersenne sche Vermutung. Einführung. Der Vortrag von Cole. Die Mersenne sche Vermutung

Kapitel 1: Einführung

Einführung in die Informatik I (autip)

Kurze Einführung in die Programmiersprache C++ und in Root

Einführung in die Programmierung mit Java

Infovorkurs, Teil II: Theoretische Informatik. Motivation. Turing-Maschine. Programmiersprachen

3. Wahrheitswerte. Boolesche Funktionen; der Typ bool; logische und relationale Operatoren; Kurzschlussauswertung; Assertions und Konstanten

Werkzeuge zur Programmentwicklung

Grundlagen der Informatik I (Studiengang Medieninformatik)

Algorithmen und Datenstrukturen

Grundlagen der Programmentwicklung

Algorithmen zur Datenanalyse in C++

Informatik 1 ( ) D-MAVT F2011. Einführung C++ Yves Brise Übungsstunde 1

1 EINFÜHRUNG PROGRAMMIERSPRACHEN

Praktische Informatik I

Elementare Datentypen in C++

Einführung in die C++ Programmierung für Ingenieure

Die Programmiersprache C

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 1. Einführung und Grundbegriffe

Infovorkurs, Teil III: Maschinenabstraktion & Ausblick

Willkommen... Agenda für heute, 25. Februar, Studentinnen und Studenten der Studiengänge

Interdisziplinäre fachdidaktische Übung: Formale Sprache Definitionen, Funktionen

Algorithmen und Berechnungskomplexität I

1 Vom Problem zum Programm

Programmieren was ist das genau?

Einführung in die Informatik 1

3AA. Prof. Dr. Wolfgang P. Kowalk. Universität Oldenburg WS 2005/2006

C++ Teil 1. Sven Groß. 9. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 1 9. Apr / 19

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Vorlesung Programmieren

Programmierkurs II. C und Assembler

Programmier-Befehle - Woche 10

Einführung in die Programmierung mit Java

Institut für Computational Science Prof. Dr. H. Hinterberger. Praxismodul 1. Einführung in die Programmierung Erste Programme

Vorkurs C++ Programmierung

Kapitel 05. Datentypen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

EIGENSCHAFTEN VON SPRACHEN

Ein- und Ausgabe (I/O)

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

Dynamische Datentypen

Syntax der Sprache PASCAL

Einführung in C ++ und die Objektorientierte Programierung

Welche Informatik-Kenntnisse bringen Sie mit?

Informatik I Übung, Woche 40

Programmieren in Java

Algorithmen und Datenstrukturen 1. EINLEITUNG. Algorithmen und Datenstrukturen - Ma5hias Thimm 1

6. Fliesskommazahlen II. Fliesskommazahlensysteme; IEEE Standard; Grenzen der Fliesskommaarithmetik; Fliesskomma-Richtlinien; Harmonische Zahlen

Grundlagen. Kapitel 1

Überblick. 1 Vorbemerkungen. 2 Algorithmen. 3 Eigenschaften von Algorithmen. 4 Historischer Überblick. Einführung

Einführung in die Programmierung mit VBA

Willkommen an der ETH Zürich

Programmiersprachen und Übersetzer

Programmierkurs C++ Grundlagen. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck

Elementare Konzepte von

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Einführung in die Programmierung Wintersemester 2008/09

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Vorlesung Programmieren

Einführung in die Informatik Turing Machines

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217

Informatik I. Übung 01. Olga Diamanti

Die Programmiersprache C Eine Einführung

Algorithmen und ihre Programmierung

Zeiger, Arrays und Strings in C und C++

Formale Sprachen und Automaten

Funktionen in Matlab. Nutzerdefinierte Funktionen können in.m-datei gespeichert werden

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Informatik I. Informatik I Was haben wir gelernt? 28.2 Algorithmusbegriff Was geht nicht? 28.1 Was haben wir gelernt?

Erster Bug: eine Motte

Kapitel 3. Mein erstes C-Programm

Einführung. Rechnerarchitekturen Entwicklung und Ausführung von Programmen Betriebssysteme

Modellierung und Programmierung 1

C++ Einführung. und Datenanalyse mit ROOT. Jörg Marks, Physikalisches Institut, INF 226

GI Vektoren

Einführung in die Programmierung 1

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Informatik I Debugging

7. Fliesskommazahlen II. Fliesskommazahlensysteme; IEEE Standard; Grenzen der Fliesskommaarithmetik; Fliesskomma-Richtlinien; Harmonische Zahlen

Unterlagen. CPP-Uebungen-08/

Algorithmen zur Datenanalyse in C++

Einführung in die Programmierung mit Java

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Übungen zu C++ Kapitel 1

Coma I. Einleitung. Computer und Algorithmen. Programmiersprachen. Algorithmen versus Programmiersprachen. Literaturhinweise

Grundlagen der Programmierung

Was ist ein Compiler?

Abschnitt 4: Daten und Algorithmen

Einführung in die Theoretische Informatik

SWE1 / Übung 2 ( )

Programmierung mit C Zeiger

Operatoren und Ausdrücke

Vorlesung Programmieren

Seite Seite 2

Dr. Monika Meiler. Inhalt

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Was ist Informatik? Alexander Lange

Transkript:

14 1. Einführung Informatik: Definition und Geschichte, Algorithmen, Turing Maschine, Höhere Programmiersprachen, Werkzeuge der Programmierung, das erste C++ Programm und seine syntaktischen und semantischen Bestandteile

Was ist Informatik? 15 Die Wissenschaft der systematischen Verarbeitung von Informationen,...... insbesondere der automatischen Verarbeitung mit Hilfe von Digitalrechnern. (Wikipedia, nach dem Duden Informatik )

Informatik Computer Science Computer science is not about machines, in the same way that astronomy is not about telescopes. Mike Fellows, US-Informatiker (1991) http://larc.unt.edu/ian/research/cseducation/fellows1991.pdf 16

Computer Science Informatik 17 Die Informatik beschäftigt sich heute auch mit dem Entwurf von schnellen Computern und Netzwerken...... aber nicht als Selbstzweck, sondern zur effizienteren systematischen Verarbeitung von Informationen.

Algorithmus: Kernbegriff der Informatik Algorithmus: Rezept zur systematischen Verarbeitung von Informationen nach Muhammed al-chwarizmi, Autor eines arabischen Rechen-Lehrbuchs (um 825) Dixit algorizmi... (lateinische Übersetzung) http://de.wikipedia.org/wiki/algorithmus 18

Der älteste überlieferte Algorithmus... 19... ist der Euklidische Algorithmus (aus Euklids Elementen, 3. Jh. v. Chr.) Eingabe: zwei natürliche Zahlen a > b Ausgabe: grösster gemeinsamer Teiler ggt(a, b) Algorithmus am Beispiel: a b a div b a mod b 1071 1029 1 42 1029 42 24 21 42 21 2 0 ggt = 21

Informatik EDV-Kenntnisse 20 EDV-Kenntnisse: Anwenderwissen Umgang mit dem Computer Bedienung von Computerprogrammen (für Texterfassung, Email, Präsentationen,... ) Informatik: Grundlagenwissen Wie funktioniert ein Computer? Wie schreibt man ein Computerprogramm?

ETH: Pionierin der modernen Informatik Neue Zürcher Zeitung, 30. Auguts 1950 1950: ETH mietet Konrad Zuses Z4, den damals einzigen funktionierenden Computer in Europa. 21

ETH: Pionierin der modernen Informatik 1956: Inbetriebnahme der ERMETH, entwickelt und gebaut an der ETH von Eduard Stiefel. http://de.wikipedia.org/wiki/ermeth 22

1958 1963: Entwicklung von ALGOL 60 (der ersten formal definierte Programmiersprache), unter anderem durch Heinz Rutishauer, ETH Vortrag Walter Gander, 50 Jahre Programmieren, ETH Zürich, 2014 ETH: Pionierin der modernen Informatik 23

ETH: Pionierin der modernen Informatik 1964: Erstmals können ETH-Studierende selbst einen Computer programmieren (die CDC 1604, gebaut von Seymour Cray). Die Klasse 1964 heute (mit einigen Gästen) http://www.inf.ethz.ch/news-and-events/spotlights/1964.html 24

ETH: Pionierin der modernen Informatik 25 1968 1990: Niklaus Wirth entwickelt an der ETH die Programmiersprachen Pascal, Modula-2 und Oberon und 1980 die Lilith, einen der ersten Computer mit grafischer Benutzeroberfläche.

Computer Konzept Eine geniale Idee: Universelle Turingmaschine (Alan Turing, 1936) Alan Turing http://en.wikipedia.org/wiki/alan_turing 26

Computer Umsetzung Z1 Konrad Zuse (1938) ENIAC John Von Neumann (1945) Konrad Zuse John von Neumann http://www.hs.uni-hamburg.de/de/gnt/hh/biogr/zuse.htm http://commons.wikimedia.org/wiki/file:john_von_neumann.jpg 27

Speicher für Daten und Programm 28 Folge von Bits aus {0, 1}. Programmzustand: Werte aller Bits. Zusammenfassung von Bits zu Speicherzellen (oft: 8 Bits = 1 Byte). Jede Speicherzelle hat eine Adresse. Random Access: Zugriffszeit auf Speicherzelle (nahezu) unabhängig von ihrer Adresse.

Rechengeschwindigkeit In der mittleren Zeit, die der Schall von mir zu Ihnen unterwegs ist... 30 m = mehr als 100.000.000 Instruktionen arbeitet ein heutiger Desktop-PC mehr als 100 Millionen Instruktionen ab. 3 3 Uniprozessor Computer bei 1GHz 29

Inhalt dieser Vorlesung 30 Systematisches Problemlösen mit Algorithmen und der Programmiersprache C++. Also: nicht nur, aber auch Programmierkurs.

Programmieren Mit Hilfe einer Programmiersprache wird dem Computer eine Folge von Befehlen erteilt, damit er genau das macht, was wir wollen. Die Folge von Befehlen ist das (Computer)-Programm. The Harvard Computers, Menschliche Berufsrechner, ca.1890 http://en.wikipedia.org/wiki/harvard_computers 33

Warum Programmieren? 34 Da hätte ich ja gleich Informatik studieren können... Es gibt doch schon für alles Programme... Programmieren interessiert mich nicht... Weil Informatik hier leider ein Pflichtfach ist......

Darum Programmieren! 35 Jedes Verständnis moderner Technologie erfordert Wissen über die grundlegende Funktionsweise eines Computers. Programmieren (mit dem Werkzeug Computer) wird zu einer Kulturtechnik wie Lesen und Schreiben (mit den Werkzeugen Papier und Bleistift) Programmieren ist die Schnittstelle zwischen Elektrotechnik und Informatik der interdisziplinäre Grenzbereich wächst zusehends. Programmieren macht Spass!

Programmiersprachen Sprache, die der Computer "versteht", ist sehr primitiv (Maschinensprache). Einfache Operationen müssen in viele Einzelschritte aufgeteilt werden. Sprache variiert von Computer zu Computer. Höhere Programmiersprache: darstellbar als Programmtext, der von Menschen verstanden werden kann vom Computermodell unabhängig ist Abstraktion! 36

Warum C++? 37 Andere populäre höhere Programmiersprachen: Java, C#, Objective-C, Modula, Oberon,... Allgemeiner Konsens Die Programmiersprache für Systemprogrammierung: C C hat erhebliche Schwächen. Grösste Schwäche: fehlende Typsicherheit.

Warum C++? Over the years, C++ s greatest strength and its greatest weakness has been its C-Compatibility B. Stroustrup B. Stroustrup, Design and Evolution of C++, Kap. 4.5 38

Deutsch vs. C++ 39 Deutsch Es ist nicht genug zu wissen, man muss auch anwenden. (Johann Wolfgang von Goethe) C++ // computation int b = a a; // b = a^2 b = b b; // b = a^4

Syntax und Semantik 40 Programme müssen, wie unsere Sprache, nach gewissen Regeln geformt werden. Syntax: Zusammenfügungsregeln für elementare Zeichen (Buchstaben). Semantik: Interpretationsregeln für zusammengefügte Zeichen. Entsprechende Regeln für ein Computerprogramm sind einfacher, aber auch strenger, denn Computer sind vergleichsweise dumm.

41 C++: Fehlerarten illustriert an deutscher Sprache Das Auto fuhr zu schnell. DasAuto fuh r zu sxhnell. Rot das Auto ist. Man empfiehlt dem Dozenten nicht zu widersprechen Syntaktisch und semantisch korrekt. Syntaxfehler: Wortbildung. Syntaxfehler: Satzstellung. Syntaxfehler: Satzzeichen fehlen. Sie ist nicht gross und rothaarig. Syntaktisch korrekt aber mehrdeutig. [kein Analogon] Die Auto ist rot. Das Fahrrad gallopiert schnell. Manche Tiere riechen gut. Syntaktisch korrekt, doch semantisch fehlerhaft: Falscher Artikel. [Typfehler] Syntaktisch und grammatikalisch korrekt! Semantisch fehlerhaft. [Laufzeitfehler] Syntaktisch und semantisch korrekt. Semantisch mehrdeutig. [kein Analogon]

Syntax und Semantik von C++ 42 Syntax Was ist ein C++ Programm? Ist es grammatikalisch korrekt? Semantik Was bedeutet ein Programm? Welchen Algorithmus realisiert ein Programm?

Was braucht es zum Programmieren? 44 Editor: Programm zum Äandern, Erfassen und Speichern von C++-Programmtext Compiler: Programm zum Übersetzen des Programmtexts in Maschinensprache Computer: Gerät zum Ausführen von Programmen in Maschinensprache Betriebssystem: Programm zur Organsiation all dieser Abläufe (Dateiverwaltung, Editor-, Compiler- und Programmaufruf)

Das erste C++ Programm 45 // Program: power8.cpp // Raise a number to the eighth power. #include <iostream> int main() { // input std::cout << "Compute a^8 for a =? "; int a; std::cin >> a; // computation int b = a a; // b = a^2 b = b b; // b = a^4 } // output b b, i.e., a^8 std::cout << a << "^8 = " << b b << ".\n"; return 0;

Programmstruktur 46 // Program: power8.cpp // Raise a number to the eighth power. #include <iostream> Include Directive int main() Funktionsdeklaration der main-funktion { // input std::cout << "Compute a^8 for a =? "; int a; std::cin >> a; Kommentare // computation int b = a a; // b = a^2 b = b b; // b = a^4 } // output b b, i.e., a^8 std::cout << a << "^8 = " << b b << ".\n"; return 0;

Kommentare und Layout Kommentare hat jedes gute Programm, dokumentieren, was das Programm wie macht und wie man es verwendet und werden vom Compiler ignoriert. Syntax: Doppelslash // bis Zeilenende. Ignoriert werden vom Compiler ausserdem Leerzeilen, Leerzeichen, Einrückungen, die die Programmlogik widerspiegeln (sollten) 47

Kommentare und Layout 48 Dem Compiler ist s egal... #include <iostream> int main(){std::cout << "Compute a^8 for a =? "; int a; std::cin >> a; int b = a * a; b = b * b; std::cout << a << "^8 = " << b*b << ".\n";return 0;}... uns aber nicht!

Anweisungen (Statements) 49 // Program: power8.cpp // Raise a number to the eighth power. #include <iostream> int main() { // input Effekt: Ausgabe des Strings Compute... std::cout << "Compute a^8 for a =? "; int a; std::cin >> a; Effekt: Eingabe einer Zahl und Speichern in a } // computation Effekt: Speichern des berechneten Wertes von a*a in b int b = a a; // b = a^2 b = b b; // b = a^4 Effekt: Speichern des berechneten Wertes von b*b in b // output b b, i.e., a^8 std::cout << a << "^8 = " << b b << ".\n"; return 0; Effekt: Rückgabe des Wertes 0 Effekt: Ausgabe des Wertes von a und des berechneten Wertes von b*b

Verhalten eines Programmes 50 Zur Compilationszeit: vom Compiler akzeptiertes Programm (syntaktisch korrektes C++) Compiler-Fehler Zur Laufzeit: korrektes Resultat inkorrektes Resultat Programmabsturz Programm terminiert nicht (Endlosschleife)

Variablen 57 repräsentieren (wechselnde) Werte, haben Name Typ Wert Adresse sind im Programmtext "sichtbar". Beispiel int a; definiert Variable mit Name: a Typ: int Wert: (vorerst) undefiniert Addresse: durch Compiler (und Linker, Laufzeit) bestimmt

Operatoren und Operanden 59 // Program: power8.cpp // Raise a number to the eighth power. #include <iostream> int main() Linker Operand (Ausgabestrom) Rechter Operand (String) { Ausgabe-Operator // input std::cout << "Compute a^8 for a =? "; int a; std::cin >> a; Rechter Operand (Variablenname) } Eingabe-Operator // computation int b = a Linker a; // Operand b = a^2(eingabetrom) b = b b; // b = a^4 Zuweisungsoperator // output b b, i.e., a^8 std::cout << a << "^8 = " << b * b << ".\n"; return 0; Multiplikationsoperator

Ausdrücke (Expressions) 60 // Program: power8.cpp // Raise a number to the eighth power. #include <iostream> int main() { // input std::cout << "Compute a^8 for a =? "; int a; std::cin >> a; // computation int b = a a; Zweifach // b = a^2 zusammengesetzter Ausdruck b = b * b; // b = a^4 } // output b b, i.e., a^8 std::cout << a<< "^8 = " << b * b << ".\ n"; return 0; Vierfach zusammengesetzter Ausdruck

L-Werte und R-Werte 63 L-Wert ( Links vom Zuweisungsoperator ) Ausdruck mit Adresse Wert ist der Inhalt an der Speicheradresse entsprechend dem Typ des Ausdrucks. L-Wert kann seinen Wert ändern (z.b. per Zuweisung). Beispiel: Variablenname, weitere Beispiele etwas später...

L-Werte und R-Werte 64 R-Wert ( Rechts vom Zuweisungsoperator ) Jeder L-Wert kann als R-Wert benutzt werden (aber nicht umgekehrt). Jedes e-bike kann als normales Fahrrad benutzt werden, aber nicht umgekehrt. Darüber hinaus: Ausdruck der kein L-Wert ist Beispiel: Literal 0 R-Wert kann seinen Wert nicht ändern.

L-Werte und R-Werte 65

L-Werte und R-Werte 66 // Program: power8.cpp // Raise a number to the eighth power. #include <iostream> int main() { // input std::cout << "Compute a^8 for a =? "; int a; std::cin >> a; L-Wert } // computation int b = a a; // b = a^2 b = b * b; // b = a^4 L-Wert // output b b, i.e., a^8 std::cout << a<< "^8 = " << b * b << ".\ n"; return 0; R-Wert