systematischen Verarbeitung von Informationen Was ist Informatik?

Ähnliche Dokumente
Informatik. Vorlesung für Rechnergestützte Wissenschaften am D-MATH der ETH Zürich. Felix Friedrich, Malte Schwerhoff HS 2018

systematischen Verarbeitung von Informationen Was ist Informatik?

systematischen Verarbeitung von Informationen Was ist Informatik?

systematischen Verarbeitung von Informationen Was ist Informatik?

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

1. Einführung. Was ist Informatik? Informatik Computer Science. Computer Science Informatik

1. Einführung. Was ist Informatik? Informatik Computer Science. Computer Science Informatik

Informatik. 1. Einführung. Was ist Informatik? Informatik vs. Computer. Vorlesung für Rechnergestützte Wissenschaften am D-MATH der ETH Zürich

Informatik. Vorlesung am D-MATH/D-PHYS der ETH Zürich. Malte Schwerhoff, Felix Friedrich HS 2018

Was ist Informatik? (Wikipedia, nach dem Duden Informatik )

Informatik. 1. Einführung. Informatik vs. Computer. Was ist Informatik? Vorlesung am D-ITET/D-MAVT der ETH Zürich

Programmieren und Problemlösen

Ingenieur Tool I. 1. Einführung. Was ist Informatik? Informatik Computer Science. Vorlesung am D-MAVT der ETH Zürich

Ingenieur Tool I. 1. Einführung. Was ist Informatik? Informatik Computer Science. Vorlesung am D-MAVT der ETH Zürich

Was ist Informatik? systematischen Verarbeitung von Informationen

Programmieren und Problemlösen

Das erste C++ Programm

Inhalt der Vorlesung. Systematisches Problemlösen mit dem Computer und der Programmiersprache C++. Also: nicht nur aber auch Programmierkurs.

Informatik I. Vorlesung am D-BAUG der ETH Zürich. Hermann Lehner, Felix Friedrich ETH Zürich HS 2017

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

Einführung. Programmieren, Die Mersenne sche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++ Programm

Vorkurs Informatik (D-ITET)

Einführung. Die Mersenne sche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm

Programmieren und Problemlösen

1. Einf uhrung Material Das Team

Real Programmers vs. Quiche Eaters

Informatik. Willkommen. Team. Einschreibung in Übungsgruppen. Vorlesung am D-MATH/D-PHYS der ETH Zürich. zur Vorlesung Informatik.

1. Einf uhrung Material Das Team

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

Informatik II. Vorlesung am D-BAUG der ETH Zürich. Felix Friedrich FS 2017

1 Programmiersprachen 1.1 1

2. Ganze Zahlen. Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int

Begleittext: Einführung in das Programmieren in Java für Nichtinformatiker

2. Ganze Zahlen int unsigned int

1. Ganze Zahlen. 9 * celsius / Celsius to Fahrenheit. (9 * celsius / 5) + 32

Ganze Zahlen. Die Typen int, unsigned int; Auswertung arithmetischer Ausdrücke, arithmetische Operatoren

Wintersemester 2007/2008 Helmut Seidl Institut für Informatik TU München

Kontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht

Informatik Allgemeines Einführung

3. Ganze Zahlen int unsigned int

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

4. Wahrheitswerte. Wo wollen wir hin? Boolesche Werte in der Mathematik. Der Typ bool in C++

Einführung in die Informatik I (autip)

2. Ganze Zahlen int unsigned int

Ganze Zahlen. Die Typen int, unsigned int; Auswertung arithmetischer Ausdrücke, arithmetische Operatoren

Definitionen/Vorarbeit zum Thema Java

Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte

2. Ganze Zahlen. Beispiel: power8.cpp. Terminologie: L-Werte und R-Werte. Terminologie: L-Werte und R-Werte

Von der Programmiersprache WHILE zum ersten Einstieg in Java

Was ist ein Computer? Was ist ein Programm? Können Computer Alles?

