Embedded C++ Grundkurs

Programme für embedded Anwendungen sind oft durch besondere Anforderungen gekennzeichnet. Sie haben oft nur einen kleinen Speicher, sollen besonders schnell und zuverlässig sein und dürfen keinen Heap verwenden, damit es nicht zu einer Speicherfragmentierung kommt.Traditionellerweise werden embedded Programme oft in C geschrieben. Mit der Weiterentwicklung der Compiler hat C++ heute in Bezug auf Codegröße und Geschwindigkeit aber keine Nachteile mehr gegenüber C. Dazu tragen auch viele neue Sprachelemente von C++11, C++14, C++17 und C++20 bei, zu denen es in C keine Alternativen gibt und die zu schnellerem und kleinerem Code führen als mit C.Eines der wichtigsten Argumente für C++ ist jedoch, dass Programme für eingebettete Anwendungen immer größer und komplexer werden. Diese Komplexität ist mit den Mitteln von C oft nur noch schwer zu bewältigen. Hier bietet C++ enorme Vorteile, die Entwicklungskosten sparen und zur Zuverlässigkeit der Anwendungen beitragen. Das Seminar stellt grundlegende Sprachelemente und -konzepte von C++ (z.B. objektorientierte Programmierung) unter dem Gesichtspunkt der besonderen Anforderungen an embedded Systeme vor und vergleicht sie mit C-Alternativen.Ein Schwerpunkt liegt auf den neuen Sprachelementen von C++11, C++14, C++17 und C++20, die für embedded Systeme viele Vorteile haben. Neben Sprachelementen werden auch MISRA Regeln für sicherheitsrelevante Systeme betrachtet. HINWEISDer Embedded C++ Grundkurs (VA Nr. 35508) und der Embedded C++ Aufbaukurs (VA Nr. 35313) sind aufeinander abgestimmt. Beide Kurse sind zusammen eine Einführung in die Programmierung von embedded Anwendungen mit C++. Sie richten sich insbesondere an C-Programmierer, die auf C++ umsteigen wollen
Montag, 20. bis Donnerstag, 23. Oktober 20259.00 bis 12.15 und 13.45 bis 17.00 UhrEmbedded SystemeEinsatzbereiche und Besonderheitenspezielle Anforderungen bei embedded AnwendungenÜberblick: C und C++ im VergleichMikroprozessor-Boards (z.B. STM32)Elementare Datentypen und AnweisungenGanzzahldatentypen fester BreiteTrennzeichen bei Zahlliteralen und binäre LiteraleTyp-Inferenz: Implizite Typzuweisungen mit autoInitialisierungslisten und KonversionenTypsichere Initialisierungen mit InitialisierungslistenBitoperationenWert- und ReferenzparameterDie Verwendung von C- und C++-Bibliotheken Konstanten mit const und constexprconstexpr-Funktionen, consteval und constinitInit statement für if/switchstark typisierte AufzählungstypenC-Arrays, std::array und std::vector Funktionszeiger und Interrupt-Funktionen (Interrupt Service Handler-ISR)Zeiger und Smart PointerNamespacesÜberladene Funktionen und OperatorenMit überladenen new- und delete-Operatoren memory-leaks findenBenutzerdefinierte LiteraleObjektorientierte ProgrammierungKlassenElementfunktionen und der this-ZeigerDatenkapselungKonstruktoren und DestruktorenKlassen ohne pointer und die "rule of zero"ElementinitialisiererStandardkonstruktor, Kopierkonstruktor, ZuweisungsoperatorDie Angaben =delete und =defaultKonstante Objekte und ElementfunktionenKonvertierende und explizite KonstruktorenStatische Klassenelementeinline Variablen und static DatenelementeVererbung und KompositionVerdeckte ElementeVirtuelle Funktionen und PolymorphieRein virtuelle Funktionen und Interface-KlassenInterfaces und MehrfachvererbungR-Wert Referenzen und Move-SemantikMove-Semantik in der C++-Standardbibliothek und für eigene Klassen
Veranstaltungs-Code | FB24-354566-60569078 |