Programmierkurs C++ Variablen und Datentypen

Ähnliche Dokumente
Programmierkurs Java

Grundlagen der Informatik 2. Typen

Informatik Vorkurs - Vorlesung 2

Variablen, Konstanten und Datentypen

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

2.1 Fundamentale Typen

Informatik I (D-ITET)

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Elementare Datentypen in C++

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Grundelemente von C++

RO-Tutorien 3 / 6 / 12

Vorkurs Informatik WiSe 16/17

Einführung in C. EDV1-04C-Einführung 1

RO-Tutorien 15 und 16

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Einstieg in die Informatik mit Java

Wertebereich und Genauigkeit der Zahlendarstellung

Hello World! Eine Einführung in das Programmieren Variablen

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Grundlagen der Programmierung

Java I Vorlesung Imperatives Programmieren

Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Variablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15

Einstieg in die Informatik mit Java

Programmiervorkurs Einführung in Java Tag 1

2. Programmierung in C

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Ganze Zahlen, Ausdrücke Variablen/Konstanten

Programmieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Vorkurs Informatik WiSe 17/18

3. Datentypen, Ausdrücke und Operatoren

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Programmiertechnik Skalare Typen,Variablen, Zuweisungen

Projekt 3 Variablen und Operatoren

Einstieg in die Informatik mit Java

Grundlagen der OO- Programmierung in C#

Einstieg in die Informatik mit Java

Zeiger, Arrays und Strings in C und C++

Physische Datenstrukturen

C-Programmierkurs Mathematik

Elementare Konzepte von

Programmiersprachen Einführung in C

Herzlich willkommen!

Abschnitt 2: Daten und Algorithmen

Übersicht. Peter Sobe 1

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

C++ - Einführung in die Programmiersprache Variablen und Konstanten. Leibniz Universität IT Services Anja Aue

Probeklausur Name: (c)

Informationsverarbeitung im Bauwesen

Kapitel 2. Elementare Datentypen, Konstanten und Variablen

Unterlagen. CPP-Uebungen-08/

Einstieg in die Informatik mit Java

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1

Einstieg in die Informatik mit Java

4.2 Programmiersprache C

2.5 Primitive Datentypen

5. Abgeleitete Datentypen

Primitive Datentypen und Felder (Arrays)

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Crashkurs C++ - Teil 1

Basiswissen in Informatik

Transkript:

Programmierkurs C++ Variablen und Datentypen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer

#2 Überblick Welche Datentypen gibt es in C++? Wie werden Variablen eines Typs deklariert? Zusammengesetzte Datentypen (Arrays, ) Literale

#3 Variablen Adresse Inhalt Eine Variable ist ein Speicherplatz Eine (Start-)Adresse im Arbeitsspeicher Programme verwenden Namen statt Adressen (z.b. jahr, i, hallo) Compiler bzw. Betriebssystem kümmert sich um konkrete Zuordnung...... 1001 12 1002 123 1003 7 1004 7 1007 9 1008 11 Größe des belegten Speichers bestimmt durch Datentyp 32-Bit Ganzzahl 8-Bit vorzeichenbehaftete Ganzzahl...... 800023 800024 4 800025......

#4 Datentypen: Zahlen in C++ Datentyp Bemerkung Min (typisch) Max (typisch) char 8 Bit*, 2er-Komplement -128 +127 short int 16 Bit*, 2er-Komplement -32.768 +32.767 int 16 Bit*, 2er-Komplement -32.768 +32.767 long int 32 Bit*, 2er-Komplement -2.147.483.648 +2.147.483.647 long long int 64 Bit*, 2er-Komplement -9.223.372.036.854.775.808 +9.223.372.036.854.775.807 Datentyp Bemerkung Min Max (typisch) unsigned char 8 Bit* 0 +255 unsigned short int 16 Bit* 0 +65.535 unsigned int 16 Bit* 0 +65.535 unsigned long int 32 Bit* 0 +4.294.967.295 unsigned long long int 64 Bit* 0 +18.446.744.073.709.551.615 Datentyp float double long double Bemerkung 32 Bit* IEEE 754 floating point 64 Bit* IEEE 754 floating point 80-128 Bit* IEEE 754 floating point * Achtung: Die Bit-Längen sind nicht standardisiert, sondern hängen von der jeweiligen Plattform ab! Siehe nächste Folie!

#5 Beispiel: sizeof Operator Datentyp Intel, 32-bit Windows 7 (unsigned) char 8 bit (1 Byte) (unsigned) short int 16 bit (2 Byte) (unsigned) int 32 bit (4 Byte) Entspricht long int (unsigned) long int 32 bit (4 Byte) (unsigned) long long int 64 bit (8 Byte) float 32 bit (4 Byte) double 64 bit (8 Byte)