Einführung in die Programmierung Wintersemester 2016/17

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

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

Algorithmen und Datenstrukturen (für ET/IT)

3. Ganze Zahlen. 9 * celsius / Celsius to Fahrenheit. (9 * celsius / 5) + 32

Einführung in die Programmierung

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Einführung in die Programmierung

Kapitel 1: Einleitung. Gliederung. Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren

Informatik II. 1. Einführung. Willkommen zur Vorlesung! Das Team. Vorlesung am D-BAUG der ETH Zürich

Was ist ein Computer? Was ist ein Programm? Können Computer Alles?

Grundlagen der Informatik I (Studiengang Medieninformatik)

Praktische Informatik I

Übungen zur Vorlesung Wissenschaftliches Rechnen I

Ideen und Konzepte der Informatik

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

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Propädeutikum Programmiersprache C und Mathematik 2014

3. Wahrheitswerte. Wo wollen wir hin? Boolesche Werte in der Mathematik. Der Typ bool in C++

2. Ganze Zahlen. 9 * celsius / Celsius to Fahrenheit. (9 * celsius / 5) + 32

Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren

Werkzeuge zur Programmentwicklung

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

Programmieren lernen mit Perl

Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2016/2017. Inhaltsverzeichnis 1

Informatik Algorithmen und Programme

. Die obige Beschreibung der Laufzeit für ein bestimmtes k können wir also erweitern und erhalten die folgende Gleichung für den mittleren Fall:

1 EINFÜHRUNG PROGRAMMAUFBAU IN C++

II.1.1. Erste Schritte - 1 -

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

2. JAVA-Programmierung. Informatik II für Verkehrsingenieure

Programmierkurs. Java Programmierkurs Philipp Herzig, B.Sc. 2009

Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2018/2018. Inhaltsverzeichnis 1

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

Einführung in die Programmierung mit Java

Beispiel: Schriftliche Addition

C++ PROGRAM- MIERER/-IN

Abschnitt 2: Daten und Algorithmen

Transkript:

23 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? 24

Was ist Informatik? 24 Die Wissenschaft der systematischen Verarbeitung von Informationen,...

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

Informatik Computer Science 25 Computer science is not about machines, in the same way that astronomy is not about telescopes. Mike Fellows, US-Informatiker (1991)

Computer Science Informatik 26 Die Informatik beschäftigt sich heute auch mit dem Entwurf von schnellen Computern und Netzwerken...

26 Computer Science Informatik 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.

27 Informatik EDV-Kenntnisse EDV-Kenntnisse: Anwenderwissen Umgang mit dem Computer Bedienung von Computerprogrammen (für Texterfassung, Email, Präsentationen,... )

27 Informatik EDV-Kenntnisse Informatik: Grundlagenwissen Wie funktioniert ein Computer? Wie schreibt man ein Computerprogramm?

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

Algorithmus: Kernbegriff der Informatik 29 Algorithmus: Handlungsanweisung zur schrittweisen Lösung eines Problems

29 Algorithmus: Kernbegriff der Informatik Algorithmus: Handlungsanweisung zur schrittweisen Lösung eines Problems Ausführung erfordert keine Intelligenz, nur Genauigkeit (sogar Computer können es)

Algorithmus: Kernbegriff der Informatik Algorithmus: Handlungsanweisung zur schrittweisen Lösung eines Problems Ausführung erfordert keine Intelligenz, nur Genauigkeit (sogar Computer können es) nach Muhammed al-chwarizmi, Autor eines arabischen Rechen-Lehrbuchs (um 825) Dixit algorizmi... (lateinische Übersetzung) 29

Der älteste nichttriviale Algorithmus Euklidischer Algorithmus (aus Euklids Elementen, 3. Jh. v. Chr.) Eingabe: ganze Zahlen a > 0, b > 0 Ausgabe: ggt von a und b Solange b 0 Wenn a > b dann a a b Sonst: b b a Ergebnis: a. a b

