Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14
Variablen, Konstanten und Datentypen Überblick 1 Variablen, Konstanten und Datentypen Variablen und Konstanten Namenskonventionen 2 Datentypen Zahlen Zeichen und Zeichenketten Spezielle Datentypen 3 Initialisierung und Zuweisung von Variablen 2 / 21
Variablen, Konstanten und Datentypen Motivation Das Hallo Welt -Programm wird sehr schnell langweilig, da bei jedem Start des Programms die gleiche Ausgabe erfolgt. Computer sind jedoch zu mehr in der Lage, als nur einen einfachen Text anzuzeigen. Dazu zählt unter anderem die Speicherung und Verarbeitung von Daten. Programme können mit diesen Daten Berechnungen anstellen, um für den Benutzer ein sinnvolles Ergebnis zu produzieren. Um Daten in Programmen zu verarbeiten, benötigen wir Kenntnis davon, wie Daten eines bestimmten Typs gespeichert und bei Bedarf wieder zur Verfügung stehen. Dazu werden wir Datentypen kennenlernen, um verschiedene Arten von Daten (z.b. diverse Zahlen, Zeichenketten) zu verwalten. 3 / 21
Variablen, Konstanten und Datentypen Motivation Betrachten wir zunächst folgendes Programm: 1 # include <iostream > 2 using namespace std; 3 4 int main () { 5 int spannung = 220; 6 7 cout << " Diese Maschine nutzt " << spannung << " Volt."; 8 return 0; 9 } In diesem Programm haben wir eine Variable verwendet, welche einen Zahlenwert (220) abspeichert und wieder ausgibt (Zeile 7). Die Variable wird über ihren Namen im Programm angesprochen. 4 / 21
Variablen, Konstanten und Datentypen Variablen und Konstanten Variablen und Konstanten Variablen sind Träger von Daten, welche zur Laufzeit des Programms genutzt werden und beliebig oft änderbar sind. Sie sind also variabel, im Gegensatz zu Konstanten, die immer den gleichen Wert besitzen. Konstanten sind über das Schlüsselwort const erkennbar und sollten zur Unterscheidung von Variablen in Grossbuchstaben geschrieben werden. Ausserdem müssen sie immer mit einem Wert belegt sein. Variablen hingegen können auch erst später mit einem Wert ausgestattet werden. Allgemein lautet die Syntax zum Anlegen von Variablen: bzw. mit Wertebelegung Beispiel datentyp variablenname; datentyp variablenname = wert; 1 const double PI = 3.1415; // Konstante 2 int hausnummer ; // Variable hausnummer ohne Wert 3 int alter = 22; // Variable alter mit Wert 22 5 / 21
Variablen, Konstanten und Datentypen Namenskonventionen Überblick 1 Variablen, Konstanten und Datentypen Variablen und Konstanten Namenskonventionen 2 Datentypen Zahlen Zeichen und Zeichenketten Spezielle Datentypen 3 Initialisierung und Zuweisung von Variablen 6 / 21
Variablen, Konstanten und Datentypen Namenskonventionen Namenskonventionen in C++ In vielen Bereichen (nicht nur bei Variablen) der Programmiersprache dürfen vom Programmierer eigene Namen verwendet werden. Diese müssen jedoch der Namenskonvention entsprechen und gewisse Regeln einhalten. Namen dürfen nur aus Buchstaben, Ziffern und Unterstrichen (_) bestehen Beginnen darf der Name nur mit Buchstaben oder dem Unterstrich Gross- und Kleinbuchstaben werden unterschieden Schlüsselwörter der Programmiersprache dürfen nicht benutzt werden Empfehlung: Variablennamen sollten nach ihrem Inhalt oder der Art der zu speichernden Daten benannt werden. Das erhöht die Lesbarkeit des Codes. Abkürzungen sind nur sinnvoll, so lange die Lesbarkeit nicht darunter leidet. Namen wie z.b. zs sind schwerer zu verstehen als zinssatz. 7 / 21
Datentypen Überblick 1 Variablen, Konstanten und Datentypen Variablen und Konstanten Namenskonventionen 2 Datentypen Zahlen Zeichen und Zeichenketten Spezielle Datentypen 3 Initialisierung und Zuweisung von Variablen 8 / 21
Datentypen Zahlen Datentypen für Zahlen Um Zahlenwerte und deren Ergebnisse abzuspeichern, existieren aufgrund der verschiedenen Zahlenbereiche entsprechende Schlüsselwörter. Zusätzlich kann jede dieser Datentypen unterschiedliche Zahlengrössen aufnehmen. Beim Anlegen einer Variable sollten Sie sich daher vorher überlegen, in welchem Wertebereich die Zahlen liegen, die sie in dieser Variable abspeichern wollen. Dies ist teilweise von System zu System unterschiedlich aufgrund der Art und Weise, wie Zahlen auf diversen Rechnerarchitekturen umgesetzt sind. Durch die Angabe des Schlüsselwortes unsigned wird eine vorzeichenlose Repräsentation erreicht. Zahlen die kleiner sind als Null können dann nicht in der Variable gespeichert werden, dafür wird der positive Zahlenbereich entsprechend erweitert. 9 / 21
Datentypen Zahlen Ganzzahlige Datentypen -- int Ganzzahlige Datentypen (engl. integer) können im Programm mit int deklariert werden. Die folgende Tabelle zeigt die möglichen Datentypen: signed unsigned Typ Min Max Min Max short int -32768 32768 0 65535 int -2.147.483.648 2.147.483.647 0 4.294.967.295 long int -2.147.483.648 2.147.483.647 0 4.294.967.295 10 / 21
Datentypen Zahlen Fliesskommazahlen -- float Zahlen, welche keinen ganzzahligen Wert speichert, werden Fliesskommazahlen genannt und mit float (von engl. floating point) deklariert. Die folgenden Wertebereiche kann dieser Datentyp abbilden: Typ Min Max Genauigkeit float 3, 4 10 38 3, 4 10 38 1, 2 10 7 double 1, 7 10 308 1, 7 10 308 2, 2 10 16 long double 1, 2 10 4932 3, 4 10 4932 1, 1 10 197 Es kann kein unsigned für diesen Datentyp verwendet werden. 11 / 21
Datentypen Zeichen und Zeichenketten Überblick 1 Variablen, Konstanten und Datentypen Variablen und Konstanten Namenskonventionen 2 Datentypen Zahlen Zeichen und Zeichenketten Spezielle Datentypen 3 Initialisierung und Zuweisung von Variablen 12 / 21
Datentypen Zeichen und Zeichenketten Zeichen -- char Ein einzelnes Zeichen lässt sich über den Datentyp char (engl. character) als Variable nutzen. Das Zeichen selbst muss in einfache Anführungszeichen eingeschlossen sein. Es lassen sich beliebige Zeichen verwenden, soweit diese vom Zeichensatz des Systems unterstützt werden. Beispiele char zeichen = a ; char einezahl = 3 ; char symbol =? ; char leerzeichen = ; Wichtig ist, dass in diesem Datentyp immer nur ein einziges Zeichen abgelegt werden kann. Dies mag etwas wenig erscheinen, ist aber für viele Anwendungsfälle ausreichend. Ausserdem wird dadurch im Vergleich zu anderen Datentypen weniger Speicherplatz verbraucht. 13 / 21
Datentypen Zeichen und Zeichenketten Sonderzeichen mit char Es existieren eine Reihe von Sonderzeichen, welche mit char als Zeichenkonstante in einfachen Anführungszeichen ( ) eingeschlossen, abgebildet sind. Die folgende Tabelle listet einige dieser Sonderzeichen auf. Der \ (Backslash) wird dabei als einleitende Sequenz für das darauffolgende Steuerzeichen verwendet. Sonderzeichen Bedeutung \a Piepston (Alert) \b Backspace \f Formfeed \n Zeilenumbruch (Newline) in Zeichenketten \r Carriage return \t Horizontaler Tabulator \ 14 / 21
Datentypen Zeichen und Zeichenketten Zeichenketten - string Werden mehrere Zeichen aneinandergehängt, so entsteht eine sogenannte Zeichenkette. Zeichenketten müssen in C++ wie folgt in das Programm eingebunden werden, da diese nicht zum Kernbestand der Sprache gehören. 1 # include <iostream > 2 # include <string > // Stellt strings als Variable bereit 3 using namespace std; 4 5 int main () { 6 string gruss = " Hallo "; 7 cout << gruss ; 8 return 0; 9 } Zuerst muss, wie in Zeile 2 zu sehen ist, die entsprechende Funktionalität inkludiert werden. Nur auf diese Weise steht der Variablentyp string für die Deklaration von Stringvariablen zur Verfügung. Werte für Variablen vom Typ string werden in doppelten Anführungszeichen (Zeile 6) geschrieben. 15 / 21
Datentypen Spezielle Datentypen Überblick 1 Variablen, Konstanten und Datentypen Variablen und Konstanten Namenskonventionen 2 Datentypen Zahlen Zeichen und Zeichenketten Spezielle Datentypen 3 Initialisierung und Zuweisung von Variablen 16 / 21
Datentypen Spezielle Datentypen Spezielle Datentypen -- bool Ein besonderer Datentyp stellt bool (nach George Boole, http://de.wikipedia.org/wiki/george_boole) dar, weil dieser nur zwei konstante Werte kennt: true oder false. Es lassen sich auch 1 und 0 dafür einsetzen. Jeder Wert, der von Null verschieden ist, wird als 1 (true) interpretiert. Mit Booleschen Werten lassen sich sogenannte Wahrheitswerte definieren, welche später in der Programmierung von grossem Nutzen sind. Viele Sachverhalte lassen sich auf zwei Zustände reduzieren, welche sich mit bool ausdrücken lassen. Ergebnisse von logischen Schaltungen (offen, geschlossen) und Zustände (high, low) lassen sich mit diesem Datentyp repräsentieren. 17 / 21
Initialisierung und Zuweisung von Variablen Überblick 1 Variablen, Konstanten und Datentypen Variablen und Konstanten Namenskonventionen 2 Datentypen Zahlen Zeichen und Zeichenketten Spezielle Datentypen 3 Initialisierung und Zuweisung von Variablen 18 / 21
Initialisierung und Zuweisung von Variablen Zuweisen von Variablen Variablen sollten wenn möglich immer initialisiert werden. Andernfalls besitzen sie bei der der ersten Verwendung einen nicht definierten Wert. 1 # include <iostream > 2 using namespace std; 3 4 int main () { 5 int zahl ; 6 cout << zahl ; 7 return 0; 8 } Die Ausgabe dieses Programms ist je nach System unterschiedlich. Eine Variable wie in Zeile 5 zu verwenden wird Deklaration genannt. Wird eine Variable mit einem Wert belegt (z.b. int x = 5;), so spricht man von einer Initialisierung. Variablen dürfen auch zuerst deklariert und anschliessend in einem zweiten Schritt initialisiert werden. int zahl; zahl = 7; 19 / 21
Initialisierung und Zuweisung von Variablen Variablen initialisieren Variablen lassen sich auf drei Arten initialisieren: Direkte Wertzuweisung: double radius = 3; Wert in Klammern: double radius(3); Zuweisung einer anderen Variablen: double radius = durchmesser/2; Am häufigsten wird also der Zuweisungsoperator = verwendet. Allgemein hat eine Zuweisung folgenden Aufbau: L-Wert = R-Wert Zuerst wird dabei der Wert des Ausdrucks auf der rechten Seite ermittelt und anschliessend dem Ergebnis links vom Gleichheitszeichen zugewiesen. L-Werte sind Speicherbereiche (Variablen) und dürfen auf der linken Seite stehen. R-Werte stehen auf der rechten Seite und können Variablen, Konstanten oder Ausdrücke wie x+2 sein. Die folgende Schreibweise ist daher nicht erlaubt: 5 = zahl; 20 / 21
Initialisierung und Zuweisung von Variablen Eine Liste von Variablen initialisieren Ein Programm besteht in der Regel aus sehr vielen Variablen. Üblicherweise werden diese zu Beginn des Programms mit vernünftigen Standardwerten initialisiert. Variablen des gleichen Typs lassen sich bei Bedarf in der gleichen Quelltextzeile mit Werten belegen. Die folgende Zeile int zaehler, summe = 0; bedeutet, dass zwei Integer-Werte im Speicher angelegt werden, aber nur summe mit 0 belegt wird. Die Variable zaehler wird nicht initialisiert und enthält einen nicht-vorhersagbaren Wert (alter Inhalt dieser Speicheradresse). Aus diesem Grund sollten alle Variablen wenn möglich initialisiert werden, sonst kann es passieren, dass diese in z.b. Berechnungen falsche Ergebnisse erzeugen. 21 / 21