Skip to main content
Top

2022 | Book

Programmieren in C++ für Elektrotechniker und Mechatroniker

Das Lern- und Übungsbuch

insite
SEARCH

About this book

Das Buch Programmieren in C++ für Elektrotechniker und Mechatroniker bietet einen Einstieg in die moderne Softwareentwicklung für Studierende der Ingenieurwissenschaften. Dabei wird ein durchgängiger Ansatz verfolgt, der, beginnend mit den Grundlagen der Programmierung, bis hin zu weiterführenden Themen, wie Hardware-nahe Programmierung, zahlreiche Themengebiete betrachtet und Studierende nicht nur für die Prüfung, sondern auch für den Arbeitsalltag vorbereitet. Da man Programmieren nur durch Üben erlernen kann, liefert das Buch einen umfangreichen Aufgabenkatalog.

Table of Contents

Frontmatter

Einführung

Frontmatter
Kapitel 1. Was ist Informatik?

Der Begriff Informatik (engl. computer science) lässt sich auf vielfältige Weise mit unterschiedlicher Tiefe und Breite definieren. In diesem Kapitel wird der Begriff grundlegend bestimmt, um eine gemeinsames Verständnis zu entwickeln.

Markus A. Mathes, Jochen Seufert
Kapitel 2. Programmierparadigmen

Ein Programmierparadigma beschreibt die prinzipielle Vorgehensweise, wie eine Problemstellung durch Entwicklung eines Programms gelöst werden kann.

Markus A. Mathes, Jochen Seufert
Kapitel 3. Die Programmiersprache C

Die Programmiersprache C $${+}{+}$$ + + wurde von dem dänischen Mathematiker und Informatiker Bjarne Stroustrup entworfen und initial implementiert. Zu Beginn wurde C $${+}{+}$$ + + noch „C with Classes“ genannt, um auf die objektorientierte Erweiterung der Sprache C hinzudeuten. Später wurde sie dann in C $${+}{+}$$ + + umbenannt. Das doppelte Plus ist eine Anspielung auf den Inkrement-Operator, den wir noch kennenlernen werden.

Markus A. Mathes, Jochen Seufert
Kapitel 4. Informationsdarstellung

Alle Informationen innerhalb eines Computers werden letztendlich als Zahlen kodiert. Diese Zahlen können unterschiedlich dargestellt werden: dezimal, binär, hexadezimal und oktal. Die vier Darstellungen unterscheiden sich in der verwendeten Basis zur Darstellung der Zahlen und den verfügbaren Ziffern.

Markus A. Mathes, Jochen Seufert
Kapitel 5. Übung: Einstieg

Dieses Kapitel enthält Übungen, um Ihnen den Einstieg in die Programmierung zu erleichtern und Vorbereitungen zu treffen.

Markus A. Mathes, Jochen Seufert

Prozedurale Programmierung

Frontmatter
Kapitel 6. Hello World!

Das erste Programm generell und in jeder neuen Programmiersprache ist traditionell das sogenannte „Hello World!“ Programm. In diesem Kapitel entwicklen wir anhand von NetBeans dieses Programm und untersuchen dessen funktionale Bestandteile.

Markus A. Mathes, Jochen Seufert
Kapitel 7. Einfache C++ Programme

In diesem Abschnitt betrachten wir einige einfache C $$++$$ + + Programme und diskutieren anhand derer grundlegende Konzepte. Dabei verzichten wir bewusst auf eine formale Einführung der Sprachkonstrukte von C $$++$$ + + , sondern erklären viele Zusammenhänge an konkreten Beispielen

Markus A. Mathes, Jochen Seufert
Kapitel 8. Übung: Einfache Programme

Dieses Kapitel enthält Übungen, um erste Schritte in der Programmierung anhand einfacher Problemstellungen zu machen. Dadurch können Sie ein erstes grundlegendes Verständnis des Programmierens erwerben.

Markus A. Mathes, Jochen Seufert
Kapitel 9. Elementare Datentypen

C $$++$$ + + gehört zu den typisierten Programmiersprachen, d. h. jeder Ausdruck und jede Variable muss einen definierten Datentyp besitzen. Außerdem müssen die Datentypen von Funktionsparametern und -rückgabewerten definiert werden. Auch der Datentyp eines Ausdrucks muss eineindeutig ableitbar sein.

Markus A. Mathes, Jochen Seufert
Kapitel 10. Operatoren