Der älteste nichttriviale Algorithmus Euklidischer Algorithmus (aus Euklids Elementen, 3. Jh. v. Chr.) Eingabe: ganze Zahlen a > 0, b > 0 Ausgabe: ggt von a und b Solange b 0 Wenn a > b dann a a b Sonst: b b a Ergebnis: a. a b a b

Der älteste nichttriviale Algorithmus Euklidischer Algorithmus (aus Euklids Elementen, 3. Jh. v. Chr.) Eingabe: ganze Zahlen a > 0, b > 0 Ausgabe: ggt von a und b Solange b 0 Wenn a > b dann a a b Sonst: b b a Ergebnis: a. a b a b a b

Der älteste nichttriviale Algorithmus Euklidischer Algorithmus (aus Euklids Elementen, 3. Jh. v. Chr.) Eingabe: ganze Zahlen a > 0, b > 0 Ausgabe: ggt von a und b Solange b 0 Wenn a > b dann a a b Sonst: b b a Ergebnis: a. a b a b a b a b 30

Live Demo: Turing Maschine 31

Euklid in der Box Speicher 0 1 2 3 4 5 6 7 8 9 Links Rechts Register 32

Euklid in der Box Speicher 0 1 2 3 4 5 6 7 8 9 [8] L [9] R L = 0? stop R > L? springe zu 6 L R [8] springe zu 0 R L [9] springe zu 0 Programmcode Links Rechts Register 32

Euklid in der Box Speicher 0 1 2 3 4 5 6 7 8 9 [8] L [9] R L = 0? stop R > L? springe zu 6 L R [8] springe zu 0 R L [9] springe zu 0 b a Programmcode Daten Links Rechts Register 32

Euklid in der Box Speicher 0 1 2 3 4 5 6 7 8 9 [8] L [9] R L = 0? stop R > L? springe zu 6 L R [8] springe zu 0 R L [9] springe zu 0 b a Programmcode Daten Daten Links Rechts Register 32

Euklid in der Box Speicher 0 1 2 3 4 5 6 7 8 9 [8] L [9] R L = 0? stop R > L? springe zu 6 L R [8] springe zu 0 R L [9] springe zu 0 b a Links b Register Rechts a Solange b 0 Wenn a > b dann a a b Sonst: b b a Ergebnis: a. 32

Euklid in der Box Speicher 0 1 2 3 4 5 6 7 8 9 [8] L [9] R L = 0? stop R > L? springe zu 6 L R [8] springe zu 0 R L [9] springe zu 0 b a Links b Register Rechts a Solange b 0 Wenn a > b dann a a b Sonst: b b a Ergebnis: a. 32

Euklid in der Box Speicher 0 1 2 3 4 5 6 7 8 9 [8] L [9] R L = 0? stop R > L? springe zu 6 L R [8] springe zu 0 R L [9] springe zu 0 b a Links b Register Rechts a Solange b 0 Wenn a > b dann a a b Sonst: b b a Ergebnis: a. 32

Euklid in der Box Speicher 0 1 2 3 4 5 6 7 8 9 [8] L [9] R L = 0? stop R > L? springe zu 6 L R [8] springe zu 0 R L [9] springe zu 0 b a Links b Register Rechts a Solange b 0 Wenn a > b dann a a b Sonst: b b a Ergebnis: a. 32

Euklid in der Box Speicher 0 1 2 3 4 5 6 7 8 9 [8] L [9] R L = 0? stop R > L? springe zu 6 L R [8] springe zu 0 R L [9] springe zu 0 b a Links b Register Rechts a Solange b 0 Wenn a > b dann a a b Sonst: b b a Ergebnis: a. 32

Euklid in der Box Speicher 0 1 2 3 4 5 6 7 8 9 [8] L [9] R L = 0? stop R > L? springe zu 6 L R [8] springe zu 0 R L [9] springe zu 0 b a Links Register Rechts Solange b 0 Wenn a > b dann a a b Sonst: b b a Ergebnis: a. 32

