Sie sind auf Seite 1von 108

IMIT 4

Informatik
C++ Grundlagen
Falls wir in unseren Studienheften auf Seiten im Internet verweisen/verlinken, haben wir diese
nach sorgfltigen Erwgungen ausgewhlt. Auf Inhalt und Gestaltung haben wir jedoch keinen
Einfluss. Wir distanzieren uns daher ausdrcklich von diesen Seiten, soweit darin rechtswidrige,
insbesondere jugendgefhrdende oder verfassungsfeindliche Inhalte zutage treten sollten.
0713 K04
Autor: Christoph Siebeck Fachlektor: Norbert Heitkamp
ILS Institut fr Lernsysteme GmbH, Hamburg
Fernakademie fr Erwachsenenbildung GmbH, Hamburg
Alle Rechte vorbehalten.
Das Studienhef und seine Teile sind urheberrectlic gesctzt.
Jede Nutzung in anderen als den gesetzlic zugelassenen Fllen ist
nict erlaubt und bedarf der vorherigen scriflicen Zustimmung des
Recteinhabers. Dies gilt insbesondere fr das fentlice Zugnglicmacen
via Internet, Vervielfltigungen und Weitergabe. Zulssig ist das Speicern
(und Ausdrucen) des Studienhefes fr persnlice Zwece.
Fernschulen Hamburg Alle Rechte vorbehalten
0
7
1
3