In imperativen Programmiersprachen wie C $${++}$$ + + kann man sogenannte Ausdrücke (engl. expressions) formulieren, die eine auswertbare Berechnung darstellen. Mithilfe von Operatoren lassen sich ein, zwei oder drei Operanden zu einem Ausdruck verbinden, der ausgewertet werden kann.

Markus A. Mathes, Jochen Seufert
Kapitel 11. Anweisungen

Jedes C++ Programm ist eine endliche Sequenz von Anweisungen (engl. statements), die Schritt für Schritt ausgeführt werden. In diesem Kapitel betrachten wir die unterschiedlichen Arten von Anweisungen und was mit diesen umgesetzt werden kann.

Markus A. Mathes, Jochen Seufert
Kapitel 12. Übung: Datentypen, Operatoren, Anweisungen

In diesem Kapitel üben Sie anhand zahlreicher Aufgaben die Verwendung der unterschiedlichen Datentypen, Operatoren und Anweisungen ein. Dadurch erlangen Sie ein fundiertes Wissen der elementaren C++ Syntax.

Markus A. Mathes, Jochen Seufert
Kapitel 13. Zeiger und Zeigerarithmetik

In diesem Kapitel lernen wir, wie Zeiger (engl. pointer) verwendet werden können, um verschiedene Datentypen zu referenzieren und direkt auf den Hauptspeicher zuzugreifen. Ferner wird gezeigt, dass Zeiger auch für Berechnungen im Rahmen der sogenannten Zeigerarithmetik verwendet werden können.

Markus A. Mathes, Jochen Seufert
Kapitel 14. Felder und Zeichenketten

In diesem Kapitel werden Felder (engl. arrays) und Zeichenketten (engl. strings) besprochen. Ein Feld erlaubt es mehrere Variablen des gleichen Datentyps zusammenhängend zu deklarieren. Zeichenketten dienen der Verarbeitung von textuellen Daten.

Markus A. Mathes, Jochen Seufert
Kapitel 15. Funktionen

Eine Funktion kapselt eine in sich abgeschlossene Funktionalität, die an mehreren Stellen innerhalb Ihres Programms verwendet werden kann. Funktionen dienen der Modularisierung von Programmen und erhöhen dadurch die Wiederverwendbarkeit von Code.

Markus A. Mathes, Jochen Seufert
Kapitel 16. Übung: Arrays, Strings, Funktionen

Die Übungen in diesem Kapitel befassen sich mit Feldern und Zeichenketten. Ferner wird die Verwendung von Funktionen zur Strukturierung Ihres Programms eingeübt.

Markus A. Mathes, Jochen Seufert
Kapitel 17. Zusammengesetzte Datentypen

In diesem Kapitel werden Strukturen erläutert, welche die Grundlage zusammengesetzter Datentypen bilden. Anhand der Programmierung einer verketteten Liste wird die praktische Nutzung von Strukturen erläutert.

Markus A. Mathes, Jochen Seufert
Kapitel 18. Übung: Algorithmen

In diesem Kapitel behandeln wir algorithmische Problemstellungen anhand verschiedener Übungen. Sie müssen nun das Grundlagenwissen aus den vorherigen Kapiteln kombinieren, um eine adäquate Lösung zu konstruieren.

Markus A. Mathes, Jochen Seufert

Objektorientierte Programmierung

Frontmatter
Kapitel 19. Grundkonzepte

Die objektorientierte Programmierung (OOP) ist ein Programmierparadigma, das wesentliche konzeptionelle Unterschiede zur prozeduralen Programmierung aufweist und deren Nachteile zu verhindern sucht. In diesem Kapitel werden die grundlegenden Begriffe der OOP erläutert.

Markus A. Mathes, Jochen Seufert
Kapitel 20. Fallbeispiel: GeoShape

In diesem Kapitel werden wir nun die verschiedenen Konzepte der Objektorientierung anhand eines konkreten Fallbeispiels Schritt für Schritt betrachten. Wir nehmen an, dass wir verschiedene geometrische Formen implementieren wollen, die sowohl gemeinsame, als auch unterschiedliche Merkmale haben können.

Markus A. Mathes, Jochen Seufert
Kapitel 21. Übung: OOP

In diesem Kapitel wird die OOP anhand zweier Übungen vertieft. Dabei bedienen wir uns sowohl einem fiktiven Setting, welches modelliert und implementiert werden soll, als auch einer Problemstellung des täglichen (Entwickler-)Lebens.