ETH: Pionierin der modernen Informatik 1950: ETH mietet Konrad Zuses Z4, den damals einzigen funktionierenden Computer in Europa. 33

ETH: Pionierin der modernen Informatik 34 1956: Inbetriebnahme der ERMETH, entwickelt und gebaut an der ETH von Eduard Stiefel.

ETH: Pionierin der modernen Informatik 1958 1963: Entwicklung von ALGOL 60 (der ersten formal definierten Programmiersprache), unter anderem durch Heinz Rutishauer, ETH 35

ETH: Pionierin der modernen Informatik 1958 1963: Entwicklung von ALGOL 60 (der ersten formal definierten Programmiersprache), unter anderem durch Heinz Rutishauer, ETH 1964: Erstmals können ETH-Studierende selbst einen Computer programmieren (die CDC 1604, gebaut von Seymour Cray). 35

ETH: Pionierin der modernen Informatik 36 Die Klasse 1964 im Jahr 2015 (mit einigen Gästen)

ETH: Pionierin der modernen Informatik 36 Niklaus Wirth (* 1934)

ETH: Pionierin der modernen Informatik 37 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 38

Computer Umsetzung Z1 Konrad Zuse (1938) ENIAC John Von Neumann (1945) Konrad Zuse John von Neumann 39

41 Speicher für Daten und Programm Folge von Bits aus {0, 1}. Programmzustand: Werte aller Bits. Zusammenfassung von Bits zu Speicherzellen (oft: 8 Bits = 1 Byte).

41 Speicher für Daten und Programm 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... 2 Uniprozessor Computer bei 1GHz 42

Rechengeschwindigkeit In der mittleren Zeit, die der Schall von mir zu Ihnen unterwegs ist... 30 m arbeitet ein heutiger Desktop-PC mehr als 100 2 Uniprozessor Computer bei 1GHz 42

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. 2 2 Uniprozessor Computer bei 1GHz 42

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 43

Warum Programmieren? 44 Da hätte ich ja gleich Informatik studieren können...

44 Warum Programmieren? Da hätte ich ja gleich Informatik studieren können... Es gibt doch schon für alles Programme...

44 Warum Programmieren? Da hätte ich ja gleich Informatik studieren können... Es gibt doch schon für alles Programme... Programmieren interessiert mich nicht...

44 Warum Programmieren? 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...

44 Warum Programmieren? 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......

45 Mathematik war früher die Lingua franca der Naturwissenschaften an allen Hochschulen. Und heute ist dies die Informatik. Lino Guzzella, Präsident der ETH Zürich, NZZ Online, 1.9.2017

46 Darum Programmieren! 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)

46 Darum Programmieren! 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) Die meisten qualifizierten Jobs benötigen zumindest elementare Programmierkenntnisse.

46 Darum Programmieren! 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) Die meisten qualifizierten Jobs benötigen zumindest elementare Programmierkenntnisse. Programmieren macht Spass!

47 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.

48 Höhere Programmiersprachen darstellbar als Programmtext, der von Menschen verstanden werden kann vom Computermodell unabhängig ist Abstraktion!

Warum C++? 49 Andere populäre höhere Programmiersprachen: Java, C#, Objective-C, Modula, Oberon, Python...

49 Warum C++? Andere populäre höhere Programmiersprachen: Java, C#, Objective-C, Modula, Oberon, Python... C++ ist relevant in der Praxis. Für das wissenschaftliche Rechnen (wie es in der Mathematik und Physik gebraucht wird), bietet C++ viele nützliche Konzepte. C++ ist weit verbreitet und läuft überall C++ ist standardisiert, d.h. es gibt ein offizielles C++.

49 Warum C++? Andere populäre höhere Programmiersprachen: Java, C#, Objective-C, Modula, Oberon, Python... C++ ist relevant in der Praxis. Für das wissenschaftliche Rechnen (wie es in der Mathematik und Physik gebraucht wird), bietet C++ viele nützliche Konzepte. C++ ist weit verbreitet und läuft überall C++ ist standardisiert, d.h. es gibt ein offizielles C++. Der Dozent mag C++.

