C++ (Programmiersprache) - aiMOOC


C++ (Programmiersprache) - aiMOOC
C++ (Programmiersprache)

Einleitung
C++ ist eine Programmiersprache, die besonders dort eingesetzt wird, wo Software schnell, effizient, flexibel und nah an der Hardware arbeiten soll. Du findest C++ in Betriebssystemen, Treibern, eingebetteten Systemen, Computerspielen, Simulationen, Datenbanken, Webbrowsern, Hochleistungsrechnen und vielen technischen Anwendungen. Gleichzeitig ist C++ eine Sprache, die mehrere Programmierparadigmen unterstützt: imperative Programmierung, objektorientierte Programmierung, generische Programmierung und funktional geprägte Techniken.
Dieser aiMOOC führt Dich Schritt für Schritt in die wichtigsten Ideen von C++ ein. Du lernst, wie C++ entstanden ist, wie ein Programm übersetzt wird, wie Variablen, Datentypen, Kontrollstrukturen, Funktionen, Klassen, Objekte, Templates, Speicherverwaltung und die Standardbibliothek zusammenhängen. Ziel ist nicht, jede Einzelheit der Sprache auswendig zu lernen, sondern die Denkweise moderner C++-Programmierung zu verstehen.
Lernziele
Nach diesem aiMOOC kannst Du erklären, was C++ von vielen anderen Programmiersprachen unterscheidet. Du kannst den Weg vom Quellcode zum ausführbaren Programm beschreiben, einfache C++-Programme lesen, wichtige Bestandteile wie Compiler, Linker, Headerdateien, Namespaces, Klassen, Objekte, Zeiger, Referenzen, Templates und STL einordnen. Außerdem kannst Du bewerten, warum moderne C++-Entwicklung besonderen Wert auf Typsicherheit, Ressourcenmanagement, Tests, Debugging und klare Softwarearchitektur legt.
Geschichte und Entwicklung

