
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Wie man unter Windows Qt mit QtCreator installiert und das erste Programm erzeugt.
Alternativ kann man auch den Online-Installer herunterladen, jedoch muss man sich dann bei QtCreator registrieren.
Wie man unter Ubuntu Qt mit Creator installiert und das erste Programm erzeugt.
HINWEIS: Falls man sich bei Qt nicht registrieren möchte, kann auch hier ein Offline-Installer heruntergeladen werden: https://www.qt.io/offline-installers
Dabei reicht es die Version 5.12.x von Qt einzusetzen.
Das Buch "C und C++: Der Weg durch den Programmier-Dschungel" bietet eine perfekte Ergänzung zu diesem Kurs an. Hier finden Sie noch weitere Übungen und tolle Tricks, die nur Profis kennen. Diese Lektion spricht über den Inhalt des Buches.
Datentypen sind Klassifikationen, die den Typ von Daten angeben, die eine Variable oder ein Speicherbereich halten kann. Sie definieren die Art der Werte, die gespeichert werden können, sowie die Operationen, die auf diesen Daten ausgeführt werden dürfen.
Datentypen sind in C von grundlegender Bedeutung, da sie dem Compiler Informationen liefern über:
Die Größe des Speicherplatzes, der für eine Variable dieses Typs reserviert werden muss.
Die Interpretation des im Speicher befindlichen Bitmusters. Zum Beispiel, ob eine bestimmte Bitfolge als ganze Zahl, Gleitkommazahl oder Zeichen interpretiert werden soll.
Die zulässigen Operationen, die auf Variablen dieses Typs angewendet werden können (z. B. Addition, Subtraktion, Vergleich).
Variablen sind benannte Speicherbereiche im Computer, die dazu dienen, Daten zu speichern. Man kann sie sich als Behälter oder Etiketten für Speicherplätze vorstellen. Der Wert, der in einer Variablen gespeichert ist, kann sich während der Ausführung eines Programms ändern (daher der Name "Variable"):
Merkmale:
Es sind Benannte Speicherplätze für Daten.
Sie müssen deklariert werden, um ihren Namen und Datentyp festzulegen.
Sie können initialisiert werden, um ihnen einen Anfangswert zuzuweisen.
Sie werden über ihren Namen verwendet, um Werte zu speichern und abzurufen.
Haben einen Gültigkeitsbereich, der bestimmt, wo sie zugänglich sind.
Haben eine Lebensdauer, die bestimmt, wie lange ihr Speicherplatz existiert.
Abgeleitete Datentypen (derived data types) sind Datentypen, die aus den fundamentalen (oder primären) Datentypen (wie int, char, float, double) abgeleitet oder aus ihnen zusammengesetzt werden. Sie ermöglichen es, komplexere Datenstrukturen zu erstellen, um realweltliche Entitäten und Beziehungen besser darzustellen.
Ein Typ-Qualifizierer ein Schlüsselwort, das verwendet wird, um die Eigenschaften eines Datentyps zu modifizieren. Typ-Qualifizierer geben dem Compiler zusätzliche Informationen darüber, wie eine Variable oder ein Objekt verwendet werden soll, was Auswirkungen auf die Optimierung und das Verhalten des Programms haben kann.
Arrays (Felder) sind abgeleitete Datentypen, die eine sequenzielle Sammlung von Elementen desselben Datentyps unter einem einzigen Namen speichern. Jedes Element im Array wird durch einen eindeutigen Index (oder Subskript) identifiziert. Arrays sind eine grundlegende Datenstruktur, die verwendet wird, um eine feste Anzahl von Werten des gleichen Typs effizient zu verwalten und darauf zuzugreifen.
Zeiger (Pointers) sind spezielle Variablen, die Speicheradressen als ihre Werte enthalten. Anstatt direkt einen Datenwert zu speichern (wie z. B. eine ganze Zahl oder ein Zeichen), speichert ein Zeiger die Adresse einer anderen Variablen im Speicher. Zeiger sind ein mächtiges und fundamentales Konzept in C, das viele fortgeschrittene Programmiertechniken ermöglicht.
Anweisungen, Ausdrücke und Operatoren sind grundlegende Bausteine, aus denen C-Programme bestehen. Sie bilden die Grundlage für die Logik und die Operationen, die ein Programm ausführt.
Funktionen (manchmal auch als Unterprogramme oder Routinen bezeichnet) sind eigenständige Blöcke von Code, die eine bestimmte Aufgabe oder eine Gruppe von zusammenhängenden Aufgaben ausführen. Funktionen ermöglichen es, den Code in kleinere,
Grundlage zu Zeigern hatten wir bereits. Es gibt aber noch weitere Features, die Zeiger bieten und man kennen sollte. In diesem Video zeige ich, welche das sind.
In der Programmiersprache C gibt es keinen eingebauten, primitiven Datentyp für Zeichenketten (Strings) wie in manchen anderen Sprachen. Stattdessen werden Zeichenketten in C als Arrays von Zeichen (char) dargestellt, die mit einem Nullterminierungszeichen ("\0") abgeschlossen werden. Dieses Nullterminierungszeichen ist ein spezielles Zeichen mit dem ASCII-Wert 0 und dient dazu, das Ende der Zeichenkette im Speicher zu markieren.
Strukturen definiert man mit struct. Es ist ein Schlüsselwort, das verwendet wird, um einen strukturierten Datentyp zu definieren. Ein Strukturtyp (oder einfach Struktur) ist ein zusammengesetzter Datentyp, der es ermöglicht, mehrere Variablen unterschiedlicher Datentypen unter einem einzigen Namen zu gruppieren. Diese Variablen innerhalb der Struktur werden als Member (oder Felder) der Struktur bezeichnet.
Strukturen sind nützlich, um verwandte Daten zu einer logischen Einheit zusammenzufassen, was die Organisation und Verwaltung von Daten in einem Programm erleichtert. Sie ermöglichen es, komplexe Datenstrukturen zu erstellen, die reale Objekte oder Konzepte besser modellieren können.
Alles nur int, float, char? Wie wäre es mit eigenen Datentypen? Z.B. kann man den Typ Kommazahl (REAL) definieren und an einer gemeinsamen Stelle festsetzen ob es ein float oder double ist.
Speicherklassen definieren die Lebensdauer, den Gültigkeitsbereich und die Verknüpfung von Variablen und Funktionen. Sie bestimmen, wo eine Variable gespeichert wird, wie lange sie im Speicher existiert und von welchen Teilen des Programms aus sie zugänglich ist.
In diesem Video schauen wir uns an, wie Sie in C beschrieben sind und wie der größte Nutzen daraus gezogen werden kann.
In der Informatik und im allgemeinen Sprachgebrauch sind Input und Output wie folgt definiert:
Input (Eingabe):
Daten, Informationen oder Ressourcen, die in ein System, einen Prozess oder eine Maschine eingegeben oder zugeführt werden. Es ist das, was "hineinkommt".
Output (Ausgabe):
Das Ergebnis oder die Produkte, die von einem System, einem Prozess oder einer Maschine erzeugt oder ausgegeben werden, nachdem der Input verarbeitet wurde. Es ist das, was "herauskommt".
Die Standard-Input-Quelle in C ist normalerweise die Standardeingabe (stdin), die in der Regel mit der Tastatur des Benutzers verbunden ist.
Die Standard-Output-Senke in C ist normalerweise die Standardausgabe (stdout), die in der Regel mit dem Bildschirm des Benutzers verbunden ist.
In C-Programmen können Sie Return Codes an das Betriebssystem übergeben und Parameter an Ihr Programm übergeben.
Der Return Code eines C-Programms ist ein numerischer Wert, den das Programm nach seiner Ausführung an das Betriebssystem zurückgibt. Dieser Code wird verwendet, um den Erfolg oder Misserfolg der Programmausführung anzuzeigen. Konventionsgemäß bedeutet ein Return Code von 0, dass das Programm erfolgreich ausgeführt wurde, während ein Wert ungleich Null einen Fehler oder eine abnormale Beendigung anzeigt.
Zudem können Sie Parameter (auch Befehlszeilenargumente genannt) an Ihr C-Programm übergeben, wenn Sie es über die Kommandozeile starten.
Schauen Sie in diesem Video, wie man beides umsetzt.
Unter dynamischem Speicher in der Programmierung, insbesondere in C, versteht man die Möglichkeit, Speicherplatz während der Laufzeit eines Programms anzufordern und wieder freizugeben. Im Gegensatz zum statischen Speicher, bei dem die Größe und Lebensdauer von Variablen zur Kompilierzeit festgelegt werden, ermöglicht der dynamische Speicher eine flexiblere Speicherverwaltung.
In C bezieht sich "Makroprogrammierung" fast ausschließlich auf die Verwendung des C-Präprozessors und seiner Makro-Direktiven (hauptsächlich #define).
Wichtige Merkmale zu Makros in C sind:
Keine Typüberprüfung: Der C-Präprozessor hat keine Kenntnis von Datentypen. Die Ersetzung erfolgt rein textuell, was zu unerwarteten Ergebnissen oder Fehlern führen kann, wenn man nicht vorsichtig ist.
Kein Gültigkeitsbereich (Scope) im eigentlichen Sinne: Makros, die mit #define definiert wurden, sind in der Regel im gesamten restlichen Quellcode (ab der Definition) gültig, es sei denn, sie werden mit #undef wieder aufgehoben.
Keine Laufzeitkosten: Da Makros vor der Kompilierung expandiert werden, entstehen keine zusätzlichen Laufzeitkosten wie bei Funktionsaufrufen. Dies kann in zeitkritischen Abschnitten von Vorteil sein, führt aber potenziell zu größerem Code.
Potenzielle Nebeneffekte: Bei der Verwendung von Funktions-ähnlichen Makros mit Ausdrücken, die Nebeneffekte haben (z.B. Inkrementieren i++), kann es zu unerwartetem Verhalten kommen, da die Argumente möglicherweise mehrfach ausgewertet werden.
C und C++ sind Programmiersprachen, die maschinennah ausgelegt sind. Insbesondere C eignet sich wunderbar für IIoT-Lösungen, die bspw. mit einen Arduino oder Rasperry Pi Board betrieben werden können (insbesondere wenn es um Echtzeitlösungen geht).
Die meisten Betriebssysteme, Compiler, oder Java-Laufzeitumgebungen sind in C/C++ geschrieben. Wer C und C++ beherrscht, ist in der Lage sich schnell in weitere Programmiersprachen einzuarbeiten.
Dieser Kurs richtet sich an Ingenieur:innen und technisch versierte Menschen mit einem naturwissenschaftlichen Background (Maschinenbau, Elektrotechnik, Bauingenieurwesen). Der praktische Bezug steht im Vordergrund hands-on eine Software zu schreiben, die für Ihren Einsatz geeignet ist.
Dieser Teil beschäftigt sich mit der Programmiersprache C.
Neben diesem Kurs werden noch weitere Kurse angeboten, die an diesem anknüpfen. Da geht es auch um die Programmiersprache C++, inklusive spätere Standards wie C++11, C++17 und C++20. Ein kleines Video in diesem Kurs geht auf die weiteren Kurse ein, welche evtl. noch in der Entwicklung sind. Bleiben Sie dran, ich versprechen auch diese Kurse kommen nach Udemy.
Was hier gelernt wird, kann auf Windows, MacOS und Linux geübt werden. Sie brauchen auch kein Geld extra für Entwicklungsumbegungen auszugeben. Ich zeige Ihnen, wie Sie sich kostenlos eine hochwertige Entwicklungsumgebung mit Ihrem Rechner aufbauen können.
Es gibt noch das Buch "C und C++: Der Weg durch den Programmier-Dschungel" als ideale Ergänzung zu diesem Kurs, erhältlich bei Amazon.