K
0
4
Informatik
C++ Grundlagen
0713 K04
Autor: Christoph Siebeck
Fachlektor: Norbert Heitkamp
Inhaltsbersicht
Lerninhalte und Lernziele ..................................................................................... 5
1 Die Installation von Code::Blocks......................................................................... 6
1.1 Was ist Code::Blocks?................................................................................................... 6
1.2 Installation durchfhren ............................................................................................. 6
1.3 Der Desktop von Code::Blocks..................................................................................... 15
2 Das Hallo Welt-Programm................................................................................... 21
2.1 Neues Projekt erstellen................................................................................................ 21
2.2 Quelltext erfassen ........................................................................................................ 29
2.3 Projekt speichern und ffnen....................................................................................... 31
2.4 Kompilieren und Ausfhren........................................................................................ 32
2.5 Fehlersuche und -behebung......................................................................................... 35
3 Programmaufbau und Kommentare.................................................................... 43
3.1 Grundstzlicher Aufbau eines C++-Programms ........................................................ 43
3.2 Kommentare................................................................................................................. 44
4 Ausgabe....................................................................................................................... 48
4.1 Escape-Sequenzen........................................................................................................ 52
5 Variablen und Operatoren ..................................................................................... 56
5.1 Variablen....................................................................................................................... 56
5.2 Die Datentypen von C++ ............................................................................................. 60
5.2.1 Datentypen fr ganze Zahlen...................................................................................... 61
5.2.2 Datentypen fr Gleitkommazahlen ............................................................................ 65
5.2.3 Datentypen fr Zeichen und Zeichenketten............................................................... 69
5.2.4 Der Datentyp fr logische Werte................................................................................. 72
5.3 Arithmetische Operatoren........................................................................................... 73
6 Arbeiten mit Variablen unterschiedlicher Datentypen .................................. 82
6.1 Zuweisungen zwischen Variablen unterschiedlichen Typs........................................ 82
6.2 Typecasting................................................................................................................... 85


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
7 Eingabe ....................................................................................................................... 92
8 Schlusswort................................................................................................................ 95
9 Anhang........................................................................................................................ 96
9.1 Literaturempfehlungen ............................................................................................... 96
9.2 Lsungen der Aufgaben zur Selbstberprfung ........................................................ 97
9.3 Videos zum Studienheft............................................................................................... 101
9.4 Quelltext in ein Projekt einfgen................................................................................ 102
9.5 Glossar.......................................................................................................................... 103
9.6 Sachwortverzeichnis .................................................................................................... 106


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
5
Lerninhalte und Lernziele
Nach den theoretischen Grundlagen im letzten Studienheft werden Sie in diesem
Studienheft erste praktische Erfahrungen im Programmieren sammeln. Sie instal-
lieren die integrierte Entwicklungsumgebung Code::Blocks fr die Programmier-
sprache C++ und erstellen die ersten Programme.
Im Einzelnen lernen Sie in diesem Studienheft,
wie Sie Code::Blocks installieren,
wie Sie mit Code::Blocks ein neues Projekt fr ein C++-Konsolen-
programm erstellen,
wie Sie einen Quelltext erfassen,
wie Sie Quelltexte speichern und wieder ffnen,
wie Sie ein Programm kompilieren und ausfhren,
wie Sie Fehler in einem Programm erkennen und korrigieren,
wie ein C++-Programm grundstzlich aufgebaut ist,
aus welchen Elementen ein C++-Quelltext besteht,
wie Sie Kommentare in Ihren Quelltext einfgen,
wie Sie Textausgaben auf dem Bildschirm durchfhren,
wie Sie arithmetische Operationen durchfhren,
wie Sie Daten in einem Programm in Variablen zwischenspeichern,
welche Datentypen C++ untersttzt,
wie Sie mit Variablen unterschiedlicher Datentypen arbeiten,
wie Sie die Typumwandlung von Variablen erzwingen und
wie Sie Daten ber die Tastatur einlesen.
Damit Sie die Bedienung von Code::Blocks leichter nachvollziehen knnen, finden
Sie auf einem Datentrger, den Sie mit dem Lehrgangsbegleitmaterial erhalten
haben, einige Videos. Weitere Hinweise zum Umgang mit den Videos erhalten Sie
im Anhang des Studienheftes.
Auerdem enthalten die Datentrger zu diesem Lehrgang im Ordner \listings
alle Quelltexte zu den Studienheften. Die Namen der Dateien entsprechen dabei
der Nummerierung der Listings in den Studienheften. Das Listing 1 aus diesem
Studienheft knnen Sie von dem Datentrger laden, indem Sie die Datei
imit04_l01.cpp ffnen. Hinweise, wie Sie die Quelltexte in Ihre eigenen Projekte
einfgen, finden Sie im Anhang des Studienheftes.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
6
1 Die Installation von Code::Blocks
In dieser Lektion beschftigen wir uns mit der Installation von Code::Blocks,
einem komfortablen und leistungsstarkem Entwicklungswerkzeug fr C++-Pro-
gramme. Zuerst zeigen wir Ihnen Schritt fr Schritt, wie Sie Code::Blocks instal-
lieren. Anschlieend stellen wir Ihnen die grafische Benutzeroberflche von
Code::Blocks vor.
1.1 Was ist Code::Blocks?
Code::Blocks ist eine integrierte Entwicklungsumgebung und fasst verschiedene
Programme, die Sie fr die Entwicklung von C++-Programmen bentigen, unter
einer Oberflche zusammen. Dazu gehren zum Beispiel:
ein Texteditor fr das Erfassen der Quelltexte,
ein Compiler zum bersetzen der Quelltexte,
ein Linker zum Zusammenfassen von Dateien und
verschiedene weitere Hilfsprogramme.
Hinweis:
Code::Blocks selbst ist weder ein Compiler noch ein Linker. Das Programm
greift auf einen externen Compiler und einen externen Linker zu. Diese Pro-
gramme werden wir aber gleich direkt mitinstallieren.
Code::Blocks ist freie Software. Sie knnen die Entwicklungsumgebung ohne
Lizenzkosten einsetzen und auch Anwendungen fr kommerzielle Zwecke ohne
zustzliche Kosten entwickeln. Weitere Informationen zu Code::Blocks finden Sie
im Internet unter der Adresse http://www.codeblocks.org. Die Seite ist allerdings
komplett in englischer Sprache.
1.2 Installation durchfhren
Beginnen wir jetzt mit der Installation. Wir zeigen Ihnen dabei die Installation
unter dem Betriebssystem Windows 7. Bei anderen Windows-Versionen luft die
Installation nahezu identisch ab. Lediglich das Aussehen der Oberflche und der
Fenster kann sich von den Abbildungen in diesem Studienheft unterscheiden.
Bitte berprfen Sie zunchst, ob auf Ihrer Festplatte noch mindestens 300 Mega-
byte frei sind. Ansonsten stellt Code::Blocks keine besonderen Anforderungen an
den Rechner. Sie bentigen lediglich noch ein DVD-Laufwerk fr die Installation.
Integrierte Entwicklungsumgebungen werden hufig auch IDE genannt.
Diese Abkrzung leitet sich aus der englischen Bezeichnung Integrated
Development Environment ab.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
7
Speichern Sie dann bitte alle Daten in mglicherweise noch laufenden Anwen-
dungen und beenden Sie die Anwendungen. Legen Sie anschlieend den Daten-
trger mit der Installationsdatei von Code::Blocks ein. Wechseln Sie dann ber
den Explorer in den Ordner \software und ffnen Sie die Datei codeblocks-
12.11mingw-setup.exe durch einen Doppelklick. Besttigen Sie anschlieend die
Sicherheitsabfrage der Benutzerkontensteuerung mit Ja.
Hinweis:
Die Installationsdatei von Code::Blocks finden Sie auf den Datentrgern, die Sie
mit dem Lehrgangsmaterial erhalten haben. Sie knnen Code::Blocks aber auch
im Internet unter der Adresse http://www.codeblocks.org/downloads/binaries
herunterladen. Bitte achten Sie dann aber darauf, dass Sie die Version mit
MinGW whlen. Andernfalls fehlt Ihnen unter Umstnden der Compiler zum
bersetzen der Programme.
Das Installationsprogramm kopiert dann zunchst einige Dateien.
Abb. 1: Der Assistent fr die Installation
Danach wird der Installationsassistent gestartet. Im ersten Schritt werden ledig-
lich einige Informationen angezeigt. Sie knnen direkt auf die Schaltflche Next >
klicken.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
8
Hinweis:
Code::Blocks arbeitet mit einer englischen Oberflche. Auch die Installation
erfolgt in englischer Sprache.
Abb. 2: Der zweite Schritt der Installation
Im zweiten Schritt der Installation mssen Sie die Lizenzvereinbarung annehmen.
Klicken Sie dazu auf die Schaltflche I Agree
1
.
1. I Agree bedeutet bersetzt Ich stimme zu.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
9
Abb. 3: Der dritte Schritt der Installation
Im dritten Schritt legen Sie fest, welche Teile von Code::Blocks Sie installieren
mchten. In unserem Beispiel lassen wir den Vorschlag des Installationspro-
gramms unverndert.
Links unten im Fenster sehen Sie jetzt auch, wie viel Platz genau auf Ihrer Fest-
platte bentigt wird. berprfen Sie noch einmal, ob gengend freier Platz vor-
handen ist und klicken Sie dann auf die Schaltflche Next >.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
10
Abb. 4: Der vierte Schritt der Installation
Im vierten Schritt whlen Sie den Zielordner fr die Installation aus. Hier sind
ebenfalls in der Regel keine nderungen erforderlich. Sie knnen also auf Install
klicken, um die eigentliche Installation zu starten.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
11
Abb. 5: Die eigentliche Installation
Wenn die Installation beendet ist, erscheint eine Abfrage, ob Sie Code::Blocks
starten wollen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
12
Abb. 6: Die Rckfrage nach der Installation
Klicken Sie hier bitte auf Ja.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
13
Abb. 7: Das Fenster Compilers auto-Detection
Im Fenster Compilers auto-Detection
1
sollte Code::Blocks Ihnen dann beim
Compiler GNU GCC Compiler den Status Detected
2
anzeigen. Daran erkennen
Sie, dass der GNU GCC Compiler korrekt installiert und von Code::Blocks gefun-
den wurde.
Schlieen Sie das Fenster Compilers auto-Detection mit einem Mausklick auf
OK.
Hinweis:
Unter Umstnden erscheinen Meldungen, dass bestimmte Pfade ungltig und
nicht gesetzt sind. Das spielt in unserem Fall keine Rolle. Wichtig ist vor
allem, dass der GNU GCC Compiler erkannt wird.
1. Compilers auto-Detection lsst sich mit Automatische Compiler-Erkennung
bersetzen.
2. Detected bedeutet bersetzt erkannt.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
14
Abb. 8: Der Tipp des Tages
Danach erscheint das erste Mal der Desktop von Code::Blocks mit dem Tipp des
Tages. Sie knnen dieses Fenster ber Close
1
schlieen.
Tipp:
Wenn Sie den Tipp des Tages beim Starten nicht anzeigen lassen wollen, schal-
ten Sie die Markierung im Kontrollkstchen Show tips at startup
2
aus.
Hinweise:
Das Installationsprogramm bleibt im Hintergrund weiter geffnet. Sie knnen
es aber nach der Installation beenden. Klicken Sie dazu zunchst im Installa-
tionsassistenten auf die Schaltflche Next > und anschlieend auf Finish
3
.
Nach der Installation knnen Sie Code::Blocks ber das Startmen unter Alle
Programme / CodeBlocks / CodeBlocks oder ber das entsprechende Sym-
bol auf dem Desktop starten.
1. Close bedeutet Schliee.
2. Show tips at startup bedeutet Zeige Tipps beim Start.
3. Finish bedeutet bersetzt Beende.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
15
1.3 Der Desktop von Code::Blocks
Schauen wir uns jetzt den Desktop von Code::Blocks an. Er untergliedert sich in
folgende Elemente:
Abb. 9: Der Desktop von Code::Blocks
A die Titelleiste
B die Standard-Windows-Schaltflchen zum Minimieren und Maximieren des
Fensters sowie zum Beenden der Anwendung
C die Menleiste
D die Symbolleisten
Welche Symbole hier angezeigt werden, hngt unter anderem von Ihrer aktu-
ellen Bildschirmauflsung ab.
E den eigentlichen Arbeitsbereich
Hier erfassen Sie Quelltexte. Direkt nach dem Start wird in diesem Bereich
die sogenannte Startseite angezeigt.
F den Ausgabebereich
Hier werden Informationen angezeigt zum Beispiel beim Erstellen und Aus-
fhren von Programmen. Welche Informationen genau erscheinen, knnen Sie
ber die Registerzungen in dem Bereich selbst festlegen.
A B
C
E
D
G
F


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
16
G den Managementbereich
Er zeigt Ihnen alle wichtigen Dateien in einem Projekt in einer hierarchischen
Struktur. In unserem Beispiel ist er noch leer, da wir ja kein Projekt geffnet
haben.
Welche Informationen hier genau angezeigt werden, knnen Sie ebenfalls ber
die Registerzungen oben im Bereich auswhlen.
Die einzelnen Bereiche beziehungsweise Fenster knnen Sie gezielt aus- und wie-
der einblenden. Zum Ausblenden klicken Sie auf das Symbol oben rechts im
Bereich. Probieren Sie das einmal aus. Schlieen Sie bitte den Managementbe-
reich. Der Desktop sollte nun ungefhr so aussehen wie in der folgenden Abbil-
dung.
Abb. 10: Der Desktop ohne den Managementbereich
ber das Men View
1
knnen Sie einen ausgeblendeten Bereich wieder einblen-
den. Dazu ffnen Sie das Men und klicken dann auf den Eintrag des gewnsch-
ten Bereichs. Probieren Sie auch das aus. Blenden Sie jetzt den
Managementbereich wieder ein. ffnen Sie das Men View und klicken Sie auf
den Eintrag Manager.
1. View bedeutet bersetzt Ansicht.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
17
Sie knnen auch die Breite und die Hhe der einzelnen Bereiche nahezu beliebig
verndern. Stellen Sie dazu den Mauszeiger auf den Rand des Bereichs und ach-
ten Sie darauf, dass er als doppelseitiger Pfeil dargestellt wird. Ziehen Sie
dann mit gedrckter linker Maustaste am Rand des Bereichs, bis er die
gewnschte Gre erreicht hat.
Auch die Position der verschiedenen Bereiche lsst sich verndern. Stellen Sie
dazu den Mauszeiger auf die Titelleiste des Bereichs, den Sie verschieben wollen.
Ziehen Sie dann den Bereich mit gedrckter linker Maustaste in die gewnschte
Richtung. Nach kurzer Zeit erscheint ber dem Desktop eine blaue Markierung,
die Ihnen zeigt, wo das Fenster abgelegt wrde.
Abb. 11: Das Positionieren eines Bereichs auf dem Desktop
Wenn Sie dann die linke Maustaste loslassen, wird der Bereich an der entspre-
chenden Position abgelegt.
Probieren Sie die verschiedenen Mglichkeiten in Ruhe aus und richten Sie sich
den Desktop so ein, wie Sie am besten damit arbeiten knnen.
Wenn Sie nderungen an den Desktop-Einstellungen vorgenommen haben, fragt
Sie Code::Blocks beim Beenden automatisch, ob Sie diese nderungen speichern
mchten.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
18
Abb. 12: Die Rckfrage zum Speichern von nderungen
Sie knnen die nderungen aber auch selbst mit der Funktion View / Perspec-
tives / Save current
1
speichern.
So viel zum Desktop. In der nchsten Lektion werden Sie Ihr erstes Programm
erstellen.
1. Save current bedeutet bersetzt so viel wie Speichere Aktuelles.
Eine Vorstellung des Desktops und der verschiedenen Anpassungsmglich-
keiten finden Sie auch im Video Der Desktop.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
19
Zusammenfassung
Code::Blocks fasst verschiedene Programme unter einer Oberflche zusammen, die
fr die Entwicklung von Anwendungen bentigt werden.
Der Desktop von Code::Blocks untergliedert sich in verschiedene Bereiche. Das
Aussehen des Desktops knnen Sie an Ihre eigenen Anforderungen anpassen.
I. Aufgaben zur Selbstberprfung
berprfen Sie nun bitte Ihr neu erworbenes Wissen. Lsen Sie die Aufgaben
zunchst selbststndig und vergleichen Sie anschlieend Ihre Lsungen mit den
Angaben im Anhang.
1. Nennen Sie mindestens drei wichtige Programme, die unter der Oberflche
von Code::Blocks zusammengefasst werden.
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
Bitte beachten Sie:
Code::Blocks hat keine eigene Hilfe. ber das Men Help
a)
knnen Sie
lediglich ein paar sehr allgemeine Informationen abrufen und die Tipps des
Tages anzeigen lassen.
Eine Dokumentation zu Code::Blocks finden Sie im Internet auf der Seite
http://www.codeblocks.org/docs/manual_de.pdf. Sie ist allerdings nicht sehr
ausfhrlich und in Teilen in englischer Sprache.
a) Help bedeutet bersetzt Hilfe.
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
20
2. Wofr steht die Abkrzung IDE?
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
3. Sie mchten, dass ein Bereich auf dem Desktop von Code::Blocks ausgeblen-
det wird. Wie knnen Sie das erreichen?
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
21
2 Das Hallo Welt-Programm
Nachdem Sie einen ersten Blick auf den Desktop von Code::Blocks geworfen
haben, werden Sie jetzt das erste eigene Programm erstellen.
Hinweis:
Wir erstellen mit C++ ausschlielich Konsolenprogramme. Diese Konsolenpro-
gramme laufen unter der Eingabeaufforderung von Windows und werden beim
Ausfhren in Code::Blocks automatisch unter der Eingabeaufforderung gestar-
tet.
2.1 Neues Projekt erstellen
Das Erstellen von Programmen mit Code::Blocks erfolgt ber Projekte. Diese
Projekte enthalten alle ntigen Einstellungen, um einen Quelltext zu bersetzen
und auszufhren. Die einzelnen Projekte knnen in einem Arbeitsbereich
einem Workspace zusammengefasst werden.
Schauen wir uns an, wie Sie ein Projekt fr ein Konsolenprogramm mit
Code::Blocks erstellen. Als Beispiel benutzen wir das Programm Hallo Welt, das
Sie ja bereits aus dem letzten Studienheft kennen.
Falls Sie Code::Blocks nicht mehr geffnet haben, starten Sie das Programm bitte
zunchst ber den Eintrag Alle Programme / CodeBlocks / CodeBlocks im
Startmen oder ber das Symbol auf dem Desktop. Klicken Sie dann auf das
Symbol New file
1
ganz links in der obersten Symbolleiste und whlen Sie im
Men die Funktion Project ... . Alternativ knnen Sie ein neues Projekt auch
ber den Eintrag New / Project ... im Men File oder mit dem Eintrag Create
a new project
2
auf der Startseite anlegen.
Ein Projekt fasst alle ntigen Einstellungen und Dateien fr ein Programm
zusammen. Ein Arbeitsbereich ein Workspace kann mehrere Projekte
enthalten.
1. New file bedeutet bersetzt Neue Datei.
2. bersetzt bedeutet der Eintrag Erzeuge ein neues Projekt.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
22
Abb. 13: Das Fenster New from template
Im Fenster New from template
1
finden Sie jetzt zahlreiche verschiedene Pro-
jekttypen. Fr ein Konsolenprogramm bentigen wir den Typ Console applica-
tion
2
. Sie finden ihn links in der zweiten Reihe unter dem Symbol .
Markieren Sie diesen Eintrag bitte, und klicken Sie dann auf die Schaltflche
Go
3
oben rechts in dem Fenster.
1. New from template lsst sich mit Neu von Vorlage bersetzen.
2. Console application bedeutet bersetzt Konsolenanwendung.
3. Go lsst sich mit Los bersetzen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
23
Abb. 14: Der erste Schritt des Assistenten
Im folgenden Fenster wird lediglich eine Meldung zum Start des Projektassisten-
ten angezeigt. Sie knnen hier direkt auf Next > klicken.
Tipp:
Wenn Sie diese Meldung bei weiteren Projekten nicht anzeigen lassen wollen,
markieren Sie das Kontrollkstchen Skip this page next time
1
.
1. bersetzt bedeutet der Text berspringe diese Seite das nchste Mal.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
24
Abb. 15: Die Auswahl der Programmiersprache
Im nchsten Schritt whlen Sie die gewnschte Programmiersprache aus. In
unserem Beispiel ist der richtige Eintrag C++ bereits markiert. Sie knnen also
wieder mit Next > zum nchsten Schritt gehen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
25
Abb. 16: Die Eingabe des Projektnamens
Anschlieend mssen Sie einen Namen fr das Projekt in das Feld Project title
eingeben. Aus diesem Titel leitet Code::Blocks dann einen Namen und den Pfad
fr die Projektdatei ab. Diese Eintrge finden Sie in den Feldern Project file-
name beziehungsweise Resulting filename
1
.
In unserem Beispiel soll das Projekt den Namen Hallo bekommen. Geben Sie die-
sen Namen bitte in das Feld Project title ein. Das Fenster sollte danach unge-
fhr so aussehen:
1. Resulting filename bedeutet bersetzt so viel wie sich ergebender Dateiname.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
26
Abb. 17: Die Einstellungen fr das erste Projekt
1
berprfen Sie noch einmal die Einstellungen, und klicken Sie dann auf die
Schaltflche Next >.
1. Im Feld Folder to create project in (Ordner, in dem das Projekt erzeugt wird)
wird Ihnen der Standardordner Dokumente von Windows vorgeschlagen. Der Pfad
wird daher bei Ihnen anders aussehen als in der Abbildung.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
27
Abb. 18: Die Einstellungen fr den Compiler
Im letzten Schritt werden noch einige Einstellungen fr den Compiler angezeigt.
Hier sind keine nderungen erforderlich. Sie knnen also auf Finish klicken.
Code::Blocks erstellt nun das neue Projekt und zeigt es nach einiger Zeit im
Bereich Management an.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
28
Abb. 19: Der Eintrag fr das neue Projekt (links im Bereich Management am Mauszeiger)
Um den Quelltext im Editor im Arbeitsbereich zu ffnen, ffnen Sie erst den
Zweig Sources
1
durch einen Doppelklick auf den Eintrag. Doppelklicken Sie
danach auf den Eintrag main.cpp.
1. Sources bedeutet bersetzt Quellen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
29
Abb. 20: Der Quelltext im Editor
2.2 Quelltext erfassen
Bei dem Quelltextgerst, das Code::Blocks fr das neue Projekt angelegt hat, han-
delt es sich bereits um ein fertiges Programm, das den Text Hello World auf
dem Bildschirm ausgibt. Wir werden es daher nur noch ein wenig erweitern.
ndern Sie zuerst bitte den Text Hello World! in der Zeile
in Hallo Welt!. Stellen Sie dazu die Einfgemarke direkt hinter das erste
Anfhrungszeichen in der Zeile und drcken Sie dann so oft die Taste , bis
alle Zeichen bis zum Ausrufezeichen gelscht sind. Achten Sie dabei aber bitte
darauf, dass Sie das letzte Anfhrungszeichen nicht lschen drfen. Geben Sie
dann den Text Hallo Welt ber die Tastatur ein. Wenn Sie sich bei der Eingabe
vertippen, knnen Sie mit der Taste ein Zeichen rechts von der Einfge-
marke wieder lschen. Mit der Taste lschen Sie ein Zeichen links von der
Einfgemarke.
Eine Demonstration zum Anlegen neuer Projekte finden Sie auch im Video
Neues Projekt anlegen.
cout << "Hello World!" << endl;


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
30
Auerdem lassen wir neben dem Text Hallo Welt! noch einen weiteren Text aus-
geben. Ergnzen Sie bitte die folgende Anweisung direkt unter der Zeile mit dem
Text Hallo Welt.
cout << "Es gruessen Dich Max und Moritz" << endl;
1
Stellen Sie dazu die Einfgemarke an das Ende der Zeile
und drcken Sie einmal die Eingabetaste. In die leere Zeile geben Sie dann die
neue Anweisung ein.
Das Listing sollte nun so aussehen:
Listing 1: Das Hallo Welt-Programm
Wie Sie sehen, werden Ihre Eingaben vom Editor in unterschiedlichen Farben
dargestellt. In der Standardeinstellung erscheinen zum Beispiel Schlsselwrter in
dunkelblauer Schrift und Zeichenketten zwischen Anfhrungszeichen in hellblauer
Schrift.
1. Sie knnen hier natrlich auch einen beliebigen anderen Text ausgeben lassen.
cout << "Hallo Welt!" << endl;
#include <iostream>
using namespace std;
int main()
{
cout << "Hallo Welt!" << endl;
cout << "Es gruessen Dich Max und Moritz" << endl;
return 0;
}
Bitte beachten Sie:
Umlaute und andere Sonderzeichen werden bei der Ausgabe in der Eingabe-
aufforderung nicht korrekt dargestellt. Sie sollten daher darauf verzichten
und zum Beispiel statt ue und statt ss verwenden.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
31
2.3 Projekt speichern und ffnen
berprfen Sie bitte noch einmal, ob Ihr Listing so aussieht wie das abgedruckte
Listing 1. Achten Sie dabei vor allem auf die Anfhrungszeichen, die Klammern
und auch das Semikolon am Ende der neuen Zeile.
Speichern Sie dann bitte Ihr Listing. Whlen Sie dazu den Befehl Save all files
1
im Men File oder klicken Sie auf das Symbol Save all files .
Um ein Projekt wieder zu ffnen, benutzen Sie am einfachsten die Funktion
Open ... im Men File oder das Symbol Open
2
. Wechseln Sie dann im Dialog
Open file in den Ordner, in dem Sie das Projekt erstellt haben. Markieren Sie
anschlieend die Projektmappendatei und klicken Sie auf ffnen. Sie erkennen
die Projektmappendatei an der Erweiterung .cbp und dem Symbol .
Tipp:
Sie knnen Projekte auch direkt ber die Startseite ffnen. Dazu klicken Sie
entweder direkt auf den Namen des Projekts im Bereich Recent projects oder
auf den Eintrag Open an existing project
3
.
Nach dem ffnen mssen Sie unter Umstnden den Quelltext erst wieder im
Editor anzeigen lassen. Dazu doppelklicken Sie im Managementbereich auf den
Eintrag Sources im Zweig des Projekts und anschlieend auf den Eintrag
main.cpp.
Schlsselwrter sind reservierte Wrter, die von der Programmiersprache
selber benutzt werden. Zu den C++-Schlsselwrtern gehren zum Beispiel
void, int oder return.
1. Save all files bedeutet bersetzt Speichere alle Dateien.
Bitte beachten Sie:
Code::Blocks speichert nderungen am Quelltext in der Standardeinstellung
automatisch vor dem bersetzen. Trotzdem sollten Sie Ihre Quelltexte zur
Sicherheit immer auch noch einmal selber speichern.
2. Open bedeutet ffne.
3. Recent projects bedeutet bersetzt Aktuelle Projekte.
Open an existing project lsst sich mit ffne ein bestehendes Projekt bersetzen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
32
2.4 Kompilieren und Ausfhren
Wie Sie ja bereits wissen, kann der Quelltext, den Sie gerade eingegeben und
gespeichert haben, nicht direkt vom Computer ausgefhrt werden. Sie mssen ihn
erst vom Compiler in ein maschinenlesbares Format bersetzen lassen.
Der Compiler ist ein eigenes Programm, das eigentlich separat mit verschiedenen
Parametern gestartet werden muss. ber diese Parameter wird dem Compiler
zum Beispiel mitgeteilt, aus welcher Datei der Quelltext stammt und wie das aus-
zufhrende Programm heien soll. Da es sich bei Code::Blocks aber um eine inte-
grierte Entwicklungsumgebung handelt, knnen Sie sich diesen Aufwand sparen.
Sie mssen lediglich den Befehl Build and Run
1
whlen. Die gesamte restliche
Arbeit nimmt Ihnen dann Code::Blocks ab.
Den Befehl Build and Run finden Sie im Men Build. Alternativ knnen Sie
den Befehl auch mit der Tastenkombination oder ber das Symbol Build
and Run starten.
Bei der bersetzung berprft der Compiler gleichzeitig auch, ob Ihr Programm
syntaktisch korrekt ist. Das heit, der Compiler kontrolliert, ob Ihre Eingaben
den formalen Regeln der Programmiersprache C++ entsprechen.
Bitte beachten Sie:
Wenn Sie eine Datei direkt ffnen zum Beispiel ber die Funktion File /
Open ... oder ber das Symbol Open mssen Sie selbst sorgfltig dar-
auf achten, dass Sie die Projektdatei mit der Erweiterung .cbp laden.
Wenn Sie nmlich einen Quelltext mit der Erweiterung .cpp direkt ffnen,
wird nur der Quelltext geladen und angezeigt. bersetzt und ausgefhrt
werden aber nur die Dateien, die sich im Projekt befinden. Greifen Sie
daher vor allem zu Beginn am besten direkt ber die Projekte auf Ihre
Dateien zu.
Eine Demonstration zum Speichern und ffnen von Projekten und Quelltex-
ten finden Sie im Video Dateien speichern und ffnen.
1. Wrtlich bersetzt bedeutet build and run Erstelle und fhre aus.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
33
Exkurs: Syntax und Semantik
Fehler in einem Programm knnen auf syntaktischer und auf semantischer Ebene
auftreten. Die Syntax bezeichnet die Regeln, die durch die Programmiersprache
vorgegeben werden. Die Semantik dagegen bezeichnet die Bedeutung eines Textes
bei einem Quelltext also das, was das Programm ausfhren soll die Funktio-
nalitt.
Der folgende Satz enthlt zum Beispiel einen Syntaxfehler:
Der Ball sprechte: Keiner kennt mich.
Die Form sprechte ist falsch gebildet und muss korrekt sprach lauten.
Der Satz
Das Kind sprach: Ball mich keiner.
dagegen ist syntaktisch korrekt, ergibt aber keinen Sinn, da er zahlreiche seman-
tische Fehler enthlt. Der Empfnger wird den Satz nicht entschlsseln knnen.
Der Compiler berprft vor allem, ob Sie die Regeln der Programmiersprache C++
einhalten also ob der Quelltext syntaktisch korrekt ist. Die semantische Kor-
rektheit also den Sinn des Programms kann der Compiler nicht berprfen.
Semantische Fehler werden daher bei der bersetzung durch den Compiler nicht
gefunden.
So viel zu Syntax und Semantik.
Starten Sie jetzt bitte die bersetzung und das Ausfhren des Programms.
Benutzen Sie dazu den Befehl Build and Run. Code::Blocks beginnt dann mit
dem bersetzen und dem Zusammenfgen des Programms. Dabei erscheinen
einige Meldungen im unteren Bereich des Fensters. Wenn Ihnen beim Abtippen
des Listings kein Fehler unterlaufen ist, wird nach kurzer Zeit die Eingabeauffor-
derung mit unserem Beispielprogramm geffnet.
Denken Sie also bitte daran:
Eine fehlerfreie bersetzung zeigt Ihnen nur, dass Ihr Programm keine
Syntaxfehler enthlt. Eine fehlerfreie bersetzung bedeutet nicht, dass Ihr
Programm fehlerfrei ist also korrekt funktioniert.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
34
Abb. 21: Ausgabe von Hallo Welt
Um das Programm zu beenden, drcken Sie die Eingabetaste. Sie gelangen dann
automatisch zurck zu Code::Blocks.
Hinweis:
Die Meldungen in den beiden untersten Zeilen der Eingabeaufforderung wer-
den beim Ausfhren des Programms in der Entwicklungsumgebung automa-
tisch erzeugt. Sie bentigen dafr keine eigenen C++-Anweisungen.
Die ausfhrbaren Dateien werden auch auf der Festplatte gespeichert und zwar
im Ordner \bin\Debug Ihres Projektordners. Fr unser Beispiel befindet sich die
ausfhrbare Datei also im Unterordner \Hallo\bin\Debug in Ihrem Ordner
Dokumente. Der Name der Datei entspricht dabei dem Projektnamen. Sie erken-
nen die ausfhrbare Datei in einem Explorerfenster an dem Symbol und der
Dateierweiterung .EXE.
Um eine ausfhrbare Datei direkt ber die Eingabeaufforderung zu starten, ff-
nen Sie zunchst ber Start / Alle Programme / Zubehr / Eingabeaufforde-
rung die Eingabeaufforderung und wechseln dann in den Unterordner im
entsprechenden Projektordner. Rufen Sie anschlieend die Datei mit dem Befehl
Programmname auf.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
35
Um unser Beispielprogramm zu starten, geben Sie in der Eingabeaufforderung
also erst den Befehl
fr den Wechsel in den Ordner ein.
Anschlieend starten Sie das Programm mit
2.5 Fehlersuche und -behebung
Code::Blocks unterscheidet drei Kategorien von Meldungen, die beim bersetzen
eines Programms angezeigt werden:
Hinweise,
Warnungen und
Fehler.
Hinweise sind nicht kritisch. Hier finden Sie vor allem zustzliche Informationen.
Das Programm wird trotz der Hinweismeldungen bersetzt und auch ausgefhrt.
Warnungen weisen Sie auf Stellen hin, die mglicherweise zu Schwierigkeiten
fhren knnen. Genau wie bei den Hinweisen fhren auch Warnungen nicht zum
Abbruch der bersetzung.
Die dritte Kategorie schlielich sind die Fehler. Sie erscheinen, wenn Sie in
einem Programm eine Anweisung verwenden, die der Compiler nicht kennt. Die
bersetzung wird dann abgebrochen und unten im Fenster von Code::Blocks
erscheint eine Meldung wie
=== Build finished: 1 errors, 1 warnings ===
1
Schauen wir uns jetzt genauer an, wie Code::Blocks Fehler meldet und wie Sie
diese Fehler beheben. Dazu verwenden wir den Quelltext, der automatisch fr
eine neue Konsolenanwendung angelegt wird.
cd documents\Hallo\bin\Debug
Hallo
Bitte beachten Sie:
Sie knnen das Programm auch direkt aus einem Explorerfenster von Win-
dows durch einen Doppelklick auf das Symbol starten. Dabei wird die Ein-
gabeaufforderung aber nach der Ausfhrung des Programms sofort wieder
geschlossen. Das heit, das Fenster mit dem Programm ist nur ganz kurz
auf dem Bildschirm zu sehen.
1. bersetzt bedeutet die Meldung Erstellen abgeschlossen: 1 Fehler, 1 Warnung.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
36
Erstellen Sie bitte ein neues Projekt fr eine Konsolenanwendung. Klicken Sie auf
das Symbol New file ganz links in der obersten Symbolleiste, und whlen Sie
im Men die Funktion Project ... oder starten Sie die Funktion New / Project ...
im Men File. Markieren Sie dann im Fenster New project from template bei
den Projekttypen den Eintrag Console application, und klicken Sie auf Go.
Legen Sie in den folgenden Fenstern C++ als Programmiersprache fest, und geben
Sie einen beliebigen Namen fr das Projekt ein. bernehmen Sie abschlieend die
Einstellungen fr den Compiler ohne nderungen, und klicken Sie auf Finish.
ndern Sie anschlieend in dem Quelltext, den Code::Blocks automatisch erzeugt
hat, das Wort cout in coud. Sie finden das Wort cout in der ersten Zeile hinter
der ffnenden geschweiften Klammer {.
Nach der nderung sollte diese Zeile so aussehen:
Versuchen Sie dann, das Programm ausfhren zu lassen. Whlen Sie dazu den
Befehl Build / Build and run, oder klicken Sie auf das Symbol Build and
run .
Code::Blocks beginnt mit der bersetzung und bricht nach kurzer Zeit ab.
Bitte beachten Sie:
Nach dem Anlegen eines neuen Projekts wechselt Code::Blocks nicht immer
automatisch in das neue Projekt. Wenn Sie nicht sicher sind, welcher Quell-
text gerade im Editor angezeigt wird, doppelklicken Sie zur Sicherheit noch
einmal auf den Eintrag der Datei main.cpp in dem neuen Projekt. Welche
Datei aktuell angezeigt wird, erkennen Sie auch an der Anzeige ganz links
in der Statusleiste.
coud << "Hello World!" << endl;


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
37
Abb. 22: Die fehlgeschlagene bersetzung
Wenn Sie sich jetzt die Anzeige im unteren Bereich des Fensters genau ansehen,
finden Sie dort in der letzten Zeile einen Hinweis auf einen Fehler. Welche Fehler
genau aufgetreten sind, zeigt Ihnen Code::Blocks weiter oben im Ausgabebereich.
Hier steht unter anderem folgende Zeile:
C:\Users\Siebeck\Documents\fehler\main.cpp 7 error:
'coud' was not declared in this scope
Schauen wir uns diese Meldung etwas genauer an.
Ganz am Anfang finden Sie in der Spalte File die Datei, in der der Fehler auf-
getreten ist in unserem Beispiel also main.cpp. In der nchsten Spalte Line
steht die Nummer der Zeile, in der Code::Blocks den Fehler vermutet. Dann folgt
in der Spalte Message
1
die eigentliche Meldung. Das Wort error (engl.: Fehler)
weist darauf hin, dass es sich um einen Fehler handelt. Dahinter wird schlielich
die Fehlermeldung selbst angezeigt allerdings in der Regel in englischer Spra-
che. In unserem Beispiel beschwert sich Code::Blocks, dass coud nicht vereinbart
ist. Die Anweisung coud ist dem Compiler also nicht bekannt.
Um den Fehler zu korrigieren, knnen Sie durch einen Mausklick auf die Mel-
dung in die Zeile im Quelltext springen, an der Code::Blocks den Fehler vermutet.
Bitte beachten Sie aber, dass diese Stelle nicht immer auch tatschlich den Feh-
ler verursacht. Wenn Sie also beim Auftreten eines Fehlers in der angegebenen
Zeile keine Probleme finden knnen, berprfen Sie auch die Zeilen unmittelbar
vor der Fehlermarkierung.
1. Message bedeutet bersetzt Nachricht.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
38
Tipp:
Die Zeile, in der Code::Blocks einen Fehler vermutet, erkennen Sie auch an der
roten Markierung links im Editor.
Schauen wir uns noch einen anderen Fehler an. Korrigieren Sie bitte die Schreib-
weise von coud wieder in cout. Lschen Sie dann die ffnende geschweifte Klam-
mer direkt oberhalb der Zeile mit der Anweisung cout. Versuchen Sie
anschlieend, das Programm ausfhren zu lassen.
Diesmal erscheinen gleich drei Meldungen. Davon bezieht sich allerdings keine
einzige tatschlich auf den Fehler. Smtliche Meldungen weisen nur auf die Aus-
wirkungen der fehlenden Klammer hin.
Tipp:
Wenn Sie sehr viele Fehlermeldungen auf einmal erhalten, konzentrieren Sie
sich zunchst auf den ersten angezeigten Fehler. Nach dem Beheben verschwin-
den dann hufig auch die anderen Meldungen.
Sehen wir uns nun an, was bei einer Warnmeldung geschieht. Fgen Sie bitte
zunchst die ffnende geschweifte Klammer wieder oberhalb der Zeile mit der
Anweisung cout ein. Geben Sie dann direkt hinter der ffnenden geschweiften
Klammer die Zeile
ein.
Bitte beachten Sie unbedingt:
Sie mssen nach jeder nderung die Funktion Build and run neu aufru-
fen. Wenn Sie einen Quelltext ndern und nicht neu bersetzen lassen,
fhrt Code::Blocks unter Umstnden eine alte Version des Programms aus.
Sie knnen ein Konsolenprogramm mit Code::Blocks nicht mehrfach starten.
Wenn die Funktionen zum bersetzen nicht aktiv sind, prfen Sie daher
bitte zunchst, ob die Anwendung vielleicht noch in der Eingabeaufforde-
rung luft.
int zahl;


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
39
Der Quelltext sollte nun so aussehen:
Listing 2: Eine provozierte Warnung
Klicken Sie dann auf das Symbol Build links in der dritten Symbolleiste,
oder starten Sie die Funktion Build im Men Build. Nach kurzer Zeit erscheint
unten im Ausgabebereich eine Meldung
C:\Users\Siebeck\Documents\fehler\main.cpp 7 warning:
unused variable 'zahl'
An dem Wort warning (engl.: Warnung) erkennen Sie, dass es sich um eine
Warnung handelt. Dahinter folgt dann wieder die eigentliche Warnung. In unse-
rem Fall meldet Code::Blocks, dass die Variable zahl nicht benutzt wird.
Die Warnung verhindert nicht, dass das Programm ausgefhrt wird. Probieren Sie
das einmal aus. Klicken Sie auf das Symbol Run in der dritten Symbolleiste
oder rufen Sie die Funktion Run im Men Build auf. Sie werden sehen,
Code::Blocks fhrt das Programm ohne Murren aus obwohl etwas nicht stimmt.
#include <iostream>
using namespace std;
int main()
{
int zahl;
cout << "Hello world" << endl;
return 0;
}
Bitte beachten Sie:
Die Warnung wird nur dann angezeigt, wenn Sie das Programm ber die
Funktion Build erzeugen lassen. Wenn Sie das Programm direkt mit der
Funktion Build and run ausfhren lassen, ist die Warnung nur ganz kurz
im Ausgabebereich zu sehen. Sie verschwindet, sobald das Programm gestar-
tet wird.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
40
Ein wichtiger Hinweis:
Auch wenn Warnungen scheinbar erst einmal keine Auswirkung haben, sollten
Sie sie nicht einfach berlesen. Denn oft machen sich die Schwierigkeiten erst
bei der Ausfhrung des Programms bemerkbar und fhren dann zu massiven
Problemen. Suchen Sie daher immer nach den Ursachen einer Warnung und
beheben Sie sie.
So viel an dieser Stelle zur Anzeige von Fehlern und zur Fehlerbehebung. Expe-
rimentieren Sie jetzt ruhig noch weiter mit dem Quelltext. Provozieren Sie wei-
tere Fehler und sehen Sie sich an, wie der Compiler reagiert und wie die Fehler
gemeldet werden.
In der nchsten Lektion werden wir uns ansehen, wie ein C++-Programm grund-
stzlich aufgebaut ist.
Zusammenfassung
Konsolenprogramme laufen unter der Eingabeaufforderung von Windows.
Um ein neues Projekt fr ein Konsolenprogramm anzulegen, klicken Sie auf das
Symbol New file ganz links in der obersten Symbolleiste. Im folgenden Men
starten Sie die Funktion Project ... . Whlen Sie anschlieend den Typ Console
application aus.
Legen Sie in den weiteren Schritten die erforderlichen Einstellungen fr Ihr Pro-
jekt fest.
Im Editor erfassen Sie den Quelltext.
Um die Dateien eines Projekts zu speichern, benutzen Sie den Befehl Save all
files im Men File oder klicken auf das Symbol Save all files .
Um ein Projekt wieder zu ffnen, benutzen Sie die Funktion Open ... im Men
File oder das Symbol Open .
Um das Programm zu bersetzen und auszufhren, whlen Sie den Befehl Build
/ Build and Run. Alternativ knnen Sie den Befehl Build and Run auch mit
der Tastenkombination oder ber das Symbol Build and Run starten.
Bei Fehlern wird die bersetzung abgebrochen und eine Meldung im unteren
Bereich des Fensters angezeigt.
Eine Demonstration der verschiedenen Meldungen finden Sie auch im Video
Fehler- und Warnmeldungen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
41
II. Aufgaben zur Selbstberprfung
berprfen Sie nun bitte Ihr neu erworbenes Wissen. Lsen Sie die Aufgaben
zunchst selbststndig und vergleichen Sie anschlieend Ihre Lsungen mit den
Angaben im Anhang.
1. Was ist ein Konsolenprogramm?
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
2. Wie erstellen Sie mit Code::Blocks ein neues Projekt fr ein Konsolenpro-
gramm? Nennen Sie die ntigen Befehle und Auswahlen.
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
3. Wie werden Schlsselwrter in der Standardeinstellung im Editor von
Code::Blocks dargestellt?
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
42
4. Nennen Sie die drei Kategorien von Meldungen, die unten im Fenster von
Code::Blocks angezeigt werden knnen.
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
43
3 Programmaufbau und Kommentare
In dieser Lektion lernen Sie, wie ein C++-Programm grundstzlich aufgebaut ist.
Auerdem erfahren Sie, wie Sie Kommentare in Ihren Quelltext einfgen.
3.1 Grundstzlicher Aufbau eines C++-Programms
Fr jede Programmiersprache gelten bestimmte Regeln, die Sie exakt einhalten
mssen. Schon kleinste Abweichungen von diesen Regeln fhren dazu, dass der
Compiler die bersetzung mit einer Fehlermeldung abbricht.
Allgemein sieht ein C++-Quelltext so aus:
Listing 3: Grundstzliche Struktur eines C++-Programms mit mehreren Anweisungen
Das Programm besteht aus insgesamt 5 Elementen: int, main(), den beiden
geschweiften Klammern { und } und den Anweisungen zwischen den beiden
Klammern. Schauen wir uns diese Elemente der Reihe nach an:
int gibt den Rckgabewert der Funktion vor. Damit werden wir uns noch in
einem anderen Studienheft beschftigen.
Bei main() handelt es sich um den Namen einer Funktion. Solche Funktionen
enthalten die Anweisungen, die ein C++-Programm ausfhren soll. Die Funktion
main() ist dabei der Startpunkt fr ein Konsolenprogramm. Sie wird bei der
Ausfhrung eines Konsolenprogramms zuerst abgearbeitet und muss daher auch
zwingend vorhanden sein.
Die Anweisungen, die von der Funktion ausgefhrt werden, stehen im sogenann-
ten Anweisungsteil. Dieser Anweisungsteil steht zwischen den beiden geschweif-
ten Klammern { und }. In unserem Beispiel enthlt der Anweisungsteil drei
Denken Sie bitte daran:
Der Compiler kann nur die Syntax prfen. Daher gelten auch die formalen
Regeln ausschlielich fr die syntaktische Korrektheit. Ein Programm, das
sich bersetzen lsst, kann trotzdem reichlich logische Fehler enthalten.
int main()
{
Anweisung1;
Anweisung2;
return 0;
}


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
44
Anweisungen. Die einzelnen Anweisungen werden dabei jeweils durch ein Semiko-
lon getrennt und in einzelne Zeilen geschrieben. Die letzte Anweisung return 0
sorgt dafr, dass das Programm korrekt beendet wird.
3.2 Kommentare
Auch wenn Ihnen der Aufbau eines C++-Programms jetzt vielleicht noch sehr ein-
fach vorkommt, werden grere Programme sehr schnell unbersichtlich, oder Sie
vergessen im Laufe der Zeit, was Sie sich bei Ihrem Quelltext gedacht haben und
wie Sie die Funktionen programmiert haben.
Daher sollten Sie Ihre Quelltexte immer kommentieren. Solche Kommentare die-
nen als Gedchtnissttze und helfen beim Verstndnis der Funktionsweise eines
Programms erheblich.
Gewhnen Sie sich daher an, Ihre Quelltexte immer zu kommentieren. Achten
Sie dabei aber darauf, dass der Quelltext bersichtlich und lesbar bleibt. Berck-
sichtigen Sie dazu die folgenden Regeln:
Erlutern Sie den logischen Ablauf des Programms und nicht jede einzelne
Programmzeile.
Beschrnken Sie die Kommentierung auf ungewhnliche oder sehr anspruchs-
volle Konstruktionen. Einfache Befehle mssen Sie nicht kommentieren.
Bitte beachten Sie:
Die Zeilen Anweisung1; und Anweisung2; dienen in dem Beispiel nur als
Platzhalter. Wenn Sie versuchen, dieses Programm bersetzen zu lassen,
erhalten Sie Fehlermeldungen, da der Compiler mit dem Text Anweisung1
und Anweisung2 nichts anfangen kann. In den nchsten Lektionen werden
wir die Platzhalter durch echte ausfhrbare Anweisungen ersetzen.
Sie knnen auch mehrere Anweisungen in eine Zeile schreiben, wenn Sie sie
durch ein Semikolon trennen. Dadurch wird ein Quelltext aber sehr schnell
unbersichtlich. Arbeiten Sie daher gerade zu Beginn am besten mit einer
Zeile fr jede Anweisung. Denken Sie aber auch hier daran, die Zeile mit
einem Semikolon abzuschlieen.
Bitte beachten Sie:
Vor allem bei der Teamarbeit sind Kommentare unverzichtbar. Andernfalls
muten Sie den anderen Programmierern sehr viel zustzliche und berfls-
sige Arbeit beim Hineindenken in Ihre Quelltexte zu.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
45
Wenn Sie einen Quelltext ndern, denken Sie unbedingt auch an die nde-
rungen der Kommentare. Viele Programmierer gehen automatisch davon aus,
dass Kommentare korrekt sind und prfen sie nicht weiter. Ein falscher
Kommentar kann daher viel unangenehmere Folgen haben als ein fehlender.
Um einen Kommentar zu erstellen, gibt es in C++ zwei Mglichkeiten:
1. Das Kommentarzeichen //
Mit dem Kommentarzeichen // markieren Sie alles, was in der Zeile rechts
von dem Zeichen steht als Kommentar. Diese Kommentarform wird hufig
eingesetzt, um einzelne Anweisungen zu kommentieren oder um einzelne
Anweisungen zur Fehlersuche in einem Programm abzuschalten. Man spricht
in diesem Fall auch von auskommentieren.
2. Die Kommentarzeichen /* und */
Mit den Kommentarzeichen /* und */ knnen Sie ganze Blcke im Quelltext
als Kommentar markieren. Die Zeichen /* markieren dabei den Beginn eines
Kommentars und die Zeichen */ das Ende des Kommentars. Alles was zwi-
schen diesen Zeichen steht, wird vom Compiler als Kommentar betrachtet.
Diese Methode wird benutzt, um grere Kommentare zu erstellen oder bei
der Fehlersuche in Programmen groe Blcke abzuschalten.
Ein Programm mit Kommentaren knnte dann so aussehen:
Listing 4: C++-Programm mit Kommentaren
Die ersten drei Zeilen des Programms werden durch die Zeichen /* und */ als
Kommentar markiert. Danach folgt die Funktion main() mit der Anweisung
return 0. Die letzte Zeile ist wieder als Kommentar markiert diesmal mit dem
Zeichen //.
Das Programm hat allerdings keine Wirkung, da der Anweisungsteil nur aus der
Anweisung return 0 besteht. Sie knnen es aber trotzdem bersetzen und aus-
fhren lassen. Probieren Sie es einfach einmal aus.
/* #################################################
Beschreibung des Programms
################################################# */
int main()
{
return 0;
}
// #################################################


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
46
Zusammenfassung
Funktionen enthalten die Anweisungen, die ein C++-Programm ausfhrt.
Zu jeder Funktion gehrt ein Anweisungsteil.
Sie knnen entweder einzelne Zeilen als Kommentar markieren oder ganze Blcke.
III. Aufgaben zur Selbstberprfung
berprfen Sie nun bitte Ihr neu erworbenes Wissen. Lsen Sie die Aufgaben
zunchst selbststndig und vergleichen Sie anschlieend Ihre Lsungen mit den
Angaben im Anhang.
1. Wie heit die Funktion, die den Startpunkt eines C++-Konsolenprogramms
bildet?
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
2. Wie werden die Anweisungen im Anweisungsteil eines C++-Programms von-
einander getrennt?
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
47
3. Sie wollen eine komplette Zeile in einem Programm als Kommentar markie-
ren. Wie gehen Sie vor?
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
48
4 Ausgabe
In dieser Lektion lernen Sie, wie Sie Informationen aus einem C++-Programm auf
dem Bildschirm ausgeben.
Einen ersten Kontakt mit einem Programm, das eine Ausgabe durchfhrt, hatten
Sie bereits in diesem Studienheft beim Erstellen des Hallo Welt-Programms.
Schauen wir uns das Programm erweitert um einen Kommentar noch einmal
im Detail an:
Listing 5: Das erweiterte Hallo Welt-Programm
Die ersten drei Zeilen sind ein Kommentarblock.
Die Anweisung #include <iostream> wird bentigt, um dem Compiler die
Anweisung cout
1
bekannt zu machen. Bitte beachten Sie, dass das Listing ohne
die Anweisung #include <iostream> nicht bersetzt werden kann.
Die Zeile
vereinbart einen sogenannten Namensraum in unserem Fall den Namensraum
std
2
. Diese Anweisung ist ebenfalls erforderlich, damit der Compiler die Anwei-
sungen cout kennt. Denn eigentlich lautet die Anweisung vollstndig std::cout.
/* #################################################
Hallo Welt Programm
################################################# */
#include <iostream>
using namespace std;
int main()
{
cout << "Hallo Welt!" << endl;
cout << "Es gruessen Dich Max und Moritz" << endl;
return 0;
}
1. cout steht fr console output (bersetzt etwa: Konsolenausgabe).
using namespace std;
2. std steht als Abkrzung fr standard.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
49
Hinweis:
Sie knnen die Vereinbarung des Namensraums std auch weglassen. Dann
mssen Sie allerdings in vielen Fllen std:: direkt bei den Anweisungen
angeben. Wir benutzen die Anweisung daher in allen weiteren Beispielen, um
Schreibarbeit zu sparen.
Dann folgt der Kopf der Funktion main(). In der Funktion schlielich stehen
zwei Anweisungen, die eine Ausgabe durchfhren:
cout bezeichnet dabei einen sogenannten Stream
1
. Auf die Funktionsweise von
Streams gehen wir ebenfalls spter noch genauer ein. An dieser Stelle sollten Sie
nur merken, dass alles, was Sie in den Stream cout hineinschreiben, auf dem
Bildschirm ausgegeben wird.
Fr das Hineinschreiben in einen Stream ist in C++ der Streamoperator <<
zustndig. Er sorgt in der ersten Anweisung
dafr, dass die Zeichenkette Hallo Welt! in den Stream cout geschrieben wird
also auf dem Bildschirm ausgegeben wird. Neben der Zeichenkette finden Sie in
der Anweisung auch noch die Zeichen endl
2
. Dabei handelt es sich um einen soge-
nannten Manipulator. Er sorgt etwas vereinfacht dafr, dass nach der Aus-
gabe noch ein Zeilenumbruch durchgefhrt wird. Das funktioniert aber nur dann,
wenn Sie zwischen der Zeichenkette und dem Manipulator noch einmal den Stre-
amoperator << angeben. Er stellt hier dann sicher, dass die beiden Ausgaben
nacheinander erfolgen.
Kommen wir noch einmal zurck zu der Zeichenkette, die ausgegeben werden.
Damit der Compiler wei, dass es sich um eine Zeichenkette handelt, mssen Sie
den Text mit Anfhrungszeichen umfassen. Fehlen diese Anfhrungszeichen, hlt
der Compiler den Text fr eine normale Anweisung, die er aber in aller Regel
nicht kennt. Das Ergebnis ist dann eine Fehlermeldung.
cout << "Hallo Welt!" << endl;
cout << "Es gruessen Dich Max und Moritz" << endl;
1. Stream bedeutet bersetzt so viel wie Strom.
cout << "Hallo Welt!" << endl;
2. endl steht fr end of line (Zeilenende).
Zeichenketten werden auch Strings genannt. Wrtlich bersetzt bedeutet
string so viel wie Schnur oder Band. Gemeint ist damit, dass die Zeichen
hintereinander stehen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
50
Die zweite Anweisung
ist genauso aufgebaut wie die erste Anweisung. Erst wird der Stream angegeben,
der benutzt wird, dann folgen der Streamoperator <<, eine Zeichenkette, noch ein
Streamoperator << und der Manipulator endl. Die Anweisung gibt also die Zei-
chenkette Es gruessen Dich Max und Moritz in der Eingabeaufforderung aus
und fhrt einen Zeilenumbruch durch.
Die Anweisung return 0 schlielich sorgt dafr, dass das Programm korrekt
beendet wird.
Wie oft Sie hintereinander in einen Stream schreiben, spielt fr die Ausgabe
keine Rolle. Das knnen Sie sehr einfach mit dem folgenden Listing testen. Legen
Sie einmal ein neues Projekt mit Code::Blocks an und geben Sie das Listing ein.
Lassen Sie es dann bersetzen und sehen Sie sich die Ausgaben an.
Listing 6: Einfache Textausgaben
Sie werden sehen: Beide Ausgaben stehen jeweils in einer Zeile obwohl bei der
zweiten Version mit zwei Anweisungen in den Stream geschrieben wird. Alles,
was Sie hintereinander in einen Stream schreiben, wird also auch hintereinander
auf dem Bildschirm ausgegeben. Dabei spielt es keine Rolle, ob Sie die Ausgabe
mit einer Anweisung oder mit mehreren Anweisungen durchfhren.
cout << "Es gruessen Dich Max und Moritz" << endl;
/* #################################################
Einfache Textausgaben
################################################# */
#include <iostream>
using namespace std;
int main()
{
//die erste Ausgabe
cout << "Ausgabe ohne Umbruch" << endl;
//und die zweite Ausgabe
cout << "Ausgabe ";
cout << "mit Umbruch" << endl;
return 0;
}


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
51
Bitte beachten Sie, dass bei der Ausgabe mit mehreren Anweisungen keine Zei-
lenumbrche eingefgt werden. Das mssen Sie wenn gewnscht selbst erle-
digen. Schauen wir uns dazu einmal das folgende Listing an:
Listing 7: Textausgabe mit Zeilenumbrchen
Neu im vorigen Listing ist vor allem die Zeichenkombination \n, die in vier Aus-
gaben verwendet wird.
Testen Sie auch dieses Programm einmal und sehen Sie sich die Ausgabe genau
an. Sie werden feststellen, dass berall dort, wo die Zeichen \n in einer Zeichen-
kette stehen, ein Zeilenumbruch durchgefhrt wird.
Ob Sie den Zeilenumbruch zu Beginn einer Ausgabe oder am Ende einer Ausgabe
durchfhren, ist dabei beliebig. Denn smtliche Ausgaben, die in einen Stream
geschrieben werden, werden zunchst einmal intern hintereinandergestellt. Der
Stream, der vom Programm im vorigen Listing erzeugt wird, sieht intern also so
aus:
Ausgabe ohne Umbruch\nund mit Umbruch.
Dabei ist es egal, \nwo der Umbruch steht. \n\n
Erst bei der eigentlichen Ausgabe wird dann an jeder Position, an der sich die
Zeichen \n befinden, ein Zeilenumbruch durchgefhrt.
Die beiden letzten Ausgabeanweisungen im vorigen Listing schreiben nur das Zei-
chen \n in den Stream. Hier erfolgt dann die Ausgabe von Leerzeilen.
/* #################################################
Textausgabe mit Zeilenumbrchen
################################################# */
#include <iostream>
using namespace std;
int main()
{
cout << "Ausgabe ";
cout << "ohne Umbruch";
cout << "\nund mit Umbruch. ";
cout << "Dabei ist es egal, \n";
cout << "wo der Umbruch steht. ";
cout << '\n';
cout << '\n';
return 0;
}


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
52
Wenn Sie die letzten beiden Anweisungen in dem Listing noch einmal genauer
ansehen, werden Sie feststellen, dass die Zeichen \n hier nicht mit Anfhrungs-
zeichen umfasst werden, sondern mit zwei Apostrophen. Denn es handelt sich bei
den Zeichen \n nicht wie Sie vielleicht vermutet haben um eine Zeichenkette,
sondern um ein sogenanntes Steuerzeichen. Diese Steuerzeichen werden von
C++ immer als ein Zeichen betrachtet, obwohl sie tatschlich aus mehreren Zei-
chen bestehen. Der einleitende Backslash
1
\ zeigt dem Compiler aber lediglich an,
dass das folgende Zeichen nicht ausgegeben werden soll, sondern steuernde Infor-
mationen hat.
Da in dem Beispiel im vorigen Listing die Ausgabe von \n direkt ber den
Stream erfolgt, knnten Sie das Steuerzeichen auch als Zeichenkette ausgeben
lassen also mit Anfhrungszeichen einschlieen. Auch dann wird der Zeilenum-
bruch ausgefhrt. Sie sollten sich aber von vornherein angewhnen, einzelne Zei-
chen also auch Steuerzeichen mit Apostrophen einzuschlieen. Wie Sie im
weiteren Verlauf dieses Studienheftes noch sehen werden, ist der Unterschied
zwar klein, aber sehr wichtig.
4.1 Escape-Sequenzen
Neben dem Steuerzeichen \n, das Sie gerade kennengelernt haben, gibt es noch
eine Reihe weiterer Steuerzeichen, mit denen Sie die Ausgabe beeinflussen kn-
nen. Alle diese Steuerzeichen werden als sogenannte Escape-Sequenzen
2
einge-
geben. Dabei muss vor dem eigentlichen Zeichen immer der Backslash \ stehen.
Einen berblick ber die Escape-Sequenzen und ihre Wirkung finden Sie in der
folgenden Tabelle:
1. Backslash bedeutet frei bersetzt so viel wie Rckstrich.
Merken Sie sich bitte:
Zeichenketten werden mit Anfhrungszeichen eingeschlossen. Einzelne
Zeichen werden mit Apostrophen eingeschlossen. Steuerzeichen wie \n wer-
den als ein Zeichen behandelt.
2. Wrtlich bersetzt bedeutet escape so viel wie Flucht.
Escape-Sequenzen sind spezielle Steuerzeichen. Sie werden durch den
Backslash \ eingeleitet.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
53
Tabelle 1: Steuerzeichen mit Escape-Sequenzen
Probieren Sie die Wirkung einmal im vorigen Listing aus. Lassen Sie die Einf-
gemarke zum Beispiel zu einem Tabulator springen oder geben Sie einen Signal-
ton aus.
Escape-Sequenzen werden auch verwendet, um bestimmte Zeichen, die fr den
Compiler eine besondere Bedeutung haben, als normale Zeichen auszugeben.
Nehmen wir einmal an, Sie wollen die Zeichenkette Er sagte "Guten Tag"
zu seinem Kind auf dem Bildschirm ausgeben. Die Wrter Guten Tag sollen
dabei durch zwei Anfhrungszeichen eingeschlossen sein. Die folgende Ausgabe-
anweisung sieht auf den ersten Blick ganz vielversprechend aus:
Wenn Sie die Ausgabeanweisung in dieser Form verwenden, meldet der Compiler
einen Fehler, da er das Wort Guten fr eine Anweisung hlt, die er nicht kennt.
Das liegt daran, dass die Zeichenkette zwar korrekt vor Er eingeleitet wird, aber
durch die Anfhrungszeichen vor dem Wort Guten fr den Compiler wieder zu
Ende ist. Die Wrter zu seinem Kind werden dann als zweite eigene Zei-
chenkette interpretiert.
Damit auch die mittleren beiden Anfhrungszeichen wie gewnscht als Zeichen
ausgegeben werden, mssen Sie sie als Escape-Sequenz schreiben. Die korrekte
Schreibweise fr unser Beispiel sieht dann so aus:
Durch den einleitenden Backslash \ erkennt der Compiler jetzt, dass die beiden
Anfhrungszeichen als Zeichen ausgegeben werden sollen. Die Zeichenkette ist
damit erst beim letzten Anfhrungszeichen hinter dem Wort Kind zu Ende.
Weitere Escape-Sequenzen fr die Ausgabe von besonderen Zeichen finden Sie in
der folgenden Tabelle:
Escape-Sequenz Wirkung
\n Es wird ein Zeilenumbruch eingefgt.
\t Die Einfgemarke wird an den nchsten horizontalen Tabulator
gesetzt. Sie bewegt sich damit nach rechts.
\b Die Einfgemarke wird ein Zeichen nach links bewegt.
\r Es wird ein Wagenrcklauf durchgefhrt.
Dabei wird die Einfgemarke nur an den Beginn der aktuellen
Zeile gesetzt. Es erfolgt kein Zeilenumbruch.
\a Es wird ein Signalton ausgegeben.
cout << "Er sagte "Guten Tag" zu seinem Kind";
cout << "Er sagte \"Guten Tag\" zu seinem Kind";


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
54
Tabelle 2: Escape-Sequenzen fr besondere Zeichen
So viel an dieser Stelle zur Ausgabe von Texten. In der nchsten Lektion erfah-
ren Sie, wie Sie mit Variablen arbeiten und arithmetische Operationen in einem
Programm durchfhren.
Zusammenfassung
Die Ausgabe von Text erfolgt ber den Stream cout und den Operator << .
Zeichenketten werden mit Anfhrungszeichen eingeschlossen. Einzelne Zeichen
werden mit Apostrophen eingeschlossen.
Mit dem Zeichen \n fhren Sie einen Zeilenumbruch durch.
ber Escape-Sequenzen knnen Sie weitere Steuerzeichen einfgen und be-
stimmte Zeichen wie das Anfhrungszeichen auf dem Bildschirm ausgeben.
IV. Aufgaben zur Selbstberprfung
berprfen Sie nun bitte Ihr neu erworbenes Wissen. Lsen Sie die Aufgaben
zunchst selbststndig und vergleichen Sie anschlieend Ihre Lsungen mit den
Angaben im Anhang.
1. Bitte sehen Sie sich die folgenden Anweisungen an. In wie vielen Zeilen in
der Eingabeaufforderung erfolgt die Ausgabe? Begrnden Sie bitte kurz Ihre
Antwort.
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
auszugebendes Zeichen Escape-Sequenz
" \"
' \'
\ \\
cout << "Dies ist ein C++-Programm";
cout << "mit einer Ausgabe";
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
55
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
2. Schreiben Sie ein C++-Programm, das mithilfe von Escape-Sequenzen fol-
gende Ausgabe erzeugt:
Herr Meier erzaehlt: "Ich habe nicht geglaubt, dass er
'Opa' zu mir gesagt hat."
Achten Sie dabei vor allem auf die verschiedenen Anfhrungszeichen.
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
56
5 Variablen und Operatoren
In dieser Lektion erfahren Sie, wie Sie Werte in Variablen speichern und Rechen-
operationen durchfhren.
Beginnen wir mit den Variablen.
5.1 Variablen
Einen ersten kurzen Kontakt mit Variablen hatten Sie ja bereits im letzten Stu-
dienheft. Dort haben Sie gelernt, dass die Vereinbarung einer Variablen ber den
Datentyp und einen Bezeichner erfolgt.
Die Anweisung
vereinbart zum Beispiel eine Variable mit dem Namen wert vom Typ int. Die
Angabe int steht als Abkrzung fr Integer
1
mit 32 Bit und bedeutet, dass die
Variable ganze Zahlen im Wertebereich von 2 147 483 648 bis 2 147 483 647 auf-
nehmen kann. Mit den Datentypen beschftigen wir uns gleich noch ausfhr-
licher.
Schauen wir uns jetzt den Einsatz von Variablen in einem ganz einfachen Pro-
gramm an. Was sich hinter den einzelnen Zeilen verbirgt, erfahren Sie im
Anschluss an das Listing.
int wert;
1. Integer bedeutet bersetzt ganze Zahl.
Die Vereinbarung einer Variablen umfasst den Datentyp und den Bezeich-
ner der Variablen. Der Datentyp wird dabei vor dem Bezeichner angegeben.
Abgeschlossen wird die Vereinbarung durch ein Semikolon.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
57
Listing 8: Ein einfaches Beispiel fr die Verwendung von Variablen
Die Zeile
int wert;
kennen Sie jetzt ja bereits. Hier wird die Variable wert vom Typ int vereinbart.
Hinweis:
An welcher Stelle Sie eine Variable vereinbaren, ist relativ beliebig. Die Ver-
einbarung muss nur vor dem ersten Zugriff erfolgen. In C++ ist es aber blich,
Variablen zu Beginn einer Funktion zu vereinbaren. Dann ist auf einen Blick
klar, welche verschiedenen Variablen in der Funktion genutzt werden.
/* #################################################
Ein einfaches Beispiel fr Variablen
################################################# */
#include <iostream>
using namespace std;
int main()
{
// Vereinbarung einer Variable
int wert;
// 1. Zuweisung
wert = 100 + 20;
// 1. Ausgabe
cout << wert << endl;
// 2. Ausgabe
cout << wert << endl;
// 2. Zuweisung
wert = 100 + 30;
// 3. Ausgabe
cout << wert << endl;
return 0;
}


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
58
Tipp:
Sie knnen Variablen desselben Typs auch in einer Anweisung vereinbaren.
Dazu geben Sie die Namen hintereinander an und trennen Sie durch Kommas.
Der Datentyp muss nur einmal vorne angegeben werden. Die Zeile
int zahl, zahl1, zahl2;
vereinbart zum Beispiel drei Variablen vom Typ int.
Mit der Anweisung
wert = 100 + 20;
wird das Ergebnis der Rechenoperation 100 + 20 in die Variable wert geschrie-
ben. Dazu wird der Zuweisungsoperator = benutzt. Dieser Zuweisungsoperator
weist der links stehenden Variablen das Ergebnis des rechts stehenden Ausdrucks
zu. Nach der Zuweisung hat die Variable wert also den Wert 120.
Danach folgen zwei Ausgaben. Dabei wird jeweils der aktuelle Wert der Variablen
wert ausgelesen und auf dem Bildschirm ausgegeben. Da sich durch das Auslesen
der Wert der Variablen nicht verndert, wird in beiden Fllen derselbe Wert aus-
gegeben.
Hinweis:
Bei der Ausgabe ber den Stream cout ist der Datentyp der Variablen im All-
gemeinen ohne Bedeutung. Es wird automatisch das richtige Format fr die
Ausgabe gewhlt.
Nach den beiden Ausgaben weisen wir der Variablen wert den Wert der Rechen-
operation 100 + 30 zu. Das bernimmt die folgende Anweisung:
wert = 100 + 30;
Jetzt hat die Variable nicht mehr den Wert 120, sondern den Wert 130. Bei einer
Zuweisung wird also ein eventuell bereits vorhandener Wert berschrieben und
geht verloren. Das erkennen Sie auch an der letzten Ausgabe. Sie liefert jetzt
nmlich den neuen Wert von wert also 130.
Bitte merken Sie sich:
Wenn Sie einer Variablen einen Wert zuweisen, geht ein eventuell vorhan-
dener Wert unwiederbringlich verloren. Falls Sie den ursprnglichen Wert
erhalten wollen, mssen Sie ihn vor der Zuweisung des neuen Werts sichern
zum Beispiel in einer anderen Variablen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
59
Exkurs: Namenskonventionen fr Bezeichner
Bei der Wahl von Bezeichnern also der Wahl von Namen mssen Sie in C++
einige Einschrnkungen beachten. So drfen Sie zum Beispiel Schlsselwrter
nicht einzeln als Bezeichner benutzen.
Als Teil eines Namens sind Schlsselwrter allerdings erlaubt. Der Bezeichner
intVariable wre also mglich.
Als erstes Zeichen eines Bezeichners mssen Sie einen Unterstrich _ oder einen
Buchstaben verwenden. Alle anderen Zeichen und damit auch Zahlen sind als
erstes Zeichen nicht erlaubt. Die weiteren Zeichen des Namens knnen dann
Buchstaben, Zahlen oder Unterstriche sein. Sonderzeichen wie . oder / sind aller-
dings nicht mglich. Auch Umlaute wie oder und das knnen Sie nicht ver-
wenden.
Bitte beachten Sie, dass C++ zwischen Gro- und Kleinschreibung bei Bezeich-
nern unterscheidet. Die Bezeichner Wert und wert stehen damit also fr zwei
unterschiedliche Variablen.
Neben diesen Vorgaben durch die Programmiersprache sollten Sie aber auch noch
die folgenden Stil-Richtlinien beachten. Sie sorgen dafr, dass Ihr Quelltext gut
lesbar ist und auch fr Dritte nachvollziehbar bleibt.
1. Verwenden Sie sprechende Bezeichner.
Namen wie x, y oder z geben keinen Hinweis, wofr Sie die Variable benut-
zen. Eindeutiger sind Namen wie zum Beispiel summe oder ergebnis.
2. Whlen Sie kurze prgnante Namen.
Zwar ist die Lnge der Bezeichner in C++ nicht beschrnkt, aber lange kom-
plizierte Namen fhren schnell zu Fehlern. Denn Sie mssen immer den voll-
stndigen Namen der Variablen eingeben, wenn Sie mit der Variablen
arbeiten wollen. Und je komplizierter und lnger ein Name ist, desto schnel-
ler drohen Tippfehler.
Zu kurz sollten Sie den Namen aber auch nicht whlen, da er andernfalls
nicht mehr verstndlich ist.
3. Wenn Sie zusammengesetzte Namen verwenden, beginnen Sie jeden Bestand-
teil des Namens mit einem Grobuchstaben.
So lsst sich ergebnisAddition sehr viel leichter lesen als ergebnisaddi-
tion oder auch ergebnis_addition. Der erste Buchstabe eines Bezeichners
sollte grundstzlich kleingeschrieben werden.
Zur Erinnerung:
Schlsselwrter sind reservierte Wrter, die von der Programmiersprache
selber benutzt werden.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
60
In der folgenden Tabelle finden Sie die Regeln an einigen Beispielen noch einmal
zusammengefasst:
Tabelle 3: Beispiele fr Bezeichner
So viel an dieser Stelle zu den Variablen. Schauen wir uns nun die Datentypen
von C++ an.
5.2 Die Datentypen von C++
Wie Sie ja bereits wissen, bernimmt der Datentyp zwei wichtige Funktionen:
1. Der Compiler interpretiert anhand des Datentyps die gespeicherten Informa-
tionen. So kann er zum Beispiel unterscheiden, ob es sich bei den Daten um
eine ganze Zahl oder eine Zahl mit Nachkommastellen handelt.
2. Der Compiler reserviert anhand des Datentyps Platz im Speicher des Com-
puters. Damit wird automatisch auch der mgliche Wertebereich der Variab-
len festgelegt.
Schauen wir uns jetzt die wichtigsten Datentypen von C++ der Reihe nach an.
Bezeichner Hinweis
int Der Bezeichner ist nicht gltig, da es sich um ein
Schlsselwort handelt.
intVariable Der Bezeichner ist gltig, da das Schlsselwort in
Kombination verwendet wird.
2Zahl, 2.Zahl Der Bezeichner ist ungltig, da das erste Zeichen eine
Zahl ist. Im zweiten Bezeichner wird auerdem ein
Punkt verwendet.
wert1, wert2 Die beiden Bezeichner sind gltig. Die Zahl steht nicht
an erster Stelle.
Das_ist_der_erste_Wert Der Bezeichner ist grundstzlich gltig, aber unntig
lang. Auerdem ist er durch die Unterstriche recht
schwer zu lesen.
DasIstDerErsteWert Der Bezeichner ist ebenfalls gltig, aber ebenfalls
unntig lang.
z, a, x, x1 Die Bezeichner sind gltig, aber nicht sprechend.
Zahl, zahl Beide Bezeichner sind gltig. Es handelt sich aber um
zwei unterschiedliche Variablen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
61
5.2.1 Datentypen fr ganze Zahlen
Fr ganze Zahlen kennt C++ 6 verschiedene Typen, die sich im Wertebereich und
in der Darstellung des Vorzeichens unterscheiden. Details zu diesen Datentypen
finden Sie in der folgenden Tabelle:
Tabelle 4: Datentypen fr ganze Zahlen
Tipp:
Ob ein Datentyp ein Vorzeichen abbildet oder nicht, knnen Sie sich ganz ein-
fach an dem Zusatz unsigned (engl.: vorzeichenlos) merken. Wenn der Zusatz
angegeben ist, speichert der Datentyp kein Vorzeichen. Fehlt der Zusatz dage-
gen, wird ein Vorzeichen gespeichert.
Welche der verschiedenen Typen Sie in Ihrem Programm verwenden, hngt von
der grten Zahl ab, die Sie wahrscheinlich verarbeiten werden. Wenn Sie nm-
lich einen Datentypen mit einem zu kleinen Wertebereich benutzen, kann ein
sogenannter berlauf erfolgen.
Dieser berlauf tritt wie Sie ja bereits aus dem Studienheft IMIT 2 wissen
ein, wenn fr einen Datentypen nur eine bestimmte Anzahl Bits vorgesehen ist.
Und das ist bei allen Datentypen mit einem festen Wertebereich der Fall.
Zur Erinnerung:
Grundstzlich werden folgende Datentypen unterschieden:
ganze Zahlen,
Gleitkommazahlen,
einzelne Zeichen und Zeichenketten sowie
logische Werte wie wahr und falsch.
Datentyp Bytes Wertebereich
short 2 -32 768 bis 32 767
unsigned short 2 0 bis 65 535
int 4 -2 147 483 648 bis 2 147 483 647
unsigned int 4 0 bis 4 294 967 295
long
a)
a) Die Gre und der Wertebereich sind nicht exakt festgelegt. Auf 32-Bit-Systemen entspre-
chen long beziehungsweise unsigned long in der Regel den Typen int bezie-
hungsweise unsigned int.
8 -9 223 372 036 854 775 808 bis
9 223 372 036 854 775 807
unsigned long 8 0 bis 18 446 744 073 709 551 615


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
62
Schauen wir uns diesen berlauf an einem Beispiel an:
Sie arbeiten mit einer Variablen vom Typ short und weisen dieser Variablen den
maximalen Wert 32 767 zu. Bei der Addition von 1 ist das Ergebnis nicht wie
erwartet 32 768, sondern 32 768. Wenn Sie noch einmal an die binre Darstel-
lung von Werten zurckdenken, wird auch schnell klar, wie dieses Problem ent-
steht. Denn bei der Addition von 1 auf den maximal mglichen Wert 32 767
rutscht ein gesetztes Bit in das Vorzeichenbit und damit wird der gesamte Wert
negativ.
Die Anzahl der Bytes, die im Speicher fr einen Datentypen reserviert wird,
hngt vom Betriebssystem und auch vom Compiler ab. Die konkrete Gre kn-
nen Sie ber die C++-Funktion sizeof() ermitteln. Der Datentyp oder der
Bezeichner der Variablen wird dabei in den Klammern der Funktion angegeben.
sizeof(int) ermittelt also den Speicherbedarf eines int-Datentypen, und
sizeof(intVar) ermittelt den Speicherbedarf der Variablen intVar.
Schauen wir uns jetzt die Arbeit mit verschiedenen Datentypen fr ganze Zahlen
in einem Programm an. Im folgenden Listing lassen wir zunchst den Speicher-
bedarf verschiedener Datentypen und Variablen ermitteln. Zum Schluss provozie-
ren wir den berlauf einer Variablen vom Datentyp short.
Abb. 23: Der berlauf
Zur Erinnerung:
Negative Werte werden als 2er-Komplement dargestellt. Hier werden die
Werte der gesetzten Bits auf den grten darstellbaren negativen Wert des
Typen addiert. In unserem Beispiel wre der grte darstellbare negative
Wert -32 768. Da kein Bit gesetzt ist, werden keine weiteren Werte addiert
und das Ergebnis entspricht dem grten darstellbaren negativen Wert.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
63
/* #################################################
Datentypen fr ganze Zahlen
################################################# */
#include <iostream>
using namespace std;
int main()
{
// Vereinbarung einer Variablen
short shortVar;
int intVar;
long longVar;
//Die Gre der Datentypen ausgeben
//bitte jeweils in einer Zeile eingeben
cout << "Die Groesse von short ist:
" << sizeof(short) << endl;
cout << "Die Groesse von int ist:
" << sizeof(int) << endl;
cout << "Die Groesse von long ist:
" << sizeof(long) << endl;
//Die Gre der Variablen ausgeben
//bitte jeweils in einer Zeile eingeben
cout << "Die Groesse von shortVar ist:
" << sizeof(shortVar) << endl;
cout << "Die Groesse von intVar ist:
" << sizeof(intVar) << endl;
cout << "Die Groesse von longVar ist:
" << sizeof(longVar) << endl;
//Einen berlauf von shortVar provozieren
//Maximalwert zuweisen
shortVar = 32767;
cout << "Der Wert ist " << shortVar << endl;
//Addition von 1
shortVar = shortVar +1;


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
64
Listing 9: Datentypen fr ganze Zahlen
Schauen wir uns die einzelnen Zeilen wieder im Detail an:
Die ersten drei Anweisungen geben nacheinander den Speicherbedarf der Daten-
typen short, int und long in Byte aus.
In den folgenden drei Anweisungen wird dann der Speicherplatz ermittelt, den die
drei Variablen tatschlich belegen. In unserem Beispiel sind die Ergebnisse der
Ausgaben jeweils identisch. Fr den Datentypen short und die Variable short-
Var wird der Wert 2 ausgegeben. Fr den Datentypen int und die Variable int-
Var ist die Ausgabe 4. Was genau fr den Typen long beziehungsweise die
Variable longVar ausgegeben wird, hngt von Ihrem Betriebssystem und dem
eingesetzten Compiler ab. Bei einem 32-Bit-Betriebssystem mit dem Compiler
Code::Blocks wird als Ergebnis 4 ausgegeben.
Mit den letzten Anweisungen provozieren wir den berlauf der Variablen short-
Var. Dazu weisen wir shortVar zunchst den maximalen Wert zu und addieren
dann noch einmal 1.
Die erste Ausgabe liefert noch ganz korrekt 32 767. Bei der zweiten Ausgabe
dagegen erscheint der Wert 32 768 die Variable shortVar ist bergelaufen.
Auf diesen berlauf weist Sie der Compiler noch nicht einmal hin.
Tipp:
Sie knnen einer Variablen auch direkt bei der Vereinbarung einen Wert zuwei-
sen. Die Zeile
short shortVar = 10;
vereinbart zum Beispiel eine Variable shortVar vom Typ short und weist ihr
direkt den Wert 10 zu.
cout << "32767 + 1 ist gleich " << shortVar << "??\n";
return 0;
}
//Einen berlauf von shortVar provozieren
//Maximalwert zuweisen
shortVar = 32767;
cout << "Der Wert ist " << shortVar << endl;
//Addition von 1
shortVar = shortVar +1;
cout << "32767 + 1 ist gleich " << shortVar << "??\n";


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
65
So viel zu den Datentypen fr ganze Zahlen.
5.2.2 Datentypen fr Gleitkommazahlen
Die C++-Typen fr Gleitkommazahlen sind recht bersichtlich. Unterschieden
werden nmlich lediglich drei Typen. Der Datentyp float beansprucht 4 Bytes
Speicherplatz und stellt Zahlen im Wertebereich von 3,40 * 10
38
bis 3,40 * 10
38
mit einer Genauigkeit von mindestens 8 Stellen dar.
Der Datentyp double dagegen beansprucht 64 Bits und stellt Zahlen im Werte-
bereich von 1,79 * 10
308
bis 1,79 * 10
308
mit einer Genauigkeit von mindestens
16 Stellen dar. Bei long double ist die Genauigkeit gegenber double noch
etwas verbessert.
Den Wertebereich, die Gre in Byte und die Genauigkeit der Datentypen fr
Gleitkommazahlen in C++ finden Sie in der folgenden Tabelle:
Tabelle 5: C++-Datentypen fr Gleitkommazahlen
1
Die Genauigkeit der drei Datentypen bezieht sich auf smtliche Stellen der Zahl
also sowohl auf die Stellen vor dem Komma als auch auf die Stellen nach dem
Komma. Da Gleitkommazahlen intern immer in der normierten Darstellung abge-
bildet werden, garantiert Ihnen der Datentyp float, dass 7 Nachkommastellen
korrekt abgebildet werden. Bei der Ausgabe dagegen hngt die Anzahl der kor-
rekt dargestellten Nachkommastellen auch von den Stellen vor dem Komma ab.
1. Die exakten Gren, Wertebereiche und Genauigkeiten knnen abhngig vom Betriebs-
system und Compiler schwanken.
Typ Bytes Wertebereich Genauigkeit
float 4 3,40 * 10
38
bis 3,40 * 10
38
8 Stellen
double 8 1,79 * 10
308
bis 1,79 * 10
308
16 Stellen
long double 12 1,18 * 10
4932
bis 1,18 * 10
4932
18 Stellen
Bitte beachten Sie:
Alle drei Typen knnen keine extrem kleinen Zahlen darstellen. Fr den
Typ float ist der kleinste mgliche positive Wert zum Beispiel 1,4 * 10
45
.
Hinter dem Komma stehen bei diesem Wert allerdings immer noch 44 Nul-
len.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
66
Sehen wir uns jetzt auch den Umgang mit Gleitkommazahlen an einem konkreten
Beispiel an. Wir lassen in einem Programm einige Gleitkommazahlen mit den
Standardeinstellungen und mit genderten Einstellungen ausgeben. Erluterungen
zu den einzelnen Anweisungen finden Sie wieder im Anschluss an das Listing.
Zur Auffrischung:
Bei der normierten Darstellung wird das Komma in einer Gleitkommazahl
durch einen positiven Exponenten so lange nach links verschoben, bis nur
noch eine Ziffer vor dem Komma steht. Mehr zur normierten Darstellung
finden Sie im Studienheft IMIT 2.
/* ################################################
Datentypen fr Gleitkommazahlen
################################################# */
#include <iostream>
using namespace std;
int main()
{
float varFloat;
double varDouble;
//Ausgabe von Gleitkommazahlen mit Standardeinstellungen
cout << "Ausgabe von Gleitkommazahlen: \n\n";
cout << "Standardeinstellungen:\n";
cout << "=======================\n";
varFloat = 10000000000.0;
cout << "Grosse Zahlen (10000000000): ";
cout << varFloat << endl;
cout << "Kommazahlen (1.33333333333333333333): \n";
varFloat = 1.33333333333333333333;
cout << "float:\t " << varFloat << endl;
varDouble = 1.33333333333333333333;
cout << "double:\t " << varDouble << "\n\n";
//Ausgabe von Gleitkommazahlen mit genderten


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
67
Listing 10: Datentypen fr Gleitkommazahlen
Hinweis:
Die Zuweisungen der Zahl 10 000 000 000 an die Variable varFloat mssen
mit dem Punkt und der anschlieenden 0 erfolgen. Damit ist klar, dass es sich
um eine Kommazahl handelt. Wenn Sie den Punkt und die letzte 0 weglassen,
erscheinen zwei Fehlermeldungen, dass die Zahl zu gro ist.
Das Programm sollte folgende Ausgaben erzeugen:
//Einstellungen
cout << "15 Stellen:\n";
cout << "===============================\n";
cout.precision(15);
varFloat = 10000000000.0;
cout << "Grosse Zahlen (10000000000): ";
cout << varFloat << endl;
cout << "Kommazahlen (1.33333333333333333333): \n";
varFloat = 1.33333333333333333333;
cout << "float:\t " << varFloat << endl;
varDouble = 1.33333333333333333333;
cout << "double:\t " << varDouble << endl;
return 0;
}
Ausgabe von Gleitkommazahlen:
Standardeinstellungen:
=======================
Grosse Zahlen (10000000000): 1e+10
Kommazahlen (1.33333333333333333333):
float: 1.33333
double: 1.33333
15 Stellen:
===============================
Grosse Zahlen (10000000000): 10000000000


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
68
Sehen wir uns die einzelnen Anweisungen und Ausgaben im Detail an:
Zunchst wird die Zahl 10.000.000.000 mit den Standardeinstellungen ausgege-
ben. Die Ausgabe erfolgt dabei in der Exponentialschreibweise als 1e+10.
Danach weisen wir sowohl einer Variablen vom Typ float als auch einer Varia-
blen vom Typ double eine Zahl mit 20 Nachkommastellen zu.
Anschlieend geben wir die beiden Werte mit den Standardeinstellungen auf dem
Bildschirm aus. Wie Sie sehen, werden bei beiden Datentypen lediglich sechs Stel-
len ausgegeben eine Stelle vor dem Komma und fnf Stellen nach dem Komma.
Kommazahlen (1.33333333333333333333):
float: 1.33333337306976
double: 1.33333333333333
Grosse Zahlen (10000000000): 1e+10
Zur Auffrischung:
Die Zahl vor dem e steht fr die Mantisse, dann folgt der Exponent.
1e+10 mssen Sie also als 1 * 10
10
lesen.
Bitte beachten Sie:
Bei der Zuweisung auf einen Gleitkommatypen mssen Sie den Punkt als
Dezimaltrennzeichen verwenden.
a)
Wenn Sie das Komma verwenden,
erscheint eine Fehlermeldung, dass der Wert zu gro ist.
a) Das ist erforderlich, weil in den USA das Tausender-Trennzeichen und das Dezimal-
trennzeichen genau anders herum benutzt werden als in Deutschland blich. Tausender
werden durch ein Komma getrennt und Dezimalstellen durch einen Punkt. Die Zahl
1.234,56 wird in den USA also 1,234.56 geschrieben.
float: 1.33333
double: 1.33333


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
69
Danach setzen wir die Ausgabe fr den Stream cout mit der Funktion
cout.precision(15) auf 15 Stellen Genauigkeit. Das bedeutet, jede Gleitkom-
mazahl, die wir nach dieser Anweisung in den Stream schreiben, wird mit insge-
samt 15 Stellen dargestellt. Bitte beachten Sie, dass dabei die Anzahl der Stellen
vor dem Komma und die Anzahl der Stellen hinter dem Komma zusammenge-
zhlt werden. Anstelle der 15 knnen Sie natrlich auch eine andere Stellenzahl
angeben.
Da die Zahl 10 000 000 000 weniger als 15 Stellen hat, wird sie bei den folgenden
Ausgaben nicht mehr in Exponentialschreibweise, sondern ganz normal darge-
stellt. Eine berraschung erleben Sie allerdings bei der Ausgabe der float-Vari-
ablen. Bis zur siebten Nachkommastelle werden wie erwartet Dreien ausgegeben.
Danach erhalten wir aber alle mglichen Ziffern.
Wenn Sie noch einmal in der Tabelle mit der Beschreibung der Datentypen fr
Gleitkommazahlen nachsehen, werden Sie den Grund fr diese wirre Ausgabe
schnell erkennen: Die Genauigkeit von float betrgt nur insgesamt acht Stellen.
Eine Stelle steht vor dem Komma, daher werden hinter dem Komma nur noch
sieben Stellen wie erwartet ausgegeben.
Bei der double-Variablen ist die Genauigkeit hher insgesamt 16 Stellen. In
unserem Beispiel also werden alle Stellen korrekt dargestellt.
So viel zu den Datentypen fr Gleitkommazahlen.
5.2.3 Datentypen fr Zeichen und Zeichenketten
Fr Zeichen und Zeichenketten stellt Ihnen C+ die Datentypen char und string
zur Verfgung. Der Datentyp char kann genau ein Zeichen speichern, der Typ
string dagegen nahezu beliebig viele.
Schauen wir uns die beiden Datentypen jetzt an einem Beispiel an. Erklrungen
zu den Besonderheiten erhalten Sie wieder im Anschluss an das Listing.
float: 1.33333337306976
double: 1.33333333333333
Bitte beachten Sie:
Beim Typen string handelt es sich eigentlich um eine sogenannte Klasse.
Mit Klassen werden wir uns in einem anderen Studienheft noch beschfti-
gen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
70
/* ################################################
Die Datentypen char und string
################################################# */
#include <iostream>
using namespace std;
int main()
{
//fr ein Zeichen
char zeichen;
//fr eine Zeichenkette
string zeichenkette;
//Zuweisung und Ausgabe
//Denken Sie an die Apostrophen!
zeichen = 't';
cout << zeichen;
zeichen = 'e';
cout << zeichen;
zeichen = '\n';
cout << zeichen;
zeichen = 's';
cout << zeichen;
//die direkte Zuweisung einer Zahl geht auch
zeichen = 116;
cout << zeichen << endl;
//das geht nicht
//zeichen = "t";
//die Zeichenkette
zeichenkette = "Ich bin eine Zeichenkette";
//ausgeben
cout << zeichenkette << endl;
//auch das Verketten klappt


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
71
Listing 11: Die Datentypen string und char
In den ersten beiden Anweisungen vereinbaren wir je eine Variable vom Typ
char und eine vom Typ string.
Hinweis:
Unter Umstnden mssen Sie die Datei string ber die Anweisung
#include <string> einbinden. Ergnzen Sie dazu direkt unterhalb der
Anweisung
#include <iostream>
die Anweisung
#include <string>
Danach weisen wir den beiden Variablen Werte zu und geben sie aus. Hier ms-
sen Sie eigentlich nur darauf achten, dass Sie beim Typ char die Apostrophe ver-
wenden und beim Typ string die Anfhrungszeichen.
In der Anweisung
zeichen = 116;
weisen wir der char-Variablen einen numerischen Wert zu. Das ist ohne Weiteres
mglich, da der Datentyp intern mit Zahlen arbeitet und erst bei der Ausgabe
beziehungsweise beim Einlesen die Umformung in das entsprechende Zeichen vor-
nimmt. Ausgegeben wird daher auf dem Bildschirm auch das Zeichen t und nicht
die Zahl 116.
//bitte in einer Zeile eingeben
cout << zeichenkette + ", an die etwas angehaengt
wurde.\n";
return 0;
}
Bitte denken Sie daran:
Zeichenketten werden mit Anfhrungszeichen eingeschlossen. Einzelne
Zeichen werden mit Apostrophen eingeschlossen.
Bitte achten Sie darauf, dass Sie statt des Apostrophen nicht versehentlich
ein Akzentzeichen benutzen. Sie finden den Apostroph auf der Tastatur
ganz rechts in der dritten Reihe von unten direkt ber der Umschalttaste
und rechts neben der Taste .


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
72
Ebenfalls interessant ist noch die Anweisung
cout << zeichenkette + ", an die etwas angehaengt
wurde.\n";
Hier verbinden wir zwei Zeichenketten ber den Operator + und geben das Ergeb-
nis ber cout aus.
Probieren Sie das vorige Listing jetzt aus. Entfernen Sie nach dem ersten Test
auch einmal die Kommentarzeichen vor der Zeile
//zeichen = "t";
Sie werden sehen, die bersetzung wird mit einer Fehlermeldung abgebrochen.
Das liegt daran, dass der Ausdruck "t" vom Compiler als Zeichenkette behandelt
wird auch wenn er nur ein einziges Zeichen ist.
Ein Blick hinter die Kulissen:
Der Unterschied zwischen char und string aus technischer Sicht
Intern stellt sich "t" fr den Compiler als t\0 dar also als zwei Zeichen. Denn
jede Zeichenkette wird automatisch mit der Escape-Sequenz \0 abgeschlossen.
Der Datentyp char kann aber nur ein einziges Zeichen aufnehmen. Damit schei-
tert eine Zuweisung wie zeichen = "t" auf einen char-Typen.
5.2.4 Der Datentyp fr logische Werte
Der Datentyp bool
1
fr logische Werte kann nur zwei Werte speichern: true fr
wahr und false fr falsch. Neben der direkten Zuweisung von true beziehungs-
weise false knnen Sie auch numerische Werte verwenden. Der Wert 0 wird
dabei als false betrachtet, jeder andere Wert als true.
Wichtig wird der Typ bool vor allem in Bedingungen, die wir Ihnen im nchsten
Studienheft vorstellen werden.
1. Der Name des Datentypen geht auf den Mathematiker und Logiker George Boole zu-
rck.
Bitte beachten Sie:
Variablen erhalten allein durch die Vereinbarung keinen Standardwert. Das
folgende Fragment liefert keineswegs den Wert 0 als Ausgabe, sondern
einen zuflligen Wert.
int zahl;
cout << "zahl hat den Wert " << zahl;


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
73
So viel zu den Datentypen. Kommen wir nun zu den arithmetischen Operatoren.
5.3 Arithmetische Operatoren
C++ untersttzt insgesamt fnf verschiedene arithmetische Operatoren:
Tabelle 6: Arithmetische Operatoren in C++
Bei den Operatoren fr die vier Grundrechenarten Addition, Subtraktion, Multi-
plikation und Division gibt es keinerlei Besonderheiten. Mit dem Operator % kn-
nen Sie ebenfalls Divisionen durchfhren. Er liefert allerdings den ganzzahligen
Rest als Ergebnis.
Ein Beispiel:
Der Ausdruck 13 % 5 liefert das Ergebnis 3 den Rest der Division
13 / 5 (13 / 5 = 2 Rest 3).
Sie sollten daher sorgfltig darauf achten, dass eine Variable in jedem Fall
einen eindeutig festgelegten Wert hat zum Beispiel durch eine Zuweisung
direkt bei der Vereinbarung oder auch durch eine Zuweisung vor dem ers-
ten richtigen Zugriff.
Diese erste Zuweisung eines Wertes nennt man auch Initialisierung.
Operator Bedeutung
+ Addition
- Subtraktion
* Multiplikation
/ Division
% Modulo
Bitte beachten Sie:
Modulo arbeitet nur mit ganzen Zahlen wie 9 oder 6.
Bei Zahlen wie 9,7 oder 6,2 knnen Sie Modulo nicht verwenden.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
74
Bei der Verarbeitung der Operatoren gibt es eine feste Rangfolge die Prioritt.
So gehen zum Beispiel die Punktrechnungen Division und Multiplikation vor den
Strichrechnungen Addition und Subtraktion. Auch ein Vorzeichen hat eine hhere
Prioritt als ein arithmetischer Operator.
Wenn Sie mehrere Operatoren mit der gleichen Prioritt in einem Ausdruck ver-
wenden, werden die Operatoren von links nach rechts ausgewertet. Wenn also
zum Beispiel auf eine Addition direkt eine Subtraktion erfolgt, wird erst addiert
und anschlieend subtrahiert.
Steht dagegen eine Multiplikation vor einer Addition, wrde erst multipliziert und
dann addiert. Hier gilt ja: Punktrechnung geht vor Strichrechnung.
Die Reihenfolge der Auswertung knnen Sie bei Bedarf durch Klammern ndern.
Schauen wir uns die arithmetischen Operatoren und die Reihenfolge der Auswer-
tung jetzt an einem konkreten Beispiel an. Das folgende Listing fhrt einige
Rechenoperationen durch.
/* ################################################
Arithmetische Operationen
################################################# */
#include <iostream>
using namespace std;
int main()
{
cout << "99 + 15 \t = ";
cout << 99+15 << endl;
cout << "99 - 15 \t = ";
cout << 99-15 << endl;
cout << "99 * 15 \t = ";
cout << 99 * 15 << endl;
cout << "99 / 15 \t = ";
cout << 99/15;
cout << " Rest ";
cout << 99%15 << endl;
cout << "102 + 24 / 2 \t = ";
cout << 102+24/2 << endl;


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
75
Listing 12: Beispiel fr arithmetische Operationen in C++
Das Programm erzeugt folgende Ausgabe:
Wenn Sie sich die Ausgabe fr die Division genau ansehen, fllt auf, dass das
Ergebnis der Anweisung
cout << 99/15;
nicht ganz richtig ist. Statt 6,6 wird hier nur 6 ausgegeben und direkt dahinter
das Ergebnis der Modulo-Operation. Dieser Fehler liegt daran, dass C++ intern
ohne weitere Angaben immer mit ganzen Zahlen arbeitet und eventuelle Nach-
kommastellen schlicht und einfach unterschlgt. Wie Sie dieses Problem beheben
knnen, erfahren Sie im weiteren Verlauf dieses Studienheftes.
An den letzten beiden Rechnungen und deren Ausgabe
cout << 102+24/2 << endl; 102 + 24 / 2 = 114
cout << (102+24)/2 << endl; (102 + 24) / 2 = 63
sehen Sie, wie Sie die Reihenfolge bei der Auswertung der Operatoren durch
Klammern beeinflussen knnen.
In der ersten Zeile wird zunchst 24 durch 2 dividiert und dann das Ergebnis zu
102 addiert. Gerechnet wird also 102 + 12. Hier gilt die Regel: Division als
Punktrechnung geht vor Addition als Strichrechnung.
In der zweiten Zeile dagegen ist der Ausdruck 102 + 24 geklammert. Er hat
damit hhere Prioritt als die Division. Hier wird also erst addiert und erst dann
dividiert.
// Genderte Reihenfolge durch Klammern
cout << "(102 + 24) / 2 \t = ";
cout << (102+24)/2 << endl;
return 0;
}
99 + 15 = 114
99 - 15 = 84
99 * 15 = 1485
99 / 15 = 6 Rest 9
102 + 24 / 2 = 114
(102 + 24) / 2 = 63


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
76
Das vorige Listing ist ein wenig unbersichtlich, da wir die Ausgaben ber den
Stream cout jeweils mit eigenen Anweisungen ausfhren lassen. Sie knnen die
Ausgabe der Texte und der Ergebnisse auch direkt hintereinander stellen. Dazu
hngen Sie die Ausgabe der Ergebnisse durch ein weiteres << an die Ausgabe der
Texte an.
Die erste Ausgabe knnte dann so aussehen
cout << "99 + 15 \t = " << 99+15 << endl;
Probieren Sie jetzt erst einmal selbststndig, das komplette Listing entsprechend
zu ndern. Wenn Sie nicht zurechtkommen, nehmen Sie bitte das folgende Listing
zu Hilfe.
Listing 13: Der verkrzte Quelltext
/* ################################################
Arithmetische Operationen mit verkrztem Quelltext
################################################# */
#include <iostream>
using namespace std;
int main()
{
cout << "99 + 15 \t = " << 99+15 << endl;
cout << "99 - 15 \t = " << 99-15 << endl;
cout << "99 * 15 \t = " << 99 * 15 << endl;
// bitte in einer Zeile eingeben
cout << "99 / 15 \t = " << 99/15 << " Rest " << 99%15 <<
endl;
cout << "102 + 24 / 2 \t = " << 102 + 24 / 2 << endl;
// Genderte Reihenfolge durch Klammern
cout << "(102 + 24) / 2 \t = " << (102+24)/2 << endl;
return 0;
}


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
77
Arithmetische Operatoren knnen Sie auch bei Variablen benutzen. Die Verein-
barung der Variablen und die Addition knnten dann so aussehen:
Listing 14: Die Berechnung ber Variablen
Neben den echten arithmetischen Operatoren gibt es auch noch den Inkrement-
und den Dekrementoperator. Mit dem Inkrementoperator ++ erhhen Sie den
Wert einer ganzzahligen Variablen um 1 und mit dem Dekrementoperator -- ver-
ringern Sie den Wert einer ganzzahligen Variablen um 1.
Anders als bei den bisher vorgestellten Operatoren haben sowohl der Inkrement-
als auch der Dekrementoperator nur einen Operanden. Schauen wir uns einige
Beispiele an:
Im ersten Beispiel wird der Wert von zahl um 1 erhht und dann der Variablen
zahl direkt wieder zugewiesen. Die Wirkung von ++zahl entspricht exakt dem
Ausdruck zahl = zahl + 1. Sie sparen also vor allem Tipparbeit.
Im zweiten Beispiel wird der Wert von zahl durch den Inkrementoperator um 1
erhht und dann der Variablen ausgabe zugewiesen. Diese Konstruktion ent-
spricht damit den Anweisungen
//Vereinbarung der Variablen
int wert1, wert2, ergebnis;
//Zuweisung der Werte
wert1 = 99;
wert2 = 15;
//die Addition durchfhren und das Ergebnis zuweisen
ergebnis = wert1 + wert2;
//das Ergebnis ausgeben
cout << ergebnis << endl;
Bitte beachten Sie:
Das vorige Listing ist nur ein Fragment. Es lsst sich so nicht bersetzen.
++zahl;
ausgabe = ++zahl;
ausgabe = --zahl;
zahl = zahl + 1;
ausgabe = zahl;


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
78
Im dritten Beispiel schlielich wird der Wert von zahl durch den Dekrement-
operator um 1 verringert und dann der Variablen ausgabe zugewiesen. Das ent-
spricht den Anweisungen
Der Inkrement- und der Dekrementoperator knnen auch hinter dem Operanden
angegeben werden.
In diesem Fall wird allerdings die Zuweisung vor der Vernderung von zahl
durchgefhrt. Das heit der Ausdruck
entspricht den Anweisungen
Hinweise:
Bei Ausdrcken wie zahl++ oder ++zahl ohne Zuweisung des Ergebnisses an
eine andere Variable spielt die Position des Operators eigentlich keine Rolle. In
beiden Fllen erhht sich der Wert von zahl um 1.
Ob Sie die Inkrement- und Dekrementoperatoren einsetzen, ist eine Frage des
persnlichen Stils und Geschmacks. Sie ersparen sich damit ein wenig Schreib-
arbeit, machen einen Quelltext aber auch recht schwer zu lesen.
Zusammenfassung
Variablen werden fr die Speicherung von Werten beim Ablauf eines Programms
verwendet.
Vor dem ersten Einsatz mssen Sie eine Variable vereinbaren. Dazu geben Sie
den Datentyp und den Bezeichner der Variablen an.
C++ kennt verschiedene Datentypen fr die Speicherung von ganzen Zahlen,
Gleitkommazahlen sowie einzelnen Zeichen und Zeichenketten.
C++ untersttzt neben den vier Grundrechenarten noch die Modulo-Operation.
Fr die Auswertung der Operatoren gibt es feste Regeln. So geht zum Beispiel
Punktrechnung vor Strichrechnung.
zahl = zahl - 1;
ausgabe = zahl;
ausgabe = zahl++;
ausgabe = zahl--;
ausgabe = zahl++;
ausgabe = zahl;
zahl = zahl + 1;


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
79
V. Aufgaben zur Selbstberprfung
berprfen Sie nun bitte Ihr neu erworbenes Wissen. Lsen Sie die Aufgaben
zunchst selbststndig und vergleichen Sie anschlieend Ihre Lsungen mit den
Angaben im Anhang.
1. Mit welchem Operator weisen Sie einer Variablen einen Wert zu?
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
2. Schreiben Sie ein Programm, das folgende Rechnung durchfhrt und das
Ergebnis auf dem Bildschirm ausgibt. Wie lautet das Ergebnis der Rech-
nung?
((12 % 4) -3 * 8 + 12) / 2
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
80
3. Geben Sie bitte bei den folgenden Bezeichnern an, ob sie gltig sind. Wenn
nicht, begrnden Sie, warum der Bezeichner nicht gltig ist.
a) zahl1
b) 1_zahl
c) 1.zahl
d) zahl_1
a) _____________________________________________________________________
_____________________________________________________________________
b) _____________________________________________________________________
_____________________________________________________________________
c) _____________________________________________________________________
_____________________________________________________________________
d) _____________________________________________________________________
_____________________________________________________________________
4. Sehen Sie sich bitte die folgende Vereinbarung von zwei Variablen an. Ist die
Vereinbarung so korrekt? Wenn nicht: Was muss gendert werden? Sehen
Sie bitte genau hin, bevor Sie antworten.
int zahl1, int zahl2;
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
81
5. Was unterscheidet die Datentypen int und float?
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
6. Welchen Datentyp verwenden Sie fr ein einzelnes Zeichen? Welchen Daten-
typ verwenden Sie fr eine Zeichenkette?
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
82
6 Arbeiten mit Variablen unterschiedlicher Datentypen
In der Praxis werden Sie hufig mit Variablen unterschiedlicher Typen arbeiten
mssen zum Beispiel, wenn Sie einen double-Typen durch einen int-Typen
dividieren wollen. Was Sie dabei beachten mssen, erfahren Sie in dieser Lektion.
Auerdem zeigen wir Ihnen, wie Sie den Datentyp eines Wertes ausdrcklich ver-
ndern knnen.
6.1 Zuweisungen zwischen Variablen unterschiedlichen Typs
Schauen wir uns zuerst an, was bei der Zuweisung von Werten zwischen Variab-
len mit unterschiedlichen Typen geschieht. Fangen wir hierzu mit einem einfa-
chen Beispiel an. Im folgenden Listing schieben wir einige Zahlen zwischen
unterschiedlichen numerischen Datentypen hin und her.
/* ################################################
Zuweisungen zwischen Variablen unterschiedlichen Typs
################################################# */
#include <iostream>
using namespace std;
int main()
{
int varInt;
float varFloat;
double varDouble;
cout.precision(15);
varDouble = 1.444444444444444;
cout << "double vor dem Tausch ueber float: ";
cout << varDouble << endl;
//Wert auf float kopieren
varFloat = varDouble;
//und zurck nach double
varDouble = varFloat;
cout << "double nach dem Tausch ueber float: ";
//den Wert ausgeben
cout << varDouble << endl;
//und jetzt auf einen int-Typen kopieren und ausgeben


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
83
Listing 15: Zuweisungen zwischen Variablen unterschiedlichen Typs
Das Programm sollte folgende Ausgabe erzeugen:
Schauen wir uns im Detail an, was in dem Programm geschieht:
Zunchst geben wir eine Zahl aus einer double-Variablen mit der Genauigkeit
von 15 Stellen aus. Dann weisen wir den Wert der double-Variablen einer Vari-
ablen vom Typ float zu und schreiben anschlieend den Wert aus der float-
Variablen wieder in die double-Variable. Das bernehmen die folgenden Anwei-
sungen:
varInt = varDouble;
cout << "Der Wert als int ausgegeben: ";
cout << varInt << endl;
//einen neuen Wert zuweisen
varDouble = 13.988;
//und noch einmal auf einen int kopieren und ausgeben
varInt = varDouble;
cout << "13.988 als int: ";
cout << varInt << endl;
return 0;
}
double vor dem Tausch ueber float: 1.44444444444444
double nach dem Tausch ueber float: 1.44444441795349
Der Wert als int ausgegeben: 1
13.988 als int: 13
cout.precision(15);
varDouble = 1.444444444444444;
cout << "double vor dem Tausch ueber float: ";
cout << varDouble << endl;
varFloat = varDouble;
varDouble = varFloat;


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
84
Bei der Ausgabe der Werte werden Sie feststellen, dass der neue und der alte
Wert nicht mehr bereinstimmen.
double vor dem Tausch ueber float: 1.44444444444444
double nach dem Tausch ueber float: 1.44444441795349
Der Grund fr diese Abweichung ist recht einfach nachzuvollziehen: Wir weisen
am Anfang der Variablen eine Zahl mit sehr vielen Nachkommastellen zu. Unsere
Variable vom Typ double kommt damit ohne Probleme zurecht, da sie die erfor-
derliche Genauigkeit hat.
Bei der Zuweisung des Wertes auf die float-Variable gehen aber die letzten Stel-
len verloren, da float nur auf maximal 8 Stellen genau arbeitet. Wenn Sie die
Nachkommastellen in der Ausgabe vergleichen, werden Sie feststellen, dass die
Abweichungen exakt ab der 8. Stelle nach dem Komma der insgesamt 9. Stelle
der Zahl beginnen. Die folgende erneute Zuweisung des float-Wertes auf die
double-Variable kann die verloren gegangenen Nachkommastellen nicht wieder
herstellen. Sie sind schlicht und einfach verschwunden.
Noch extremer ist dieser Verlust bei den Zuweisungen auf die int-Variable am
Ende des Programms. Da dieser Typ nur ganze Zahlen verarbeiten kann, gehen
smtliche Nachkommastellen verloren. Wie Sie an der letzten Ausgabe
13.988 als int: 13
sehen knnen, wird dabei auch nicht gerundet. Die Nachkommastellen werden
einfach abgeschnitten.
Auch wenn bei solchen Zuweisungen Daten verloren gehen, wird das Programm
trotzdem bersetzt und ausgefhrt. Nur bei Datentypen, die berhaupt nicht zuei-
nander passen, wird die bersetzung abgebrochen.
Probieren Sie das einmal selbst aus. Ergnzen Sie im vorigen Listing die Anwei-
sung
varDouble = "Ein Text";
Hier bricht der Compiler ab, da er nicht wei, wie er eine Zeichenkette in einen
double-Typen umwandeln kann.
Merken Sie sich daher:
Bei Zuweisungen zwischen Typen mit unterschiedlicher Genauigkeit ist die
Genauigkeit hchstens so gro, wie bei der Variable mit der schlechtesten
Genauigkeit, die an der Zuweisung beteiligt ist.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
85
6.2 Typecasting
Neben dem drohenden Datenverlust bei Zuweisungen gibt es noch ein weiteres
Problem bei der Arbeit mit unterschiedlichen Datentypen, das sehr viel unange-
nehmer werden kann. Schauen wir uns dazu einmal das folgende Listing an. Es
soll mehrere Divisionen mit unterschiedlichen Typen durchfhren.
/* ################################################
Divisionen mit verschiedenen Datentypen
################################################# */
#include <iostream>
using namespace std;
int main()
{
double varDbl, varDbl1, varDbl2;
int varInt1, varInt2;
// Belegung der Variablen
varInt1 = 10;
varDbl1 = 10;
varInt2 = 3;
varDbl2 = 3;
// double/double
varDbl = varDbl1 / varDbl2 ;
cout << "double/double =\t" << varDbl << endl;
// int/double
varDbl = varInt1 / varDbl2 ;
cout << "int/double =\t" << varDbl << endl;
// double/int
varDbl = varDbl1 / varInt2 ;
cout << "double/int =\t" << varDbl << endl;
// int/int
varDbl = varInt1 / varInt2 ;
cout << "int/int =\t" << varDbl << endl;


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
86
Listing 16: Divisionen mit verschiedenen Datentypen
In dem Listing werden zunchst 5 Variablen vereinbart drei vom Typ double
und zwei vom Typ int. Danach werden dann jeweils zwei Variablen vom Typ
double und int die Werte 10 und 3 zugewiesen. Anschlieend werden diese
Werte mehrfach dividiert, dabei jeweils der double-Variablen varDbl zugewiesen
und ausgegeben.
Auf den ersten Blick sieht das Listing ganz gut aus. Wenn Sie es aber ausfhren,
werden Sie eine berraschung erleben. Die Ausgabe sieht nmlich so aus:
Bei den ersten drei Divisionen ist das Ergebnis korrekt. Dabei spielt es auch
keine Rolle, dass wir in der zweiten und der dritten Division mit zwei unter-
schiedlichen Typen arbeiten. Der Compiler baut den int-Typen intern in einen
double-Typen um und benutzt dann diesen Typen fr die Division.
Das Ergebnis der letzten Division dagegen ist falsch. Denn hier werden zwei int-
Typen dividiert. Damit hat auch das Ergebnis den Typ int egal, welchen Typ
die Variable hat, der das Ergebnis zugewiesen wird. Denn es wird erst gerechnet
und dann zugewiesen. Da aber bereits bei der Rechnung alle Nachkommastellen
verloren gehen, hat die folgende Zuweisung auf einen Typ double keine Wirkung
mehr. Die Nachkommastellen sind abgeschnitten und das Ergebnis damit falsch.
return 0;
}
double/double = 3.33333
int/double = 3.33333
double/int = 3.33333
int/int = 3
Bei Operationen mit unterschiedlichen Typen versucht der Compiler selbst,
alle Typen auf den jeweils grten beziehungsweise genauesten Typen
umzubauen.
Bei Rechenoperationen wird der Typ des Ergebnisses durch die Typen der
Operanden bestimmt und nicht durch den Typ der Variable, die das
Ergebnis aufnimmt.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
87
Eine Mglichkeit, diesem Problem aus dem Weg zu gehen, wre es, statt der
ganzzahligen Typen einen double- oder float-Typen zu benutzen. Das ist aber
in der Praxis nicht immer mglich. Sie knnen den Typ eines Ausdrucks oder
einer Variablen allerdings gezielt durch das explizite Typecasting auch ein-
fach nur Casting
1
genannt verndern.
Die Typumwandlung kann ber das Schlsselwort static_cast erfolgen. Dahin-
ter stehen in spitzen Klammern < > der gewnschte Zieltyp und dann in runden
Klammern der Ausdruck, der umgewandelt werden soll.
Ein Beispiel:
static_cast<double>(varInt1)
wrde den Wert der Variablen varInt1 in den Typ double umwandeln. Der
eigentliche Datentyp der Variablen bleibt dabei aber unverndert. Die
Umwandlung gilt also nur fr die Stelle, an der das Casting erfolgt.
Sehen wir uns das explizite Typecasting an einem Beispiel an. Dazu berarbeiten
wir das Programm aus dem vorigen Listing:
1. Wrtlich bersetzt bedeutet cast so viel wie Guss oder Gussform.
Gemeint ist damit, dass der Typ in eine bestimmte Form gezwungen wird.
/* ################################################
Typecasting
################################################# */
#include <iostream>
using namespace std;
int main()
{
int varInt1, varInt2;
double varDbl, varDbl1, varDbl2;
// Belegung der Variablen
varInt1 = 10;
varDbl1 = 10;
varInt2 = 3;
varDbl2 = 3;
// double wird zu int und das Ergebnis stimmt nicht mehr
// bitte jeweils in einer Zeile eingeben


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
88
Listing 17: Typecasting
Das genderte Programm sollte folgende Ausgaben erzeugen
Sehen wir uns die verschiedenen Typecasting-Methoden, die in dem Programm
eingesetzt werden, im Detail an:
varDbl = static_cast<int>(varDbl1) /
static_cast<int>(varDbl2);
cout << "static_cast<int>(varDbl1) /
static_cast<int>(varDbl2)=\t\t" << varDbl << endl;
// ein int wird zum double
varDbl = static_cast<double>(varInt1) / varInt2;
//bitte in einer Zeile eingeben
cout << "static_cast<double>(varInt1) /
varInt2=\t\t\t\t" << varDbl << endl;
// der komplette Ausdruck wird gecastet
varDbl = static_cast<double>(varInt1 / varInt2);
//bitte jeweils in einer Zeile eingeben
cout << "static_cast<double>(varInt1 /
varInt2)=\t\t\t\t" << varDbl << endl;
// die Werte werden einzeln gecastet
varDbl = static_cast<double>(varInt1) /
static_cast<double>(varInt2);
cout << "static_cast<double>(varInt1) /
static_cast<double>(varInt2)=\t" << varDbl << endl;
return 0;
}
static_cast<int>(varDbl1) / static_cast<int>(varDbl2)= 3
static_cast<double>(varInt1) / varInt2= 3.33333
static_cast<double>(varInt1 / varInt2)= 3
static_cast<double>(varInt1) / static_cast<double>(varInt2)=
3.33333


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
89
Bei der ersten Division
varDbl = static_cast<int>(varDbl1) /
static_cast<int>(varDbl2) ;
werden die double-Variablen in int-Typen gewandelt. Durch diese Umwandlung
erfolgt die Division ausschlielich mit int-Typen. Das Ergebnis wird damit eben-
falls als ganze Zahl dargestellt und falsch.
In der zweiten Division
varDbl = static_cast<double>(varInt1) / varInt2 ;
wird nur die Variable varInt1 in einen double-Wert umgewandelt. Das fhrt
dazu, dass das Ergebnis der Division mit der greren Genauigkeit von double
dargestellt wird. Ausgegeben wird daher korrekt 3.33333.
Die dritte Division
varDbl = static_cast<double>(varInt1 / varInt2);
zeigt Ihnen die Grenzen des Typecastings.
Die Anweisung sieht auf den ersten Blick brauchbar aus, liefert aber trotzdem
nur ein Ergebnis ohne Nachkommastellen. Denn umgewandelt werden hier nicht
die beiden Variablen in dem Ausdruck oder der gesamte Ausdruck, sondern nur
das Ergebnis des Ausdrucks. Es wird also erst gerechnet und dann umgewan-
delt. Da aber bei der Division der beiden ganzzahligen Typen die Nachkomma-
stellen verloren gehen, hat die anschlieende Umwandlung keinen Effekt.
Die korrekte Form sehen Sie in der letzten Anweisung.
varDbl = static_cast<double>(varInt1) /
static_cast<double>(varInt2);
Hier werden zunchst die beiden Variablen in den Typ double umgewandelt,
anschlieend wird das Ergebnis berechnet. Da der Compiler immer versucht, mg-
lichst genau zu arbeiten, wrde es in diesem Beispiel auch ausreichen, nur eine
der beiden Variablen umzuwandeln.
Hinweis:
Neben dem expliziten Typecasting ber static_cast finden Sie hufig auch
einfach den Typen direkt vor dem Ausdruck zum Beispiel als
double(varInt1).
So viel zum Arbeiten mit Variablen unterschiedlicher Datentypen. In der nchsten
Lektion werden wir uns um die Eingabe kmmern.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
90
Fassen wir zusammen:
Wenn Variablen mit unterschiedlichen Typen in einem Ausdruck verwendet wer-
den, benutzt der Compiler immer den greren beziehungsweise den genaueren
der eingesetzten Typen.
Mit dem expliziten Typecasting knnen Sie den Datentyp einer Variablen oder
eines Ausdrucks gezielt verndern.
VI. Aufgaben zur Selbstberprfung
berprfen Sie nun bitte Ihr neu erworbenes Wissen. Lsen Sie die Aufgaben
zunchst selbststndig und vergleichen Sie anschlieend Ihre Lsungen mit den
Angaben im Anhang.
1. Welche Ergebnisse liefern die folgenden Ausdrcke, wenn varDbl vom Typ
double ist? Warum?
varDbl = 100 / 3;
varDbl = 100 / 3.0;
varDbl = 100.0 / 3.0;
varDbl = 100.0 / 3;
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
91
2. Welchen Typ liefert die Anweisung
varDbl = static_cast<double>(varInt1) / varInt2;
wenn es sich bei varInt1 und varInt2 um int-Typen und bei varDbl um
den Typ double handelt?
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
92
7 Eingabe
In dieser Lektion zeigen wir Ihnen, wie Sie Daten einlesen knnen. Dazu erstel-
len wir ein kleines Programm, das Werte ber die Tastatur einliest und anschlie-
end ausgibt.
Die Eingabe von Daten erfolgt genau wie die Ausgabe ebenfalls ber einen
Stream und zwar ber den Stream cin
1
.
Die Anweisung
cin >> eingabe;
liest eine Eingabe von der Tastatur und legt sie in der Variablen eingabe ab.
Der Typ der Eingabe wird von cin automatisch ermittelt.
Schauen wir uns jetzt das Einlesen an einem Beispiel an. Das folgende Programm
liest einen int-Wert und einen double-Wert vom Standard-Stream cin und gibt
die beiden Werte anschlieend ber den Stream cout wieder aus.
1. cin steht fr console input (bersetzt etwa: Konsoleneingabe).
Bitte beachten Sie:
Fr das Einlesen mssen Sie den Streamoperator >> verwenden und nicht
wie bei der Ausgabe den Operator <<.
/* ################################################
Eingabe ber cin
################################################# */
#include <iostream>
using namespace std;
int main()
{
int eingabeInt;
double eingabeDouble;
cout << "Bitte eine ganze Zahl eingeben: ";
cin >> eingabeInt;
cout << "Bitte eine Kommazahl eingeben: ";


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
93
Listing 18: Eingabe ber cin
Lassen Sie das Programm ausfhren und probieren Sie dann aus, wie sich die
Eingaben verhalten. Denken Sie bei der zweiten Eingabe daran, dass Sie den
Punkt als Dezimalzeichen fr die Trennung verwenden mssen.
Versuchen Sie bei der zweiten Eingabe auch einmal die Daten in der Exponential-
schreibweise einzugeben zum Beispiel 5.66e10. Sie werden sehen, auch diese
Form der Eingabe wird korrekt eingelesen und als 5.66e+10 wieder ausgegeben.
Normalerweise werden beim Einlesen ber cin so viele Zeichen verarbeitet, bis
die Eingabetaste gedrckt wird. Allerdings werden nur so viele Zeichen auch tat-
schlich zugewiesen, wie der Datentyp aufnehmen kann. So wird beim Datenty-
pen char zum Beispiel lediglich das erste eingegebene Zeichen zugewiesen.
Zusammenfassung
Eingaben ber die Tastatur erfolgen ber den Stream cin.
cin erkennt automatisch, welcher Datentyp eingelesen werden soll.
cin >> eingabeDouble;
cout << eingabeInt << endl;
cout << eingabeDouble << endl;
return 0;
}
Denken Sie bei der Eingabe bitte an den Punkt zur Trennung.
Bitte beachten Sie:
Sie knnen auch beim Einlesen einer char-Variablen nahezu beliebig viele
Zeichen eingeben. Es wird aber lediglich das erste Zeichen zugewiesen.
Eingaben, die nicht zum Typ der Variablen passen, knnen unter Umstn-
den fr Durcheinander im Programmablauf sorgen. Wenn Sie zum Beispiel
im vorigen Listing bei der ersten Eingabe ein Zeichen statt einer Zahl ein-
geben, wird die zweite Eingabe schlicht und einfach bersprungen. Im
Moment knnen wir daran auch nichts ndern. Sie mssen sich also erst
einmal damit abfinden, dass falsche Eingaben zu Problemen fhren knnen.
Im nchsten Studienheft werden wir uns aber bei den Schleifen der Wie-
derholung von Anweisungen noch einmal um das Problem kmmern.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
94
VII. Aufgaben zur Selbstberprfung
berprfen Sie nun bitte Ihre Kenntnisse. Benutzen Sie bei der Lsung der
folgenden Aufgaben bitte stets einen Bleistift, damit Sie mgliche Fehler nach
dem Vergleich mit den Lsungen im Anhang berichtigen knnen. Es ist in Ihrem
Interesse, die Aufgaben selbststndig zu lsen, ehe Sie im Anhang nachschlagen!
1. Welchen Operator mssen Sie bei der Eingabe ber cin verwenden?
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
2. Schreiben Sie ein Programm, das drei Zahlen von der Tastatur einliest. Die
erste Eingabe soll vom Typ double sein, die zweite und dritte Eingabe vom
Typ int. Addieren Sie dann die drei Werte und lassen Sie das Ergebnis auf
dem Bildschirm ausgeben.
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
A
A


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
95
8 Schlusswort
Herzlichen Glckwunsch!
Sie haben erfolgreich die ersten Schritte beim Erstellen von C++-Programmen
unternommen. Sie haben die integrierte Entwicklungsumgebung Code::Blocks auf
Ihrem Rechner installiert und wissen, wie Sie ein neues Projekt fr ein C++-Kon-
solenprogramm anlegen. Auerdem knnen Sie Werte ber die Tastatur einlesen,
Rechenoperationen mit diesen Werten ausfhren und die Ergebnisse wieder auf
dem Bildschirm ausgeben.
Im nchsten Studienheft beschftigen wir uns mit den logischen Operatoren, Kon-
trollstrukturen, Schleifen und Funktionen. Sie werden unter anderem lernen, wie
Sie den Ablauf Ihrer Programme in Abhngigkeit von Bedingungen steuern kn-
nen. Dabei werden wir auch die Such- und Sortieralgorithmen, die Sie im letzten
Studienheft kennengelernt haben, praktisch umsetzen. Auerdem erstellen Sie ein
Programm, das Werte zwischen verschiedenen Zahlensystemen umrechnen kann.
Noch ein Tipp: Nutzen Sie die Listings aus diesem Studienheft ruhig auch fr
eigene Experimente. Probieren Sie aus, welche Wirkung nderungen am Quelltext
haben. Denken Sie aber daran, vor dem Kompilieren Ihren Quelltext zu sichern.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
96
9 Anhang
9.1 Literaturempfehlungen
Der Klassiker fr die C++-Programmierung ist das folgende Buch von Bjarne
Stroustrup.
Stroustrup, Bjarne Die C++ Programmiersprache
Addison-Wesley,
4. aktualisierte und erweiterte Auflage 2009
ISBN 978-3-8273-2823-6
Das Werk ist aber in vielen Teilen fr Einsteiger recht schwer verdaulich. Leihen
Sie es sich daher bei Interesse am besten zunchst einmal in einer Bibliothek
aus.
Als Ergnzung zu diesen Studienheften eignen sich die folgenden Bcher:
Breymann, Ulrich Der C++-Programmierer. C++ lernen
professionell anwenden Lsungen nutzen.
2. aktualisierte Auflage. Hanser 2011
ISBN 978-3-4464-2691-7
Willms, Andr C++ Programmierung lernen, verstehen,
anwenden.
Addison-Wesley, 2013
ISBN 978-3-8273-3209-7


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
97
9.2 Lsungen der Aufgaben zur Selbstberprfung
Vergleichen Sie bitte Ihre Lsungen!
Bei freier Formulierung kommt es nicht auf wrtliche bereinstimmung an,
sondern auf inhaltliche. Sind Sie zu einem anderen Ergebnis gekommen, sollten
Sie das entsprechende Kapitel dieses Studienheftes wiederholen und die zugeh-
rige Aufgabe nach einer Pause noch einmal schriftlich lsen. Gegebenenfalls
berichtigen Sie Ihr Ergebnis nach einem erneuten Vergleich. Lassen Sie kein
falsches Ergebnis stehen.
I.
1. Zu den wichtigsten Programmen der integrierten Entwicklungsumgebung
gehren der Editor, der Compiler und der Linker.
2. Die Abkrzung IDE steht fr Integrated Development Environment auf
Deutsch integrierte Entwicklungsumgebung.
3. Um einen Bereich auf dem Desktop von Code::Blocks auszublenden, klicken
Sie auf das Symbol rechts oben in dem Bereich.
II.
1. Ein Konsolenprogramm ist ein Programm, das unter der Eingabeaufforderung
von Windows ausgefhrt wird.
2. Um ein neues Projekt fr ein Konsolenprogramm anzulegen, klicken Sie auf
das Symbol New file ganz links in der obersten Symbolleiste. Im folgen-
den Men starten Sie die Funktion Project .... Whlen Sie anschlieend den
Typ Console application aus. Legen Sie dann C++ als Programmiersprache
fest, geben Sie den Namen fr das Projekt ein und nehmen Sie noch weitere
Einstellungen vor.
3. Schlsselwrter werden in der Standardeinstellung in dunkelblauer Schrift
angezeigt.
4. Grundstzlich wird bei den Meldungen zwischen Hinweisen, Warnungen und
Fehlern unterschieden.
III.
1. Die Funktion main() bildet den Startpunkt fr die Ausfhrung des Pro-
gramms.
2. Die Anweisungen im Anweisungsteil werden durch ; getrennt.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
98
3. Es gibt zwei Mglichkeiten:
Sie fgen die Zeichen // vorne in der Zeile ein, die Sie kommentieren
wollen.
Sie setzen zu Beginn der Zeile das Kommentarzeichen /* und an das
Ende das Kommentarzeichen */.
Fr die richtige Antwort reicht es aus, wenn Sie eine der beiden Mglichkei-
ten genannt haben.
IV.
1. Die Ausgabe erfolgt in einer Zeile. Die Ausgaben werden hintereinander in
den Stream geschrieben. Da spielt es keine Rolle, ob eine oder mehrere
Anweisungen benutzt werden.
2. Eine mgliche Lsung knnte so aussehen:
Die Ausgabe kann auch ber mehrere Anweisungen erfolgen. Wichtig sind
vor allem die Escape-Sequenzen fr die Anfhrungszeichen.
/* ################################################
Musterlsung Aufgabe IV.2
################################################# */
#include <iostream>
using namespace std;
int main()
{
//bitte in einer Zeile eingeben
cout << "Herr Meier erzaehlt: \"Ich habe nicht
geglaubt, dass er \'Opa\' zu mir gesagt hat.\"" <<
endl;
return 0;
}


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
99
V.
1. Um einer Variablen einen Wert zuzuweisen, benutzen Sie den Zuweisungs-
operator =.
2. Das Ergebnis ist 6. Das Programm kann zum Beispiel so aussehen:
3. a) Der Bezeichner ist gltig
b) Der Bezeichner ist nicht gltig. Eine Ziffer als erstes Zeichen ist nicht
zulssig.
c) Der Bezeichner ist nicht gltig. Eine Ziffer als erstes Zeichen ist nicht
zulssig. Auch der Punkt darf nicht verwendet werden.
d) Der Bezeichner ist gltig.
4. Die Vereinbarung ist so nicht korrekt. Entweder muss die Typangabe hinter
dem Komma gelscht werden, oder das Komma durch ein Semikolon ersetzt
werden.
5. Der Datentyp int verarbeitet ganze Zahlen, der Datentyp float Gleitkom-
mazahlen.
6. Fr ein einzelnes Zeichen verwenden Sie den Datentyp char. Fr eine Zei-
chenkette benutzen Sie den Datentypen string.
/* ################################################
Musterlsung Aufgabe V.2
################################################# */
#include <iostream>
using namespace std;
int main()
{
cout << ((12 % 4) -3 * 8 + 12) / 2;
return 0;
}


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
100
VI.
1. Beim ersten Ausdruck ist das Ergebnis 33. Die Nachkommastellen fallen
weg, da mit zwei int-Typen gerechnet wird. Die Zuweisung auf den Typ
spielt keine Rolle.
Bei den anderen Ausdrcken ist das Ergebnis 33.33333333333333. Durch das
Anhngen von .0 werden die Werte als Gleitkommazahlen behandelt. Damit
liefert der komplette Ausdruck eine Gleitkommazahl als Ergebnis. In der
Standardeinstellung wird das Ergebnis aber nur mit sechs Stellen auf dem
Bildschirm ausgegeben also als 33.3333.
2. Der Ausdruck liefert den Typ double. Durch das Typecasting wird der erste
int-Typ in einen double umgewandelt. Damit wird das gesamte Ergebnis
vom Typ double.
VII.
1. Bei der Eingabe ber cin wird der Operator >> benutzt.
2. Eine mgliche Lsung knnte so aussehen:
/* ################################################
Musterlsung Aufgabe VII.2
################################################# */
#include <iostream>
using namespace std;
int main()
{
int eingabe1, eingabe2;
double eingabe3;
cout << "Bitte den ersten int Wert eingeben: ";
cin >> eingabe1;
cout << "Bitte den zweite int Wert eingeben: ";
cin >> eingabe2;


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
101
9.3 Videos zum Studienheft
Die Videos finden Sie auf den Datentrgern, die zu den Studienheften gehren.
Die einzelnen Videos knnen Sie in einem Auswahlmen starten. Das Auswahl-
men ffnen Sie durch einen Doppelklick auf die Datei video.exe. Die Datei
befindet sich im Ordner \video auf dem Datentrger.
Die Videos erfordern eine Mindestauflsung von 1 024 * 768 Bildpunkten und eine
Farbtiefe von 16 Bit. Fr die Wiedergabe der Audios ist eine korrekt konfigurierte
Soundkarte erforderlich.
Funktionen zur Steuerung der Videos knnen Sie ber die rechte Maustaste auf-
rufen. Klicken Sie dazu mit der rechten Maustaste auf eine beliebige Stelle des
Videos, und whlen Sie dann im Men die gewnschte Funktion aus.
Hinweis:
Unter Umstnden erscheinen Bildlaufleisten rechts und unten im Video. Diese
Bildlaufleisten knnen Sie ausblenden, wenn Sie das Video als Vollbild ablau-
fen lassen. Klicken Sie dazu mit der rechten Maustaste auf eine beliebige
Stelle des Videos, und whlen Sie dann die Funktion Vollbild.
cout << "Bitte einen double Wert eingeben: ";
cin >> eingabe3;
//bitte in einer Zeile eingeben
cout << "Ergebnis: " << eingabe1 + eingabe2 +
eingabe3 << endl;
return 0;
}


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
102
9.4 Quelltext in ein Projekt einfgen
Um einen Quelltext von den Datentrgern in ein eigenes Code::Blocks-Projekt ein-
zufgen, legen Sie zunchst ein neues leeres Projekt fr ein Konsolenprogramm
an. ffnen Sie anschlieend die Datei mit dem gewnschten Quelltext in einem
beliebigen Editor oder direkt mit Code::Blocks.
Markieren Sie dann mit der Tastenkombination + den gesamten Text
und kopieren Sie ihn mit der Tastenkombination + in die Zwischen-
ablage.
Wechseln Sie anschlieend in die Datei main.cpp des leeren Projekts von
Code::Blocks, und markieren Sie den vollstndigen Quelltext. Lschen Sie dann
diesen Quelltext.
Fgen Sie anschlieend den kopierten Text mit der Tastenkombination +
ein.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
103
9.5 Glossar
Anweisungsteil Der Anweisungsteil ist der Teil einer Funktion, der
die Anweisungen enthlt. Der Anweisungsteil wird
immer durch geschweifte Klammern umfasst. Die
Anweisungen im Anweisungsteil mssen durch ein
Semikolon getrennt werden.
Arithmetik Die Arithmetik ist ein Teilgebiet der Mathematik,
das sich mit Zahlen und den fr sie geltenden
Rechenregeln befasst.
Bezeichner Ein Bezeichner ist der Name eines Datenobjekts.
Fr die Vergabe von Bezeichnern gibt es feste
Regeln. So drfen Sie zum Beispiel keine Schlssel-
wrter verwenden und mssen einen Bezeichner mit
einem Buchstaben oder dem Unterstrich _ beginnen.
Binres System Ein binres System ist ein System mit genau zwei
eindeutigen Zustnden zum Beispiel 0 und 1.
Bit Ein Bit ist die kleinste Einheit in der elektronischen
Datenverarbeitung. Es entspricht einer Ziffer im
Dualsystem beziehungsweise dem Zustand Strom
an oder Strom aus.
Byte Ein Byte fasst 8 Bits zusammen.
Casting Siehe Typecasting.
Compiler Ein Compiler setzt die Anweisungen einer Program-
miersprache in ein ausfhrbares Programm um.
Nach der bersetzung kann das Programm direkt
vom Betriebssystem ausgefhrt werden.
Datentyp Der Datentyp beschreibt, welche Informationen mit
einem Datenobjekt verarbeitet werden. C++ kennt
verschiedene Datentypen fr ganze Zahlen, Gleit-
kommazahlen und Zeichen.
Dekrementoperator Mit dem Dekrementoperator -- knnen Sie den Wert
eines ganzzahligen Datentypen um 1 verringern.
Editor Ein Editor ist ein Programm zum Erfassen und
Bearbeiten von Informationen.
Funktion Eine Funktion fasst mehrere Anweisungen zusam-
men.
IDE IDE ist die Abkrzung fr Integrated Development
Environment.
Initialisierung Die Initialisierung ist die erste Zuweisung eines
Wertes an ein Datenobjekt.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
104
Inkrementoperator Mit dem Inkrementoperator ++ knnen Sie den Wert
eines ganzzahligen Datentypen um 1 erhhen.
Integrated Development
Environment Integrated Development Environment ist der engli-
sche Begriff fr Integrierte Entwicklungsumgebung.
Integrierte
Entwicklungsumgebung Eine integrierte Entwicklungsumgebung fasst meh-
rere Werkzeuge zur Programmierung unter einer
Oberflche zusammen zum Beispiel den Editor,
den Compiler und den Linker.
Kommentar Ein Kommentar ist ein Teil eines Quelltextes, der
nicht ausgefhrt wird.
Kommentare werden durch // oder /* */
gekenn zeichnet.
Konsolenprogramm Ein Konsolenprogramm ist ein Programm, das in der
Eingabeaufforderung von Windows luft.
Linker Ein Linker fasst mehrere Dateien zu einer einzigen
Datei zusammen.
main() main() ist die Hauptfunktion eines C++-Konsolen-
programms.
Namensraum ber den Namensraum kann die Gltigkeit von
Bezeichnern festgelegt werden.
Operand Ein Operand ist der Teil eines Ausdrucks, auf den
ein Operator wirkt.
Operator Ein Operator ist ein Zeichen, das eine bestimmte
Operation auslst zum Beispiel eine Rechenopera-
tion.
Prioritt Die Prioritt beschreibt die Reihenfolge der Verar-
beitung. So haben zum Beispiel in C++ die Operato-
ren unterschiedliche Prioritten.
Projekt Ein Projekt in Code::Blocks fasst die Elemente einer
Anwendung zusammen. Es gibt verschiedene Arten
von Projekten.
Normalerweise besteht ein Projekt aus mehreren
einzelnen Dateien. Die Projektdatei selbst trgt die
Erweiterung .cbp.
Quelltext Als Quelltext bezeichnet man die Anweisungen einer
Programmiersprache fr die Ausfhrung eines Pro-
gramms.
Der Quelltext selbst kann nicht direkt ausgefhrt
werden. Er muss entweder von einem Compiler oder
einem Interpreter bersetzt werden.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
105
Schlsselwrter Schlsselwrter sind Zeichenketten, die intern vom
Compiler verwendet werden. Solche Zeichenketten
drfen Sie nicht selbst benutzen. Schlsselwrter
sind zum Beispiel main oder void.
Semantik Die Semantik beschreibt bei einem Quelltext die
Funktionalitt der Anwendung.
Semantikfehler Semantikfehler sind Fehler in der Programmlogik.
Solche Fehler kann der Compiler in der Regel nicht
feststellen.
Stream Ein Stream ist ein unformatierter Datenstrom. Die
Interpretation erfolgt durch das Zielgert, das den
Stream verarbeitet.
C++ kennt Standard-Streams wie zum Beispiel cout
fr das Ausgabegert und cin fr das Eingabegert.
String String ist eine andere Bezeichnung fr Zeichenkette.
Syntax Die Syntax bezeichnet die Regeln, die durch die Pro-
grammiersprache vorgegeben werden.
Syntaxfehler Syntaxfehler sind Verste gegen die Regeln der
Programmiersprache zum Beispiel ein fehlendes
Semikolon oder eine falsche Klammer.
Syntaxfehler werden vom Compiler bei der berset-
zung des Programms gemeldet.
Typecasting Typecasting bezeichnet das Umwandeln eines Wertes
in einen anderen Datentyp.
berlauf Ein berlauf tritt ein, wenn bei Berechnungen der
gltige Wertebereich eines Datentypen verlassen
wird. C++ rechnet dann einfach mit dem kleinsten
oder grten Wert des Datentypen weiter.
Variable Eine Variable ist ein Datenobjekt, das seinen Wert
beliebig verndern kann.
Zeichenkette Eine Zeichenkette ist eine beliebige Folge von Zei-
chen zum Beispiel ein Wort.
Zuweisungsoperator Der Zuweisungsoperator = wird benutzt, um einem
Datenobjekt einen Wert zuzuweisen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
106
9.6 Sachwortverzeichnis
A
Anweisungsteil 43
Arbeitsbereich 21
Arithmetische Operatoren 73
Ausgabe 48
C
Casting 87
Code::Blocks 6
D
Datentyp 60
fr logische Werte 72
Datentypen
fr Gleitkommazahlen 65
fr Zeichen und Zeichenketten 69
Dekrementoperator 77
Desktop 15
E
Eingabe 92
Escape-Sequenzen 52
explizites Typecasting 87
F
Fehler 35
Fehlersuche 35
Funktion 43
H
Hinweis 35
I
Initialisierung 73
Inkrementoperator 77
Installation 6
integrierte Entwicklungsumgebung 6
K
Kommentare 44
Kommentarzeichen
/* und */ 45
// 45
Kompilieren 32
M
Manipulator 49
Modulo 73
N
Namenskonventionen fr Bezeichner 59
Namensraum 48
Neues Projekt erstellen 21
P
Prioritt 74
Programmaufbau 43
Projekt
ffnen 31
speichern 31
Projekte 21
Q
Quelltext erfassen 29
S
Schlsselwrter 31
Semantik 33
Steuerzeichen 52
Stream 49
Streamoperator 49
String 49
Syntax 33
U
berlauf 61
V
Variablen 56
W
Warnung 35
Z
Zeichenkette 49
Zuweisungsoperator 58


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
(Bitte wenden!)
So kennzeichnen Sie
bitte Ihre Lsungen
EINSENDEAUFGABEN DES STUDIENHEFTES
Vergessen Sie bitte nicht, auf jedem Lsungsbogen
neben der oben angefhrten Kurzbezeichnung auch
Namen und Vertragsnummer anzugeben!
IMIT 4 / 0713 K04
1. Korrigieren Sie die Fehler im folgenden Quelltext so, dass sich das Programm mit
Code::Blocks bersetzen und ausfhren lsst. Bitte sehen Sie dabei genau hin. Zum
Teil fehlt lediglich ein Zeichen beziehungsweise ein Zeichen ist nicht korrekt.
Eine kleine Hilfestellung: Der Quelltext enthlt insgesamt 4 Fehler.
2. Erstellen Sie ein Programm, das folgende Figur in der Eingabeaufforderung von
Windows ausgibt:
Benutzen Sie fr das Positionieren der Sternchen keine Leerzeichen.
################################################
Einsendeaufgabe
################################################# */
#include <iosteam>
using namespace std;
int meins()
{
cout << "Hallo Welt!" < endl;
return 0;
}
*
* *
* *


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g
3. Erstellen Sie ein Programm, das die Lnge und Breite eines Grundstcks sowie
den Preis pro Quadratmeter einliest. Berechnen Sie dann mit dem Programm den
Preis des Grundstckes und lassen Sie ihn auf dem Bildschirm ausgeben.
Beim Preis sollen auch Nachkommastellen bercksichtigt werden. Fr die Lnge
und Breite reicht es aus, wenn ganze Meter verarbeitet werden. Hier mssen Sie
also keine Nachkommastellen bercksichtigen.


F
e
r
n
s
c
h
u
l
e
n

H
a
m
b
u
r
g