Deutsch vs. C++ 50 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 51 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.

Syntax und Semantik 51 Entsprechende Regeln für ein Computerprogramm sind einfacher, aber auch strenger, denn Computer sind vergleichsweise dumm.

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

55 Was braucht es zum Programmieren? Editor: Programm zum Ändern, Erfassen und Speichern von C++-Programmtext Compiler: Programm zum Übersetzen des Programmtexts in Maschinensprache

55 Was braucht es zum Programmieren? Computer: Gerät zum Ausführen von Programmen in Maschinensprache Betriebssystem: Programm zur Organisation all dieser Abläufe (Dateiverwaltung, Editor-, Compiler- und Programmaufruf)

Das erste C++ Programm // 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; } 57

Wichtigste Bestandteile... // 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; Mache etwas (lies a ein)! // 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; } Anweisungen 57

Wichtigste Bestandteile... // 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 Berechne einen Wert (a 2 )! b = b b; // b = a^4 // output b b, i.e., a^8 std::cout << a << "^8 = " << b b << "\n"; return 0; } Ausdrücke 57

Beiwerk : Kommentare // 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; } 59

Beiwerk : Kommentare // 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; } Kommentare 59

Kommentare und Layout 61 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;}

Kommentare und Layout 61 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!

Beiwerk : Include und Main-Funktion // 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; } 62

Beiwerk : Include und Main-Funktion // Program: power8.cpp // Raise a number to the eighth power. #include <iostream> Include-Direktive 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; } 62

Beiwerk : Include und Main-Funktion // Program: power8.cpp // Raise a number to the eighth power. #include <iostream> int main() { Funktionsdeklaration der main-funktion // 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; } 62

Anweisungen: Mache etwas! 65 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; }

Anweisungen: Mache etwas! 65 int main() { // input std::cout << "Compute a^8 for a =? "; int a; std::cin >> a; Ausdrucksanweisungen // 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; }

Anweisungen: Mache etwas! 65 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; Rückgabeanweisung }

Anweisungen Effekte 69 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 Effekt: Eingabe einer Zahl und Speichern in a Effekt: Speichern des berechneten Wertes von a*a in b 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 Strings Compute... Effekt: Ausgabe des Wertes von a und des berechneten Wertes von b*b

