Einführung in C++

Inhalt und Lernziele des Kapitels Einführung in C++.

Einordnung des Artikels

Inhaltsverzeichnis

  1. Vorgehensweise und Vorbereitungen zum Erlernen von C++
  2. Kennenlernen der Entwicklungsumgebung Code::Blocks
  3. Elementare Syntax von C++: Ein- und Ausgaben über die Konsole
  4. Elementare Syntax von C++: Fundamentale Datentypen
  5. Lösungshinweise zu den Aufgaben aus Elementare Syntax von C++: Fundamentale Datentypen
  6. Elementare Syntax von C++: Bedingung, Alternative und Mehrfachalternative
  7. Lösungshinweise zu den Aufgaben aus Elementare Syntax von C++: Bedingung, Alternative und Mehrfachalternative
  8. Elementare Syntax von C++: Weitere Operatoren
  9. Elementare Syntax von C++: Schleifen
  10. C++ Programmier-Aufgaben: Anwendungen aus Numerik, Finanzmathematik, Kombinatorik, Auszeichnungssprachen

Lernziele

Im dritten Teil des Kurses, also Einführung in C++, werden diejenigen grundlegenden Sprachelemente von C++ beschrieben, die man benötigt um beliebige Algorithmen zu implementieren. Vergleicht man dies mit den Programmier-Paradigmen, die im zweiten Teil Einführung in die Programmierung beschrieben wurden, befindet man sich somit noch fast auf der Ebene der Maschinensprache — anstelle der Maschinensprache werden eben diejenigen Befehle eingesetzt, die C++ elementar anbietet. Höherwertige Konzepte wie das Bilden von Unterprogrammen (also strukturierte Programmierung) oder Klassen (also objekt-orientierte Programmierung) kommen hier noch nicht vor.

Die elementare Syntax und einige damit verbundene Spitzfindigkeiten kennenzulernen, ist aber unabdingbar, um den Einstieg in eine neue Programmiersprache zu meistern. Ein Umsteiger — wer schon eine andere Programmiersprache sicher beherrscht — wird diesen Teil sehr schnell durcharbeiten können, da die hier vorgestellten Konzepte in jeder Programmiersprache vorkommen. Für den Einsteiger steht hier eine längere Durststrecke bevor; es wird aber dringend empfohlen diesen Teil gründlich durchzuarbeiten, denn die hier besprochenen Konzepte sind einerseits wichtig für einen souveränen Umgang mit C++ und sie erleichtern andererseits den Einstieg in jede andere Programmiersprache.

Vorgehensweise und Vorbereitungen zum Erlernen von C++

Kennenlernen der Entwicklungsumgebung Code::Blocks

Ausführlich besprochen wird hier die Entwicklungsumgebung Code::Blocks. Das Kapitel zeigt de typischen Schritte, die man einmal durcharbeiten muss, um eine neue Entwicklungsumgebung kennenzulernen; dazu gehören insbesondere:

Elementare Syntax von C++: Ein- und Ausgaben über die Konsole

Das erste Programm ist — wie üblich — HelloWorld: ein Programm, das eine Zeichenkette auf der Konsole ausgibt. Anhand dieses Programmes werden zahlreiche Konzepte eingeführt, die man zum Programmieren benötigt und die zum Großteil in der allgemein gehaltenen Einführung in die Programmierung noch nicht besprochen wurden:

Die Befehle, um Zeichenketten in die Konsole einzugeben, unterscheiden sich natürlich nur wenig von denen für Ausgaben. Auch sie werden hier vorgestellt, so dass Sie danach Programme schreiben können, die eine Wechselwirkung mit dem Nutzer erlauben. Auf die Programmierung von graphischen Oberflächen wird in diesem Kurs nicht eingegangen — die im Rahmen dieses Kurses vorgestellten Konzepte sind für den Einsteiger wichtiger.

Elementare Syntax von C++: Fundamentale Datentypen

In der Einführung in die Programmierung wurden bereits die unterschiedlichen fundamentalen Datentypen vorgestellt:

Dort sollte schon das Verständnis dafür entwickelt werden, dass

Hier werden die in C++ bereitgestellten Datentypen besprochen — inklusive einiger damit verbundener Spitzfindigkeiten. Insbesondere bei den Typumwandlungen können sie auftreten und müssen dem Programmierer bekannt sein, um typische Fehler zu vermeiden.

Zu den Eigenschaften der Datentypen gehört auch, welche Operationen mit Variablen eines Datentyps ausgeführt werden können und wie eine Variable initialisiert wird. Zu Letzterem wird hier schon die allgemeinere Unterscheidung zwischen Deklaration und Initialisierung vorgestellt (im Zusammenhang mit selbst-definierten Datentypen und Konstruktoren wird diese Unterscheidung wieder auftreten).

