Grundlagen der Informatik 2. Typen
Konstanten, Variablen Speicher, Speicherbedarf Ein-/Ausgabe
Grundlagen der Informatik (Alex Rempel)
1
2. Typen Wiederholung // root calculation #include #include using namespace std; void main() { const double precision = 1.0e-3; double x,a; // input cout > a; // plausibility check if ( a precision ); // loop end // result cout 3*16^2 + 1*16^1 + 10*16^0 = 794(10)
●
binär 1100011010(2) => 1*2^9 + ... 0*2^0 = 794(10)
2-er Systeme: binär, oktal, hex, aber nicht dezimal ●
binär: 1100011010
●
oktal: 1 100 011 010 => 1432
●
hex:
11 0001 1010 => 31A Grundlagen der Informatik (Alex Rempel)
8
2. Typen Konstanten, Variablen ●
●
Typen: Gleitkommazahlen Typ
Bits
Min
Max
float
32
3.4*10^-38
3.4*10^38
double
64
1.7*10^-308
1.7*10^308
long double
80
1.2*10^-4932
1.2*10^4932
Gleitkommazahl? ●
Beispiel Begrenzung: 3 Ziffern hinter dem Komma
●
(Mensch:
0.12*0.12
= 0.0144)
●
Fixkomma:
0.120*0.120
= 0.014
●
Gleitkomma:
1.2e-1*1.2e-1 = 1.44e-2 Grundlagen der Informatik (Alex Rempel)
9
2. Typen Konstanten, Variablen ●
Typen: Wahrheitswerte (bool) ●
Logischer Wert 'true' oder 'false'
●
Echter Wert 'true = !0' und 'false=0' –
●
Typen: leerer Typ (void) ●
●
3, 9A, -44 sind also alles 'true' Werte
wenn keine Typangabe möglich
Typen: Character (char) ●
Steht für eine Zahl (Byte) –
Zahl ist gleichzeitig ein Zeichen aus der ASCII Tabelle Grundlagen der Informatik (Alex Rempel)
10
2. Typen Konstanten, Variablen
Grundlagen der Informatik (Alex Rempel)
11
2. Typen Konstanten, Variablen
Grundlagen der Informatik (Alex Rempel)
12
2. Typen Konstanten, Variablen ●
Typen: Zeichenkette (string) ●
Voraussetzung: '#include '
●
Speichert und modifiziert ganze Zeichenketten –
●
"lolcat" "EIT" "qwerty1234" "@.-" etc.
Typen: Aufzählung (enum) ●
Eigendefinierte ganzzahlige Aufzählungen, z.B: –
'enum grades {one,two,three,four,five,six};' ●
●
Deutung: 'one' ist Ganzzahl 0, 'six' ist Ganzzahl 5
Dient u.a. zur besseren Lesbarkeit von Code Grundlagen der Informatik (Alex Rempel)
13
2. Typen Konstanten, Variablen Typ
Bits
Min (signed)
Max (signed)
Min (unsigned)
Max (unsigned)
bool
8
-
-
(0) false
(1..255) true
char
8
-128
127
0
255
short int
16
-32.768
32.767
0
65535
int
32
-2.147.483.648
2.147.483.647
0
4.294.967.295
long int
32
-2.147.483.648
2.147.483.647
0
4.294.967.295
Typ
Bits
Min
Max
float
32
3.4*10^-38
3.4*10^38
double
64
1.7*10^-308
1.7*10^308
long double
80
1.2*10^-4932
1.2*10^4932
Die Angaben sind implementierungsabhängig (siehe limits.h und float.h)
Grundlagen der Informatik (Alex Rempel)
14
2. Typen Konstanten, Variablen ●
Namensgebung ●
Regeln –
muss mit Unterstrich oder Buchstaben anfangen
–
besteht aus Unterstrichen, Buchstaben und Ziffern ●
– ●
Groß- und Kleinschreibung ist relevant
C++ Schlüsselwörter sind verboten
Empfehlung –
Unterstrich am Beginn vermeiden
–
aussagekräftige, beschreibende Namen verwenden ●
'counter' statt 'cnt', 'zinsSatz' statt 'zins' u.s.w. Grundlagen der Informatik (Alex Rempel)
15
2. Typen Konstanten, Variablen ●
Deklaration und Zuweisung ●
Genauigkeit: Gleitkomma-Zahl, konstant (0.001) –
●
●
●
Konstante: modifier 'const' vor dem Typ ●
const double precision = 1.0e-3;
●
const double precision = 0.001;
Eingangszahl: ganze positive Zahl, variabel ●
unsigned int input = 0;
●
unsigned int input (0);
Zwischenergebnisse: Gleitkomma-Zahl(!), variabel ●
double x = 0;
●
double x = input;
Resultat: Gleitkomma-Zahl, variabel ●
double result = 0; Grundlagen der Informatik (Alex Rempel)
16
2. Typen Konstanten, Variablen ●
Literalen (Literale in 'int x = 4;' ist die '4') ●
Numerisch
0 (int) -043(int, oktal) 0xA4 (int, hex) 0.3 (double) -1.8e5 (double) 11.4f (float)
●
Zeichen:
'0' (char) '\23' (char, oktal) '\n' (char, newline)
●
Zeichenketten:
"here be dragons!"
●
Wahrheitswerte:
true false
●
u.w. (probiert verschiedene mit einfacher Ausgabe aus)
Grundlagen der Informatik (Alex Rempel)
17
2. Typen Speicher, Speicherbedarf Speicher komplett
Grundlagen der Informatik (Alex Rempel)
18
2. Typen Speicher, Speicherbedarf Speicher komplett
Speicher Prozess
Grundlagen der Informatik (Alex Rempel)
19
2. Typen Speicher, Speicherbedarf Adresse Wert
0
1 00
2 FF
3 45
... A2
Speicher Prozess ●
Kleinster Wert ist ein Byte
●
Adresse 32b oder 64b ●
●
Adressraum begrenzt
Anfangswerte sind zufällig ●
Deswegen bei Deklaration immer zuweisen! Grundlagen der Informatik (Alex Rempel)
20
2. Typen Speicher, Speicherbedarf ●
Deklaration: Variable bekommt automatisch freien Speicher zugewiesen ●
Adresse ist in der Variable enthalten
●
Zuweisung: Speicher unter der Adresse der Variable wird beschrieben
●
Beispiel: Variable 'c', Größe ein Byte ●
unsigned char c;
Adresse: 2 Inhalt: 0x45 (69 'E')
●
c = '0';
Adresse: 2 Inhalt: 0x30 (48 '0')
Grundlagen der Informatik (Alex Rempel)
21
2. Typen Speicher, Speicherbedarf ●
Deklaration: Variable bekommt automatisch freien Speicher zugewiesen ●
Adresse ist in der Variable enthalten
●
Zuweisung: Speicher unter der Adresse der Variable wird beschrieben
●
Beispiel: Variable 'c', Größe ein Byte ●
unsigned char c;
Adresse: 2 Inhalt: 0x45 (69 'E')
●
c = '0';
Adresse: 2 Inhalt: 0x30 (48 '0')
●
c = c + 1;
Adresse: 2 Inhalt: 0x31 (49 '1')
●
c = c + 250;
Adresse: ? Inhalt: ? Grundlagen der Informatik (Alex Rempel)
22
2. Typen Speicher, Speicherbedarf ●
Deklaration: Variable bekommt automatisch freien Speicher zugewiesen ●
Adresse ist in der Variable enthalten
●
Zuweisung: Speicher unter der Adresse der Variable wird beschrieben
●
Beispiel: Variable 'c', Größe ein Byte ●
unsigned char c;
Adresse: 2
Inhalt: 0x45 (69 'E')
●
c = '0';
Adresse: 2
Inhalt: 0x30 (48 '0')
●
c = c + 1;
Adresse: 2
Inhalt: 0x31 (49 '1')
●
c = c + 250;
Adresse: 2
Inhalt: 0x2B (43 '+')
–
Überschreitung des Wertebereichs Grundlagen der Informatik (Alex Rempel)
23
2. Typen Speicher, Speicherbedarf ●
Deklaration: Variable bekommt automatisch freien Speicher zugewiesen ●
Adresse ist in der Variable enthalten
●
Zuweisung: Speicher unter der Adresse der Variable wird beschrieben
●
Beispiel: Variable 'n', Größe vier Bytes ●
unsigned int n;
Adresse: 1
Inhalt: 0xA3000348
–
Adresse 1: zeigt auf das erste Byte, reserviert aber 3 dazu
–
'n' belegt also Adressen 1..4
Grundlagen der Informatik (Alex Rempel)
24
2. Typen Ein-/Ausgabe ●
●
C: 'stdio.h' Funktionen ●
veraltet, nicht komfortabel, fehleranfällig
●
immer noch in vielen Programmen vorhanden
C++: 'iostream' stream-basiert ●
●
'cout > dSomething >> iLolcats;' (Eingabe: 89.97 42) Grundlagen der Informatik (Alex Rempel)
25
2. Typen Ein-/Ausgabe ●
Shift-Ketten ('...