Grundlagen der Informatik 2. Typen - fbi.h

Werbung
Grundlagen der Informatik
2. Typen
Konstanten, Variablen
Speicher, Speicherbedarf
Ein-/Ausgabe
Grundlagen der Informatik (Alex Rempel)
1
2. Typen
Wiederholung
// root calculation
#include <iostream>
#include <cmath>
using namespace std;
void main()
{
const double precision = 1.0e-3;
double x,a;
// input
cout << "\n input a = ";
cin >> a;
// plausibility check
if ( a <= 0 )
cout << "\n a must be > 0!";
else
{
// calculate root
x = a;
do // loop begin
x = x - (x*x-a)/(2*x);
while ( abs(x*x-a) > precision ); // loop end
// result
cout << "\n root of " << a << " = " << x;
}
}
Grundlagen der Informatik (Alex Rempel)
2
2. Typen
Konstanten, Variablen
●
Eingangsdaten, Resultat, Zwischenergebnisse?
●
●
Beispiel Wurzelberechnung:
–
Eingangsdaten: Genauigkeit, Eingangszahl
–
Zwischenergebnisse: Zahlen
–
Resultat: Zahl
Typen?
Grundlagen der Informatik (Alex Rempel)
3
2. Typen
Konstanten, Variablen
●
Eingangsdaten, Resultat, Zwischenergebnisse?
●
●
Beispiel Wurzelberechnung:
–
Eingangsdaten: Genauigkeit, Eingangszahl
–
Zwischenergebnisse: Zahlen
–
Resultat: Zahl
Typen?
–
Genauigkeit: reelle Zahl (Gleitkomma)
–
Eingangszahl: ganze positive Zahl
–
Zwischenergebnisse: reelle Zahlen (Gleitkomma)
–
Resultat: reelle Zahl (Gleitkomma)
Grundlagen der Informatik (Alex Rempel)
4
2. Typen
Konstanten, Variablen
●
Eingangsdaten, Resultat, Zwischenergebnisse?
●
●
Beispiel Wurzelberechnung:
–
Eingangsdaten: Genauigkeit, Eingangszahl
–
Zwischenergebnisse: Zahlen
–
Resultat: Zahl
Welche variabel? Welche konstant?
Grundlagen der Informatik (Alex Rempel)
5
2. Typen
Konstanten, Variablen
●
Eingangsdaten, Resultat, Zwischenergebnisse?
●
●
Beispiel Wurzelberechnung:
–
Eingangsdaten: Genauigkeit, Eingangszahl
–
Zwischenergebnisse: Zahlen
–
Resultat: Zahl
Welche variabel? Welche konstant?
–
Genauigkeit: Gleitkomma-Zahl, konstant
–
Eingangszahl: ganze positive Zahl, variabel
–
Zwischenergebnisse: Gleitkomma-Zahl(!), variabel
–
Resultat: Gleitkomma-Zahl, variabel
Grundlagen der Informatik (Alex Rempel)
6
2. Typen
Konstanten, Variablen
●
Typen: Wahrheitswert und Ganzzahlen
Typ
Bits
Min (signed)
Max (signed)
Min (unsigned)
Max (unsigned)
bool
8
-
-
(0) false
(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
●
Menschen rechnen in 10ern, Maschinen in Bits
●
1 Bit [0..1] (=> Zweiersystem)
●
2 Bits [0..3], 3 Bits [0..7], 4 Bits [0..15]
●
8 Bits = 1 Byte
Grundlagen der Informatik (Alex Rempel)
7
2. Typen
Konstanten, Variablen
●
●
Numerische Basen
●
dezimal 794(10) => 7*10^2 + 9*10^1 + 4*10^0 = 794(10)
●
oktal 1432(8) => 1*8^3 + 4*8^2 + 3*8^1 + 2*8^0 = 794(10)
●
hexadezimal 31A(16) => 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 <string>'
●
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 <<' – Ausgabe (überladener Operator)
–
d.h. Typumwandlung erfolgt automatisch
–
'cout << dSomething << iLolcats << 42 << endl;'
'cin >>' – Eingabe (überladener Operator)
–
Eingabe muss zum Argumententyp passen
●
–
sonst Zeichenkette nicht weiter gelesen
'cin >> dSomething >> iLolcats;' (Eingabe: 89.97 42)
Grundlagen der Informatik (Alex Rempel)
25
2. Typen
Ein-/Ausgabe
●
Shift-Ketten ('... << ... << ...')
●
●
Unterschiedliche Compiler führen die Kette in
unterschiedliche Richtungen aus
Beispiel: 'int x = 12;'
–
'cout << x << " : " (x=x*3);'
●
●
Ausgabe A: '36 : 36' (rechts nach links)
Ausgabe B: '12 : 36' (links nach rechts)
Grundlagen der Informatik (Alex Rempel)
26
2. Typen
Ein-/Ausgabe
●
Formatierungen
●
Durch Manipulatoren direkt im Stream
–
dec, oct, hex
●
–
flush
●
–
einmalig für folgende Ausgabe: minimale Ausgabebreite
setprecision(int n)
●
–
Ausgabe von '\n' (Zeilenumbruch) und flush Aufruf
setw(int n)
●
–
Puffer leeren bzw. jetzt ausgeben
endl
●
–
alles danach: dezimal, oktal oder hexadezimal
Ausgabegenauigkeit
setfill(char c)
●
Fülle bis angegebener Größe mit c
Grundlagen der Informatik (Alex Rempel)
27
2. Typen
Ein-/Ausgabe
●
Formatierungen
●
Beispiele:
–
'cout << setw(10) << setfill('0') << 42 << endl;'
●
–
'cout << setw(6) << setprecision(4) << 4.24242 << endl;'
●
–
Oberen zwei Zeilen direkt nacheinander:
●
●
Probiert verschiedene Formatierungen selbst aus
Grundlagen der Informatik (Alex Rempel)
28
Herunterladen