Beschreibung der Datentypen Ganze Zahlen: char, short int, long int, long long int Können mit oder ohne Vorzeichen (signed / unsigned) verwendet werden Signed: 1er oder 2er Komplement in Abhängigkeit von der jeweiligen Plattform Gleitkomma float: Dieser Datentyp verwendet die IEEE 754 Gleitkomma-Darstellung mit einfacher Genauigkeit (32-bit). Dieser Datentyp sollte niemals verwendet werden, wenn eine sehr hohe Genauigkeit gefordert ist, wie z.b. in der Finanzbuchhaltung double: Dieser Datentyp verwendet die IEEE 754 Gleitkomma-Darstellung mit doppelter Genauigkeit (64-bit). Dieser Datentyp stellt die häufigste Wahl für Gleitkommazahlen dar. Genau wie bei float gilt auch hier: Dieser Datentyp sollte niemals verwendet werden, wenn eine sehr hohe Genauigkeit gefordert ist, wie z.b. in der Finanzbuchhaltung Sonstige bool: Der Datentyp bool hat lediglich zwei mögliche Werte: TRUE und FALSE (Wahr und Falsch). Aus dieser Grund werden Variablen vom Typ bool häufig für Flags (Merker/Signale) und Statusindikatoren verwendet, welche dann logisch Werten wie 0/1 oder An/Aus entsprechen. Obwohl dieser Datentyp lediglich ein Bit an Information beinhaltet, benötigt er häufig trotzdem 8-Bit Speicherplatz (hängt von der Plattform ab) char: Kann auch als Character (Zeichen) interpretiert werden und so zur Speicherung von Zeichen(-ketten) verwendet werden #6

Variablen und Variablendeklaration #7

Deklaration von Variablen Eine Variable ist ein Speicherplatz Repräsentiert einen Wert aus einem bestimmten Wertebereich Wertebereich durch verwendeten Datentyp festgelegt Speicherbereich wird über einen Namen referenziert Eine Variable wird deklariert (d.h. erzeugt) Syntax: <Typ> <Name>; Dadurch wird Speicher reserviert Beispiele long int myint; char c1; bool flag; short int myshort, myshort2; mehrere Variablen gleichen Typs #8

#9 Beispiel Was tut dieses Programm?

Was tut dieses Programm? Auf den ersten Blick: Nichts Zumindest erwartet es keine Eingabe Und es macht keine Ausgaben Es berechnet offensichtlich nichts Aber: es reserviert Speicher für Variablen Und gibt ihn sofort wieder frei Mit diesen Variablen könnten wir jetzt aber arbeiten Zwischenergebnisse und Ergebnisse von Berechnungen ablegen Diese Ergebnisse über den Namen der Variablen ansprechen #10

#11 Deklaration von Variablen: Identifier Wiederholung Deklaration: <Typ> <Name>; Der <Name> einer Variable ist ein Identifier Über diesen Identifier wird eine Variable eindeutig bezeichnet Es können nicht zwei Variablen den gleichen Identifier haben Zumindest nicht im gleichen Kontext (später) Identifier dürfen nur aus gewissen Zeichen bestehen Regeln für Identifier: nächste Folie

#12 Legale Identifier Bestehen aus Buchstaben (a-z, A-Z) Nummern (0-9) Unterstrich _ Dürfen theoretisch beliebig lang sein Einschränkungen Darf nicht mit einer Nummer beginnen Kein reserviertes Schlüsselwort(class, public, etc.). Keine Leerzeichen Identifier sind case-sensitive (Unterscheidung von Groß- und Kleinschreibung)