C++ wurde von Bjarne Stroustrup ab Ende der 1970er-Jahre in den Bell Labs entwickelt. Die Sprache entstand aus dem Wunsch, die Effizienz und Systemnähe von C mit stärkeren Mitteln zur Strukturierung großer Programme zu verbinden. Eine frühe Bezeichnung war C with Classes, weil Klassen und objektorientierte Konzepte zunächst im Mittelpunkt standen. Später kamen viele weitere Sprachmittel hinzu, darunter Templates, Ausnahmebehandlung, Namensräume, RAII, Lambda-Ausdrücke, Concepts, Module und eine umfangreiche Standardbibliothek.
C++ wird durch einen internationalen Standardisierungsprozess weiterentwickelt. Die erste ISO-Norm erschien 1998. Wichtige moderne Fassungen sind C++11, C++14, C++17, C++20 und C++23. Der aktuelle veröffentlichte ISO-Standard ist C++23, formal ISO/IEC 14882:2024. Viele Entwicklerinnen und Entwickler sprechen von Modern C++, wenn sie C++ ab C++11 meinen, weil seitdem viele Sprachmittel eingeführt wurden, die sichereren, klareren und ausdrucksstärkeren Code ermöglichen.
Grundidee von C++
C++ verbindet zwei Ziele, die auf den ersten Blick schwer zusammenpassen: Einerseits erlaubt die Sprache sehr genaue Kontrolle über Speicher, Laufzeit, Datenstrukturen und Hardware. Andererseits bietet sie mächtige Abstraktionen, mit denen große Programme übersichtlich aufgebaut werden können. Eine zentrale Leitidee ist die Zero-Overhead-Abstraktion: Gute Abstraktionen sollen im Idealfall keinen unnötigen Laufzeitaufwand verursachen. Wenn Du etwa eine Klasse, ein Template oder einen Container nutzt, soll daraus effizienter Maschinencode entstehen können.
C++ ist daher keine reine Anfängersprache. Sie belohnt sorgfältiges Denken über Algorithmen, Datenmodelle, Schnittstellen, Speicherverwaltung und Fehlerbehandlung. Genau deshalb eignet sie sich gut, um grundlegende Konzepte der Informatik zu verstehen.
Vom Quellcode zum Programm
Ein C++-Programm wird in der Regel nicht direkt ausgeführt. Zuerst schreibst Du Quellcode in Dateien, zum Beispiel mit der Endung .cpp oder .hpp. Dann verarbeitet ein Präprozessor Anweisungen wie #include. Anschließend übersetzt ein Compiler den Quellcode in Objektcode. Ein Linker verbindet mehrere Programmteile und Bibliotheken zu einem ausführbaren Programm.
Ein sehr kleines Programm sieht so aus:
#include <iostream>
int main() {
std::cout << "Hallo, C++!\n";
return 0;
}
Die Zeile #include <iostream> bindet Funktionen für Ein- und Ausgabe ein. Die Funktion main ist der Startpunkt vieler C++-Programme. std::cout schreibt Text in die Konsole. Der Rückgabewert 0 bedeutet üblicherweise, dass das Programm erfolgreich beendet wurde.
Werkzeuge
Für die Entwicklung brauchst Du einen Editor oder eine IDE, einen Compiler, oft ein Build-System und Werkzeuge für Versionsverwaltung, Tests und Fehlersuche. Häufig genutzte Compiler sind GCC, Clang und Microsoft Visual C++. Ein einfaches Kompilieren auf der Kommandozeile kann so aussehen:
g++ -std=c++23 -Wall -Wextra -pedantic main.cpp -o programm ./programm
Die Option -std=c++23 wählt eine Sprachfassung. Die Warnoptionen -Wall und -Wextra helfen Dir, mögliche Fehler früh zu erkennen. In professionellen Projekten werden zusätzlich CMake, Continuous Integration, Unit-Tests, Profiler und statische Codeanalyse eingesetzt.
{{#ev:youtube| https://www.youtube.com/watch?v=NReDubvNjRg |500|center}}
Datentypen, Variablen und Ausdrücke
In C++ hat jeder Ausdruck einen Datentyp. Beispiele sind int für ganze Zahlen, double für Gleitkommazahlen, bool für Wahrheitswerte und char für Zeichen. Mit der Standardbibliothek kommen viele weitere Typen hinzu, zum Beispiel std::string für Zeichenketten und std::vector für dynamische Folgen von Elementen.
#include <iostream>
#include <string>
int main() {
int alter = 16;
double temperatur = 21.5;
bool bestanden = true;
std::string name = "Ada";
std::cout << name << " ist " << alter << " Jahre alt.\n";
}
C++ ist statisch typisiert. Das bedeutet, dass viele Typfehler bereits beim Kompilieren entdeckt werden können. Mit auto kann der Compiler den Typ aus dem Zusammenhang ableiten. Das ist praktisch, sollte aber so eingesetzt werden, dass der Code verständlich bleibt.
Kontrollstrukturen
Mit Kontrollstrukturen entscheidest Du, welche Anweisungen ausgeführt werden. Zu den wichtigsten gehören if, else, switch, for, while und do while. Sie bilden die Grundlage für Algorithmen.
#include <iostream>
int main() {
int zahl = 7;
if (zahl % 2 == 0) {
std::cout << "gerade\n";
} else {
std::cout << "ungerade\n";
}
for (int i = 1; i <= 5; ++i) {
std::cout << i << "\n";
}
}
Achte bei Schleifen immer darauf, dass die Abbruchbedingung erreichbar ist. Endlosschleifen können sinnvoll sein, etwa in Echtzeitsystemen, sind aber häufig ein Zeichen für einen Fehler.
Funktionen und Schnittstellen
Funktionen zerlegen ein Programm in überschaubare Einheiten. Eine gute Funktion hat eine klare Aufgabe, einen verständlichen Namen und möglichst wenige versteckte Abhängigkeiten. Funktionsparameter können per Wert, per Referenz oder per Zeiger übergeben werden.
#include <iostream>
int quadrat(int x) {
return x * x;
}
void begruesse(const std::string& name) {
std::cout << "Hallo, " << name << "!\n";
}
const bedeutet, dass ein Wert nicht verändert werden soll. Die Kombination const std::string& übergibt eine Zeichenkette effizient, ohne sie zu kopieren, und schützt sie zugleich vor Veränderung. Solche Entscheidungen sind typisch für C++: Du denkst sowohl über Bedeutung als auch über Effizienz nach.
Objektorientierte Programmierung
Objektorientierte Programmierung ordnet Daten und Verhalten in Klassen und Objekten. Eine Klasse ist ein Bauplan. Ein Objekt ist eine konkrete Instanz dieses Bauplans. C++ unterstützt Kapselung, Vererbung und Polymorphie. Moderne C++-Entwicklung nutzt Vererbung jedoch gezielt und bevorzugt oft klare Schnittstellen, einfache Werttypen und Komposition.
#include <iostream>
#include <string>
class Konto {
private:
std::string inhaber;
double saldo;
public:
Konto(std::string name, double start)
: inhaber{name}, saldo{start} {}
void einzahlen(double betrag) {
if (betrag > 0) {
saldo += betrag;
}
}
double kontostand() const {
return saldo;
}
};
int main() {
Konto k{"Mina", 100.0};
k.einzahlen(25.0);
std::cout << k.kontostand() << "\n";
}
Die privaten Daten einer Klasse sind von außen nicht direkt zugänglich. Dadurch entsteht Kapselung: Die Klasse kontrolliert selbst, wie ihr Zustand verändert wird. Das verbessert Wartbarkeit und schützt vor ungültigen Zuständen.
Speicher, Zeiger und Referenzen
C++ erlaubt eine sehr genaue Kontrolle über Speicherverwaltung. Das ist mächtig, kann aber fehleranfällig sein. Ein Zeiger speichert eine Speicheradresse. Eine Referenz ist ein alternativer Name für ein bestehendes Objekt. Fehler wie Zugriff auf freigegebenen Speicher, Speicherlecks oder ungültige Zeiger gehören zu den klassischen Problemen systemnaher Programmierung.
Moderne C++-Programme vermeiden unnötige rohe Zeiger für Besitzverhältnisse. Stattdessen werden RAII und Smart Pointer genutzt. RAII steht für Resource Acquisition Is Initialization. Die Grundidee lautet: Eine Ressource wird an die Lebensdauer eines Objekts gebunden. Wenn das Objekt zerstört wird, wird die Ressource automatisch freigegeben.
#include <memory>
struct Sensor {
void messen() {}
};
int main() {
auto sensor = std::make_unique<Sensor>();
sensor->messen();
}
std::unique_ptr drückt aus, dass genau ein Objekt für eine Ressource verantwortlich ist. Das ist klarer und sicherer als manuelles new und delete. In gutem modernem C++ kommen direkte Speicherfreigaben im Anwendungscode selten vor.
Standardbibliothek und STL
Die C++-Standardbibliothek bietet viele Bausteine, die Du nicht selbst neu erfinden musst. Besonders wichtig sind Container, Iteratoren, Algorithmen, Zeichenketten, Ein- und Ausgabe, Zeitfunktionen, Threads, Dateisystemzugriff und Hilfstypen.
Ein klassisches Beispiel ist die Zusammenarbeit von std::vector, Iteratoren und std::sort:
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> zahlen {4, 1, 3, 2};
std::sort(zahlen.begin(), zahlen.end());
for (int zahl : zahlen) {
std::cout << zahl << " ";
}
}
std::vector ist ein dynamischer Sequenzcontainer. std::sort ist ein Algorithmus. Die Verbindung entsteht über Iteratoren. Dieses Zusammenspiel ist typisch für generische Programmierung in C++: Algorithmen werden so geschrieben, dass sie mit vielen passenden Datentypen funktionieren.
Templates und generische Programmierung
Templates ermöglichen generische Programmierung. Du kannst Funktionen und Klassen so formulieren, dass sie für verschiedene Typen funktionieren. Dadurch lassen sich wiederverwendbare Bibliotheken entwickeln.
template <typename T>
T maximum(T a, T b) {
return (a < b) ? b : a;
}
Die Funktion maximum kann für verschiedene Typen verwendet werden, sofern diese Typen mit dem Operator < vergleichbar sind. Seit C++20 können Concepts solche Anforderungen genauer ausdrücken. Das verbessert Fehlermeldungen und macht Schnittstellen verständlicher.
Fehlerbehandlung
Fehler können in C++ auf verschiedene Weise behandelt werden. Einfache Funktionen geben manchmal Fehlercodes zurück. Für außergewöhnliche Situationen gibt es Exceptions. Außerdem werden in modernem C++ häufig Typen wie std::optional oder std::expected genutzt, um fehlende Werte oder erwartbare Fehler explizit darzustellen.
Wichtig ist, zwischen Programmierfehlern und Laufzeitproblemen zu unterscheiden. Ein ungültiger Index in einem Array ist oft ein Programmierfehler. Eine nicht vorhandene Datei ist ein erwartbares Laufzeitproblem. Gute C++-Programme machen solche Unterschiede sichtbar.
Sicherheit und typische Fehlerquellen
C++ gibt Dir viel Freiheit. Freiheit bedeutet aber Verantwortung. Typische Fehlerquellen sind nicht initialisierte Variablen, ungültige Zeiger, Datenrennen in nebenläufigen Programmen, Zugriff außerhalb von Arraygrenzen, falsche Besitzverhältnisse und undefiniertes Verhalten. Undefiniertes Verhalten bedeutet, dass der Sprachstandard kein bestimmtes Ergebnis garantiert. Das Programm kann scheinbar funktionieren, abstürzen oder später an ganz anderer Stelle Fehler zeigen.
Hilfreiche Gegenmaßnahmen sind klare Schnittstellen, RAII, Container der Standardbibliothek, strikte Compilerwarnungen, Unit-Tests, Code Reviews, statische Analyse, Sanitizer und einfache Architektur. Eine gute Faustregel lautet: Schreibe Code zuerst korrekt und verständlich, optimiere danach gezielt mit Messdaten.
Moderne C++-Praxis
Modern C++ bedeutet nicht, jede neue Sprachfunktion sofort zu verwenden. Es bedeutet, die Sprache so zu nutzen, dass Code sicher, lesbar, wartbar und effizient wird. Dazu gehören klare Besitzverhältnisse, möglichst wenige globale Zustände, geeignete Standardcontainer, kleine Funktionen, sprechende Namen und Tests.
- Standardbibliothek nutzen: Verwende bewährte Container und Algorithmen, statt grundlegende Datenstrukturen unnötig selbst zu schreiben.
- RAII anwenden: Binde Ressourcen an Objektlebensdauern, damit Freigaben automatisch erfolgen.
- Const Correctness beachten: Markiere Werte und Funktionen als const, wenn sie nichts verändern sollen.
- Tests schreiben: Prüfe nicht nur Einzelfälle, sondern auch Randfälle und fehlerhafte Eingaben.
- Debugging lernen: Nutze Compilerwarnungen, Debugger, Sanitizer und kleine reproduzierbare Beispiele.
Einsatzgebiete
C++ wird besonders häufig eingesetzt, wenn Leistung, Portabilität, kontrollierte Speicherverwaltung oder vorhandene C++-Bibliotheken wichtig sind. Beispiele sind Game Engines, Robotik, Automobilsoftware, Medizintechnik, Finanzinformatik, wissenschaftliche Simulation, Audioverarbeitung, Bildverarbeitung, Browser-Engines und Systemsoftware.
Gleichzeitig ist C++ nicht für jedes Projekt automatisch die beste Wahl. Für einfache Webanwendungen, schnelle Prototypen oder datenorientierte Skripte können Sprachen wie Python, JavaScript, Java, C# oder Go geeigneter sein. Eine gute Entwicklerentscheidung berücksichtigt Teamwissen, Anforderungen, Wartbarkeit, Sicherheit und vorhandene Werkzeuge.
Vergleich mit C
C++ ist historisch eng mit C verbunden, aber nicht einfach nur C mit Klassen. C++ besitzt ein eigenes Typsystem, eine große Standardbibliothek, Templates, Exceptions, RAII, überladbare Operatoren, Namensräume, Referenzen und viele weitere Sprachmittel. Viele C-Programme lassen sich mit Anpassungen in C++ übersetzen, doch idiomatisches C++ sieht anders aus als idiomatisches C.
Ein wichtiger Unterschied liegt im Umgang mit Ressourcen. In C werden Ressourcen häufig explizit mit Funktionen wie malloc und free verwaltet. In modernem C++ wird Ressourcenverwaltung möglichst in Objekte verlagert, sodass der Destruktor automatisch aufräumt.
Mini-Projekt: Notenstatistik
Ein gutes erstes C++-Projekt ist eine kleine Notenstatistik. Du liest mehrere Zahlen ein, speicherst sie in einem std::vector, berechnest Minimum, Maximum und Durchschnitt und gibst die Ergebnisse aus. Dabei übst Du Eingabe, Container, Schleifen, Funktionen und Fehlerbehandlung.
Mögliche Erweiterungen sind eine Sortierung der Noten, eine Ausgabe als einfache Tabelle, das Speichern in einer Datei oder eine Trennung in mehrere Dateien. So lernst Du nicht nur Syntax, sondern auch Softwareentwurf.
Lernvideo zur Einordnung
Das folgende Video eignet sich zur Vertiefung, wenn Du die Entwicklung und Ziele von modernem C++ aus Sicht der Fachcommunity einordnen möchtest.
{{#ev:youtube| https://www.youtube.com/watch?v=15QF2q66NhU |500|center}}
Zusammenfassung
C++ ist eine leistungsfähige, standardisierte und vielseitige Programmiersprache. Sie verbindet systemnahe Kontrolle mit abstrakten Sprachmitteln. Besonders wichtig sind Compiler, Datentypen, Funktionen, Klassen, Objekte, Templates, RAII, Standardbibliothek und ein sorgfältiger Umgang mit Speicher. Wer C++ lernt, lernt nicht nur eine Sprache, sondern auch viele Grundfragen der Informatik: Wie wird Code übersetzt? Wie werden Daten gespeichert? Wie entwirft man stabile Schnittstellen? Wie erreicht man Effizienz, ohne Verständlichkeit und Sicherheit zu verlieren?
Interaktive Aufgaben
Quiz: Teste Dein Wissen
Wer entwickelte C++ maßgeblich? (Bjarne Stroustrup) (!Dennis Ritchie) (!Tim Berners-Lee) (!Guido van Rossum)
Wofür ist C++ besonders bekannt? (Effiziente und systemnahe Programmierung) (!Automatische Gestaltung von Webseiten) (!Ausschließlich statistische Tabellenkalkulation) (!Nur grafische Bildbearbeitung)
Welcher Standard ist der aktuell veröffentlichte ISO-Standard von C++? (C++23 beziehungsweise ISO IEC 14882 2024) (!C++98 als einzige gültige Fassung) (!HTML5) (!Python 3)
Welche Aufgabe hat ein Compiler? (Er übersetzt Quellcode in eine maschinennahe Form) (!Er ersetzt automatisch jedes Programm durch eine Webseite) (!Er löscht alle Variablen vor dem Start) (!Er zeichnet Benutzeroberflächen ohne Code)
Was ist std::vector in C++? (Ein dynamischer Sequenzcontainer) (!Ein Betriebssystemkern) (!Ein Bildformat) (!Ein Netzwerkprotokoll)
Wofür steht RAII in der C++-Praxis? (Ressourcen werden an Objektlebensdauern gebunden) (!Alle Variablen sind automatisch global) (!Programme laufen ohne Compiler) (!Jeder Fehler wird ignoriert)
Wozu dienen Templates? (Sie ermöglichen generische Programmierung mit verschiedenen Typen) (!Sie schalten den Prozessor aus) (!Sie ersetzen jede Schleife durch eine Datei) (!Sie verhindern die Nutzung von Funktionen)
Welche Bibliothek wird für std::cout typischerweise eingebunden? (iostream) (!vector) (!thread) (!filesystem)
Was beschreibt ein Namespace? (Einen Namensbereich zur Vermeidung von Konflikten) (!Einen festen Speicherchip) (!Eine Art von Bildschirm) (!Eine Musikdatei)
Was ist undefiniertes Verhalten? (Ein Verhalten ohne garantierte Bedeutung im Sprachstandard) (!Eine besonders schnelle Sortiermethode) (!Ein offizieller Kommentarstil) (!Ein sicherer Weg zur Fehlerbehandlung)
Memory
| Compiler | übersetzt Quellcode |
| Linker | verbindet Programmteile |
| Klasse | Bauplan für Objekte |
| Objekt | konkrete Instanz |
| Template | Schablone für Typen |
| RAII | Ressource an Objektlebensdauer |
| Vektor | dynamischer Sequenzcontainer |
| Iterator | Zugriff auf Container-Elemente |
Drag and Drop
| Ordne die richtigen Begriffe zu. | Thema |
|---|---|
| Quellcode | Text des Programms |
| Präprozessor | Vorbereitung von Includes und Makros |
| Compiler | Übersetzung in Objektcode |
| Linker | Zusammenfügen zum ausführbaren Programm |
| Laufzeit | Ausführung des Programms |
Kreuzworträtsel
| Stroustrup | Wer entwickelte C++ maßgeblich? |
| Compiler | Welches Werkzeug übersetzt Quellcode? |
| Klasse | Wie heißt ein Bauplan für Objekte? |
| Template | Wie heißt eine Vorlage für generischen Code? |
| Iterator | Was verbindet Container und Algorithmen? |
| Namespace | Was hilft Namenskonflikte zu vermeiden? |
LearningApps
Lückentext
Offene Aufgaben
Leicht
- Hallo-Welt-Programm: Schreibe ein C++-Programm, das Deinen Namen, Dein Lernziel und eine kurze Begrüßung ausgibt.
- Variablen: Erstelle ein Programm, das Alter, Lieblingszahl und Lieblingsfach speichert und als ganzen Satz ausgibt.
- Kontrollstrukturen: Schreibe ein Programm, das prüft, ob eine eingegebene Zahl gerade oder ungerade ist.
- Lerntagebuch: Beschreibe in eigenen Worten, was Compiler, Linker und Laufzeit bedeuten.
Standard
- Funktionen: Entwickle mehrere Funktionen für einen Taschenrechner, zum Beispiel Addition, Subtraktion, Multiplikation und Division.
- Container: Speichere mehrere Messwerte in einem std::vector und berechne Durchschnitt, Minimum und Maximum.
- Klassen: Modelliere eine Klasse Buch mit Titel, Autorin oder Autor, Seitenzahl und einer Methode zur Ausgabe.
- Fehlerbehandlung: Ergänze ein Programm so, dass ungültige Eingaben erkannt und verständlich gemeldet werden.
Schwer
- Mini-Projekt: Entwickle eine kleine Notenverwaltung mit Eingabe, Speicherung, Sortierung und statistischer Auswertung.
- Architektur: Teile ein Programm in mehrere Dateien auf und erkläre, welche Aufgaben Headerdateien und Quelldateien übernehmen.
- RAII: Recherchiere ein Beispiel für Ressourcenmanagement und erkläre, warum RAII sicherer ist als manuelles Freigeben.
- Code Review: Analysiere ein eigenes C++-Programm nach Lesbarkeit, Fehleranfälligkeit, Speicherverwaltung und Testbarkeit.

| <inputbox>
type=create break=no preload=CHAT GPT TEXT HIER EINFÜGEN default= width=30 placeholder= Dein MOOC Titel buttonlabel=MOOC erstellen </inputbox> |

Lernkontrolle
- Programmierentscheidung: Vergleiche C++ mit einer anderen Programmiersprache, die Du kennst. Begründe, für welche Art von Projekt Du welche Sprache wählen würdest.
- Fehleranalyse: Erkläre an einem selbst gewählten Beispiel, warum ein Programm trotz erfolgreicher Kompilierung falsche Ergebnisse liefern kann.
- Softwareentwurf: Entwirf eine kleine Anwendung und beschreibe, welche Klassen, Funktionen und Datenstrukturen Du verwenden würdest.
- Speicherverwaltung: Erkläre, warum automatische Ressourcenverwaltung durch RAII in großen Projekten wichtig ist.
- Algorithmisches Denken: Entwickle einen Algorithmus zum Sortieren oder Suchen und beschreibe, wie Du ihn mit Standardbibliotheksfunktionen vergleichen würdest.
- Qualitätssicherung: Plane Tests für ein C++-Programm und begründe, welche Randfälle besonders wichtig sind.
Lernnachweis
Der Lernnachweis zeigt, dass Du zentrale Zusammenhänge von C++ anwenden und reflektieren kannst. Er soll ohne externe Medien, Skripte oder Einbettungen auskommen und sich auf eigenen Code, Begründungen und nachvollziehbare Tests stützen.
- Projektmappe: Reiche ein kleines C++-Projekt mit Quellcode, kurzer Anleitung und Beschreibung der wichtigsten Entwurfsentscheidungen ein.
- Code-Kommentare: Erkläre im Code oder in einer Begleitdatei, welche Funktionen, Klassen und Datenstrukturen Du bewusst gewählt hast.
- Testprotokoll: Dokumentiere mindestens fünf Testfälle, darunter Normalfälle, Randfälle und fehlerhafte Eingaben.
- Reflexion: Beschreibe, welche C++-Konzepte Dir leicht gefallen sind und welche Risiken Du künftig besonders beachten musst.
- Transfer: Begründe, ob C++ für Dein gewähltes Projekt geeignet ist oder ob eine andere Programmiersprache sinnvoller wäre.
OERs zum Thema
Links
aiMOOC-Projekte
Schulfach+


aiMOOCs



aiMOOC Projekte


THE MONKEY DANCE





{{#ev:youtube | https://youtu.be/rFhZlg38Zf8?si=9KdMNZYRkRD81YTo%7C 500 | center}}
|
{{#ev:youtube | https://youtu.be/Ob7etf9QuBo?si=t_NBA71bWg3Rq3LI%7C 500 | center}}
| <inputbox>
type=create break=no preload=MOOCit Vorlage default= width=30 placeholder= Dein MOOC Titel buttonlabel=MOOC erstellen </inputbox> |