Anweisungen Variablendefinitionen 71 int main() { // input Typnamen } std::cout << "Compute a^8 for a =? "; int a; Deklarationsanweisungen 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;

Variablen 76 repräsentieren (wechselnde) Werte, haben Name Typ Wert Adresse

76 Variablen repräsentieren (wechselnde) Werte, haben Name Typ Wert Adresse Beispiel int a; definiert Variable mit Name: a Typ: int Wert: (vorerst) undefiniert Addresse: durch Compiler bestimmt

Ausdrücke: Berechne einen Wert! 79 repräsentieren Berechnungen

Ausdrücke: Berechne einen Wert! 79 repräsentieren Berechnungen sind entweder primär (b)

Ausdrücke: Berechne einen Wert! 79 repräsentieren Berechnungen sind entweder primär (b) oder zusammengesetzt (b*b)...

Ausdrücke: Berechne einen Wert! 79 repräsentieren Berechnungen sind entweder primär (b) oder zusammengesetzt (b*b)...... aus anderen Ausdrücken, mit Hilfe von Operatoren

Ausdrücke: Berechne einen Wert! 79 repräsentieren Berechnungen sind entweder primär (b) oder zusammengesetzt (b*b)...... aus anderen Ausdrücken, mit Hilfe von Operatoren haben einen Typ und einen Wert

Ausdrücke: Berechne einen Wert! 79 repräsentieren Berechnungen sind entweder primär (b) oder zusammengesetzt (b*b)...... aus anderen Ausdrücken, mit Hilfe von Operatoren haben einen Typ und einen Wert Analogie: Baukasten

Ausdrücke 80 // 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;

Ausdrücke // input std::cout << "Compute a^8 for a =? "; int a; std::cin >> a; Variablenname, primärer Ausdruck (+ Name und Adresse) // computation int b = a a; // b = a^2 b = b * b; // b = a^4 Variablenname, primärer Ausdruck (+ Name und Adresse) // output b b, i.e., a^8 std::cout << a<< "^8 = " << b * b << ".\ n"; return 0; Literal, primärer Ausdruck 80

80 Ausdrücke // 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 Zusammengesetzer b b, i.e., a^8 Ausdruck std::cout << a<< "^8 = " << b * b << ".\ n"; return 0; Zusammengesetzer Ausdruck Baukasten

Ausdrücke Baukasten 80 // input std::cout << "Compute a^8 for a =? "; int a; std::cin >> a; // computation int b = a a; // b = a^2 b = b * b; Zweifach // b = zusammengesetzter a^4 Ausdruck // output b b, i.e., a^8 std::cout << a<< "^8 = " << b * b << ".\ n"; returnvierfach 0; zusammengesetzter Ausdruck

L-Werte und R-Werte 83 // 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;

L-Werte und R-Werte 83 // input std::cout << "Compute a^8 for a =? "; int a; std::cin >> a; L-Wert (Ausdruck + Adresse) // computation int b = a a; L-Wert (Ausdruck + Adresse) // 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; R-Wert (Ausdruck, der kein L-Wert ist)

83 L-Werte und R-Werte // input R-Wert 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 R-Wert // output b b, i.e., a^8 std::cout << a<< "^8 = " << b * b << ".\ n"; return 0;

L-Werte und R-Werte 84 L-Wert ( Links vom Zuweisungsoperator ) Ausdruck mit Adresse Wert ist der Inhalt an der Speicheradresse entsprechend dem Typ des Ausdrucks.

L-Werte und R-Werte 84 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

L-Werte und R-Werte 85 R-Wert ( Rechts vom Zuweisungsoperator ) Ausdruck der kein L-Wert ist Beispiel: Literal 0

L-Werte und R-Werte 85 R-Wert ( Rechts vom Zuweisungsoperator ) Ausdruck der kein L-Wert ist Beispiel: Literal 0 Jeder L-Wert kann als R-Wert benutzt werden (aber nicht umgekehrt).

L-Werte und R-Werte 85 R-Wert ( Rechts vom Zuweisungsoperator ) Ausdruck der kein L-Wert ist Beispiel: Literal 0 Jeder L-Wert kann als R-Wert benutzt werden (aber nicht umgekehrt). Jedes e-bike kann als normales Fahrrad benutzt werden, aber nicht umgekehrt.

L-Werte und R-Werte 85 R-Wert ( Rechts vom Zuweisungsoperator ) Ausdruck der kein L-Wert ist Beispiel: Literal 0 Jeder L-Wert kann als R-Wert benutzt werden (aber nicht umgekehrt). Ein R-Wert kann seinen Wert nicht ändern.

L-Werte und R-Werte 86

Operatoren und Operanden Baukasten 87 // 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;

87 Operatoren und Operanden Baukasten Linker Operand (Ausgabestrom) // input Ausgabe-Operator Rechter Operand (String) 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;

Operatoren und Operanden Baukasten 87 // input std::cout << "Compute a^8 for a =? "; int a; std::cin >> a; Rechter Operand (Variablenname) // computation Eingabe-Operator int b = alinker a; Operand // b = (Eingabetrom) a^2 b = b b; // b = a^4 // output b b, i.e., a^8 std::cout << a << "^8 = " << b * b << "\n"; return 0;

Operatoren und Operanden Baukasten 87 // 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 Zuweisungsoperator b b, i.e., a^8 std::cout << a << "^8 = " << b * b << "\n"; return 0; Multiplikationsoperator