Markus A. Mathes, Jochen Seufert
Kapitel 22. Ausnahmen

Eine Ausnahme (engl. exception) ist ein objektorientierter Ansatz, um auf Ausnahmesituationen und Sonderfälle – wie beispielsweise Fehleingaben des Benutzers – zu reagieren.

Markus A. Mathes, Jochen Seufert
Kapitel 23. Überladen von Operatoren

C++ erlaubt das Überladen, d. h. Redefinieren von Operatoren. In diesem Kapitel sehen wir anhand eines Beispiels, wie Operatoren für eine Klasse Vektor überladen werden können.

Markus A. Mathes, Jochen Seufert
Kapitel 24. Generische Klassen

In C $${+}{+}$$ + + ist es möglich generische Klassen zu definieren, d. h. Klassen, die mit einem beliebigen Datentyp arbeiten können und nicht auf einen speziellen Datentyp festgelegt sind. Als ein Beispiel für generische Klassen wird in diesem Kapitel die Implementierung eines Stapelspeicher (engl. stack) betrachtet.

Markus A. Mathes, Jochen Seufert
Kapitel 25. Datei-I/O

Die Ein- und Ausgabe von Daten in C++ basiert auf dem Konzept der Ein- und Ausgabeströme (engl. I/O streams). Ein Eingabestrom ist eine abstrakte Quelle zum Lesen von Daten – ein Ausgabestrom eine abstrakte Quelle zum Schreiben von Daten. Dabei spielt es keine Rolle, welcher Art der Ein- bzw. Ausgabestrom ist. In diesem Kapitel erklären wir den Umgang mit I/O streams. Ein Schwerpunkt liegt dabei auf den sog. I/O file streams, die den Datenaustausch zwischen C++-Programmen und externen Dateien bewerkstelligen (File Handling).

Markus A. Mathes, Jochen Seufert
Kapitel 26. Übung: Datei-I/O

Im Rahmen dieses Kapitels wird anhand verschiedener Beispielaufgaben das File-Handling unter C++, also das Anlegen von Dateien, sowie das Schreiben auf und Lesen von Dateien eingeübt.

Markus A. Mathes, Jochen Seufert
Kapitel 27. Container Bibliothek

C $${++}$$ + + verfügt über eine umfangreiche Container Bibliothek, welche es Entwicklerinnen und Entwicklern erlaubt, zwischen verschiedenen Datenstrukturen zum Ablegen von Informationen zu wählen. Die Container Bibliothek unterscheidet zwischen Klassen zum sequentiellen, assoziativen und unsortiert-assoziativen Schreiben/Lesen von Daten.

Markus A. Mathes, Jochen Seufert
Kapitel 28. Übung: Container

Dieses Kapitel dient dazu, sich Eigenschaften und mögliche Anwendungsgebiete unterschiedlicher Container im Selbststudium zu erarbeiten und die Programmierung mit Containern anhand von Aufgaben einzuüben.

Markus A. Mathes, Jochen Seufert

Microcontroller-Programmierung mit C++

Frontmatter
Kapitel 29. Die Arduino Microcontroller-Plattform

Mithilfe von C++ kann die Microcontroller-Plattform Arduino programmiert werden. Die Hardware der Plattform besteht aus einem ATMEL Mikrocontroller mit analogen und digitalen Ein- und Ausgängen, z. B. zum Auslesen von Sensoren oder Ansteuern von Aktoren. Softwareseitig stellt die Plattform eine eigene Entwicklungsumgebung zur Verfügung. Es sind zahlreiche Softwarebibliotheken für den Arduino quelloffen erhältlich, sodass auch Programmieranfängern der Einstieg in die Implementierung einfacher Anwendungen zum Steuern, Regeln und Messen leicht fällt.

Markus A. Mathes, Jochen Seufert
Kapitel 30. Das erste Arduino Programm

Mit dem in diesem Kapitel vorgestellten ersten Arduino-Programm kann eine Leuchtdiode angesteuert werden, die mit einer bestimmten Frequenz blinkt.

Markus A. Mathes, Jochen Seufert
Kapitel 31. I/O über Pins steuern