Beispiele Legale Identifier variable Besteht nur aus Buchstaben und ist daher korrekt. variable Groß/Kleinschreibung unterscheidet sich von variable dies_ist_1_ne_variable_11elf Enthält nur Buchstaben, Zahlen und Unterstriche DAS_IST_TOTAL_TOLL Unterstriche sind erlaubt (auch am Anfang Ungültige Identifier 2good4u Erstes Zeichen darf keine Nummer sein das ist toll Leerzeichen sind nicht erlaubt Krass! Ausrufezeichen sind, wie viele Sonderzeichen, ungültig namespace Der Schlüsselbegriff ist schon von C++ belegt (Namespace wäre ok) #13

#14

Konventionen Normalerweise hält man sich auch an gewisse Konventionen Coding Style / Code Style Code Style für Identifier (Kurzfassung) Für Variablen keine Identifier mit GROSSBUCHSTABEN verwenden GROSSBUCHSTABEN nur für Konstanten oder Macros verwenden Camel Case / Java Style Klein beginnen und im Camel Case weiterschreiben Beispiel: einevariablemiteinemlangennamen Alternative (K&R / Kernigham & Ritchie Style) Klein beginnen und einzelne Bestandteile durch _ trennen Beispiel: eine_variable_mit_einem_langen_namen Details unter http://lxr.linux.no/#linux+v3.15.4/documentation/codingstyle http://sydney.edu.au/engineering/it/~scilect/tpop/handouts/style.htm #15

Literale #16

#17 Datentypen von Literalen (Ganzzahlen) Ganzzahlige Typen (standardmäßig vom Typ int) 10 (Dezimal) 012 (Oktal, Basis 8, wegen führender Null) 0xA (Hexadezimal, Basis 16 wegen führendem 0x, Groß-/Kleinschreibung egal) 0b1010 (Binär, Basis 2, wegen führendem 0b) Suffix u oder U Datentyp ist unsigned Suffix l oder L Datentyp long Suffix ll oder LL Datentyp long long Beispiel: 12273; 12733L; short int i = 10; long int l = 10L;

Datentypen von Literalen (Floating Point) Floating Point Werte sind standardmäßig vom Typ double Durch Anhängen von f/f wird ein Literal vom Typ float Optional kann ein l/l angehängt werden, um long double explizit zu fordern Schreibweise von Floating Point Literalen Normale Schreibweise: 10.0 (alternativ: 10.) Normale Schreibweise: 0.1 (alternativ :.1) Eng. Schreibweise: 1E1 (entspricht 1 * 10 1 ) Float erzwingen: 10.0f Long Double erzwingen: 10.0l #18

Beispiel: Initialisierung von Variablen #19

Zusammengesetzte Datentypen #20

Zusammengesetzte Datentypen Es existieren unterschiedliche Arten, von denen die folgenden hier vorgestellt werden: Enumeration Array Strings Structure Dienen der Erweiterung der existierenden durch benutzerdefinierte Datentypen #21

#22 Zusammengesetzte Datentypen: Enumerations Enumerations Begrenzter Wertebereich, der durch Aufzählung definiert wird Wird wie ein int behandelt und startet mit dem Wert 0 Definition: enum TYPENAME { werte, }; Beispiel (Definition) enum Farbe { ROT, ORANGE, GELB, BLAU}; enum Zahl { EINS = 1, ZWEI, DREI, VIER, FUNF }; Beispiel (Verwendung) enum Farbe farbe1 = ROT, farbe2 = GELB; enum Type {AUTO, MOTORRAD} t = AUTO; enum Farbe c = (enum Farbe) 1;

#23 Zusammengesetzte Datentypen: Arrays Arrays Lineare Anordnung von gleichartigen Elementen Erstes Element hat die Position 0 (Achtung: Nicht 1) Beispiel (Definition) int prime[5] = { 2, 3, 7, 11 }, a[4], tmp[19]; char string[100] = test ; Beispiel (Verwendung) prime[4] = 12; prime[4]++; prime[5] = 12; Dieser Fehler wird vom Compiler nicht erkannt! Erster Index (0) Achtes Element an Index 7 0 1 2 3 4 5 6 7 8 9 5 66 777 338 1-56 4 0 1 4 Länge des Arrays: 10

#24 Zusammengesetzte Datentypen: Strings Es existiert kein Datentyp für Zeichenketten Zeichenketten werden als Array von Zeichen repräsentiert Das Ende der Zeichenkette wird mit dem Zeichen \0 markiert Funktionen zur Manipulation von Zeichenketten sind in der Datei <string.h> verfügbar Manche Zeichen werden mit Backslash (\) escaped '\n' Zeilenumbruch '\'' Das Zeichen ' '\\' Das Zeichen \ selbst Examples char s1[] = Test ; char s2[10] = ; char s3[2]; strcpy(s3, toolong ); char s4[2]; strncpy(s4, toolong, 2); #define S5_SIZE 2 char s5[s5_size]; strncpy(s5, toolong, S5_SIZE-1); s5[s5_size-1] = \0 ; T e s t \0 \0????????? t o o l o n g \0 t o t \0

#25 Zusammengesetzte Datentypen: Structures Structures (struct) Structs dienen der Gruppierung von logisch zusammenhängenden Daten (Verbund) Zugriff auf die Elemente erfolgt mittels. (Punkt) Beispiel struct Punkt {int x; int y; }; struct Punkt p; p.x = 10; p.y = 20;