Das erste C++ Programm
|
|
|
- Maike Lenz
- vor 9 Jahren
- Abrufe
Transkript
1 Das erste C++ Programm // Program: power8.c // 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;
2 Syntax und Semantik Syntax: Was ist ein C++ Programm? Ist es grammatikalisch korrekt? Semantik: Was bedeutet ein C++ Programm? Welchen Algorithmus realisiert es?
3 Syntax und Semantik Der ISO/IEC Standard (1998) ist das Gesetz von C++ legt Grammatik und Bedeutung von C++ Programmen fest wird weiterentwickelt: Neuauflage 2009
4 Beispiel: power8.c Kommentare/Layout Include-Direktiven Die main-funktion Werte, Effekte Typen, Funktionalität Literale Variablen Bezeichner, Namen Objekte Ausdrücke L- und R-Werte Operatoren Anweisungen
5 Kommentare hat jedes gute Programm // ab Doppel-Slash bis Zeilenende dokumentieren, was das Programm wie macht werden vom Compiler ignoriert
6 Layoutelemente Kommentare Leerzeilen, Leerschläge Einrückungen, die die Programmlogik widerspiegeln werden vom Compiler ignoriert
7 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;}
8 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;} aber uns nicht!
9 Include-Direktiven C++ besteht aus Kernsprache Standardbibliothek Ein/Ausgabe (Header iostream) Mathematische Funktionen (cmath) #include <iostream> macht Ein/Ausgabe verfügbar
10 Die main-funktion hat jedes C++ Programm wird vom Betriebssystem aufgerufen wie mathematische Funktion Argumente (bei power8.c: keine) Rückgabewert (bei power8.c: 0)
11 Die main-funktion hat jedes C++ Programm wird vom Betriebssystem aufgerufen wie mathematische Funktion Argumente (bei power8.c: keine) Rückgabewert (bei power8.c: 0) aber mit zusätzlichemeffekt! Lies Zahl ein und gib 8-te Potenz aus
12 Werte und Effekte bestimmen, was das Programm macht Sind rein semantische Konzepte: Zeichen 0 bedeutet Wert 0 єz std::cin >> a; bedeutet Einlesen einer Zahl Effekt hängen vom Programmzustand (Speicherinhalte / Eingaben) ab
13 Typen und Funktionalität int : C++ Typ für ganze Zahlen entspricht (Z, +, ) in der Mathematik
14 Typen und Funktionalität int : C++ Typ für ganze Zahlen entspricht (Z, +, ) in der Mathematik In C++ hat jeder Typ einen Namen sowie Wertebereich (z.b. ganze Zahlen)
15 Typen und Funktionalität int : C++ Typ für ganze Zahlen entspricht (Z, +, ) in der Mathematik In C++ hat jeder Typ einen Namen sowie Wertebereich (z.b. ganze Zahlen) Funktionalität (z.b. Addition/Multiplikation)
16 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)
17 Literale repräsentieren konkrete Werte haben einen festen Typ sind syntaktische Werte
18 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
19 Variablen repräsentieren wechselnde Werte haben Namen Typ Wert Adresse sind im Programmtext sichtbar
20 Variablen repräsentieren (wechselnde) Werte haben Namen Typ Wert Adresse int a; definiert Variable mit Namen: a Typ: int Wert: undefiniert Adresse: durch Compiler bestimmt sind im Programmtext sichtbar
21 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)
22 Objekte Variablen ohne Namen haben Typ Wert Adresse sind im Programmtext nicht sichtbar können temporäre Namen erhalten
23 Objekte Variablen ohne Namen haben Typ Wert Adresse Ein Programm hat eine feste Anzahl von Variablen. Um eine grössere Anzahl von Werten behandeln zu können, braucht es anonyme Adressen sind im Programmtext nicht sichtbar können temporäre Namen erhalten
24 Ausdrücke (Expressions)
25 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
26 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
27 L-Werte und R-Werte R-Wert: Ausdruck, der kein L-Wert ist
28 L-Werte und R-Werte R-Wert: Ausdruck, der kein L-Wert ist Beispiel: Literal
29 L-Werte und R-Werte R-Wert: Ausdruck, der kein L-Wert ist Beispiel: Literal Jeder L-Wert kann als R-Wert benutzt werden, aber nicht umgekehrt! R-Wert kann seinen Wert nicht ändern
30 Operatoren Operatoren * : Multiplikationsoperator 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)
31 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
32 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
33 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
34 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
35 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
36 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
37 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)
38 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!
39 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
40 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)
41 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!
42 Ausgabeoperator << Warum Rückgabe des Ausgabestroms? erlaubt Bündelung von Ausgaben: std::cout << a << "^8 = " << b * b << ".\n" ist wie folgt logisch geklammert: ((((std::cout << a) << "^8 = ) << b * b) << ".\n ) L-Wert (Ausgabestrom)
43 Ausgabeoperator << Warum Rückgabe des Ausgabestroms? erlaubt Bündelung von Ausgaben: std::cout << a << "^8 = " << b * b << ".\n" ist wie folgt logisch geklammert: ((((std::cout << a) << "^8 = ) << b * b) << ".\n ) L-Wert (Ausgabestrom)
44 Ausgabeoperator << Warum Rückgabe des Ausgabestroms? erlaubt Bündelung von Ausgaben: std::cout << a << "^8 = " << b * b << ".\n" ist wie folgt logisch geklammert: ((((std::cout << a) << "^8 = ) << b * b) << ".\n ) L-Wert (Ausgabestrom)
45 Ausgabeoperator << Warum Rückgabe des Ausgabestroms? erlaubt Bündelung von Ausgaben: std::cout << a << "^8 = " << b * b << ".\n" ist wie folgt logisch geklammert: ((((std::cout << a) << "^8 = ) << b * b) << ".\n ) L-Wert (Ausgabestrom)
46 Anweisungen Bausteine eines C++ Programms werden (von oben nach unten) ausgeführt und haben Effekte enden mit einem Semikolon
47 Ausdrucksanweisungen haben die Form expr ; wobei expr ein Ausdruck ist Effekt ist der Effekt von expr, der Wert von expr wird ignoriert
48 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;
49 Deklarationsanweisungen führen neue Namen im Programm ein bestehen aus Deklaration + Semikolon
50 Deklarationsanweisungen führen neue Namen im Programm ein bestehen aus Deklaration + Semikolon Beispiel: int a;
51 Deklarationsanweisungen führen neue Namen im Programm ein bestehen aus Deklaration + Semikolon Beispiel: int a; können Variablen auch initialisieren
52 Deklarationsanweisungen führen neue Namen im Programm ein bestehen aus Deklaration + Semikolon Beispiel: int a; können Variablen auch initialisieren Beispiel: int b = a * a;
53 Rückgabeanweisungen treten nur in Funktionen auf und sind von der Form return expr ; wobei expr ein Ausdruck ist spezifizieren Rückgabewert der Funktion
54 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;
Was ist Informatik? (Wikipedia, nach dem Duden Informatik )
1 1. Einführung Informatik: Definition und Geschichte, Algorithmen, Turing Maschine, Höhere Programmiersprachen, Werkzeuge der Programmierung, das erste C++ Programm und seine syntaktischen und semantischen
systematischen Verarbeitung von Informationen Was ist Informatik?
13 1. Einführung Informatik: Definition und Geschichte, Algorithmen, Turing Maschine, Höhere Programmiersprachen, Werkzeuge der Programmierung, das erste C++ Programm und seine syntaktischen und semantischen
Ingenieur Tool I. 1. Einführung. Was ist Informatik? Informatik Computer Science. Vorlesung am D-MAVT der ETH Zürich
Ingenieur Tool I Vorlesung am D-MAVT der ETH Zürich Hermann Lehner SS 2018 1. Einführung Informatik: Definition und Geschichte, Algorithmen, Turing Maschine, Höhere Programmiersprachen, Werkzeuge der Programmierung,
systematischen Verarbeitung von Informationen Was ist Informatik?
23 1. Einführung Informatik: Definition und Geschichte, Algorithmen, Turing Maschine, Höhere Programmiersprachen, Werkzeuge der Programmierung, das erste C++ Programm und seine syntaktischen und semantischen
systematischen Verarbeitung von Informationen Was ist Informatik?
14 1. Einführung Informatik: Definition und Geschichte, Algorithmen, Turing Maschine, Höhere Programmiersprachen, Werkzeuge der Programmierung, das erste C++ Programm und seine syntaktischen und semantischen
Die Wissenschaft der systematischen Verarbeitung von Informationen,... insbesondere der automatischen Verarbeitung mit Hilfe von Digitalrechnern.
14 1. Einführung Informatik: Definition und Geschichte, Algorithmen, Turing Maschine, Höhere Programmiersprachen, Werkzeuge der Programmierung, das erste C++ Programm und seine syntaktischen und semantischen
Informatik. Willkommen. Team. Einschreibung in Übungsgruppen. Vorlesung am D-MATH/D-PHYS der ETH Zürich. zur Vorlesung Informatik.
3 Willkommen 4 Informatik zur Vorlesung Informatik am MATH/PHYS Department der ETH Zürich. Vorlesung am D-MATH/D-PHYS der ETH Zürich Malte Schwerhoff, Felix Friedrich Ort und Zeit: Tuesday 13:15-15:00,
Ganze Zahlen. Die Typen int, unsigned int; Auswertung arithmetischer Ausdrücke, arithmetische Operatoren
Ganze Zahlen Die Typen int, unsigned int; Auswertung arithmetischer Ausdrücke, arithmetische Operatoren Celsius to Fahrenheit // Program: fahrenheit.cpp // Convert temperatures from Celsius to Fahrenheit.
3. Wahrheitswerte. Boolesche Funktionen; der Typ bool; logische und relationale Operatoren; Kurzschlussauswertung
115 3. Wahrheitswerte Boolesche Funktionen; der Typ bool; logische und relationale Operatoren; Kurzschlussauswertung Wo wollen wir hin? 116 int a; std::cin >> a; if (a % 2 == 0) std::cout
3. Wahrheitswerte. Boolesche Funktionen; der Typ bool; logische und relationale Operatoren; Kurzschlussauswertung; Assertions und Konstanten
114 3. Wahrheitswerte Boolesche Funktionen; der Typ bool; logische und relationale Operatoren; Kurzschlussauswertung; Assertions und Konstanten Wo wollen wir hin? 115 int a; std::cin >> a; if (a % 2 ==
2. Ganze Zahlen. Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int
74 2. Ganze Zahlen Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int Celsius to Fahrenheit 75 // Program: fahrenheit.cpp
2. Ganze Zahlen int unsigned int
99 2. Ganze Zahlen Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int Celsius to Fahrenheit // Program: fahrenheit.cpp
Die erste C++ Funktion
Die erste C++ Funktion Funktion zur Potenzberechnung // PRE: e >= 0 b!= 0.0 // POST: return value is b^e double pow (double b, int e) { double result = 1.0; if (e < 0) { // b^e = (1/b)^(-e) b = 1.0/b;
Lindenmayer-Systeme: Fraktale rekursiv zeichnen
Lindenmayer-Systeme: Fraktale rekursiv zeichnen Lindenmayer-Systeme: Definition o Alphabet Σ ( Beispiel: {F, +, -} ) Lindenmayer-Systeme: Definition o Alphabet Σ ( Beispiel: {F, +, -} ) o Σ * = Menge aller
Kurze Einführung in die Programmiersprache C++ und in Root
Kurze Einführung in die Programmiersprache C++ und in Root Statistik, Datenanalyse und Simulation; 31.10.2006 Inhalt 1 Einführung in die Programmiersprache C++ Allgemeines Variablen Funktionen 2 1 Einführung
Dynamische Datentypen
Dynamische Datentypen Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel
Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren
Dynamische Datentypen Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Probleme mit Feldern (variabler Länge) man kann sie nicht direkt kopieren und zuweisen Probleme mit
Felder (Arrays) und Zeiger (Pointers) - Teil I
Felder (Arrays) und Zeiger (Pointers) - Teil I Felder: Motivation Wir können jetzt über Zahlen iterieren: for (int i=0; i
Programmieren und Problemlösen
Dennis Komm Programmieren und Problemlösen Einführung in die Vorlesung Frühling 2019 18. Februar 2019 Willkommen zur Vorlesung Material Vorlesungswebseite http://lec.inf.ethz.ch/ppl Programmieren und Problemlösen
Felder (Arrays) und Zeiger (Pointers) - Teil I
Felder (Arrays) und Zeiger (Pointers) - Teil I Feldtypen, Sieb des Eratosthenes, Iteration, Zeigertypen, Zeigerarithmetik, dynamische Speicherverwaltung Felder: Motivation n Wir können jetzt über Zahlen
Informatik. Vorlesung am D-MATH/D-PHYS der ETH Zürich. Malte Schwerhoff, Felix Friedrich HS 2018
1 Informatik Vorlesung am D-MATH/D-PHYS der ETH Zürich Malte Schwerhoff, Felix Friedrich HS 2018 Willkommen 2 zur Vorlesung Informatik am MATH/PHYS Department der ETH Zürich. Ort und Zeit: Tuesday 13:15-15:00,
Unterlagen. CPP-Uebungen-08/
Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen
Die erste C++ Funktion. Funktionsdefinitionen- und Aufrufe, Gültigkeitsbereich, Felder als Funktionsargumente, Bibliotheken, Standardfunktionen
Die erste C++ Funktion Funktionsdefinitionen- und Aufrufe, Gültigkeitsbereich, Felder als Funktionsargumente, Bibliotheken, Standardfunktionen Funktionen kapseln häufig gebrauchte Funktionalität (z.b.
Elementare Datentypen in C++
Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der
6. Fliesskommazahlen II. Fliesskommazahlensysteme; IEEE Standard; Grenzen der Fliesskommaarithmetik; Fliesskomma-Richtlinien; Harmonische Zahlen
163 6. Fliesskommazahlen II Fliesskommazahlensysteme; IEEE Standard; Grenzen der Fliesskommaarithmetik; Fliesskomma-Richtlinien; Harmonische Zahlen Fliesskommazahlensysteme 164 Ein Fliesskommazahlensystem
Einführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
Richtig Rechnen. // Program: fahrenheit.c // Convert temperatures from Celsius to Fahrenheit.
Fliesskommazahlen Richtig Rechnen // Program: fahrenheit.c // Convert temperatures from Celsius to Fahrenheit. #include int main() { // Input std::cout
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable
1 Kapitel 3 Grunddatentypen, Ausdrücke und Variable 2 Eine Datenstruktur besteht aus Grunddatentypen in Java einer Menge von Daten (Werten) charakteristischen Operationen Datenstrukturen werden mit einem
Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3
Michael Jugovac Dominik Kopczynski Jan Quadflieg Till Schäfer Stephan Windmüller Dortmund, den 30. Oktober 2014 Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3 Es können 12 (+5
Algorithmen & Programmierung. Ausdrücke & Operatoren (1)
Algorithmen & Programmierung Ausdrücke & Operatoren (1) Ausdrücke Was ist ein Ausdruck? Literal Variable Funktionsaufruf Ausdruck, der durch Anwendung eines einstelligen (unären) Operators auf einen Ausdruck
Algorithmen zur Datenanalyse in C++
Algorithmen zur Datenanalyse in C++ Hartmut Stadie 16.04.2012 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 1/ 39 Einführung Datentypen Operatoren Anweisungssyntax Algorithmen zur Datenanalyse in
17. Klassen. Überladen von Funktionen. Funktionsüberladung. Operator-Überladung (Operator Overloading) operatorop
Überladen von Funktionen 17. Klassen Funktions- und Operatorüberladung, Datenkapselung, Klassen, Memberfunktionen, Konstruktoren Funktionen sind durch Ihren Namen im Gültigkeitsbereich ansprechbar Es ist
Projekt 3 Variablen und Operatoren
Projekt 3 Variablen und Operatoren Praktisch jedes Programm verarbeitet Daten. Um mit Daten programmieren zu können, muss es Möglichkeiten geben, die Daten in einem Programm zu verwalten und zu manipulieren.
C++ Teil 1. Sven Groß. 9. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 1 9. Apr / 19
C++ Teil 1 Sven Groß IGPM, RWTH Aachen 9. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 1 9. Apr 2015 1 / 19 Organisatorisches Anmeldung zu Vorlesung und Praktikum über CampusOffice heute! Zugang zu
Die Programmiersprache C
Die Programmiersprache C höhere Programmiersprache (mit einigen assemblerähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,
Informatik 1 ( ) D-MAVT F2010. Logik, Schleifen. Yves Brise Übungsstunde 4
Informatik 1 (251-0832-00) D-MAVT F2010 Logik, Schleifen Nachbesprechung Blatt 2 Aufgabe 3c): double(9/2) 4.0 double Zuerst wird die Operation ausgeführt und dann erst die Konversion! Allgemein: Dateiendungen:.c
3 Syntax von Programmiersprachen
3 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ) formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmiersprache Festlegung, wie Programme
Programmier-Befehle - Woche 10
Funktionen Rekursion Selbstaufruf einer Funktion Jeder rekursive Funktionsaufruf hat seine eigenen, unabhängigen Variablen und Argumente. Dies kann man sich sehr gut anhand des in der Vorlesung gezeigten