Über die I/O Pins des Microcontrollers können Spannungen ausgegeben (Output-Pins) bzw. eingelesen (Input-Pins) werden. Die gezielte Ansteuerung dieser Pins ist somit die Grundlage für Arduino-basierte Anwendungen im Bereich Mess- und Regelungstechnik. Hierzu gibt es eine Reihe von Befehlen (Funktionen), die in diesem Kapitel erläutert werden.

Markus A. Mathes, Jochen Seufert
Kapitel 32. Beispielanwendungen

Dieses Kapitel zeigt beispielhaft, wie einfache Mess- und Regelungsanwendungen von einer intelligenten Dimmerschaltung über ein Lauflicht bis hin zu einer Motorsteuerung auf Basis eines Microcontrollers realisiert werden können. Innerhalb der vorgestellten Beispielanwendungen setzen wir sowohl verschiedene Sensortechnologien als auch unterschiedliche Ausgabemedien (LEDs, Lautsprecher, Microcontroller-gesteuerte Touchscreen-Displays) ein.

Markus A. Mathes, Jochen Seufert
Kapitel 33. Interrupts

Bei einem Interrupt wird durch ein Ereignis (z. B. Timer, Signal von außen usw.) das Hauptprogramm void loop() unterbrochen und ein vorab festgelegtes Unterprogramm ausgeführt. Die innerhalb der Arduino-Familie verbauten Microcontroller unterstützen solche Interrups. Wir beleuchten in diesem Kapitel sowohl Timer-Interrups zur kontrollierten periodischen Unterbrechung des Programmablaufs, als auch Event-Interrups, die auf ein äußeres (meist kritisches) Ereiginis, z. B. einen zu hohen Sensorwert, ansprechen.

Markus A. Mathes, Jochen Seufert
Kapitel 34. Serielle Kommunikation

Die Arduino-Plattform verfügt über eine serielle Schnittstelle, mit der Daten an den PC via USB-Kabel übertragen werden können. Mithilfe der seriellen Schnittstelle kann also z. B. der zeitliche Verlauf von Sensorwerten am Rechner analysiert werden. Die Entwicklungsumgebung des Arduino stellt zudem ein mächtiges Tool, den sog. seriellen Monitor bereit, mit dem die seriell übertragenen Daten bequem in Echtzeit visualisiert bzw. vom Benutzer während der Programmlaufzeit an den Microcontroller gesendet werden können.

Markus A. Mathes, Jochen Seufert
Kapitel 35. Internet of Things

Im Internet of Things (IoT) sind physische Einheiten (Sensoren, Aktoren, ...) über das Internet verbunden und können über dieses miteinander und mit den Nutzern kommunizieren. Dies ermöglicht eine Fülle von Anwendungen, wie beispielsweise die Kontrolle von Fertigungsmaschinen aus der Ferne über ein Smartphone oder einen PC. Die Arduino-Entwicklerinnen und Entwickler haben jüngst eine Cloud-Lösung, die sog. Arduino IoT Cloud, vorgestellt, über die in Kombination mit netzwerkfähigen Arduino-Boards wie beispielsweise dem MKR WiFi 1010, IoT Anwendungen mit dem Arduino möglich sind. In diesem Kapitel stellen wir beispielhaft eine Applikation aus dem IoT vor, in der Wetterdaten (Temperatur/Luftfeuchtigkeit) aufgezeichnet und in der Cloud abgelegt werden. Auf einem (mobilen) digitalen Endgerät können diese Daten dann aus der Cloud geladen und graphisch dargestelllt werden. Ausserderm zeigen wir, wie an eine WLAN-fähige Arduino-Plattform angeschlossene Aktoren (hier exemplarisch eine LED) per Handy remote angesteuert werden können.

Markus A. Mathes, Jochen Seufert
Kapitel 36. Übung: Microcontroller

Dieses Kapitel enthält Übungsaufgaben zur Programmierung der Arduino-Plattform. Beispielsweise soll im Rahmen einer Übungsaufgabe die Steuerungssoftware für einen autonom fahrenden Roboter implementiert werden.

Markus A. Mathes, Jochen Seufert
Backmatter
Metadata
Title
Programmieren in C++ für Elektrotechniker und Mechatroniker
Authors
Prof. Dr. Markus A. Mathes
Prof. Dr. Jochen Seufert
Copyright Year
2022
Electronic ISBN
978-3-658-38501-9
Print ISBN
978-3-658-38500-2
DOI
https://doi.org/10.1007/978-3-658-38501-9