Weiter hat C++ die Besonderheit, dass die Bereiche der fundamentalen Datentypen in der Spezifikation nicht eindeutig festgelegt sind — vielmehr sind sie plattformabhängig (Compiler und Rechner). Verlässt man die zulässigen Bereiche, kann ein Programm unvorhergesehenes Verhalten zeigen. Als Programmierer muss man daher die Bereiche kennen oder zumindest wissen, wie man sie schnell abfragen kann.

Lösungshinweise zu den Aufgaben aus Elementare Syntax von C++: Fundamentale Datentypen

Derartige Aufgaben sollten Sie wegen der Plattformabhängigkeit der fundamentalen Datentypen selbständig lösen können. Eine gründliche Kenntnis insbesondere der Zahlenbereiche der meist eingesetzten Datentypen vermeidet viele Fehler.

Elementare Syntax von C++: Bedingung, Alternative und Mehrfachalternative

Mit Hilfe der Strukturelemente Bedingung, Alternative und Mehrfachalternative lassen sich schon sehr komplexe Algorithmen schreiben, da man mit ihnen den Ablauf der Befehlsausführung steuern kann. Auf die hier vorgestellten Sprachelemente muss jeder Programmierer ständig zugreifen und sollte sie daher immer parat haben. Auch einige hier vorgestellte Spitzfindigkeiten sollte man kennen, da ihre Nichtbeachtung immer wieder zu Fehlern führt.

Lösungshinweise zu den Aufgaben aus Elementare Syntax von C++: Bedingung, Alternative und Mehrfachalternative

Im vorherigen Kapitel Elementare Syntax: Bedingung, Alternative und Mehrfachalternative wurden Aufgaben gestellt, die den Umgang mit den Strukturelementen Bedingung und Alternative einüben. Da diese Strukturelemente — wie oben schon gesagt — in jedem Programm vorkommen, sind derartige Übungen unabdingbar, um mit einer Programmiersprache vertraut zu werden.

Gerade Anfänger machen dabei oft den Fehler, eine Aufgabe kurz zu lesen und sich sofort an die Entwicklungsumgebung zu setzen und Quelltext zu schreiben. Sie werden sehen, dass dies bei umfangreichen Aufgaben sinnlos ist — die Entwicklungsumgebung hilft nicht beim Einstieg in ein Problem.

Wichtig ist es dagegen, die beiden Aufgaben voneinander zu trennen:

  1. den Algorithmus in Pseudocode zu entwickeln (also noch unabhängig von einer speziellen Programmiersprache)
  2. den Algorithmus syntaktisch richtig in die gewählte Sprache zu übersetzen

Mit den hier besprochenen Aufgaben sollen Sie gerade diese Arbeitsweise einüben: Sie werden sehen, dass in beiden genannten Anforderungen schneller Fortschritte machen, wenn Sie diese Aufgaben trennen.

Elementare Syntax von C++: Weitere Operatoren

Für einige Operationen gibt es in C++ Kurzschreibweisen, die man kennen und einsetzen sollte, da sie weniger Rechenzeit beanspruchen als die ausführliche Schreibweise.

Elementare Syntax von C++: Schleifen

Am Strukturelement der Schleife (oder Iteration) sieht am deutlichsten, in welcher Hinsicht ein Computer dem Menschen überlegen ist: eine Routine-Tätigkeit, die immer gleich aber sehr oft wiederholt ausgeführt werden muss, kann natürlich vom Computer sehr viel schneller und fehlerfrei bewältigt werden.

Wie im Kapitel über Pseudocode werden die drei Arten von Schleifen vorgestellt — jetzt aber mit ihrer C++-Syntax:

Wie die Strukturelemente Bedingung und Alternative kommen Schleifen in nahezu jedem Programm vor und gehören somit zum Grundwissen jedes Programmierers; dies bezieht sich:

Sie sollten dieses Kapitel und die zugehörigen Aufgaben unbedingt soweit durcharbeiten, dass Ihnen diese Fähigkeiten als Selbstverständlichkeiten erscheinen — Sie werden sehen in der Praxis wird man am häufigsten mit Schleifen konfrontiert.

Weiter wird hier das Konzept des Gültigkeitsbereich einer Variable (scope) vorgestellt, das man sehr gut anhand der Schleifen erklären kann, das aber eine sehr viel weiter gehende Bedeutung hat und bei der objekt-orientierten Programmierung vertieft und verallgemeinert wird.

C++ Programmier-Aufgaben: Anwendungen aus Numerik, Finanzmathematik, Kombinatorik, Auszeichnungssprachen

In diesem Kapitel werden einige Beispiele vorgestellt, wie man die bisher erworbenen Kenntnisse anwenden kann — meist werden dabei natürlich Schleifen programmiert.

Die Liste der Anwendungen ist keineswegs vollständig; sie soll Ihnen einige Anregungen liefern, welche Probleme man jetzt lösen kann, für die man ohne Programmierkenntnisse ein Vielfaches an Zeit investieren müsste. Die Anwendungen sind mit Absicht aus sehr unterschiedlichen Bereichen gewählt — Ihnen werden sicher weitere Beispiele einfallen, wo die bisher erworbenen Programmierkenntnisse von Nutzen sind.