das erste c++ programm · 2010-10-08 · real programmers vs. quiche eaters the real programmer ist...
TRANSCRIPT
![Page 1: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/1.jpg)
Einführung
Die Mersenne‟sche Vermutung, Editor, Compiler, Computer, Betriebssystem, Plattform, Das erste C++-Programm
![Page 2: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/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: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/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: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/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: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/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: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/6.jpg)
The Real Quiche Eater always uses C++
C++ ist eine Programmiersprache, die sowohlfür Real Programmer als auch für Quiche Eater geeignet ist.
![Page 7: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/7.jpg)
Programmieren
Welche Programmiersprache?
C++
![Page 8: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/8.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 9: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/9.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 10: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/10.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 11: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/11.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 12: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/12.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 13: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/13.jpg)
Die Mersenne‟sche Vermutung
Lucas‟ Beweis von 1876 ist nicht konstruktiv, er liefert keine Faktorisierung von
267-1 = 147573952589676412927.
![Page 14: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/14.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 15: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/15.jpg)
Der Vortrag von Cole
Frank Nelson Cole: On the Factorization of large numbers, Treffen der American Mathematical Society 1903
![Page 16: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/16.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 17: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/17.jpg)
Der Vortrag von Cole
761838257287 x 193707721
------------------------
761838257287
6856544315583
2285514771861
5332867801009
5332867801009
5332867801009
1523676514574
761838257287
---------------------
147573952589676412927
![Page 18: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/18.jpg)
Der Vortrag von Cole
761838257287 x 193707721
------------------------
761838257287
6856544315583
2285514771861
5332867801009
5332867801009
5332867801009
1523676514574
761838257287
---------------------
147573952589676412927
267-1
![Page 19: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/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
Ergebnis: Standing ovations für Cole
![Page 20: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/20.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 21: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/21.jpg)
Was lernen wir daraus?
![Page 22: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/22.jpg)
Was lernen wir daraus?
Wir brauchen Werkzeuge (damals: Papier, Bleistift, Kopfrechnen; heute auch Computer)
![Page 23: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/23.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 24: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/24.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 25: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/25.jpg)
Die Mersenne‟sche Vermutung heute
n =67 und n =257: 2n-1 keine Primzahl
![Page 26: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/26.jpg)
Die Mersenne‟sche Vermutung heute
n =67 und n =257: 2n-1 keine Primzahl
Mersenne hat andererseits n = 61, 89, 107 “vergessen”
![Page 27: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/27.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 28: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/28.jpg)
Programmieren
Welche Programmiersprache?
C++
Warum überhaupt ???
Um den Computer als Werkzeug effektiv einsetzen zu können
Wie programmiert man eigentlich?
![Page 29: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/29.jpg)
Editor
Programm zum
Ändern
Erfassen
Speichern
von (Programm)-Text
![Page 30: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/30.jpg)
Editor
Programm zum
Ändern
Erfassen
Speichern
von (Programm)-Text
Beispiele:
Microsoft Word,
Emacs
![Page 31: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/31.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 32: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/32.jpg)
Compiler
Programm zur Übersetzung von
visuell lesbarem
computermodell-unabhängigem
Programmtext in Maschinensprache.
Idee der höheren Programmiersprache
![Page 33: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/33.jpg)
Compiler
Programm zur Übersetzung von
visuell lesbarem
computermodell-unabhängigem
Programmtext in Maschinensprache.
Idee der höheren Programmiersprache
Beispiele: Pascal, Oberon, C++, Java
![Page 34: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/34.jpg)
Computer
Zutaten der von-Neumann-Architektur:
Hauptspeicher (RAM) für Programme und Daten
Prozessor (CPU) zur Verarbeitung der Programme und Daten
![Page 35: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/35.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 36: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/36.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 37: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/37.jpg)
Betriebssystem
Programm fuer grundlegende Abläufe:
Editor starten
Programm erfassen und speichern
Compiler aufrufen
Übersetztes Programm starten
![Page 38: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/38.jpg)
Betriebssystem
Programm fuer grundlegende Abläufe:
Editor starten
Programm erfassen und speichern
Compiler aufrufen
Übersetztes Programm starten
Beispiele:
Windows, Unix
Linux, MacOS
![Page 39: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/39.jpg)
Plattform
Ideale Welt:
Programm, das in einer höheren Programmiersprache geschrieben wurde, verhält sich überall gleich
![Page 40: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/40.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 41: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/41.jpg)
Plattform
Plattform:
Compiler, Computer, Betriebssystem
Ziel für uns:
Plattformunabhängige Programme
Voraussetzung dafür: Verzicht auf maschinennahe Features von C++
![Page 42: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/42.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 43: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/43.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 44: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/44.jpg)
Syntax und Semantik
Der ISO/IEC Standard 14822 (1998)
ist das “Gesetz” von C++
legt Grammatik und Bedeutung vonC++ Programmen fest
wird weiterentwickelt: Neuauflage bald
![Page 45: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/45.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 46: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/46.jpg)
Kommentare
hat jedes gute Programm
// ab Doppel-Slash bis Zeilenende
dokumentieren, was das Programm wiemacht
werden vom Compiler ignoriert
![Page 47: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/47.jpg)
Layoutelemente
Kommentare
Leerzeilen, Leerschläge
Einrückungen, die die Programmlogik widerspiegeln
werden vom Compiler ignoriert
![Page 48: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/48.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 49: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/49.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 50: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/50.jpg)
Include-Direktiven
C++ besteht aus
Kernsprache
Standardbibliothek Ein/Ausgabe (Header iostream)
Mathematische Funktionen (cmath)
…
#include <iostream>
macht Ein/Ausgabe verfügbar
![Page 51: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/51.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 52: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/52.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 53: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/53.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 54: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/54.jpg)
Typen und Funktionalität
int :
C++ Typ für ganze Zahlen
entspricht ( , +, ) in der Mathematik
![Page 55: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/55.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 56: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/56.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 57: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/57.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 58: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/58.jpg)
Literale
repräsentieren konstante Werte
haben einen festen Typ
sind “syntaktische Werte”
![Page 59: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/59.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 60: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/60.jpg)
Variablen
repräsentieren wechselnde Werte
haben
Namen
Typ
Wert
Adresse
sind im Programmtext “sichtbar”
![Page 61: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/61.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 62: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/62.jpg)
Konstanten
sind Variablen mit unveränderbarem Wert
const int speed_of_light = 299792458;
![Page 63: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/63.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 64: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/64.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 65: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/65.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 66: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/66.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 67: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/67.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 68: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/68.jpg)
Objekte
repräsentieren Werte im Hauptspeicher
haben
Typ
Adresse
Wert (Speicherinhalt an der Adresse)
![Page 69: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/69.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 70: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/70.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 71: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/71.jpg)
Ausdrücke (Expressions)
repräsentieren Berechnungen
sind primär oder zusammengesetzt (aus anderen Ausdrücken)
![Page 72: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/72.jpg)
Ausdrücke (Expressions)
repräsentieren Berechnungen
sind primär oder zusammengesetzt (aus anderen Ausdrücken und Operationen)
a * a
zusammengesetzter Ausdruck:
![Page 73: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/73.jpg)
Ausdrücke (Expressions)
repräsentieren Berechnungen
sind primär oder zusammengesetzt (aus anderen Ausdrücken und Operationen)
a * a
zusammengesetzter Ausdruck:
Variablenname
![Page 74: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/74.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 75: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/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:
Variablenname, Operatorsymbol,
Variablenname
![Page 76: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/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, Operatorsymbol,
Variablenname
Primäre
Ausdrücke
![Page 77: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/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,
Variablenname
Primäre
Ausdrücke
(a * a) “=“Klammern erlaubt:
![Page 78: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/78.jpg)
Ausdrücke (Expressions)
haben
Typ
Wert
Effekt (potentiell)
![Page 79: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/79.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 80: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/80.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 81: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/81.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 82: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/82.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 83: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/83.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
Beispiel: Variablenname
![Page 84: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/84.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
Beispiel: Variablenname
Andere Beispiele: etwas später...
![Page 85: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/85.jpg)
L-Werte und R-Werte
R-Wert:
Ausdruck, der kein L-Wert ist
![Page 86: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/86.jpg)
L-Werte und R-Werte
R-Wert:
Ausdruck, der kein L-Wert ist
Beispiel: Literal
![Page 87: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/87.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 88: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/88.jpg)
Operatoren
* : Multiplikationsoperator
Operatoren
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 89: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/89.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 90: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/90.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 91: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/91.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 92: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/92.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 93: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/93.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 94: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/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
Beispiel: b = b * b
![Page 95: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/95.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 96: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/96.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
Beispiel: std::cin >> a (meist Tastatureingabe)
![Page 97: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/97.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 98: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/98.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 99: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/99.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
Beispiel: std::cout << a (meist Bildschirmausgabe)
![Page 100: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/100.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 101: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/101.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 102: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/102.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 103: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/103.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 104: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/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"
L-Wert (Ausgabestrom)
((((std::cout << a) << "^8 = ") << b * b) << ".\n")
![Page 105: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/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 (Ausgabestrom)
((((std::cout << a) << "^8 = ") << b * b) << ".\n")
![Page 106: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/106.jpg)
Anweisungen
Bausteine eines C++ Programms
werden (von oben nach unten) ausgeführt und haben Effekte
enden mit einem Semikolon
![Page 107: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/107.jpg)
Ausdrucksanweisungen
haben die Form
expr ;
wobei expr ein Ausdruck ist
Effekt ist der Effekt von expr, der Wert von expr wird ignoriert
![Page 108: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/108.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 109: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/109.jpg)
Deklarationsanweisungen
führen neue Namen im Programm ein
bestehen aus Deklaration + Semikolon
![Page 110: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/110.jpg)
Deklarationsanweisungen
führen neue Namen im Programm ein
bestehen aus Deklaration + Semikolon
Beispiel: int a;
![Page 111: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/111.jpg)
Deklarationsanweisungen
führen neue Namen im Programm ein
bestehen aus Deklaration + Semikolon
können Variablen auch initialisieren
Beispiel: int a;
![Page 112: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/112.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 113: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/113.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 114: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/114.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 115: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/115.jpg)
power8_exact.cpp
Problem mit power8.cpp: grosse
Eingaben werden nicht korrekt behandelt
![Page 116: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/116.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 117: Das erste C++ Programm · 2010-10-08 · Real Programmers vs. Quiche Eaters The Real Programmer ist intuitiver Programmierer (hat‟s im Blut und ist generell Autodidakt) kann mit](https://reader033.vdokument.com/reader033/viewer/2022050519/5fa30d0799db7f3b320829ca/html5/thumbnails/117.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)