Breymann
Ulrich Breymann
9., neu bearbeitete Auflage
Prof. D...
148 downloads
1174 Views
5MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Breymann
Ulrich Breymann
9., neu bearbeitete Auflage
Prof. Dr. Ulrich Breymann lehrt Informatik im Fachbereich Elektrotechnik und Informatik der Hochschule Bremen
Alle in diesem Buch enthaltenen Informationen, Verfahren und Darstellungen wurden nach bestem Wissen zusammengestellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Buch enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor und Verlag übernehmen infolgedessen keine juristische Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen oder Teilen davon entsteht, auch nicht für die Verletzung von Patentrechten und anderen Rechten Dritter, die daraus resultieren könnten. Autor und Verlag übernehmen deshalb keine Gewähr dafür, dass die beschriebenen Verfahren frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Buch berechtigt deshalb auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.
Bibliografische Information der Deutschen Nationalbibliothek: Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. Dieses Werk ist urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren) auch nicht für Zwecke der Unterrichtsgestaltung reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden. © 2007 Carl Hanser Verlag München Wien (www.hanser.de) Lektorat: Margarete Metzger Herstellung: Irene Weilhart Umschlagdesign: Marc Müller-Bremer, Rebranding, München Umschlagrealisation: MCP Susanne Kraus GbR, Holzkirchen Datenbelichtung, Druck und Bindung: Kösel, Krugzell Ausstattung patentrechtlich geschützt. Kösel FD 351, Patent-Nr. 0748702 Printed in Germany ISBN 978-3-446-41023-7
í
Adresse
Inhalt
Name
4089
10123
2
10124
a
100
10125
b
102
10126
summe
1127
10127
Problembeschreibung
Modellbildung: Datenstrukturen und Algorithmen entwerfen
(später: Klassen, Methoden)
Editor
Quellprogramm editieren
Compiler
Übersetzen Objektprogramm
Fehlerkorrektur, Vervollständigung
Linker
Binden der Objektprogramme ausführbares Programm
Lader
Ausführen und Testen des Programms
fertiges Programm
Fehlermarkierung
Erläuterung des Fehlers
Fehlermarkierung
Erläuterung des Fehlers
if-Anweisung: if
(
Bedingung
else
)
AnweisungOderBlock
AnweisungOderBlock
AnweisungOderBlock:
Anweisung
{
} Anweisung
Bedingung
?
Ausdruck1
:
Ausdruck2
switch
case
default
(
Ausdruck
Konstante
:
:
)
{
break;
Anweisung(en)
Ersatzanweisung(en)
}
while
(
Bedingung
)
AnweisungOderBlock
Bedingung erfüllt?
ja
Anweisung
while (Bedingung) { Anweisung }
nein
do
AnweisungOderBlock
while
(
Bedingung
)
;
Anweisung
Bedingung erfüllt?
ja
do { Anweisung } while (Bedingung);
nein
for
(
Initialisierung
;
Bedingung
;
Veränderung
)
AnweisungOderBlock
enum
Typname
{
Werteliste
}
Variablenliste
;
struct
Typname
{
Elemente
}
Variablenliste
;
Rückgabetyp
Funktionsname
(
Parameterliste
)
;
Rückgabetyp
Funktionsname
(
Formalparameterliste
)
Block
Funktionsname
(
Aktualparameterliste
)
Aufrufer-Sicht
symbolischer Name i
Speicherzelle
erg
Kopie bei Aufruf Kopie bei return
Funktions-Sicht x
A
B
C
Speicherzelle Aufrufer-Sicht
i symbolischer Name
Funktions-Sicht
x
Ausdruck:
+ Summand -
-
*
/
Faktor
Summand:
Faktor:
Zahl (
Zahl:
+
Ausdruck
)
Ziffer
Ausdruck Summand
(
Faktor
*
Ausdruck
)
Faktor Zahl Ziffer
Summand
+
Summand
Faktor
Faktor
Zahl
Zahl
Ziffer
Ziffer
1
2
4
3
a.h
b.h meinprog.cpp
Compiler meinprog.o
a.o
Linker
*.a
meinprog.exe
b.o
class template
Typbezeichner
Funktionsdefinition
typename
Datenkapsel x
Funktionsaufruf
Schnittstelle: aendern(x,y)
y
Adresse
Name
10124 99
10125
i
10126
99
i
grafisch dargestellt:
ip
27889 10125
27890
ip
27891
ip 99
i
ip2
Datentyp
Feldname
[
AnzahlDerElemente
]
;
Index 17 35
0
112
2
-3
3
1000
4
Tabelle
1
A B C \0 str n e
u
e r
T e x
t \0
sa
e i
n
s \0
sp
z w e
i
\0
p
15
pa 35 45 15
p
pa
int*
int*
int 15
int*
int**
pp
int 35 45 15
test_struct* sp
a b next
12 17.4 15
a b next
144 15
Aufrufer-Sicht
str
Kopie bei Aufruf
Verweis
feld "gross 123"
Verweis
Funktions-Sicht s
mat
mat[0] mat[1] mat[2] mat[3]
einMstring:MeinString start = "hallo" len = 5
int*
int* original
original
17
17
0
0
3 5
Kopie
6 int* flacheKopie
3
int* tiefeKopie
17 0
5 6
3 5 6
Transportmittel
Klasse
hoehe
Attribute
breite
Methoden
bewegen()
LandTransportmittel
WasserTransportmittel
radZahl
bruttoregistertonnen
fahren() schieben()
anlegen() ablegen()
Rikscha
Fahrrad
Auto
...
...
spritverbrauch
...
...
fahren() tanken() starten() Amphibienfahrzeug wassersensor schottenDichtmachen()
class
Klassenname
:
public
Oberklassenname
Auto LandTransportmittel Transportmittel
GraphObj referenzkoordinaten bezugspunkt() zeichnen()
BeschriftetesObjekt beschriftung
Rechteck dieHoehe, dieBreite
zeichnen()
zeichnen()
BeschriftetesRechteck zeichnen()
kursiv = abstrakte Klasse
Subobjekt1: GraphObj
Subobjekt : beschriftetesObjekt
Subobjekt2: GraphObj
Subobjekt : Rechteck
Objekt : beschriftetesRechteck
Objekt: Klasse
Rückgabetyp
operator
(
Formalparameterliste
)
;
:Vektor
T
T
T
T
T
x = a[1];
x
2)
temp
a 1)
a
a[1] = x;
1)
temp
2)
x
x = a[1];
x
a
a
a[1] = x;
x
operator
Datentyp
(
)
const
;
exception
logic_error
runtime_error
invalid_argument length_error out_of_range domain_error
bad_alloc underflow_error overflow_error range_error
bad_typeid bad_cast bad_exception
Anfang
Daten
Daten
Daten
Nächstes 15
Nächstes 15
Nächstes 15
Anfang
Ende
Daten
Daten
Daten
Vorgänger 15 Nächstes
Vorgänger 15 Nächstes
Vorgänger 15 Nächstes
temp
daten 4
1
vorgaenger 15 naechstes 2
anfang
ende
3
daten
daten
vorgaenger 15 naechstes
vorgaenger 15 naechstes
Liste:
Trace
Trace
Trace
Prüfobjekt a
Prüfobjekt b
Prüfobjekt x
ios_base basic_ios
basic_istream
basic_ostream
basic_iostream basic_ifstream basic_istringstream
basic_fstream basic_stringstream
basic_ofstream basic_ostringstream
ios_base ios
istream
ostream
iostream ifstream
fstream
istringstream
stringstream
ofstream ostringstream
begin()
Buckets
0
unordered_map k1
k5
Wert1
Wert5
begin(0) k1 tatsächliche Schlüssel k2
k3
Raum möglicher Schlüssel
k5
1
k4 k7 k6
2
k4 Wert4
3
4
5
k7 Wert7 k2
k3
k6
Wert2
Wert3
Wert6
begin(5)
a)
b)
copy(...)
copy(...)
c) copy_backward(...)
result
result Ziel
first Ziel
Quelle
first last
Quelle
first Quelle
last
Ziel
result
last
0 1
2
3 7
4 8
9
5 10
11
6 12
13
98 32
57
19 12
30 8
24
21 1
10
49 18
43