Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler,...
-
Upload
gundula-schleicher -
Category
Documents
-
view
104 -
download
0
Transcript of Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler,...
![Page 1: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/1.jpg)
Einführung
Real Programmers vs. Quiche Eaters ; Die Mersenne’sche
Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-
Programm
![Page 2: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/2.jpg)
Real Programmers vs.Quiche Eaters
The Real Programmer
ist intuitiver Programmierer (hat’s im Blut und ist generell Autodidakt)
kann mit “seiner” Programmierspra-che schon alles und lehnt andere Programmiersprachen deshalb ab
kann und braucht keine Theorie
![Page 3: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/3.jpg)
Real Programmers vs.Quiche Eaters
The Real Programmer
ist intuitiver Programmierer (hat’s im Blut und ist generell Autodidakt)
kann mit “seiner” Programmierspra-che schon alles und lehnt andere Programmiersprachen deshalb ab
kann und braucht keine Theorie
The Quiche Eater
macht sich Gedanken über “Gutes Programmieren”
will mit “seiner” Programmierspra-che gar nicht alles können, sondern nur das Richtige
ist meist Akademiker
![Page 4: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/4.jpg)
Real Programmers vs.Quiche Eaters
The Real Programmer
ist intuitiver Programmierer (hat’s im Blut und ist generell Autodidakt)
kann mit “seiner” Programmierspra-che schon alles und lehnt andere Programmiersprachen deshalb ab
kann und braucht keine Theorie
The Quiche Eater
Niklaus Wirth (*1934) Bekanntester CH-Informatiker 1968 – 1999 Professor an der
ETH Entwickler der Programmierspra-
chen Pascal (ab 1968), Modula-2 (ab 1977) und Oberon (ab 1986)
![Page 5: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/5.jpg)
Real Programmers vs.Quiche Eaters
The Real Programmer
Erfunden 1983 von Ed Post im
Informatik-Klassiker Real Program-mers don’t use Pascal (siehe VL-Webseite)
programmiert in C oder Fortan
The Quiche Eater
Niklaus Wirth (*1934) Bekanntester CH-Informatiker 1968 – 1999 Professor an der
ETH Entwickler der Programmierspra-
chen Pascal (ab 1968), Modula-2 (ab 1977) und Oberon (ab 1986)
![Page 6: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/6.jpg)
The Real Quiche Eater – Thesen des Dozenten
![Page 7: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/7.jpg)
The Real Quiche Eater – Thesen des Dozenten Jeder Programmierer wird irgendwann
einmal erwachsen (und zum Quiche Eater ), aber die kindliche Seite (der Real Programmer ) stirbt niemals ganz.
![Page 8: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/8.jpg)
The Real Quiche Eater – Thesen des Dozenten Jeder Programmierer wird irgendwann
einmal erwachsen (und zum Quiche Eater ), aber die kindliche Seite (der Real Programmer ) stirbt niemals ganz.
Wir brauchen eine Programmiersprache, die beide Seiten zufriedenstellt (C, Fortan, Pascal, Modula-2, Oberon tun dies nicht).
![Page 9: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/9.jpg)
The Real Quiche Eater – Thesen des Dozenten Jeder Programmierer wird irgendwann
einmal erwachsen (und zum Quiche Eater ), aber die kindliche Seite (der Real Programmer ) stirbt niemals ganz.
Wir brauchen eine Programmiersprache, die beide Seiten zufriedenstellt (C, Fortan, Pascal, Modula-2, Oberon tun dies nicht).
C++ ist die einzige Lösung!
![Page 10: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/10.jpg)
Programmieren
Welche Programmiersprache? C++
![Page 11: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/11.jpg)
Programmieren
Welche Programmiersprache? C++
Warum überhaupt ??? Da hätte ich ja gleich Informatik
studieren können... Es gibt doch schon für alles
Programme... Programmieren interessiert mich nicht...
![Page 12: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/12.jpg)
Die Mersenne’sche Vermutung
Mersenne (1644):
Die Zahlen der Form 2n-1 sind Primzahlen für n = 2, 3, 5, 7, 13, 17, 19, 31, 67, 127, 257, aber für kein anderes n < 257.
![Page 13: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/13.jpg)
Die Mersenne’sche Vermutung
Mersenne (1644):
22-1 = 3 23-1 = 7 25-1 = 31
Die Zahlen der Form 2n-1 sind Primzahlen für n = 2, 3, 5, 7, 13, 17, 19, 31, 67, 127, 257, aber für kein anderes n < 257.
![Page 14: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/14.jpg)
Die Mersenne’sche Vermutung
Mersenne (1644):
22-1 = 3 23-1 = 7 25-1 = 31
Die Zahlen der Form 2n-1 sind Primzahlen für n = 2, 3, 5, 7, 13, 17, 19, 31, 67, 127, 257, aber für kein anderes n < 257.
219-1 (1644)231-1 (1772, Euler)
![Page 15: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/15.jpg)
Die Mersenne’sche Vermutung
Mersenne (1644):
22-1 = 3 23-1 = 7 25-1 = 31
Die Zahlen der Form 2n-1 sind Primzahlen für n = 2, 3, 5, 7, 13, 17, 19, 31, 67, 127, 257, aber für kein anderes n < 257.
219-1 (1644)231-1 (1772, Euler)267-1 (1876, Lucas)
![Page 16: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/16.jpg)
Die Mersenne’sche Vermutung
Lucas’ Beweis von 1876 ist nicht konstruktiv, er liefert keine Faktorisierung von
267-1 = 147573952589676412927.
![Page 17: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/17.jpg)
Die Mersenne’sche Vermutung
Lucas’ Beweis von 1876 ist nicht konstruktiv, er liefert keine Faktorisierung von
Faktorisierung blieb offen bis 1903
267-1 = 147573952589676412927.
![Page 18: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/18.jpg)
Der Vortrag von Cole
Frank Nelson Cole: On the Factorization of large numbers, Treffen der American Mathematical Society 1903
![Page 19: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/19.jpg)
Der Vortrag von Cole
Frank Nelson Cole: On the Factorization of large numbers, Treffen der American Mathematical Society 1903
Vielleicht der erste und einzige Vortrag, der ohne ein einziges Wort auskam
![Page 20: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/20.jpg)
Der Vortrag von Cole
761838257287 x 193707721 ------------------------
761838257287
6856544315583
2285514771861
5332867801009
5332867801009
5332867801009
1523676514574
761838257287
---------------------
147573952589676412927
![Page 21: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/21.jpg)
Der Vortrag von Cole
761838257287 x 193707721 ------------------------
761838257287
6856544315583
2285514771861
5332867801009
5332867801009
5332867801009
1523676514574
761838257287
---------------------
147573952589676412927
267-1
![Page 22: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/22.jpg)
Der Vortrag von Cole
Frank Nelson Cole: On the Factorization of large numbers, Treffen der American Mathematical Society 1903
Vielleicht der erste und einzige Vortrag, der ohne ein einziges Wort auskam
Ergebnis: Standing ovations für Cole
![Page 23: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/23.jpg)
Der Vortrag von Cole Frank Nelson Cole: On the Factorization
of large numbers, Treffen der American Mathematical Society 1903
Vielleicht der erste und einzige Vortrag, der ohne ein einziges Wort auskam
Ergebnis: Standing ovations für Cole und für seine drei Jahre Sonntagsarbeit!
![Page 24: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/24.jpg)
Was lernen wir daraus?
![Page 25: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/25.jpg)
Was lernen wir daraus?
Wir brauchen Werkzeuge (damals: Papier, Bleistift, Kopfrechnen; heute auch Computer)
![Page 26: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/26.jpg)
Was lernen wir daraus?
Wir brauchen Werkzeuge (damals: Papier, Bleistift, Kopfrechnen; heute auch Computer)
Wir brauchen Problemlösungskom-petenz (damals wie heute: Theorie hinter dem Problem kennen; wie setzt man die Werkzeuge effektiv ein?)
![Page 27: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/27.jpg)
Was lernen wir daraus?
Wir brauchen Programmierfähig-keiten, um das neue Werkzeug Computer (das Cole noch nicht kannte) effektiv einsetzen zu können. Anwendungsprogramme lösen heute
viele Routine-Aufgaben Für alles, was darüber hinausgeht, muss
man den Computer selbst programmieren!
![Page 28: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/28.jpg)
Die Mersenne’sche Vermutung heute
n =67 und n =257: 2n-1 keine Primzahl
![Page 29: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/29.jpg)
Die Mersenne’sche Vermutung heute
n =67 und n =257: 2n-1 keine Primzahl
Mersenne hat andererseits n = 61, 89, 107 “vergessen”
![Page 30: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/30.jpg)
Die Mersenne’sche Vermutung heute
n =67 und n =257: 2n-1 keine Primzahl
Mersenne hat andererseits n = 61, 89, 107 “vergessen”
grösste bisher bekannte Primzahl der Form 2n-1 ist 243112609-1, gefunden mit massivem Computereinsatz und Spezialsoftware
![Page 31: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/31.jpg)
Programmieren
Welche Programmiersprache? C++
Warum überhaupt ??? Um den Computer als Werkzeug
effektiv einsetzen zu können Wie programmiert man eigentlich?
![Page 32: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/32.jpg)
Editor
Programm zum
Ändern Erfassen Speichern
von (Programm)-Text
![Page 33: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/33.jpg)
Editor
Programm zum
Ändern Erfassen Speichern
von (Programm)-Text
Beispiele:Microsoft Word,Emacs
![Page 34: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/34.jpg)
Compiler
Motivation: Sprache, die der Computer versteht,
ist sehr primitiv (Maschinensprache) Selbst einfache Operationen müssen
in viele Einzelschritte aufgeteilt werden
Verstandene Sprache variiert von Computer zu Computer
![Page 35: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/35.jpg)
Compiler
Programm zur Übersetzung von visuell lesbarem computermodell-unabhängigemProgrammtext in Maschinensprache.
Idee der höheren Programmiersprache
![Page 36: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/36.jpg)
Compiler
Programm zur Übersetzung von visuell lesbarem computermodell-unabhängigemProgrammtext in Maschinensprache.
Idee der höheren ProgrammierspracheBeispiele: Pascal, Oberon, C++, Java
![Page 37: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/37.jpg)
Computer
Zutaten der von-Neumann-Architektur:
Hauptspeicher (RAM) für Programme und Daten
Prozessor (CPU) zur Verarbeitung der Programme und Daten
![Page 38: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/38.jpg)
Hauptspeicher Folge von Bits aus {0,1} Programmzustand: Werte aller Bits Zusammenfassung von Bits zu
Speicherzellen Jede Speicherzelle hat eine Adresse Random Access: Zugriffszeit auf
Speicherzelle unabhängig von ihrer Adresse
Adresse: 17 Adresse: 18
![Page 39: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/39.jpg)
Prozessor führt Programminstruktionen in
Maschinensprache aus hat eigenen “schnellen” Speicher
(Register), kann vom Hauptspeicher lesen und in ihn schreiben
beherrscht eine Menge einfachster Operationen (z.B. Addieren zweier Registerinhalte)
![Page 40: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/40.jpg)
Betriebssystem
Programm fuer grundlegende Abläufe:
Editor starten Programm erfassen und speichern Compiler aufrufen Übersetztes Programm starten
![Page 41: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/41.jpg)
Betriebssystem
Programm fuer grundlegende Abläufe:
Editor starten Programm erfassen und speichern Compiler aufrufen Übersetztes Programm startenBeispiele:Windows, UnixLinux, MacOS
![Page 42: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/42.jpg)
Plattform
Ideale Welt: Programm, das in einer höheren
Programmiersprache geschrieben wurde, verhält sich überall gleich
![Page 43: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/43.jpg)
Plattform
Ideale Welt: Programm, das in einer höheren
Programmiersprache geschrieben wurde, verhält sich überall gleich
Reale Welt (gerade bei C++): Verhalten kann von Compiler,
Computer, Betriebssystem abhängen
![Page 44: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/44.jpg)
Plattform
Plattform: Compiler, Computer, Betriebssystem
Ziel für uns: Plattformunabhängige Programme Voraussetzung dafür: Verzicht auf
maschinennahe Features von C++
![Page 45: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/45.jpg)
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;}
![Page 46: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/46.jpg)
Syntax und Semantik
Syntax: Was ist ein C++ Programm? Ist es grammatikalisch korrekt?
Semantik: Was bedeutet ein C++ Programm? Welchen Algorithmus realisiert es?
![Page 47: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/47.jpg)
Syntax und Semantik
Der ISO/IEC Standard 14822 (1998)
ist das “Gesetz” von C++ legt Grammatik und Bedeutung
von C++ Programmen fest wird weiterentwickelt: Neuauflage
2009
![Page 48: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/48.jpg)
Beispiel: power8.cpp Kommentare/Layout Include-Direktiven Die main-Funktion Werte, Effekte Typen,
Funktionalität Literale Variablen
Konstanten Bezeichner,
Namen Objekte Ausdrücke L- und R-Werte Operatoren Anweisungen
![Page 49: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/49.jpg)
Kommentare
hat jedes gute Programm // ab Doppel-Slash bis Zeilenende dokumentieren, was das
Programm wie macht werden vom Compiler ignoriert
![Page 50: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/50.jpg)
Layoutelemente
Kommentare Leerzeilen, Leerschläge Einrückungen, die die
Programmlogik widerspiegeln werden vom Compiler ignoriert
![Page 51: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/51.jpg)
Kommentare und Layout
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;}
![Page 52: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/52.jpg)
Kommentare und Layout
Dem Compiler ist’s egal…
…aber uns nicht!
#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;}
![Page 53: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/53.jpg)
Include-Direktiven
C++ besteht aus Kernsprache Standardbibliothek
Ein/Ausgabe (Header iostream) Mathematische Funktionen (cmath) …
#include <iostream> macht Ein/Ausgabe verfügbar
![Page 54: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/54.jpg)
Die main-Funktion
hat jedes C++ Programm wird vom Betriebssystem
aufgerufen wie mathematische Funktion…
Argumente (bei power8.cpp: keine) Rückgabewert (bei power8.cpp: 0)
![Page 55: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/55.jpg)
Die main-Funktion
hat jedes C++ Programm wird vom Betriebssystem aufgerufen wie mathematische Funktion…
Argumente (bei power8.cpp: keine) Rückgabewert (bei power8.cpp: 0)
…aber mit zusätzlichem Effekt! Lies Zahl ein und gib 8-te Potenz aus
![Page 56: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/56.jpg)
Werte und Effekte
bestimmen, was das Programm macht
Sind rein semantische Konzepte: Zeichen ‘0’ bedeutet Wert 0 є Z std::cin >> a; bedeutet Effekt
“Einlesen einer Zahl” hängen vom Programmzustand
(Speicherinhalte / Eingaben) ab
![Page 57: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/57.jpg)
Typen und Funktionalität
int : C++ Typ für ganze Zahlen entspricht (, +, ×) in der
Mathematik
![Page 58: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/58.jpg)
Typen und Funktionalität
int : C++ Typ für ganze Zahlen entspricht (, +, ×) in der Mathematik
In C++ hat jeder Typ einen Namen sowie
Wertebereich (z.B. ganze Zahlen)
![Page 59: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/59.jpg)
Typen und Funktionalität
int : C++ Typ für ganze Zahlen entspricht (, +, ×) in der Mathematik
In C++ hat jeder Typ einen Namen sowie Wertebereich (z.B. ganze Zahlen) Funktionalität (z.B.
Addition/Multiplikation)
![Page 60: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/60.jpg)
Typen und Funktionalität
C++ enthält fundamentale Typen für
Ganze Zahlen (int) Natürliche Zahlen (unsigned int) Reelle Zahlen (float,double) Wahrheitswerte (bool) …
![Page 61: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/61.jpg)
Literale
repräsentieren konstante Werte haben einen festen Typ sind “syntaktische Werte”
![Page 62: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/62.jpg)
Literale
repräsentieren konstante Werte haben einen festen Typ sind “syntaktische Werte”
Beispiele: 0 hat Typ int, Wert 0 1.2e5 hat Typ double,Wert 1.2×105
![Page 63: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/63.jpg)
Variablen
repräsentieren wechselnde Werte haben
Namen Typ Wert Adresse
sind im Programmtext “sichtbar”
![Page 64: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/64.jpg)
Variablen
repräsentieren (wechselnde) Werte haben
Namen Typ Wert Adresse
sind im Programmtext “sichtbar”
int a; definiert Variable mit
Namen: a
Typ: int
Wert: undefiniert
Adresse: durch Compiler bestimmt
![Page 65: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/65.jpg)
Konstanten
sind Variablen mit unveränderbarem Wert
const int speed_of_light = 299792458;
![Page 66: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/66.jpg)
Konstanten
sind Variablen mit unveränderbarem Wert
Verwendung: const vor der Definition
Compiler kontrolliert Einhaltung des const-Versprechens
const int speed_of_light = 299792458;
const int speed_of_light = 299792458;
...
speed_of_light = 300000000; // Rundung
![Page 67: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/67.jpg)
Konstanten
sind Variablen mit unveränderbarem Wert
Verwendung: const vor der Definition
Compiler kontrolliert Einhaltung des const-Versprechens
const int speed_of_light = 299792458;
const int speed_of_light = 299792458;
...
speed_of_light = 300000000; // Rundung
Fehler-meldung!
![Page 68: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/68.jpg)
Die const-Richtlinie
Denke bei jeder Variablen darüber nach, ob sie im Verlauf des Programms jemals ihren Wert ändern wird oder nicht! Im letzteren Fall verwende das Schlüsselwort const, um die Variable zu einer Konstanten zu machen!
![Page 69: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/69.jpg)
Die const-Richtlinie
Ein Programm, das diese Richtlinie befolgt, heisst const-korrekt
Denke bei jeder Variablen darüber nach, ob sie im Verlauf des Programms jemals ihren Wert ändern wird oder nicht! Im letzteren Fall verwende das Schlüsselwort const, um die Variable zu einer Konstanten zu machen!
![Page 70: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/70.jpg)
Bezeichner und Namen
(Variablen-)Namen sind Bezeichner: erlaubt: A,…,Z ; a,..,z ; 0,…,9 ; _ erstes Zeichen ist Buchstabe
Es gibt noch andere Namen: std::cin (qualifizierter Name)
![Page 71: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/71.jpg)
Objekte
repräsentieren Werte im Hauptspeicher
haben Typ Adresse Wert (Speicherinhalt an der Adresse)
![Page 72: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/72.jpg)
Objekte
repräsentieren Werte im Hauptspeicher
haben Typ Adresse Wert (Speicherinhalt an der Adresse)
können benannt werden (Variable)... ...aber auch anonym sein.
![Page 73: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/73.jpg)
Objekte
repräsentieren Werte im Hauptspeicher
haben Typ Adresse Wert (Speicherinhalt an der Adresse)
können benannt werden (Variable)... ...aber auch anonym sein.
Ein Programm hat eine feste Anzahl von Variablen.
Um eine grössere Anzahl von Werten behandeln zu können, braucht es “anonyme” Adressen, die über temporäre Namen angesprochen werden können.
![Page 74: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/74.jpg)
Ausdrücke (Expressions)
repräsentieren Berechnungen sind primär oder zusammengesetzt
(aus anderen Ausdrücken)
![Page 75: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/75.jpg)
Ausdrücke (Expressions)
repräsentieren Berechnungen sind primär oder zusammengesetzt
(aus anderen Ausdrücken und Operationen)
a * a
zusammengesetzter Ausdruck:
![Page 76: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/76.jpg)
Ausdrücke (Expressions)
repräsentieren Berechnungen sind primär oder zusammengesetzt
(aus anderen Ausdrücken und Operationen)
a * a
zusammengesetzter Ausdruck:
Variablenname
![Page 77: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/77.jpg)
Ausdrücke (Expressions)
repräsentieren Berechnungen sind primär oder zusammengesetzt
(aus anderen Ausdrücken und Operationen)
a * a
zusammengesetzter Ausdruck:
Variablenname, Operatorsymbol
![Page 78: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/78.jpg)
Ausdrücke (Expressions)
repräsentieren Berechnungen sind primär oder zusammengesetzt
(aus anderen Ausdrücken und Operationen)
a * a
zusammengesetzter Ausdruck:
Variablenname, Operatorsymbol,
Variablenname
![Page 79: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/79.jpg)
Ausdrücke (Expressions)
repräsentieren Berechnungen sind primär oder zusammengesetzt
(aus anderen Ausdrücken und Operationen)
a * a
zusammengesetzter Ausdruck:
Variablenname, Operatorsymbol,
Variablenname
Primäre
Ausdrücke
![Page 80: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/80.jpg)
Ausdrücke (Expressions)
repräsentieren Berechnungen sind primär oder zusammengesetzt
(aus anderen Ausdrücken und Operationen)
a * a
zusammengesetzter Ausdruck:
Variablenname, Operatorsymbol,
Variablenname
Primäre
Ausdrücke
(a * a) “=“
Klammern erlaubt:
![Page 81: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/81.jpg)
Ausdrücke (Expressions)
haben Typ Wert Effekt (potentiell)
![Page 82: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/82.jpg)
Ausdrücke (Expressions)
haben Typ Wert Effekt (potentiell)
a * a
Typ: int (Typ der Operanden)
Wert: Produkt von a und a
Effekt: keiner
![Page 83: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/83.jpg)
Ausdrücke (Expressions)
haben Typ Wert Effekt (potentiell)
b = b * b
Typ: int (Typ der Operanden)
Wert: Produkt von b und b
Effekt: Weise b diesen Wert zu
![Page 84: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/84.jpg)
Ausdrücke (Expressions)
haben Typ Wert Effekt (potentiell)
Typ eines Ausdrucks ist fest, aber Wert und Effekt werden durch Auswertung des Ausdrucks bestimmt
![Page 85: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/85.jpg)
L-Werte und R-Werte
L-Wert: Ausdruck mit Adresse Wert ist der Wert des Objekts an
dieser Adresse gibt Objekt einen (temporären)
Namen
![Page 86: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/86.jpg)
L-Werte und R-Werte
L-Wert: Ausdruck mit Adresse Wert ist der Wert des Objekts an
dieser Adresse gibt Objekt einen (temporären)
NamenBeispiel: Variablenname
![Page 87: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/87.jpg)
L-Werte und R-Werte
L-Wert: Ausdruck mit Adresse Wert ist der Wert des Objekts an
dieser Adresse gibt Objekt einen (temporären)
NamenBeispiel: VariablennameAndere Beispiele: etwas später...
![Page 88: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/88.jpg)
L-Werte und R-Werte
R-Wert: Ausdruck, der kein L-Wert ist
![Page 89: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/89.jpg)
L-Werte und R-Werte
R-Wert: Ausdruck, der kein L-Wert ist
Beispiel: Literal
![Page 90: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/90.jpg)
L-Werte und R-Werte
R-Wert: Ausdruck, der kein L-Wert ist
Jeder L-Wert kann als R-Wert benutzt werden, aber nicht umgekehrt!
R-Wert kann seinen Wert nicht ändern
Beispiel: Literal
![Page 91: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/91.jpg)
Operatoren
* : MultiplikationsoperatorOperatoren machen aus Ausdrücken (Operanden)
neue zusammengesetzte Ausdrücke spezifizieren für die Operanden und
das Ergebnis die Typen, und ob sie L- oder R-Werte sein müssen
haben eine Stelligkeit (hier immer 2)
![Page 92: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/92.jpg)
Multiplikationsoperator *
erwartet zwei R-Werte vom gleichen arithmetischem Typ als Operanden
“gibt Produkt als R-Wert des gleichen Typs zurück”: Der zusammengesetzte Ausdruck ist
ein R-Wert; sein Wert ist das Produkt der Werte der beiden Operanden
![Page 93: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/93.jpg)
Multiplikationsoperator *
erwartet zwei R-Werte vom gleichen arithmetischem Typ als Operanden
“gibt Produkt als R-Wert des gleichen Typs zurück”: Der zusammengesetzte Ausdruck ist
ein R-Wert; sein Wert ist das Produkt der Werte der beiden Operanden
Beispiele: a * a, b * b
![Page 94: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/94.jpg)
Zuweisungsoperator =
linker Operand ist L-Wert rechter Operand ist R-Wert des
gleichen Typs Weist linkem Operanden den Wert
des rechten Operanden zu und gibt den linken Operanden als L-Wert zurück
![Page 95: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/95.jpg)
Zuweisungsoperator =
linker Operand ist L-Wert rechter Operand ist R-Wert des
gleichen Typs Weist linkem Operanden den Wert
des rechten Operanden zu und gibt den linken Operanden als L-Wert zurück Beispiel: b = b * b
![Page 96: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/96.jpg)
Zuweisungsoperator =
linker Operand ist L-Wert rechter Operand ist R-Wert des
gleichen Typs Weist linkem Operanden den Wert
des rechten Operanden zu und gibt den linken Operanden als L-Wert zurück Beispiel: b = b * b
:= in Mathe
![Page 97: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/97.jpg)
Zuweisungsoperator =
linker Operand ist L-Wert rechter Operand ist R-Wert des
gleichen Typs Weist linkem Operanden den Wert
des rechten Operanden zu und gibt den linken Operanden als L-Wert zurück Beispiel: b = b * b
![Page 98: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/98.jpg)
Eingabeoperator >>
linker Operand ist L-Wert (Eingabestrom)
rechter Operand ist L-Wert weist dem rechten Operanden den
nächsten Wert aus der Eingabe zu, entfernt ihn aus der Eingabe und gibt den Eingabestrom als L-Wert zurück
![Page 99: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/99.jpg)
Eingabeoperator >>
linker Operand ist L-Wert (Eingabestrom)
rechter Operand ist L-Wert weist dem rechten Operanden den
nächsten Wert aus der Eingabe zu, entfernt ihn aus der Eingabe und gibt den Eingabestrom als L-Wert zurückBeispiel: std::cin >> a (meist
Tastatureingabe)
![Page 100: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/100.jpg)
Eingabeoperator >>
linker Operand ist L-Wert (Eingabestrom)
rechter Operand ist L-Wert weist dem rechten Operanden den
nächsten Wert aus der Eingabe zu, entfernt ihn aus der Eingabe und gibt den Eingabestrom als L-Wert zurück
Eingabestrom muss ein L-Wert sein!
![Page 101: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/101.jpg)
Ausgabeoperator <<
linker Operand ist L-Wert (Ausgabestrom)
rechter Operand ist R-Wert gibt den Wert des rechten
Operanden aus, fügt ihn dem Ausgabestrom hinzu und gibt den Ausgabestrom als L-Wert zurück
![Page 102: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/102.jpg)
Ausgabeoperator <<
linker Operand ist L-Wert (Ausgabestrom)
rechter Operand ist R-Wert gibt den Wert des rechten
Operanden aus, fügt ihn dem Ausgabestrom hinzu und gibt den Ausgabestrom als L-Wert zurückBeispiel: std::cout << a (meist
Bildschirmausgabe)
![Page 103: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/103.jpg)
Ausgabeoperator <<
linker Operand ist L-Wert (Ausgabestrom)
rechter Operand ist R-Wert gibt den Wert des rechten Operanden
aus, fügt ihn dem Ausgabestrom hinzu und gibt den Ausgabestrom als L-Wert zurück
Ausgabestrom muss L-Wert sein!
![Page 104: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/104.jpg)
Ausgabeoperator <<
Warum Rückgabe des Ausgabestroms?
erlaubt Bündelung von Ausgaben:
ist wie folgt logisch geklammert:
std::cout << a << "^8 = " << b * b << ".\n"
((((std::cout << a) << "^8 = ") << b * b) << ".\n")
L-Wert (Ausgabestrom)
![Page 105: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/105.jpg)
Ausgabeoperator <<
Warum Rückgabe des Ausgabestroms?
erlaubt Bündelung von Ausgaben:
ist wie folgt logisch geklammert:
std::cout << a << "^8 = " << b * b << ".\n"
L-Wert, der kein Variablenname ist!
((((std::cout << a) << "^8 = ") << b * b) << ".\n")
![Page 106: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/106.jpg)
Ausgabeoperator <<
Warum Rückgabe des Ausgabestroms?
erlaubt Bündelung von Ausgaben:
ist wie folgt logisch geklammert:
std::cout << a << "^8 = " << b * b << ".\n"
L-Wert (Ausgabestrom)
((((std::cout << a) << "^8 = ") << b * b) << ".\n")
![Page 107: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/107.jpg)
Ausgabeoperator <<
Warum Rückgabe des Ausgabestroms?
erlaubt Bündelung von Ausgaben:
ist wie folgt logisch geklammert:
std::cout << a << "^8 = " << b * b << ".\n"
L-Wert (Ausgabestrom)
((((std::cout << a) << "^8 = ") << b * b) << ".\n")
![Page 108: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/108.jpg)
Ausgabeoperator <<
Warum Rückgabe des Ausgabestroms?
erlaubt Bündelung von Ausgaben:
ist wie folgt logisch geklammert:
std::cout << a << "^8 = " << b * b << ".\n"
L-Wert (Ausgabestrom)
((((std::cout << a) << "^8 = ") << b * b) << ".\n")
![Page 109: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/109.jpg)
Anweisungen
Bausteine eines C++ Programms werden (von oben nach unten)
ausgeführt und haben Effekte enden mit einem Semikolon
![Page 110: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/110.jpg)
Ausdrucksanweisungen
haben die Form expr ; wobei expr ein Ausdruck ist Effekt ist der Effekt von expr, der
Wert von expr wird ignoriert
![Page 111: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/111.jpg)
Ausdrucksanweisungen
haben die Form expr ; wobei expr ein Ausdruck ist Effekt ist der Effekt von expr, der
Wert von expr wird ignoriert
Beispiel: b = b * b;
![Page 112: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/112.jpg)
Deklarationsanweisungen
führen neue Namen im Programm ein
bestehen aus Deklaration + Semikolon
![Page 113: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/113.jpg)
Deklarationsanweisungen
führen neue Namen im Programm ein
bestehen aus Deklaration + SemikolonBeispiel: int a;
![Page 114: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/114.jpg)
Deklarationsanweisungen
führen neue Namen im Programm ein
bestehen aus Deklaration + Semikolon
können Variablen auch initialisieren
Beispiel: int a;
![Page 115: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/115.jpg)
Deklarationsanweisungen
führen neue Namen im Programm ein
bestehen aus Deklaration + Semikolon
können Variablen auch initialisieren
Beispiel: int a;
Beispiel: int b = a * a;
![Page 116: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/116.jpg)
Rückgabeanweisungen
treten nur in Funktionen auf und sind von der Form
return expr ; wobei expr ein Ausdruck ist spezifizieren Rückgabewert der
Funktion
![Page 117: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/117.jpg)
Rückgabeanweisungen
treten nur in Funktionen auf und sind von der Form
return expr ; wobei expr ein Ausdruck ist spezifizieren Rückgabewert der
Funktion
Beispiel: return 0;
![Page 118: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/118.jpg)
power8_exact.cpp
Problem mit power8.cpp: grosse Eingaben werden nicht korrekt behandelt
![Page 119: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/119.jpg)
power8_exact.cpp
Problem mit power8.cpp: grosse Eingaben werden nicht korrekt behandelt
Grund: Wertebereich des Typs int ist beschränkt (siehe nächste VL)
![Page 120: Einführung Real Programmers vs. Quiche Eaters ; Die Mersennesche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm.](https://reader035.fdocuments.net/reader035/viewer/2022070310/55204d7549795902118ca844/html5/thumbnails/120.jpg)
power8_exact.cpp
Problem mit power8.cpp: grosse Eingaben werden nicht korrekt behandelt
Grund: Wertebereich des Typs int ist beschränkt (siehe nächste VL)
Lösung: verwende einen anderen Typ, z.B. ifm::integer (siehe Programm power8_exact.cpp)