Skript Informatik

Werbung
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Skript
Informatik
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Was ist Informatik ?
- Informatik ist die Wissenschaft von der systematischen
Verarbeitung von Informationen, insbesondere deren
automatisierte Verarbeitung mit Hilfe von elektronischen
Rechenanlagen.
- Die Informatik beschäftigt sich mit:
o dem Aufbau, der Arbeitsweise und dem Konstruktionsprinzip
von elektronischen Rechenanlagen und
o den Strukturen, Eigenschaften und
Beschreibungsmöglichkeiten von Informationen und deren
Weiterverarbeitung.
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Algorithmus
- Ein Algorithmus ist eine endliche Folge genau definierter
Vorschriften zur Lösung einer Aufgabenstellung.
- Ein Algorithmus ist ein Verfahren, welches in einem endlichen
Text niedergelegt werden muss und effektiv durch eine
Maschine (Computer) ausgeführt werden kann.
- Algorithmen wandeln Eingabedaten in Ausgabedaten um.
Tobias Wolf
http://informatik.swoke.de
Seite 3 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Programm
- Programme sind in einer Programmiersprache formulierte
Algorithmen.
- Im Gegensatz zu Algorithmen sind Programme in einer
eindeutigen Programmiersprache verfasst.
- Ein und derselbe Algorithmus kann in verschiedenen
Programmiersprachen formuliert werden.
Tobias Wolf
http://informatik.swoke.de
Seite 4 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Softwareentwicklung
- Unter Softwareentwicklung versteht man die systematische
Konstruktion von Programmen zur Lösung eines in der realen
Welt gestellten Problems.
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Computer
- Von wenigen Ausnahmen abgesehen, liegt modernen
Computern das Prinzip des Von-Neumann-Rechners zugrunde.
- Der Rechner besteht aus fünf Funktionseinheiten:
o Steuerwerk
o Rechenwerk
o Speicher
o Eingabewerk
o Ausgabewerk
- Diese Funktionseinheiten sind durch ein Bussystem verbunden.
- Von-Neumann-Rechner folgen dem EVA-Prinzip:
Eingabe - Verarbeitung - Ausgabe
Tobias Wolf
http://informatik.swoke.de
Seite 6 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Von-Neumann-Rechner
Tobias Wolf
http://informatik.swoke.de
Seite 7 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Zentraleinheit
- Steuerwerk, Rechenwerk und Speicher fasst man auch unter
der Bezeichnung „Zentraleinheit“ zusammen.
- Steuerwerk und Rechenwerk sind meist in einem Chip, dem
Prozessor (CPU = Central Processing Unit) untergebracht.
- Der Prozessor ist mit den anderen Bestandteilen des Rechners
über einen Bus verbunden.
Tobias Wolf
http://informatik.swoke.de
Seite 8 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Steuerwerk
- Das Steuerwerk steuert und koordiniert alle Aktionen, die in der
Zentraleinheit ablaufen.
- Das Steuerwerk hat folgende Aufgaben:
o Befehle in der richtigen Reihenfolge aus dem Speicher laden
o Befehle decodieren
o Befehle interpretieren
o Versorgung der Funktionseinheiten mit Steuersignalen
Tobias Wolf
http://informatik.swoke.de
Seite 9 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Rechenwerk
- Im Rechenwerk werden die arithmetischen und logischen
Verknüpfungen ausgeführt (ALU: Arithmetic Logical Unit).
- Die Operanden werden hierbei vom Steuerwerk geliefert.
- Das Rechenwerk wird mit den für die richtige Durchführung der
Operation notwendigen Steuersignalen versorgt.
Tobias Wolf
http://informatik.swoke.de
Seite 10 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Speicher
- Im Speicher werden:
o Programme
o Daten
o Zwischenergebnisse
o Endergebnisse
abgelegt
- Jede Speicherzelle hat eine Adresse.
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Bus
- Ein Rechner ist modular aufgebaut.
- Größere Funktionseinheiten sind meist in Form von einzelnen
Chips realisiert.
- Neben den oben erwähnten Funktionseinheiten gibt es u.a.
Chips für die Bildschirmsteuerung, die externe Kommunikation,
die Kontrolle von Peripheriegeräten.
Tobias Wolf
http://informatik.swoke.de
Seite 12 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Bus
- Die notwendigen Verbindungen zwischen den einzelnen
Elementen werden von sogenannten Bussen übernommen.
- Als Beispiele sind der Datenbus und der Adressbus zu nennen.
- Der Datenbus transportiert Daten.
- Über den Adressbus wird festgelegt, welche Speicherzelle
gelesen oder beschrieben werden soll.
Tobias Wolf
http://informatik.swoke.de
Seite 13 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Eingabe- und Ausgabewerk
- Geräte, die an dem Ein- und Ausgabewerk angeschlossen sind,
werden als Peripherie bezeichnet.
- Beispiele für die Peripherie sind: Tastatur, Maus, Bildschirm,
Drucker, Scanner, DVD-Laufwerk.
- Keine Peripheriegeräte hingegen sind: Konventionelle
Festplatten, SSD, USB-Sticks. Sie zählen zu den
Datenspeichern.
Tobias Wolf
http://informatik.swoke.de
Seite 14 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Programmiersprachen
- Man unterscheidet 5 Generationen von Programmiersprachen:
o 1. Generation: Maschinensprache
o 2. Generation: Assemblersprache
o 3. Generation: Höhere Programmiersprache
o 4. Generation: Nichtprozedurale Sprache
o 5. Generation: Wissens- und Objektorientierte Sprache
Tobias Wolf
http://informatik.swoke.de
Seite 15 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Maschinensprache
- Die Maschinensprache entspricht dem Befehlsvorrat einer
speziellen CPU.
- In Maschinensprache geschriebene Programme sind nur auf
einem CPU-Typ lauffähig.
Tobias Wolf
http://informatik.swoke.de
Seite 16 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Maschinensprache Beispiel
0010
0001
0000
0010
0110
0000
1101
Tobias Wolf
http://informatik.swoke.de
0010
0110
0000
0000
0100
0000
0000
0011
0001
0000
0011
0000
0000
1000
1100
0101
0101
1100
1110
0011
0001
Seite 17 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Assemblersprache
- Der Vorrat an symbolischen Befehlen entspricht dem der
Maschinensprache.
- Einem Maschinenbefehl ist jeweils ein symbolischer Befehl
zugeordnet.
- In Assembler geschriebene Programme sind nur auf einem
CPU-Typ lauffähig.
Tobias Wolf
http://informatik.swoke.de
Seite 18 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Assemblersprache
- Mit Assembler-Programmen kann man, unter Ausnutzung aller
Möglichkeiten der CPU, sehr effiziente Programme erstellen.
- Assemblerprogramme werden mit speziellen Übersetzern in
Maschinensprache übersetzt.
MOVE.L #222222, D0
MOVE.L #333333, D1
ADD.L D1, D0
Tobias Wolf
http://informatik.swoke.de
Seite 19 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Höhere Programmiersprachen
- Für diese Sprachen gibt es eine Vielzahl von Bezeichnungen.
- Sie sind weitgehend maschinenunabhängig, genormt und oft
für einen speziellen Anwendungsbereich konzipiert.
- Zur Problemlösung werden Algorithmen formuliert, d.h. die
Abfolge, in der die Daten bearbeitet werden, wird definiert.
Tobias Wolf
http://informatik.swoke.de
Seite 20 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Höhere Programmiersprachen
- Hier trennte sich auch die Entwicklung zwischen Sprachen für
kaufmännische Anwendungen, welche meist große
Datenbestände verwalten müssen und wissenschaftlichtechnische Anwendungen, bei denen die effiziente
Programmierung komplexer mathematischer Algorithmen im
Vordergrund steht.
Tobias Wolf
http://informatik.swoke.de
Seite 21 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Höhere Programmiersprachen
- Als Urahn der kaufmännisch orientierten Programmiersprachen
ist COBOL (Common Business Oriented Language, ab 1959) zu
sehen; die älteste Programmiersprache für wissenschaftlichtechnische Anwendungen ist FORTRAN (FORmula TRANslator,
ab 1954).
- Weitere Beispiele sind PL/1, PASCAL, BASIC, ALGOL und C.
a = 222222;
b = 333333;
c = a + b;
Tobias Wolf
http://informatik.swoke.de
Seite 22 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Nichtprozedurale Sprachen
- Die Definition dieser Sprachen und der im nächsten
Unterkapitel beschriebenen Sprachen ist fließend.
- Eine wichtige Eigenschaft ist die Nichtprozeduralität.
- Dem Rechner muss nicht mehr länger mitgeteilt werden, wie er
das Problem zu lösen hat, sondern nur noch, was zu geschehen
hat.
Tobias Wolf
http://informatik.swoke.de
Seite 23 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Nichtprozedurale Sprachen
- Verwendung finden sie überwiegend im Bereich von
Dateiverwaltungs- und Datenbanksystemen.
- Deshalb werden diese Sprachen auch als datenorientierte
Sprachen bezeichnet.
- Am bekanntesten ist SQL für die relationale Datenmanipulation.
Tobias Wolf
http://informatik.swoke.de
Seite 24 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Nichtprozedurale Sprachen
- Die Sprachen der 4. Generation haben die Produktivität in der
Programmentwicklung erheblich erhöht.
- Allerdings nehmen sie sehr stark Hardwareressourcen in
Anspruch.
- Viele dieser Sprachen sind proprietär, d.h. sie gehören zu einer
bestimmten Rechnerplattform, und damit ist man vom
jeweiligen Hersteller abhängig.
Tobias Wolf
http://informatik.swoke.de
Seite 25 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Objektorientierte und
Wissensbasierte Sprachen
- Schwierig ist die Klassifikation dieser Sprachen.
- Sie werden teilweise auch als 5. Generation bezeichnet.
- Zu bedenken ist jedoch, dass es sich hierbei um die
verschiedensten Arten von Programmiersprachen handelt.
Tobias Wolf
http://informatik.swoke.de
Seite 26 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Objektorientierte und
Wissensbasierte Sprachen
- Objektorientierte Sprachen beruhen auf einem vollkommen
anderen Programmierprinzip.
- Die Daten, die ein Programm verarbeitet und die Methoden, mit
denen die Daten verarbeitet werden, werden zu sogenannten
Objekten zusammengefasst, die dann miteinander
kommunizieren.
- Eine wichtige Eigenschaft ist die Möglichkeit der Vererbung von
Eigenschaften eines Objektes auf ein anderes.
- Beispiele sind C++ und Java.
Tobias Wolf
http://informatik.swoke.de
Seite 27 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Objektorientierte und
Wissensbasierte Sprachen
- Wissensbasierte Sprachen, auch KI-Sprachen (KI = Künstliche
Intelligenz) sind Sprachen zur Entwicklung von
Expertensystemen.
- Beispiele sind LISP und PROLOG.
Tobias Wolf
http://informatik.swoke.de
Seite 28 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Übersetzer
- Ein grundlegendes Problem aller Programmiersprachen ist die
Übersetzung des sogenannten Quellprogramms in
Maschinensprache.
- Hierbei werden drei Konzepte unterschieden:
o Assembler
o Compiler
o Interpreter
Tobias Wolf
http://informatik.swoke.de
Seite 29 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Assembler
- Assembler setzen Befehle eins zu eins aus der
maschinenorientierten Sprache in die Maschinensprache um.
Tobias Wolf
http://informatik.swoke.de
Seite 30 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Compiler
- Compiler übersetzen ein in einer höheren Sprache
geschriebenes Programm in Maschinensprache.
- Dabei wird die Quelldatei auf syntaktische Fehler geprüft.
- Nach erfolgreicher Übersetzung und dem Link-Vorgang kann
das Programm gestartet werden.
- Bei jeder Änderung muss das gesamte Programm neu übersetzt
werden.
Tobias Wolf
http://informatik.swoke.de
Seite 31 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Interpreter
- Interpreter gehen Zeile für Zeile durch den Quelltext.
- Eine Zeile wird hierbei auf syntaktische Korrektheit geprüft und
dann sofort ausgeführt.
- Danach wird die nächste Zeile bearbeitet.
- Im Gegensatz zum Compiler erstellt der Interpreter kein
eigenes, lauffähiges Programm.
- Von daher muss z.B. bei der Weitergabe immer sichergestellt
sein, dass der Empfänger auch über den Interpreter verfügt.
Tobias Wolf
http://informatik.swoke.de
Seite 32 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Entwicklungsprozess für
C++Programme
- Der Editor unterstützt den Programmierer bei der Eingabe der
Quelldatei z.B. Beispiel.cpp.
- Mit dem Präprozessor wird die Quelldatei für den
Übersetzungsvorgang vorbereitet.
- Der Compiler übersetzt die Quelldatei in Maschinensprache.
Als Resultat des erfolgreichen Übersetzungsvorgangs erhält
man das Objektprogramm Beispiel.obj.
Tobias Wolf
http://informatik.swoke.de
Seite 33 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Entwicklungsprozess für
C++Programme
- Der Linker fügt dem Objektprogramm andere
Objektprogramme, z.B. aus Programm-Bibliotheken hinzu. Es
resultiert ein ausführliches Maschinenprogramm Beispiel.exe.
- Der Lader transferiert das ausführbare Maschinenprogramm in
den Hauptspeicher und startet es.
- Der Debugger wird zur Analyse des Quellprogramms und für
Tests eingesetzt.
Tobias Wolf
http://informatik.swoke.de
Seite 34 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
C++ Historie
- 1966 Martin Richards entwickelte BCPL, assemblernahe
Sprache
- 1967 Simula 67, Programmiersprache für mathematisch
technische Probleme und Simulation, erste objektorientierte
Konzepte
- 1970 Ken Thompson entwickelte B, eine assemblernahe
Sprache; Unix Betriebssystem für PDP 7
- 1972 Dennis Ritchie (Bell Labs) entwirft C; rechnerunabhängige
Sprache zur Portierung von Unix auf PDP 11
Tobias Wolf
http://informatik.swoke.de
Seite 35 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
C++ Historie
- 1978 Kernighan und Ritchie geben das erste Referenzbuch
zu C heraus
- 1979 Start der Arbeiten an C mit Klassen
- 1983 erster Entwurf von C++ durch Bjarne Stroustrup; BellLabs in den USA
- 1985 Bjarne Stroustrup veröffentlicht das Buch: The C++
Programming Language
Tobias Wolf
http://informatik.swoke.de
Seite 36 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
C++ Historie
- 1987 Veröffentlichung des ersten reinen C++ Compilers für
PCs und Workstations
- 1988 American National Standards Institute (kurz: ANSI)
veröffentlicht den ersten C Standard
- 1990 erste C++ Version von Borland (heute: Inprise)
- 1992 erste C++ Version von Microsoft
- 1998 Veröffentlichung des ANSI C++ Standards ISO/IEC
14882
Tobias Wolf
http://informatik.swoke.de
Seite 37 von 37
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 2
Einführung in C++
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 29
Wintersemester
Maschinenbau und Kunststofftechnik
Informatik
C++ Zeichensatz
- Buchstaben: a bis z und A bis Z.
- Ziffern: 0 bis 9
- Sonderzeichen:
;
!
:
<
Tobias Wolf
http://informatik.swoke.de
,
>
.
|
‘
&
„
^
#
~
+
(
)
*
{
/
}
%
[
_
]
\
?
Seite 2 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Höhere Elemente
- Mit den im Zeichensatz enthaltenen Zeichen werden folgende
Elemente gebildet:
o Schlüsselwörter
o Namen
o Konstanten
o Operatoren
o Interpunktionszeichen
Tobias Wolf
http://informatik.swoke.de
Seite 3 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Schlüsselwörter
- Schlüsselwörter haben eine durch die Programmiersprache
festgelegte Bedeutung.
asm
continue
float
new
signed
try
auto
break
case
catch
char
class
default delete
do
double
else
enum
for
friend
goto
if
inline
int
operator private protected public register return
sizeof
static
struct
switch template
this
typedef union unsigned virtual
void
volatile
Tobias Wolf
http://informatik.swoke.de
const
extern
long
short
throw
while
Seite 4 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Namen
- In einem Programm werden Variablen, Funktionen usw. Namen
(Bezeichner) zugeordnet.
- Ein Name beginnt mit einem Buchstaben oder einem
Unterstrich.
- Er besteht aus einer Folge von Buchstaben, Ziffern und dem
Unterstrich.
- Ein Name hat eine vom Compiler abhängige Länge von z.B. 255
Zeichen.
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Namen
-
Groß- und Kleinschreibung wird unterschieden.
Namen von Variablen sollten mit Kleinbuchstaben beginnen.
Konstanten sollten groß geschrieben werden (z.B.: PI).
Ein C++ Schlüsselwort darf nicht als Name verwendet werden.
volumen
PI
_anzahl_werte
feldNummer16
FeldNummer16
Tobias Wolf
http://informatik.swoke.de
Seite 6 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Konstanten
- Konstanten sind nicht veränderbare Daten innerhalb eines
Programms.
- Jeder Konstanten ist eindeutig ein Datentyp zugeordnet.
- Die spezifische Schreibweise der Konstanten hängt von ihrem
Datentyp ab.
3
3.14159
Tobias Wolf
http://informatik.swoke.de
Seite 7 von 29
Wintersemester
Maschinenbau und Kunststofftechnik
Informatik
Operatoren
- Operatoren dienen der Verknüpfung von Operanden.
- Es sind für jeden Datentyp Operatoren vordefiniert.
- Bsp:
Addition
Division
Oder
Tobias Wolf
http://informatik.swoke.de
+
/
||
Seite 8 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Interpunktionszeichen
- Ein Beispiel für ein Interpunktionszeichen ist das Semikolon am
Ende jeder Anweisung.
a = 1;
cin >> radius;
Tobias Wolf
http://informatik.swoke.de
Seite 9 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Trennung von Anweisungen
- Es können eine oder mehrere Anweisungen in einer Zeile
stehen.
- Am Ende jeder Anweisung muss ein Semikolon stehen.
a = 1;
b = 2; c = 3;
Tobias Wolf
http://informatik.swoke.de
Seite 10 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kommentare
- C++ Kommentare beginnen mit // und reichen bis zum Ende
der Zeile.
// Dies ist eine Kommentarzeile
a = 1;
// Dies ist ein Kommentar
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kommentare
- Kommentare im C-Stil sind auch erlaubt, und dienen meist zur
vorübergehenden Ausblendung von Programmcode.
- Dadurch ist das Ausblenden eines ganzen Abschnittes möglich.
/* Dies ist ein Kommentar */
/*
volumen = 4.0 / 3.0 * PI * pow(radius, 3);
cout << "Volumen = " << volumen << endl;
*/
Tobias Wolf
http://informatik.swoke.de
Seite 12 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Fortsetzungszeilen
- In C++ ist es möglich, eine Zeile in der darauf folgenden Zeile
fortzusetzen.
volumen =
4.0 / 3.0 * PI * pow(radius, 3);
Tobias Wolf
http://informatik.swoke.de
Seite 13 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Leerzeichen
- Innerhalb von Schlüsselwörtern, Namen, Konstanten (außer
Zeichenkonstanten) und Operatoren (z.B. >>) dürfen keine
Leerzeichen verwendet werden.
Tobias Wolf
http://informatik.swoke.de
Seite 14 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Das „Hallo Welt“-Programm
Zeile
1
2
3
4
5
6
Befehl
#include <iostream>
using namespace std;
void main()
{
cout << "Hallo Welt ";
}
Tobias Wolf
http://informatik.swoke.de
// Dies ist ein Kommentar
Seite 15 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Das „Hallo Welt“-Programm
- Dieses Programm gibt den Text „Hallo Welt“ auf dem
Bildschirm aus.
- Ein C++ Programm besteht mindestens aus der globalen
Funktion main. Sie ist das Hauptprogramm und darf auch nur
main heißen!
- In Zeile 1 steht die Präprozessor-Anweisung.
- Zeile 2 gibt den Namensraum an, in dem die genutzten
Befehle zu finden sind. (Der Befehl „cout“ ist zu finden im
Namensraum „std“)
- Ab Zeile 3 wird die Funktion main definiert.
Tobias Wolf
http://informatik.swoke.de
Seite 16 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Das „Hallo Welt“-Programm
- Zeile 4 und 6 begrenzen einen Block. Dieser ist der
Funktionsrumpf von main.
- Hinter „cout << "Hallo Welt";“ steht ein Kommentar
- Kommentare werden mit // eingeleitet. Alles, was hinter den //
folgt, wird nicht abgearbeitet.
- Jeder Befehl innerhalb der geschweiften Klammern { } wird
durch ein Semikolon abgeschlossen.
(Bsp.: cout << "Hallo Welt";)
Tobias Wolf
http://informatik.swoke.de
Seite 17 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Das zweite C++-Programm
Zeile
1
2
3
4
5
6
7
8
9
10
11
12
Befehl
#include <iostream>
// cin/cout sind hier enthalten
#include <cmath>
// pow ist hier enthalten
using namespace std;
void main()
{
double volumen, radius;
const double PI = 3.14159;
cout << "Radius der Kugel eingeben: ";
cin >> radius;
volumen = 4.0 / 3.0 * PI * pow (radius, 3);
cout << "Volumen = " << volumen << endl;
}
Tobias Wolf
http://informatik.swoke.de
Seite 18 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Das zweite C++-Programm
- Dieses Programm berechnet das Volumen einer Kugel bei
gegebenem Radius.
- In Zeile 1 und 2 stehen die Präprozessor-Anweisungen.
- In Zeile 3 steht die using-Anweisung
- Ab Zeile 4 wird die Funktion main definiert.
- In Zeile 5 und 12 umschließen den Funktionsrumpf der
Funktion main.
Tobias Wolf
http://informatik.swoke.de
Seite 19 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Das zweite C++-Programm
- In Zeile 6 werden die Variablen volumen und radius definiert.
- In Zeile 7 wird die Konstante PI definiert.
- In Zeile 8 und 11 werden Zeichenfolgen und der Wert von
volumen ausgegeben.
- In Zeile 9 steht die Eingabe für die Variable radius.
- In Zeile 10 findet man die Berechnung für volumen.
- Die vorhandenen // in Zeile 1 und 2 dienen wieder der
Einleitung eines Kommentars.
Tobias Wolf
http://informatik.swoke.de
Seite 20 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Blöcke
- Mit Blöcken fasst man mehrere Befehle und Deklarationen zu
einer Einheit zusammen.
- Innerhalb eines Blocks können lokale Variablen definiert
werden.
- Der Rumpf einer Funktion (zum Beispiel bei main) muss ein
Block sein.
- Blöcke dürfen beliebig ineinander geschachtelt sein.
Tobias Wolf
http://informatik.swoke.de
Seite 21 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Blöcke - Beispiel
#include <iostream>
using namespace std;
void main()
{
int a, b;
a = 1; b = 2;
cout << a << b << endl;
{
int b = 5, c = 3;
cout << a << b << c << endl;
{
int d = 4;
cout << a << b << c << d << endl;
}
}
}
Tobias Wolf
http://informatik.swoke.de
Seite 22 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Header-Dateien
- Oberhalb der Funktion main werden Header-Dateien
eingebunden.
#include <iostream>
- Diese, mit Doppelgatter # beginnenden Zeilen, sind
sogenannte Präprozessoranweisungen.
- Der Präprozessor erzeugt entsprechend der Anweisung den
Quelltext, der dann vom Compiler übersetzt wird.
- Am Ende einer Präprozessor-Anweisung steht kein Semikolon.
Tobias Wolf
http://informatik.swoke.de
Seite 23 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Header-Dateien
- Header-Dateien sind Textdateien, die u.a. weitere Befehle
enthalten (zB cout, cin).
- Header-Dateien werden mit der include-Anweisung
eingebunden, um diese Befehle im Programm nutzen zu
können.
Tobias Wolf
http://informatik.swoke.de
Seite 24 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Header-Dateien
- Spitze Klammern werden bei Standard-Header-Dateien
verwendet.
- Zur Einbindung von selbst verfassten Header-Dateien
verwendet man Anführungszeichen.
#include <math.h>
#include "Test.h"
Tobias Wolf
http://informatik.swoke.de
Seite 25 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Header-Dateien
- Alle in einer Header-Datei deklarierten Namen sind global
verfügbar.
- Das kann bei großen Programmen zu Namenskonflikten führen.
Tobias Wolf
http://informatik.swoke.de
Seite 26 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Header-Dateien
- Daher gibt es in C++ z.B. zur Header-Datei math.h noch eine
Header-Datei cmath, die dieselben Namen in einem
Namensbereich std deklariert.
#include <math.h>
entspricht
#include <cmath>
using namespace std;
Tobias Wolf
http://informatik.swoke.de
Seite 27 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Formatierungsregeln für Quelldateien
- In den obigen Beispielen wurden einige Regeln zur
Formatierung eines C++ Quellprogramms befolgt:
- Jeder neue Block wird um eine bestimmte Anzahl an
Leerzeichen oder „Tabs“ eingerückt.
- Blockbegrenzungen stehen immer in einer gesonderten
Zeile.
- Jede Funktion beginnt mit der ersten Spalte (steht also ganz
links).
Tobias Wolf
http://informatik.swoke.de
Seite 28 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Formatierungsregeln für Quelldateien
- Bei längeren Anweisungen sollte der Übersicht halber nicht
mehr, als eine Anweisung pro Zeile geschrieben werden.
- Keine Zeile sollte mehr, als 80 Zeichen lang sein, um die
Lesbarkeit zu erhöhen.
Tobias Wolf
http://informatik.swoke.de
Seite 29 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 3
Datentypen und Variablen
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 18
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Datentypen - Einführung
- Für jede Variable muss ein Datentyp festgelegt werden.
- Hierdurch werden die Wertemenge und die verwendbaren
Operatoren festgelegt.
- Für jeden Datentyp gibt es eine Festlegung, in welcher Weise
Konstanten eindeutig dargestellt werden können.
- In C++ gibt es eine Reihe vordefinierter Datentypen.
- Aus den vordefinierten Datentypen können weitere Datentypen
zusammengesetzt werden.
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 18
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Datentypen - Einführung
- In dieser Tabelle sind die arithmetischen Datentypen
aufgelistet:
Datentyp
char
int
float
double
Tobias Wolf
http://informatik.swoke.de
Länge
1
4
4
8
Byte
Byte
Byte
Byte
Wertebereich
von
bis
-27
27-1
-231
231-1
± 1.2 10-38
± 3.4 10+38
± 2.2 10-308
± 1.8 10+308
Seite 3 von 18
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Ganzzahlige Konstanten
- Ganze Zahlen (ganzzahlige Konstanten) werden unter den
Datentyp int gespeichert.
- Der Computer speichert die Zahlen aber nicht in der Form, wie
wir sie benutzen. (Also z.B. die Zahl 6 wird nicht als "6"
gespeichert.)
- Die Speicherung erfolgt als Binärzahl. (z.B. 0110 für die Zahl 6)
- Um auch negative Zahlen speichern zu können, wird die Zahl
bei den meisten Rechenwerken in der
Zweierkomplementdarstellung gespeichert.
Tobias Wolf
http://informatik.swoke.de
Seite 4 von 18
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Ganzzahlige Konstanten
Beispiel: 4 wird im Computer so gespeichert:
1. Vorzeichen ignorieren und ins Binärsystem umrechnen
4 => 0000 0100
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 18
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Ganzzahlige Konstanten
Beispiel: -4 wird im Computer so gespeichert:
1. Vorzeichen ignorieren und ins Binärsystem umrechnen
4 => 0000 0100
2. Invertieren, da negativ
1111 1011
3. Eine 1 addieren, da negativ
1111 1011 + 0000 0001 => 11111100
Tobias Wolf
http://informatik.swoke.de
Seite 6 von 18
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Ganzzahlige Konstanten
- Durch die Speicherung der Zahlen in
Zweierkomplementdarstellung können wir auf dem
vorgesehenen Platz zwar nur halb so viele Zahlen speichern.
- Jedoch ermöglicht uns dies, dass die Verarbeitung von
positiven und negativen Zahlen im Rechenwerk gleich bleiben
kann. Ansonsten müsste der Computer bei Berechnungen
positive und negative Zahlen intern unterschiedlich behandeln.
Tobias Wolf
http://informatik.swoke.de
Seite 7 von 18
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Ganzzahlige Konstanten - Eingabe
- Ganzzahlige Konstanten können dezimal, oktal oder
hexadezimal in einem C-Programm angegeben werden.
- Die Unterscheidung wird anhand der ersten Ziffer
vorgenommen.
Darstellung
dezimal
oktal
hexadezimal
Tobias Wolf
http://informatik.swoke.de
1. Ziffer
1 bis 9
0
0x
Beispiel
4
+4 -67 101
012
+0167
-013
0xC2
-0x3D
Seite 8 von 18
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Beispiel
#include <iostream>
using namespace std;
void main ()
{
cout << 10;
cout << 012;
cout << 0xa;
}
10
10
10
Tobias Wolf
http://informatik.swoke.de
Seite 9 von 18
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Ganzzahlige Konstanten - Ausgabe
- Ganzzahlige Konstanten können dezimal, oktal oder
hexadezimal ausgegeben werden.
- Die Darstellung wird bestimmt durch den Befehl
setbase().
Tobias Wolf
http://informatik.swoke.de
Seite 10 von 18
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Beispiel
#include <iostream> #include <iomanip> using namespace std;
void main () {
int var = 10;
cout << "Die Zahl " << var << " ist" << endl
cout << "hexadezimal: " << setbase(16) << var << endl;
cout << "oktal: " << setbase(8) << var << endl;
cout << "dezimal: " << setbase(10) << var << endl;
}
Die Zahl 10 ist
hexadezimal: a
oktal: 12
dezimal: 10
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 18
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Zahlensysteme
- Umwandlung einer Dualzahl in eine Dezimalzahl:
(010111)2 = 0·25+1·24+0·23+1·22+1·21+1·20 = (23)10
- Umwandlung einer Oktalzahl in eine Dezimalzahl:
(167)8 = (1·82+6·81+7·80) = (119)10
- Umwandlung einer Hexadezimalzahl in eine Dezimalzahl:
(C2)16 = (12·161+2·160) = (194)10
Tobias Wolf
http://informatik.swoke.de
Seite 12 von 18
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Gleitkomma Konstanten
- Der Standarddatentyp für Gleitkomma Konstanten ist double.
- Die Abspeicherung erfolgt im IEEE-Format (Institute of
Electrical and Electronics Engineers) durch Verwendung: eines
Vorzeichenbits, 11 Exponentenbits und 52 Mantissenbits.
- Die Genauigkeit der Darstellung ist auf ca. 15 Stellen begrenzt.
Tobias Wolf
http://informatik.swoke.de
Seite 13 von 18
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Gleitkomma Konstanten
- Beispiele für die Ein- und Ausgabe von Gleitkomma Konstanten
(Gleitkommazahlen)
1.2345
-0.012
41.0
1.1E+02
-25.0E+15
Tobias Wolf
http://informatik.swoke.de
Seite 14 von 18
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Definition einer Variablen
- Bei der Definition einer Variablen wird der Variablen eine
Speicherstelle zugewiesen. Diese kann beschrieben und
ausgelesen werden.
int anzahl;
double kraft;
double volumen, radius;
Tobias Wolf
http://informatik.swoke.de
Seite 15 von 18
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Gültigkeitsbereich von Variablen
- Variablen können innerhalb und außerhalb von Blöcken
deklariert werden.
- Wird eine Variable innerhalb eines Blocks deklariert, so hat sie
nur hier Gültigkeit. Man nennt sie deshalb eine lokale Variable.
- Wird eine Variable außerhalb eines Blocks, d.h. außerhalb von
Funktionsrümpfen deklariert, so hat sie von ihrer Position an
Gültigkeit. Sie wird globale Variable genannt.
Tobias Wolf
http://informatik.swoke.de
Seite 16 von 18
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Initialisierung von Variablen
- Man kann Variablen auch definierte Anfangswerte zuordnen.
- Eine Variable sollte vor ihrer ersten Verwendung initialisiert
werden.
int anzahl = 1000;
double PI = 3.14159;
int a = 2, b = 3;
Tobias Wolf
http://informatik.swoke.de
Seite 17 von 18
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Benannte Konstanten
- Konstanten kann ein Name zugeordnet werden.
- Wird bei der Initialisierung einer Variablen vor den Datentyp
das Schlüsselwort const geschrieben, so handelt es sich um
eine benannte Konstante.
const double PI = 3.14159;
Tobias Wolf
http://informatik.swoke.de
Seite 18 von 18
Informatik 1
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 4
Ein- & Ausgabe
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 16
Informatik 1
Wintersemester
Maschinenbau und Kunststofftechnik
Ein- und Ausgabe
- Für die Ausgabe auf die Standardausgabe (üblicherweise der
Monitor) kann das Ausgabe-Objekt cout verwendet werden.
- Für die Eingabe vom Standardeingabegerät (Tastatur) wird das
Eingabe-Objekt cin verwendet.
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 16
Informatik 1
Wintersemester
Maschinenbau und Kunststofftechnik
Ausgabe - cout
- Beispiele:
cout
cout
cout
cout
cout
Tobias Wolf
http://informatik.swoke.de
<<
<<
<<
<<
<<
"Texteingabe";
x;
a << b;
c << d << endl;
"y = " << y << endl;
Seite 3 von 16
Informatik 1
Wintersemester
Maschinenbau und Kunststofftechnik
Ausgabe - cout
- Am Ende einer cout-Anweisung wird kein automatischer
Zeilenvorschub eingefügt. Dies erreicht man durch Einfügen
des Manipulators endl in den Ausgabestream.
- Bei der Ausgabe einer arithmetischen Größe werden so viele
Stellen wie benötigt ausgegeben.
- Bei der Ausgabe von Gleitkommazahlen werden diese in
Abhängigkeit von ihrem Wert mit oder ohne Exponenten
ausgegeben.
Tobias Wolf
http://informatik.swoke.de
Seite 4 von 16
Informatik 1
Wintersemester
Maschinenbau und Kunststofftechnik
Ausgabe-Manipulatoren
- Die Breite des Ausgabefeldes kann mit dem Manipulator
setw(n) beeinflusst werden.
- n gibt die Anzahl der Stellen des Ausgabefeldes an.
- Dieser Manipulator wirkt nur auf die direkt folgende Ausgabe
und gilt für alle Datentypen.
cout << "12345678901234567890";
cout << setw(15) << 1.602E-19
12345678901234567890
1.602e-019
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 16
Informatik 1
Wintersemester
Maschinenbau und Kunststofftechnik
Ausgabe-Manipulatoren
- Die Anzahl der signifikanten Stellen bei der Ausgabe kann über
den Manipulator setprecision(n) beeinflusst werden.
- Der Standardwert für n ist 6.
- Die Einstellung bleibt für alle weiteren Ausgaben bestehen!
cout << setprecision(10) << 10.0/3.0 << endl;
12345678901234567890
3.333333333
Tobias Wolf
http://informatik.swoke.de
Seite 6 von 16
Informatik 1
Wintersemester
Maschinenbau und Kunststofftechnik
Ausgabe-Manipulatoren
- Zur Verwendung der Manipulatoren muss die Datei iomanip
eingebunden werden:
#include <iomanip>
Tobias Wolf
http://informatik.swoke.de
Seite 7 von 16
Informatik 1
Wintersemester
Maschinenbau und Kunststofftechnik
Ausgabe-Manipulatoren (kompakt)
Methode
setw(n)
Tobias Wolf
http://informatik.swoke.de
Beschreibung
Gibt eine Mindestausgabebreite von n
Zeichen vor. Die Ausgabe wird rechtsbündig
angeschlagen und links mit Leerzeichen
aufgefüllt. Die Ausgabebreite wird bei Bedarf
kommentarlos überschritten. Gilt nur immer
für die nächste Ausgabe!
Seite 8 von 16
Informatik 1
Wintersemester
Maschinenbau und Kunststofftechnik
Ausgabe-Manipulatoren (kompakt)
Methode
setprecision(n)
Tobias Wolf
http://informatik.swoke.de
Beschreibung
Gibt an, wie viele Stellen einer Zahl
ausgegeben werden sollen. (Standardwert
für n ist 6.)
Gilt für Vor- und Nachkommastellen.
Gibt man im Ausgabestrom das Schlüsselwort
"fixed" an, so gilt n nur für die
Nachkommastellen.
setprecision gilt für alle nachfolgenden
Ausgaben.
Seite 9 von 16
Informatik 1
Wintersemester
Maschinenbau und Kunststofftechnik
Eingabe - cin
- Die Werte der Variablen werden in der Reihenfolge eingegeben,
in der sie in der cin-Liste aufgeführt sind.
- Die Werte werden durch Leerzeichen oder durch Return
getrennt. Die Eingabe wird mit Return abgeschlossen.
double x,y,z;
cin >> x >> y >> z;
Eingabe:
Tobias Wolf
http://informatik.swoke.de
1.0
2.3
5
Seite 10 von 16
Informatik 1
Wintersemester
Maschinenbau und Kunststofftechnik
Eingabe - cin
- Eingabefehler kann man erkennen, indem man sie durch fail
abfängt:
if (cin.fail())
cout << "Eingabefehler!" << endl;
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 16
Informatik 1
Wintersemester
Maschinenbau und Kunststofftechnik
Escape-Sequenzen
- Graphisch nicht darstellbare Zeichen können mit EscapeSequenzen dargestellt werden.
- Um sie darzustellen, werden sie als zwei Zeichen geschrieben.
- Eingeleitet werden sie mit \ .
- Sie benötigen aber trotzdem nur ein Byte.
Tobias Wolf
http://informatik.swoke.de
Seite 12 von 16
Wintersemester
Maschinenbau und Kunststofftechnik
Informatik 1
Escape-Sequenzen
Zeichen
\a
\b
\f
\n
\r
\t
\0
\\
\“
\’
\xhh
Tobias Wolf
http://informatik.swoke.de
Bedeutung
Klingelzeichen
Backspace
Seitenvorschub
Neue Zeile
Wagenrücklauf
Tabulator
String-Ende
Backslash
Anführungszeichen
Hochkomma
Numerischer Wert eines Zeichens hexadezimal
Seite 13 von 16
Informatik 1
Wintersemester
Maschinenbau und Kunststofftechnik
Beispiel
#include <iostream>
using namespace std;
void main ()
{
cout << "\tDies ist \n\tein Beispiel \n\tmit ";
cout << "Escape-Sequenzen." << "\n";
}
Dies ist
ein Beispiel
mit Escape-Sequenzen.
Tobias Wolf
http://informatik.swoke.de
Seite 14 von 16
Informatik 1
Wintersemester
Maschinenbau und Kunststofftechnik
Beispiel
#include <iostream>
#include <cmath>
using namespace std;
void main ()
{
double a = 8.8, b = 7.24, c = 5.8;
double y;
y = a + sqrt(b - c);
cout << "y = " << y << endl;
}
y = 10
Tobias Wolf
http://informatik.swoke.de
Seite 15 von 16
Informatik 1
Wintersemester
Maschinenbau und Kunststofftechnik
Beispiel
#include <iostream>
#include <cmath>
Zahl
#include <iomanip>
1.357
using namespace std;
1.821
void main ()
2.092
{
double x = 1.357, y = 1.821, z = 2.092;
cout << setprecision(4);
cout << "Zahl" << "\t" << "Wurzel" << endl;
cout << x << "\t" << sqrt(x) << endl;
cout << y << "\t" << sqrt(y) << endl;
cout << z << "\t" << sqrt(z) << endl;
}
Tobias Wolf
http://informatik.swoke.de
Wurzel
1.165
1.349
1.446
Seite 16 von 16
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 5
Arithmetische Operatoren
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 16
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Arithmetische Operatoren
- Man unterscheidet unäre und binäre Operatoren.
- Je nachdem, ob sie auf einen Operanden wirken, oder eine
Verknüpfung zweier Operanden bewirken.
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 16
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Arithmetische Operatoren
- Wie die Berechnung durchgeführt wird, entscheiden die
Operatoren.
- Sind bei der Division beide Operanden ganze Zahlen, ist es eine
„Ganzzahl-Divison“.
- Ist bei der Division hingegen mindestens ein Operand eine
Gleitpunktzahl, so ist es eine „Gleitpunkt-Divison“.
Tobias Wolf
http://informatik.swoke.de
Seite 3 von 16
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Arithmetische Operatoren
Operatoren
++
-+
*
/
%
+
-
Tobias Wolf
http://informatik.swoke.de
Bedeutung
Inkrement
Dekrement
Vorzeichen Plus
Vorzeichen Minus
Multiplikation
Division
Modulo
Addition
Subtraktion
Bemerkung
unär
unär
unär
unär
binär
binär
binär, ganzzahlig
binär
binär
Seite 4 von 16
Wintersemester
Maschinenbau und Kunststofftechnik
Informatik
Merkwürdige Ganzzahl-Arithmetik
- Es gibt einen Unterschied zwischen dem, was unser
Taschenrechner und dem, was der Computer berechnet.
Operation
7/2
1.5 + 7/2
1/2 + 1/2
1.0/2.0 + 1.0/2.0
1/2 + 1.0/2.0
Tobias Wolf
http://informatik.swoke.de
Taschenrechner
3.5
5
Computer
3
4.5
Seite 5 von 16
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Operatorenliste
Operatoren
() [] -> .
! ~ ++ -- + - * & (Typ)
* / %
+ << >>
< <= > >=
== !=
&
^
|
&&
||
?:
= += -= *= /= %= etc.
,
Tobias Wolf
http://informatik.swoke.de
Auswertrichtung
li -> re
re -> li
li -> re
li -> re
li -> re
li -> re
li -> re
li -> re
li -> re
li -> re
li -> re
li -> re
li -> re
re -> li
li -> re
Priorität
Bemerkung
hoch
Klammer, Indexop, Komponentenop
unäre Operatoren
arithmetische Operatoren
arithmetische Operatoren
Shift-Operatoren
Vergleichsoperatoren
Vergleichsoperatoren
Bitoperatoren
Bitoperatoren
Bitoperatoren
logische Operatoren
logische Operatoren
Auswahloperator
Zuweisungsoperator
niedrig Ausdrucksfolge
Seite 6 von 16
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Arithmetische Ausdrücke
- Ein Ausdruck kann im einfachsten Fall eine Konstante oder eine
Variable sein.
- Meist handelt es sich aber um eine Berechnung unter
Verwendung von Operatoren.
7.2
anzahl
a+b+c
Tobias Wolf
http://informatik.swoke.de
Seite 7 von 16
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Arithmetische Ausdrücke
- Vor dem Ausführen einer binären Operation werden die
Datentypen der Operanden angeglichen.
- Die Anpassung erfolgt in der Weise, dass der „kleinere“
Datentyp auf den „größeren“ Datentyp erweitert wird.
- Das Ergebnis hat dann den „größeren“ Datentyp.
char -> unsigned char -> short -> int -> unsigned int ->
long -> unsigned long -> float -> double -> long double
Tobias Wolf
http://informatik.swoke.de
Seite 8 von 16
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Arithmetische Ausdrücke - Beispiele
Ausdruck
7 + 1.2
2.0 * 8
1/2
9/2
1.0 / 3 * 6
2.5 + 3.0 * 2.0 – 0.5
2*3%4+1
Tobias Wolf
http://informatik.swoke.de
Ergebnis
8.2
16.0
0
4
2.0
8.0
3
Seite 9 von 16
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Arithmetische Wertzuweisung
- Einer arithmetischen Variablen kann der Wert eines
arithmetischen Ausdrucks zugewiesen werden.
- Der Zuweisungsoperator ist das = Zeichen.
- Hat die Variable auf der linken Seite des Zuweisungsoperators
einen anderen Datentyp als der Ausdruck auf der rechten Seite,
so wird die rechte Seite an den Datentyp der linken Seite
angeglichen.
int i = 1.25
float x = 7.1E+122
Tobias Wolf
http://informatik.swoke.de
// i = 1
// Compiler-Warnung
Seite 10 von 16
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Arithmetische Wertzuweisung
- Eine Wertzuweisung ist selbst wieder ein Ausdruck und liefert
den zugewiesenen Wert.
z = 12
- ist ein Ausdruck und liefert den Wert 12.
x = (y = (z = 12));
x = y = z = 12;
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 16
Wintersemester
Maschinenbau und Kunststofftechnik
Informatik
Arithmetische Wertzuweisung
Schreibweise
x += 1
x -= 1
x *= 2
x /= 2
x %= 2
x++
++x
x---x
Tobias Wolf
http://informatik.swoke.de
Bedeutung
x=x+1
x = x -1
x=x*2
x=x/2
x=x%2
Erhöht x nach der Verwendung um 1
Erhöht x vor der Verwendung um 1
Verringert x nach der Verwendung um 1
Verringert x vor der Verwendung um 1
Seite 12 von 16
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Mathematische Funktionen
- In der Standard-Header-Datei cmath sind mathematische
Funktionen aufgeführt.
y = sqrt(x);
z = sin(w);
a = pow(2,10);
(Wobei Visual C++ bei Einbindung von <iostream> viele, viele
weitere Bibliotheken automatisch auch hinzufügt.)
Tobias Wolf
http://informatik.swoke.de
Seite 13 von 16
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Mathematische Funktionen
Funktionsprototyp
double sin(double x);
double cos(double x);
double tan(double x);
double atan(double x);
double exp(double x);
double log(double x);
double pow(double x,
double y);
double sqrt(double x);
double fabs(double x);
Tobias Wolf
http://informatik.swoke.de
Bedeutung
Sinus; x im Bogenmaß
Cosinus; x im Bogenmaß
Tangens; x im Bogenmaß
Arkus Tangens liefert Winkel im Bogenmaß
ex
ln(x)
(für x > 0)
xy
(für (x != 0 oder y > 0) und (x >= 0
oder y ganzzahlig))
Quadratwurzel von x
(für x >= 0)
|x| Absolutbetrag
Seite 14 von 16
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kommaoperator
- Mit dem Kommaoperator können dort mehrere Ausdrücke
angegeben werden, wo sonst nur ein Ausdruck stehen darf.
- Die Ausdrücke werden von links nach rechts ausgewertet.
- Der Wert des Kommaoperator-Ausdrucks hat den Wert und den
Typ des am weitesten rechts stehenden Einzelausdrucks.
Tobias Wolf
http://informatik.swoke.de
Seite 15 von 16
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kommaoperator
#include <iostream>
using namespace std;
void main()
{
int a, b, c;
a = (b = 2, c = 3, b * c);
cout << a << endl;
}
6
Tobias Wolf
http://informatik.swoke.de
Seite 16 von 16
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 6
Vergleichsoperatoren
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 6
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Vergleichsoperatoren
- Vergleichsoperatoren liefern als Ergebnis die booleschen Werte
true oder false.
- In C++ sind true und false die beiden möglichen Werte einer
Variablen vom Datentyp bool.
- Der Datentyp bool kann zu den arithmetischen Datentypen
gezählt werden.
x > 10
nenner != 0
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 6
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Vergleichsoperatoren
- Vor einem Vergleich werden beide Operanden auf den gleichen
Datentyp gebracht.
- true wird intern durch den Wert 1 und false durch den Wert 0
abgebildet.
- Bei Vergleichsoperationen wird außerdem jeder numerische
Wert ungleich 0 als true interpretiert und der Wert 0 als false.
if (2) cout << "true" << endl;
Ausgabe:
true
Tobias Wolf
http://informatik.swoke.de
Seite 3 von 6
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Vergleichsoperatoren
Operator
==
!=
<
<=
>
>=
Tobias Wolf
http://informatik.swoke.de
Bedeutung
gleich (2 Gleichheitszeichen!)
ungleich
kleiner
kleiner oder gleich
größer
größer oder gleich
Seite 4 von 6
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Vergleichsoperatoren
- Vor einem Vergleich werden beide Operanden auf den gleichen
Datentyp gebracht.
bool b;
int a = 10;
b = a < 1.5;
cout << b << endl;
Ausgabe:
0
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 6
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Logische Operatoren
Logische Operatoren
&&
||
!
Tobias Wolf
http://informatik.swoke.de
Bedeutung
Logisches UND (Konjunktion): liefert
true, wenn beide Operanden true sind
Logisches ODER (Disjunktion): liefert
true, wenn mindestens einer der
beiden Operanden true ist
Logisches NICHT (Negation): liefert
true, wenn der Operand false ist und
liefert false, wenn der Operand true ist
Seite 6 von 6
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 7
Verzweigungen/Bedingungen
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Verzweigungen
- Verzweigungen werden eingesetzt, wenn eine Befehlsfolge nur
unter bestimmten Bedingungen ausgeführt werden soll.
- In C/C++ wird dies durch das Konstrukt if/else erreicht.
- Sinngemäß bedeutet das if/else Konstrukt: Wenn die
Bedingung zutrifft, mache das (Befehlszeilen im if-Block).
Ansonsten mache etwas anderes (Befehlszeilen im else-Block).
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
if/else -Anweisung
- Mit der if/else -Anweisung kann eine von zwei Anweisungen
abhängig von einer Bedingung ausgewählt werden.
if (x > 10)
{
cout << "x ist größer als zehn" << endl;
}
else
{
cout << "x ist kleiner oder gleich zehn" << endl;
}
Tobias Wolf
http://informatik.swoke.de
Seite 3 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
if/else -Anweisung
- Nach dem Schlüsselwort if folgt ein logischer Ausdruck in
Klammern.
- Liefert der logische Ausdruck den Wert true (ungleich 0), dann
wird die if -Anweisung ausgeführt. Im anderen Fall wird die
else -Anweisung ausgeführt.
Tobias Wolf
http://informatik.swoke.de
Seite 4 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
if/else -Anweisung
- Wenn eine Anweisungsfolge nur aus einer Anweisung besteht,
können die Blockklammern weggelassen werden.
if (x > 10)
cout << "x ist größer als zehn" << endl;
else
cout << "x ist kleiner oder gleich zehn" << endl;
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
if/else -Anweisung
Tobias Wolf
http://informatik.swoke.de
Seite 6 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
if -Anweisung
- Der else -Zweig kann auch entfallen.
if (nenner == 0)
cout << "Division durch Null!" << endl;
Alternative Schreibweise:
if (nenner == 0) cout << "Division durch Null!" << endl;
Tobias Wolf
http://informatik.swoke.de
Seite 7 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
else/if -Anweisung
- Mit der else/if -Anweisung können eine oder mehrere weitere
Bedingungen eingebunden werden.
if (x >= -1 && x <= 1)
cout << "x liegt im Intervall [-1,1]" << endl;
else if (x > 10)
cout << "x ist größer als zehn" << endl;
else if (x < 5)
cout << "x ist kleiner als 5" << endl;
else
cout << "x hat den Wert:" << x << endl;
Tobias Wolf
http://informatik.swoke.de
Seite 8 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
else/if -Anweisung
Tobias Wolf
http://informatik.swoke.de
Seite 9 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
switch/case -Anweisung
- Mit der switch/case –Anweisung ist es möglich, mehr als zwei
Fälle zu unterscheiden.
- Eine Folge von else/if –Anweisungen lässt sich auch durch eine
switch/case –Anweisung realisieren.
- Nach jedem case folgt ein konstanter Ausdruck.
- Man kann einen sogenannten default-Fall einfügen, der
abgearbeitet wird, wenn kein anderer Fall zutrifft.
Tobias Wolf
http://informatik.swoke.de
Seite 10 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
switch/case -Anweisung
cin >> zahl
switch (zahl)
{
case 4: cout << "vier";
break;
case 5: cout << "fuenf";
break;
default: cout << "keine Zahl";
}
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
switch/case -Anweisung
Tobias Wolf
http://informatik.swoke.de
Seite 12 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 8
Nassi-Shneiderman-Diagramm
(Struktogramm)
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 14
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Nassi-Shneiderman-Diagramm
-
auch genannt: Struktogramm
dient der strukturierten Programmierung
reduziert das Gesamtproblem in mehrere Teilprobleme
ist programmiersprachenunabhängig und kann als eine Art
„Bauplan“ für das Programm verstanden werden
- Jede Anweisung wird durch ein entsprechendes Symbol
dargestellt.
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 14
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Einfache Anweisung
- Zur Darstellung einer einzeiligen Anweisung, wie z.B. cout.
Tobias Wolf
http://informatik.swoke.de
Seite 3 von 14
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Einfache Anweisung - Beispiel
int zahl = 3;
zahl = zahl % 2;
cout << "Die Zahl lautet: " << zahl << endl;
Tobias Wolf
http://informatik.swoke.de
Seite 4 von 14
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Bedingung if/else
- Bei zutreffender Bedingung wird der "ja-Fall", ansonsten der
"nein-Fall" abgearbeitet.
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 14
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Bedingung if/else - Beispiel
if ( zahl == 4 )
// zu prüfende Bedingung
{
cout << "vier";
// Anweisungsblock 1
}
else
{
cout << "nicht vier";
// Anweisungsblock 2
}
Tobias Wolf
http://informatik.swoke.de
Seite 6 von 14
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Fallauswahl switch/case
- Der Wert der Variablen wird geprüft und daraufhin der
zugehörige Anweisungsblock abgearbeitet.
- Es kann ein Alternativfall eingefügt werden, falls kein Wert
zutrifft (sogenannter default-Fall).
Tobias Wolf
http://informatik.swoke.de
Seite 7 von 14
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Fallauswahl switch/case - Beispiel
switch (zahl)
// Variable
{
case 3:
// Wert
cout << "drei";
// Anweisungsblock 1
break;
case 4:
cout << "vier";
// Anweisungsblock 2
break;
default:
// „sonst“-Fall
cout << "falsche Zahl";
break;
}
Tobias Wolf
http://informatik.swoke.de
Seite 8 von 14
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kopfgesteuerte Schleife
- Die Bedingung wird zuerst geprüft. Ist sie wahr, wird der
Anweisungsblock abgearbeitet.
Tobias Wolf
http://informatik.swoke.de
Seite 9 von 14
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kopfgesteuerte Schleife - Beispiel
int zahl = 0;
while (zahl < 10)
{
cout << zahl << endl;
zahl++;
}
Tobias Wolf
http://informatik.swoke.de
// Bedingung
// Anweisungsblock
// Anweisungsblock
Seite 10 von 14
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Fußgesteuerte Schleife
- Der Anweisungsblock wird ohne Prüfung zunächst einmal
abgearbeitet. Danach folgt die Prüfung, ob der Block ein
weiteres Mal durchlaufen werden soll.
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 14
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Fußgesteuerte Schleife - Beispiel
int zahl = 0;
do
{
cout << zahl << endl;
zahl++;
}
while (zahl < 10);
Tobias Wolf
http://informatik.swoke.de
// Anweisungsblock
// Anweisungsblock
// Bedingung
Seite 12 von 14
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Endlos-Schleife
- Die Bedingung ist immer wahr.
- Die Schleife kann deshalb nur durch ein break verlassen
werden.
Tobias Wolf
http://informatik.swoke.de
Seite 13 von 14
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Endlos-Schleife - Beispiel
int zahl = 0;
while (true)
// Bedingung, die immer gültig ist
{
cout << zahl << endl;
// Anweisungsblock
zahl++;
// Anweisungsblock
}
Tobias Wolf
http://informatik.swoke.de
Seite 14 von 14
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 9
Schleifen
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Schleifen
- Schleifen werden zur wiederholten Ausführung von
Anweisungen verwendet.
- Es werden drei Arten von Schleifen unterschieden:
o for -Schleife
o while -Schleife
o do / while -Schleife
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Schleifen
- Die Anzahl der Schleifendurchläufe wird durch Bedingungen
festgelegt.
- Bei der for und der while -Schleife stehen die Bedingungen am
Beginn der Schleife.
- Bei der do / while -Schleife am Ende.
Tobias Wolf
http://informatik.swoke.de
Seite 3 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
for -Schleife
- Ist die Anzahl der Schleifendurchläufe im Voraus bekannt, wird
die for -Schleife verwendet.
- Die Elemente zur Kontrolle der Schleife werden im
Schleifenkopf zusammengefasst.
for ([Initialisierung]; [Abbruchbedingung]; [Reinitialisierung])
Anweisung;
Tobias Wolf
http://informatik.swoke.de
Seite 4 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
for -Schleife
- Die Initialisierung erfolgt nur einmal und wird als Erstes
vorgenommen.
- Die Abbruchbedingung wird zu Beginn jedes
Schleifendurchlaufs bewertet.
- Ist der Wert der Abbruchbedingung false, wird die Schleife
beendet.
- Ist der Wert true, wird die Anweisung (Schleifenkörper)
ausgeführt und danach die Reinitialisierung durchgeführt.
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
for -Schleife
int i;
for (i = 1; i <= 5; i+=2)
{
cout << i << endl;
}
Ausgabe:
1
3
5
Tobias Wolf
http://informatik.swoke.de
Seite 6 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
for -Schleife
Tobias Wolf
http://informatik.swoke.de
Seite 7 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
for -Schleife
- Ist die Abbruchbedingung schon vor dem Eintritt in die Schleife
false, wird der Schleifenkörper nicht durchlaufen.
int i, j = 1;
for (i = 1; j > 5; i++)
cout << i << endl;
Tobias Wolf
http://informatik.swoke.de
Seite 8 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
for -Schleife
- Soll mehr als eine Anweisung zum Schleifenkörper gehören,
muss ein Block verwendet werden.
int i, j;
for (i = 1, j = 5; i <= 5; i += 2, j -= 2)
{
cout << i << " ";
cout << j << endl;
}
Ausgabe:
1 5
3 3
Tobias Wolf
http://informatik.swoke.de
5 1
Seite 9 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
for -Schleife
- Die Elemente zur Schleifenkontrolle im Schleifenkopf können
auch weggelassen werden.
- Bei folgendem Beispiel liegt eine Endlosschleife um eine leere
Anweisung vor, da bei fehlender Abbruchbedingung true
angenommen wird.
for ( ; ; ) ;
Tobias Wolf
http://informatik.swoke.de
Seite 10 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
for -Schleife
- Bei folgendem Beispiel handelt es sich ebenfalls um eine
Endlosschleife.
- Die Abbruchbedingung ist immer true.
int i;
for (i = 1; i < 5; i--)
cout << i << endl;
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
for -Schleife
- Die Zählvariable kann auch innerhalb des
Initialisierungsausdrucks definiert werden.
for (int i = 1; i <= 10; i++)
Tobias Wolf
http://informatik.swoke.de
Seite 12 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
while -Schleife
- Die while –Schleife wird hauptsächlich verwendet, wenn die
Abbruchbedingung erst innerhalb der Schleife festgelegt
werden kann.
- Es wird vor Eintritt in die Schleife geprüft, ob die Schleife
durchlaufen wird.
while (Ausdruck)
Anweisung
- Der Ausdruck kann ganzzahlig oder vom Typ bool sein.
- Ist er ganzzahlig, entspricht 0 false und ungleich 0 true.
Tobias Wolf
http://informatik.swoke.de
Seite 13 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
while -Schleife
int i = 0;
while (i < 5)
cout << ++i;
Ausgabe:
12345
Tobias Wolf
http://informatik.swoke.de
Seite 14 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
while -Schleife
- Das zugehörige Struktogramm sieht wie folgt aus:
Tobias Wolf
http://informatik.swoke.de
Seite 15 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
do/while -Schleife
- Das Abbruchkriterium der do/while –Schleife steht am Ende.
- Deshalb wird sie mindestens einmal durchlaufen.
do
Anweisung;
while (Ausdruck);
- Die Schleife wird durchlaufen, solange der Ausdruck den Wert
true hat.
- Im Gegensatz zur while –Schleife muss am Ende der while
-Anweisung ein Semikolon stehen.
Tobias Wolf
http://informatik.swoke.de
Seite 16 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
do/while -Schleife
- In folgendem Beispiel wird die Benutzereingabe wiederholt, bis
der eingegebene Wert im Intervall [5, 10] liegt.
int i;
do
cin >> i;
while (i < 5 || i > 10);
Tobias Wolf
http://informatik.swoke.de
Seite 17 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
do/while -Schleife
- Das zugehörige Struktogramm sieht wie folgt aus:
Tobias Wolf
http://informatik.swoke.de
Seite 18 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Geschachtelte Schleifen
- Schleifen dürfen ineinander geschachtelt werden.
for (int i=1; i<=2; i++)
{
for (int j=1; j<=2; j++)
{
cout << i << " " << j << endl;
}
}
Tobias Wolf
http://informatik.swoke.de
Ausgabe:
1 1
1 2
2 1
2 2
Seite 19 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Geschachtelte Schleifen
- Das zugehörige Struktogramm sieht wie folgt aus:
Tobias Wolf
http://informatik.swoke.de
Seite 20 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
break -Anweisung
- Die break –Anweisung wird verwendet, um eine Schleife
unmittelbar zu verlassen.
- Bei verschachtelten Schleifen wird nur die aktuelle Schleife
verlassen.
Tobias Wolf
http://informatik.swoke.de
Seite 21 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
continue -Anweisung
- Die continue –Anweisung wird verwendet, um in einer Schleife
unmittelbar die nächste Wiederholung zu beginnen.
- In while und do/while –Schleifen wird zur Schleifenbedingung
gesprungen.
- In for –Schleifen wird zur Reinitialisierung gesprungen.
Tobias Wolf
http://informatik.swoke.de
Seite 22 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Funktion exit
- Durch Aufruf der exit –Funktion kann ein Programm sofort
abgebrochen werden.
- Im Fehlerfall übergibt man einen Wert ungleich 0 und bei
normaler Beendigung des Programms eine 0.
if (i == 3)
{
cout << "Programm Ende" << endl;
exit(0);
}
Tobias Wolf
http://informatik.swoke.de
Seite 23 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Umformungen
- Eine do/while –Schleife kann stets in eine while -Schleife
umgeformt werden
do/while:
do
{
Anweisung;
} while (Ausdruck);
Tobias Wolf
http://informatik.swoke.de
while:
Anweisung;
while (Ausdruck) {
Anweisung;
}
Seite 24 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Umformungen
- Eine for –Schleife kann stets in eine while -Schleife umgeformt
werden
for (Initialisierung; Abbruchbedingung; Reinitialisierung)
Anweisung;
Initialisierung;
while (Abbruchbedingung) {
Anweisung;
Reinitialisierung;
}
Tobias Wolf
http://informatik.swoke.de
Seite 25 von 25
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 10
Felder / Arrays
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Felder
- Bisher wurden nur Variablen verwendet, die einen einzelnen
Wert aufnehmen können.
- Diese Variablen werden auch Skalare genannt.
- Aus einer Menge von Skalaren gleichen Datentyps kann man
ein Feld (array) bilden.
- Die einzelnen Skalare werden dann durch Indizes
unterschieden.
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 21
Wintersemester
Maschinenbau und Kunststofftechnik
Informatik
Felder
- In der Mathematik werden Felder z.B. für die Darstellung von
Vektoren und Matrizen verwendet.
v = ( v1 , v 2 ,..., v n )
 a11
a
A =  21
 ...

 a m1
a12
a 22
...
am2
a1 n 
a2n 

... ... 

... a mn 
...
...
- Vektoren sind eindimensionale und Matrizen zweidimensionale
Felder.
Tobias Wolf
http://informatik.swoke.de
Seite 3 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Definition von Feldern
- Jedes Feldelement hat den gleichen Datentyp. Er steht vor dem
Feldnamen.
- Hinter dem Feldnamen steht die Angabe zur Dimensionierung.
- Für jede Dimension wird die Dimensionierung in ein Paar eckige
Klammern gesetzt.
- Sie gibt die Anzahl der Feldelemente an, die abgespeichert
werden können.
- Es handelt sich um einen ganzzahligen konstanten Ausdruck.
- Der Index einer Dimensionierung beginnt immer mit 0;
Tobias Wolf
http://informatik.swoke.de
Seite 4 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Eindimensionale Felder
- In folgendem Beispiel wird ein eindimensionales Feld mit dem
Namen zahlen definiert.
- Das Feld hat 20 Elemente.
- Alle Elemente sind vom Datentyp int.
- Die Indizes liegen im Bereich von 0 bis 19.
int zahlen[20];
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Eindimensionale Felder
- In folgendem Beispiel wird ein eindimensionales Feld mit dem
Namen werte definiert.
- Das Feld hat 10 Elemente.
- Alle Elemente sind vom Datentyp double.
- Die Indizes liegen im Bereich von 0 bis 9.
const int MAXINDEX = 9;
double werte[MAXINDEX+1];
Tobias Wolf
http://informatik.swoke.de
Seite 6 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Eindimensionale Felder
- Der Zugriff auf die einzelnen Feldelemente erfolgt unter
Verwendung des Indexoperators [].
- Der Index muss stets innerhalb des definierten Wertebereiches
liegen.
- Wird der Wertebereich verlassen, können schwerwiegende
Fehler auftreten.
- Die Zuweisung eines Feldes an ein anderes ist nicht möglich.
zahlen[0], zahlen[1], …, zahlen[19]
werte[0], werte[1], …, werte[19]
Tobias Wolf
http://informatik.swoke.de
Seite 7 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Eindimensionale Felder
- In folgendem Beispiel wird ein eindimensionales Feld mit 10
Elementen definiert.
- Die einzelnen Elemente werden mit den Werten 0, 1, …, 9
beschrieben.
const int ANZAHL = 10;
double feld[ANZAHL];
for (int i=0; i < ANZAHL; i++)
feld[i] = i;
Tobias Wolf
http://informatik.swoke.de
Seite 8 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Initialisierung von eindimensionalen
Feldern
- Felder können bei deren Definition initialisiert (also mit einem
Startwert belegt) werden.
- Hierzu wird ein Wert für jedes einzelne Feldelement
angegeben.
double feld[5] = {0, 2, 4, 6, 8};
Tobias Wolf
http://informatik.swoke.de
Seite 9 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Initialisierung von eindimensionalen
Feldern
- Wird die Initialisierung am Anfang nicht durchgeführt, kann auf
die einzelnen Feldelemente erst zugegriffen werden, sobald
diese mit Werten gefüllt wurden.
- Ein
double feld[5];
cout << feld[0];
führt zum Absturz des Programms, da in dem feld[0] noch kein
Wert gespeichert wurde.
Tobias Wolf
http://informatik.swoke.de
Seite 10 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Initialisierung von eindimensionalen
Feldern
- Es ist immer ratsam, ein Feld zu initialisieren.
- Eine Teilinitialisierung ist möglich. Die restlichen, nicht
angegebenen Felder, werden mit 0 initialisiert:
double feld[5] = {0, 2, 4};
- Leere geschweifte Klammern bewirken eine Initialisierung aller
Feldelemente mit 0:
double feld[5] = {};
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Initialisierung von eindimensionalen
Feldern
- Ein
double feld[5] = {};
cout << feld[0];
funktioniert demnach und liefert als Ausgabe:
0.0
Tobias Wolf
http://informatik.swoke.de
Seite 12 von 21
Wintersemester
Maschinenbau und Kunststofftechnik
Informatik
Kopieren von eindimensionalen
Feldern
- Die Zuweisung eines Feldes an ein anderes ist nicht möglich.
double feldA[5] = {};
double feldB[5] = {1, 2, 3, 4, 5};
feldA = feldB
Tobias Wolf
http://informatik.swoke.de
// Fehler !!!
Seite 13 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kopieren von eindimensionalen
Feldern
- Man muss die einzelnen Elemente nacheinander kopieren.
double feldA[5] = {};
double feldB[5] = {1, 2, 3, 4, 5};
for (int i=0; i<5; i++)
feldA[i] = feldB[i];
Tobias Wolf
http://informatik.swoke.de
Seite 14 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Operator sizeof
- Der Operator sizeof ermittelt die Größe des übergebenen
Datentyps oder des übergebenen Objektes in Bytes.
- sizeof(feld) liefert 40. Das Feld im vorherigen Beispiel hat 5
Elemente mit jeweils 8 Bytes.
- sizeof(int) liefert 4.
Tobias Wolf
http://informatik.swoke.de
Seite 15 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Eindimensionales Feld - Beispiel
- In folgendem Beispiel wird der Benutzer zur Eingabe von
maximal 10 Zahlen aufgefordert.
- Die Eingabe wird mit der Eingabe eines Buchstabens beendet.
- Danach werden die Zahlen sortiert und ausgegeben.
- Siehe Beispiel 10 – Programm zu eindimensionalen Feldern
(auf der Webseite zu finden).
Tobias Wolf
http://informatik.swoke.de
Seite 16 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Mehrdimensionale Felder
- Felder können mit bis zu 256 Dimensionen definiert werden.
- Die am häufigsten verwendeten mehrdimensionalen Felder sind
zweidimensionale Felder.
- Für jede Dimension muss die Anzahl der Elemente angegeben
werden.
int matrix[3][3];
Tobias Wolf
http://informatik.swoke.de
Seite 17 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Initialisierung von
mehrdimensionalen Feldern
- Es ist auch möglich, mehrdimensionale Felder zu initialisieren.
int matrix[3][3] = {0, 2, 4, 1, 3, 5, 7, 8, 9};
Bedeutung:
Tobias Wolf
http://informatik.swoke.de
0 2 4
matrix = 1 3 5


7 8 9
Seite 18 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Initialisierung von
mehrdimensionalen Feldern
- Durch zusätzlich gesetzte Klammern kann die
Zuordnungsreihenfolge verdeutlicht oder geändert werden.
int matrix[3][3] = {{0, 2, 4}, {5}, {7, 8, 9}};
Bedeutung:
Tobias Wolf
http://informatik.swoke.de
0 2 4 
matrix = 5 0 0


7 8 9
Seite 19 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kopieren von mehrdimensionalen
Feldern
- Das Kopieren von mehrdimensionalen Feldern funktioniert
analog zu der Methode bei eindimensionalen Feldern.
double matrixA[3][3] = {};
double matrixB[3][3] = {1, 2, 3, 4};
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
matrixA[i][j] = matrixB[i][j];
Tobias Wolf
http://informatik.swoke.de
Seite 20 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Mehrdimensionale Felder - Beispiel
- In folgendem Beispiel werden eine 3x3-Matrix und ein Vektor
mit 3 Elementen definiert.
- Es wird der Vektor in die zweite Zeile der Matrix kopiert und die
Matrix dann auf den Bildschirm ausgegeben.
- Siehe Beispiel 11 – Programm zu mehrdimensionalen Feldern
(auf der Webseite zu finden).
Tobias Wolf
http://informatik.swoke.de
Seite 21 von 21
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 11
Zeichenverarbeitung
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Zeichenverarbeitung
- Jedem Zeichen ist ein Zahlencode zugeordnet.
- Dadurch wird ermöglicht, zwischen verschiedenen Systemen
Texte auszutauschen.
- Es werden Zahlen, Buchstaben, Steuerzeichen, Sonderzeichen,
etc in eine Zahl codiert.
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Zeichenverarbeitung
- Im Computer weit verbreitet ist der ASCII-Code.
(American Standard Code for Information Interchange –
amerikanischer Standardcode für Informationsaustausch)
- ASCII-Code besteht aus 7-Bit
Jedes Zeichen wird durch einen 7-Bit Zahlencode repräsentiert.
- Dadurch können aber nicht alle verfügbaren Zeichen abgedeckt
werden, weshalb man neue Code-Tabellen entwickelte.
Tobias Wolf
http://informatik.swoke.de
Seite 3 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Zeichenverarbeitung
- Die ASCII-Code-Tabelle umfasst das "einfache" Alphabet (!, ",
#, $, ..., 0, 1, 2, 3, ..., A, B, C, D, ..., a, b, c, d, ..., {, |, }) und
Steuerungscodes, die z.B. für die Druckersteuerung benötigt
werden - insgesamt sind das 128 Zeichen.
- Nicht berücksichtigt sind darin Sonderzeichen - also deutsche
Umlaute, das "ß" und andere nationale Sonderzeichen.
- Diese sind erst im erweiterten ASCII-Code enthalten. (128 –
255)
Tobias Wolf
http://informatik.swoke.de
Seite 4 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Zeichenverarbeitung
- Eine andere Zeichencode-Tabelle ist: ANSI-Code
- Der ANSI-Code ist ein 8-Bit Zeichensatz.
- In der Windows Konsole, die unsere C-Programme ausführt, gilt
der ANSI-Code.
- Weiteres Beispiel für eine Zeichencode-Tabelle ist: Unicode
Durch Unicode (8-Bit, 16-Bit) wird momentan die umfassendste
Code-Tabelle repräsentiert.
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 11
Informatik
dez hex ASCII
ANSI
----------------------------------0
00
NUL
NUL
1
01
SOH
SOH
2
02
STX
STX
3
03
ETX
ETX
4
04
EOT
EOT
5
05
ENQ
ENQ
6
06
ACK
ACK
7
07
BEL
BEL
8
08
BS
BS
9
09
HT
HT
10
0A
LF
LF
11
0B
VT
VT
12
0C
FF
FF
13
0D
CR
CR
14
0E
SO
SO
15
0F
SI
SI
16
10
DLE
DLE
17
11
DC1
DC1
18
12
DC2
DC2
19
13
DC3
DC3
20
14
DC4
DC4
Tobias Wolf
http://informatik.swoke.de
dez hex ASCII ANSI
----------------------------------21
15
NAK
NAK
22
16
SYN
SYN
23
17
ETB
ETB
24
18
CAN
CAN
25
19
EM
EM
26
1A
SUB
SUB
27
1B
ESC
ESC
28
1C
FS
FS
29
1D
GS
GS
30
1E
RS
RS
31
1F
US
US
32
20
spc
spc
33
21
!
!
34
22
"
"
35
23
#
#
36
24
$
$
37
25
%
%
38
26
&
&
39
27
'
'
40
28
(
(
41
29
)
)
Wintersemester
Maschinenbau und Kunststofftechnik
dez hex
ASCII ANSI
----------------------------------42
2A
*
*
43
2B
+
+
44
2C
,
,
45
2D
46
2E
.
.
47
2F
/
/
48
30
0
0
49
31
1
1
50
32
2
2
51
33
3
3
52
34
4
4
53
35
5
5
54
36
6
6
55
37
7
7
56
38
8
8
57
39
9
9
58
3A
:
:
59
3B
;
;
60
3C
<
<
61
3D
=
=
62
3E
>
>
Seite 6 von 11
Informatik
dez hex ASCII
ANSI
----------------------------------63
3F
?
?
64
40
@
@
65
41
A
A
66
42
B
B
67
43
C
C
68
44
D
D
69
45
E
E
70
46
F
F
71
47
G
G
72
48
H
H
73
49
I
I
74
4A
J
J
75
4B
K
K
76
4C
L
L
77
4D
M
M
78
4E
N
N
79
4F
O
O
80
50
P
P
81
51
Q
Q
82
52
R
R
83
53
S
S
Tobias Wolf
http://informatik.swoke.de
dez hex ASCII ANSI
----------------------------------84
54
T
T
85
55
U
U
86
56
V
V
87
57
W
W
88
58
X
X
89
59
Y
Y
90
5A
Z
Z
91
5B
[
[
92
5C
\
\
93
5D
]
]
94
5E
^
^
95
5F
_
_
96
60
`
`
97
61
a
a
98
62
b
b
99
63
c
c
100 64
d
d
101 65
e
e
102 66
f
f
103 67
g
g
104 68
h
h
Wintersemester
Maschinenbau und Kunststofftechnik
dez hex
ASCII ANSI
----------------------------------105
69
i
i
106
6A
j
j
107
6B
k
k
108
6C
l
l
109
6D
m
m
110
6E
n
n
111
6F
o
o
112
70
p
p
113
71
q
q
114
72
r
r
115
73
s
s
116
74
t
t
117
75
u
u
118
76
v
v
119
77
w
w
120
78
x
x
121
79
y
y
122
7A
z
z
123
7B
{
{
124
7C
|
|
125
7D
}
}
Seite 7 von 11
Informatik
dez hex ASCII
ANSI
----------------------------------126
7E
~
~
127
7F
DEL
DEL
128
80
Ã
P
129
81
ü
ü
130
82
‚
é
131
83
ƒ
â
132
84
„
ä
133
85
…
à
134
86
†
å
135
87
‡
ç
136
88
ˆ
ê
137
89
‰
ë
138
8A
Š
è
139
8B
‹
ï
140
8C
Œ
î
141
8D
ì
142
8E
Ž
Ä
143
8F
Å
144
90
É
145
91
‘
æ
146
92
’
Æ
Tobias Wolf
http://informatik.swoke.de
dez hex ASCII ANSI
----------------------------------147
93
“
ô
148
94
”
ö
149
95
•
ò
150
96
–
û
151
97
—
ù
152
98
˜
ÿ
153
99
™
Ö
154
9A
š
Ü
155
9B
›
ø
156
9C
œ
£
157
9D
Ø
158
9E
ž
×
159
9F
Ÿ
ƒ
160
A0
á
161
A1
¡
í
162
A2
¢
ó
163
A3
£
ú
164
A4
¤
ñ
165
A5
¥
Ñ
166
A6
¦
ª
167
A7
§
º
Wintersemester
Maschinenbau und Kunststofftechnik
dez hex
ASCII ANSI
----------------------------------168
A8
¨
¿
169
A9
©
®
170
AA
ª
¬
171
AB
«
½
172
AC
¬
¼
173
AD
¡
174
AE
®
«
175
AF
¯
»
176
B0
°
¦
177
B1
±
¦
178
B2
²
¦
179
B3
³
¦
180
B4
´
¦
181
B5
µ
Á
182
B6
¶
Â
183
B7
·
À
184
B8
¸
©
185
B9
¹
¦
186
BA
º
¦
187
BB
»
+
188
BC
¼
+
Seite 8 von 11
Informatik
dez hex ASCII
ANSI
----------------------------------189
BD
½
¢
190
BE
¾
¥
191
BF
¿
+
192
C0
À
+
193
C1
Á
194
C2
Â
195
C3
Ã
+
196
C4
Ä
197
C5
Å
+
198
C6
Æ
ã
199
C7
Ç
Ã
200
C8
È
+
201
C9
É
+
202
CA
Ê
203
CB
Ë
204
CC
Ì
¦
205
CD
Í
206
CE
Î
+
207
CF
Ï
¤
208
D0
Ð
ð
209
D1
Ñ
Ð
Tobias Wolf
http://informatik.swoke.de
dez hex ASCII ANSI
----------------------------------210
D2
Ò
Ê
211
D3
Ó
Ë
212
D4
Ô
È
213
D5
Õ
i
214
D6
Ö
Í
215
D7
×
Î
216
D8
Ø
Ï
217
D9
Ù
+
218
DA
Ú
+
219
DB
Û
¦
220
DC
Ü
_
221
DD
Ý
¦
222
DE
Þ
Ì
223
DF
ß
¯
224
E0
à
Ó
225
E1
á
ß
226
E2
â
Ô
227
E3
ã
Ò
228
E4
ä
õ
229
E5
å
Õ
230
E6
æ
µ
Wintersemester
Maschinenbau und Kunststofftechnik
dez hex
ASCII ANSI
----------------------------------231
E7
ç
þ
232
E8
è
Þ
233
E9
é
Ú
234
EA
ê
Û
235
EB
ë
Ù
236
EC
ì
ý
237
ED
í
Ý
238
EE
î
¯
239
EF
ï
´
240
F0
ð
241
F1
ñ
±
242
F2
ò
=
243
F3
ó
¾
244
F4
ô
¶
245
F5
õ
§
246
F6
ö
÷
247
F7
÷
¸
248
F8
ø
°
249
F9
ù
¨
250
FA
ú
·
251
FB
û
¹
Seite 9 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
dez hex ASCII
ANSI
----------------------------------252
FC
ü
³
253
FD
ý
²
254
FE
þ
¦
255
FF
ÿ
Tobias Wolf
http://informatik.swoke.de
Seite 10 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Zeichen-Konstanten
- Zeichen-Konstanten werden in Hochkommata eingeschlossen.
Konstante
'Z'
'\x31'
'\n'
Bedeutung
Zeichen Z
'1'
Zeilenvorschub
cout << '\x43' << '\x48' << '\x41' << '\x52' << endl;
CHAR
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 12
Strings
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Konstante Zeichenfolgen
- Zeichenfolgen, die in char-Arrays abgelegt werden, werden CString genannt.
- Dies ist in der Programmiersprache C die einzige Möglichkeit
Zeichenfolgen abzulegen.
- C-String Konstanten bestehen aus einer Folge von Zeichen, die
in Anführungszeichen eingeschlossen sind.
- Im Speicher wird der C-String mit einem String-Ende Zeichen
('\0') am Ende abgespeichert.
- Man beachte den Unterschied zwischen z.B. 'Z' und "Z".
- 'Z' entspricht also einem Zeichen und "Z" zwei Zeichen.
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Die Klasse 'string'
- Statt der C-Strings beinhaltet die C++ Standardbibliothek eine
Klasse namens string.
- Sie bietet erhebliche Vorteile gegenüber der Verwendung der
C-Strings.
- Zur Verwendung der Klasse string muss die Header-Datei string
eingebunden werden.
#include <string>
Tobias Wolf
http://informatik.swoke.de
Seite 3 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Definition eines string Objekts
- Im folgenden Beispiel wird das string Objekt text definiert und
initialisiert.
- Die Zeichenfolge nach dem Zuweisungsoperator ist eine
C-String Konstante.
string text = "Ich bin ein string Beispiel.\n";
Tobias Wolf
http://informatik.swoke.de
Seite 4 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Definition von string Feldern
- Es können auch string Felder (Arrays) definiert werden.
string tage[] = {"Montag", "Dienstag", "Mittwoch",
"Donnerstag", "Freitag", "Samstag"
"Sonntag"};
cout << tage[0] << endl;
Montag
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Zuweisung von string Objekten
- Ein string Objekt kann einem anderen zugewiesen werden.
string text;
string tage[] = {"Montag", "Dienstag", "Mittwoch",
"Donnerstag", "Freitag", "Samstag"
"Sonntag"};
text = tage[2];
cout << text << endl;
Mittwoch
Tobias Wolf
http://informatik.swoke.de
Seite 6 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Eingabe von string Objekten
- Bei der Eingabe unterscheidet man die Eingabe eines Wortes
ohne Leerzeichen und die Eingabe einer Zeile mit Leerzeichen.
Tobias Wolf
http://informatik.swoke.de
Seite 7 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Eingabe von string Objekten - Wort
- Im folgenden Beispiel wird das zweite Wort Maier wegen des
Leerzeichens nicht übergeben.
string name;
cin >> name;
cout << name << endl;
Eingabe:
Otto Maier
Ausgabe:
Otto
Tobias Wolf
http://informatik.swoke.de
Seite 8 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Eingabe von string Objekten - Zeile
- Zum Einlesen einer ganzen Zeile verwendet man die Funktion
getline().
getline(cin, name);
cout << name << endl;
Eingabe:
Otto Maier
Ausgabe:
Otto Maier
Tobias Wolf
http://informatik.swoke.de
Seite 9 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Strings zusammensetzen
- Die Operatoren + und += sind auf string Objekte anwendbar.
string text1 = "Ich ";
text1 = text1 + "bin ";
text1 += "ein Beispiel!";
cout << text1 << endl;
Ausgabe:
Tobias Wolf
http://informatik.swoke.de
Ich bin ein Beispiel!
Seite 10 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Strings zusammensetzen
- Das direkte Zusammensetzen zweier String-Konstanten ist
hingegen nicht möglich.
text = "Ich " + "bin";
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Strings vergleichen
- Die Vergleichsoperatoren sind auf string Objekte anwendbar.
- Es erfolgt ein lexikalischer Vergleich.
string a = "Maier", b = "Mayer";
if (a < b)
cout << "Maier < Mayer" << endl;
Tobias Wolf
http://informatik.swoke.de
Seite 12 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Zugriff auf einzelne Zeichen
- Mit dem Indexoperator [] kann auf einzelne Zeichen eines
Strings zugegriffen werden.
string a = "Maier";
cout << a[0] << a[4] << endl;
Ausgabe:
Tobias Wolf
http://informatik.swoke.de
Mr
Seite 13 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Länge eines Strings
- Mit der Funktion size() kann die Länge eines Strings ermittelt
werden.
- Die Länge eines Strings entspricht der Anzahl der Zeichen des
Stings.
string text = "Ich bin ein string Beispiel!";
cout << text.size() << endl;
Ausgabe: 28
Tobias Wolf
http://informatik.swoke.de
Seite 14 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Beispiel
string text = "Ich bin ein string Beispiel!";
int eCount = 0;
for (int i=0; i< (int)text.size(); i++)
{
if (text[i] == 'e')
{
eCount++;
}
}
cout << eCount << endl;
3
Tobias Wolf
http://informatik.swoke.de
Seite 15 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Groß- und Kleinschreibung
- Mit der Funktion toupper() kann ein Kleinbuchstabe in einen
Großbuchstaben umgewandelt werden.
- Mit der Funktion tolower() kann ein Großbuchstabe in einen
Kleinbuchstaben umgewandelt werden.
string s1 = "abc", s2 = "XYZ";
s1[0] = tolower(s2[0]);
s2[1] = toupper(s1[1]);
cout << s1 << endl << s2 << endl;
Ausgabe:
xbc
XBZ
Tobias Wolf
http://informatik.swoke.de
Seite 16 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Weitere string Funktionen
compare
find
erase
c_str
Tobias Wolf
http://informatik.swoke.de
Mit der Funktion compare() können Strings
verglichen werden.
Mit der Funktion find() kann ein String in einem
anderen String gesucht werden.
find() gibt die Position des ersten Auftretens des
Strings zurück.
Mit der Funktion erase() kann ein Teilstring eines
Strings entfernt werden.
Zur Konvertierung eines string Objekts in einen CString wird die Funktion c_str() verwendet
Seite 17 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Vergleich von Strings
- compare() liefert 0 als Rückgabewert, wenn die Zeichenketten
gleich sind.
- compare() liefert einen negativen Wert, wenn s1 kleiner als s2
ist und einen positiven Wert, wenn s1 größer als s2 ist.
string s1 = "efg";
string s2 = "abc";
int r = s1.compare(s2);
Tobias Wolf
http://informatik.swoke.de
Seite 18 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Vergleich von Strings
- Beispiel mit Rückgabewert 0:
string s;
cin >> s;
if (s.compare("Ja") == 0)
{
cout << "Ja eingegeben!" << endl;
}
Tobias Wolf
http://informatik.swoke.de
Seite 19 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Vergleich von Strings
- Beispiel mit Rückgabewert ungleich 0:
string s1, s2;
cin >> s1 >> s2;
if (s1.compare(s2) == 0)
cout << "s1 ist gleich s2" << endl;
else if (s1.compare(s2) < 0)
cout << "s1 ist kleiner als s2" << endl;
else if (s1.compare(s2) > 0)
cout << "s1 ist größer als s2" << endl;
Tobias Wolf
http://informatik.swoke.de
Seite 20 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Vergleich von Strings
- Die Funktion compare() bietet noch weitere Möglichkeiten:
string s = "Kennzeichen: DA-FH 1000";
if (s.compare(13,2,"DA") == 0)
{
cout << "Darmstadt" << endl;
}
- Im String s werden nach dem 13. Zeichen 2 Zeichen mit „DA“
verglichen.
Tobias Wolf
http://informatik.swoke.de
Seite 21 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Suchen in Strings
- Mit der Funktion find() kann ein String in einem anderen String
gesucht werden. find() gibt die Position des ersten Auftretens
des Strings zurück. Bei Nichtauftreten wird der Wert
string::npos zurückgegeben. string::npos steht für den Wert -1.
string zeile;
getline(cin, zeile);
if (zeile.find("Autor") != string::npos)
{
cout << "Autor enthalten" << endl;
}
Tobias Wolf
http://informatik.swoke.de
Seite 22 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Entfernen von Teilstrings
- Mit der Funktion erase() kann ein Teilstring entfernt werden.
string s1 = "ABCDEFGHIJ";
s1.erase(2,6);
cout << s1 << endl;
cout << "Restzeichen: " << s1.size() << endl;
ABIJ
Restzeichen: 4
- In s1 werden ab Position 2 insgesamt 6 Zeichen gelöscht.
Tobias Wolf
http://informatik.swoke.de
Seite 23 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Konvertierung in C-String
- Zur Konvertierung in einen C-String (= char-Array) kann die
Methode c_str() verwendet werden.
char cs[20] = "C-String";
string s = "String-Objekt";
strcpy(cs, s.c_str());
cout << cs << endl;
- Die C-Funktion strcpy erwartet als 2. Parameter ein
const char * Element.
Tobias Wolf
http://informatik.swoke.de
Seite 24 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Lesen von Strings
- Deklariert man eine Variable vom Typ istringstream, so hat
man einen Stream Objekt mit dem man von einem String lesen
kann.
- Um istringstream benutzen zu können, muss ein "#include
<sstream>" erfolgen.
- Im folgenden Beispiel wird die Schreibweise eines Namens
durch Vertauschung des Vor- und Nachnamens innerhalb eines
Strings verändert.
- Hierzu wird der String elementweise ausgelesen.
Tobias Wolf
http://informatik.swoke.de
Seite 25 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Lesen von Strings
istringstream iss;
string zeile = "Wilhelm Maier 674529";
string vorname, nachname;
int ident;
iss.str(zeile);
iss >> vorname;
iss >> nachname;
iss >> ident;
iss.clear();
cout << "Name: " << nachname << ", " << vorname <<
" Identnr.: " << ident << endl;
Tobias Wolf
http://informatik.swoke.de
Seite 26 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Lesen von Strings
- Wenn iss zum zweiten Mal ein String zugewiesen werden soll,
muss zunächst die Funktion clear() aufgerufen werden.
- Das Lesen von einem String kann auch zur
Datentypumwandlung von einem String in eine arithmetische
Größe verwendet werden.
Tobias Wolf
http://informatik.swoke.de
Seite 27 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Schreiben in Strings
- Mit dem Stream ostringstream kann in einen String geschrieben
werden.
- Im folgenden Beispiel werden zwei Zahlenwerte kombiniert und
mit Text in einen String geschrieben.
Tobias Wolf
http://informatik.swoke.de
Seite 28 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Schreiben in Strings
ostringstream oss;
string zeile;
int i = 100, j = 200;
oss << "i = " << setw(3) << i << " j = " << setw(3) << j;
zeile = oss.str();
cout << zeile << endl;
oss.str("");
// vor der Wiederverwendung leeren
oss << "i + j = " << setw(3) << i + j;
zeile = oss.str();
cout << zeile << endl;
Tobias Wolf
http://informatik.swoke.de
Seite 29 von 29
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 13
Funktionen
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Funktionen
- Eine Funktion ist die Zusammenfassung von mehreren
Anweisungen unter einem bestimmten Namen.
- Funktionen verwendet man, um mehrfach benötigte
Anweisungsfolgen nur einmal niederzuschreiben und von
unterschiedlichen Stellen aufzurufen.
- Mit Funktionen kann ein großes Programm in viele kleine
Teile (Unterprogramme) aufgeteilt werden.
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Funktionsdefinition
- Eine Funktion besitzt einen Namen und einen Datentyp.
- Eine Funktion kann einen Wert zurückgeben.
- Der Datentyp der Funktion entspricht dem Datentyp des
Rückgabewertes.
Tobias Wolf
http://informatik.swoke.de
Seite 3 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Funktionsdefinition
Typ Funktionsname(Parameter)
{
[Definition lokaler Variablen]
[Anweisungen]
[return [Ausdruck];]
}
Typ:
Datentyp des Rückgabewertes
Funktionsname: Name der Funktion
Parameter:
Liste der übergebenen Parameter
Tobias Wolf
http://informatik.swoke.de
Seite 4 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Funktionsdefinition
- Nach dem Funktionsnamen steht eine Liste von Parametern.
- Über diese Parameter werden Werte mit der Funktion
ausgetauscht.
- Jeder dort angegebene Parameter besteht aus einem
Variablennamen und dem entsprechenden Datentyp.
- Will man mehrere Parameter übergeben, werden diese durch
Komma getrennt.
double Berechnung(int zahl, double radius)
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
return -Anweisung
- Wird bei der Programmausführung auf eine return –Anweisung
oder auf das Ende des Funktionsblocks getroffen, so wird in die
aufrufende Funktion zurückgesprungen.
- Wenn die Funktion nicht vom Typ void ist, wird mit der
return –Anweisung ein Wert zurückgegeben.
return [Ausdruck];
Tobias Wolf
http://informatik.swoke.de
Seite 6 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
return -Anweisung
- Der Wert des Ausdrucks entspricht dem Rückgabewert.
- Der Ausdruck wird meist eingeklammert.
- Der Typ der Funktion muss normalerweise dem Typ des
Ausdrucks entsprechen.
- Stimmt der Typ der Funktion nicht mit dem Typ des Ausdrucks
überein, wird in den Typ der Funktion umgewandelt, falls dies
möglich ist.
Tobias Wolf
http://informatik.swoke.de
Seite 7 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Datentyp void
- Der Datentyp void wird für Ausdrücke benötigt, die keinen Wert
darstellen.
- Eine Funktion fname, die keinen Wert zurückgibt und der kein
Wert übergeben wird, wird wie folgt deklariert:
void fname(void);
Oder auch:
void fname();
Tobias Wolf
http://informatik.swoke.de
Seite 8 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Funktionsdeklaration
- Bevor man eine Funktion aufrufen kann, muss sie vorher
definiert und eventuell deklariert sein.
- Eine Funktionsdeklaration sieht wie folgt aus:
Typ Funktionsname(Parameter);
- Man beachte das Semikolon am Ende der Zeile.
- Man nennt die Deklaration einer Funktion auch
Funktionsprototyp.
Tobias Wolf
http://informatik.swoke.de
Seite 9 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Funktionsdeklaration
- Wenn an eine Funktion Parameter übergeben werden, so
müssen bei der Deklaration der Funktion mindestens die
Datentypen der Parameter angegeben sein.
- Die Parameternamen bei der Deklaration und der Definition
einer Funktion müssen nicht zwangsweise übereinstimmen.
- Die Reihenfolge und Anzahl der Datentypen der Parameter bei
der Funktionsdeklaration und Funktionsdefinition muss
übereinstimmen.
Tobias Wolf
http://informatik.swoke.de
Seite 10 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Deklaration von Funktionen
- Wenn der Quellcode auf mehrere Dateien verteilt ist, müssen
die Schnittstellen von Funktionen und Klassen, die von jeweils
anderen Teilen aus benutzt werden, öffentlich bekannt gegeben
werden.
// Funktionsdeklaration Fehlerausgabe
void FehlerAusgabe(void);
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Deklaration von Funktionen
- Die Deklarationen werden sehr häufig in Header-Dateien
abgelegt.
Definitionsdatei
Deklarationsdatei (Header-Datei)
Tobias Wolf
http://informatik.swoke.de
Test.cpp
Test.h
Seite 12 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Definition von Funktionen
- Die Definition von Funktionen wird später noch ausführlich
beschrieben.
- In der Definition einer Funktion stehen die Anweisungen der
Funktion.
// Funktionsdefinition Fehlerausgabe
void FehlerAusgabe(void)
{
cout << "Es ist ein Fehler aufgetreten!" << endl;
}
Tobias Wolf
http://informatik.swoke.de
Seite 13 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Funktionsaufruf
- Zum Aufruf einer Funktion schreibt man an die Aufrufstelle den
Funktionsnamen gefolgt von der eingeklammerten
Parameterliste und einem abschließenden Semikolon.
Funktionsname(Parameter);
- Die Parameter beim Aufruf einer Funktion werden auch
Aktualparameter genannt.
Tobias Wolf
http://informatik.swoke.de
Seite 14 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Funktionsparameter
- Es werden zwei Arten der Übergabe von Parametern
unterschieden:
call-by-value
call-by-reference
Tobias Wolf
http://informatik.swoke.de
Seite 15 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
call-by-value
- Der Parameter, der übergeben werden soll, wird kopiert und
die Kopie wird an die Funktion weitergereicht.
- Der Parameter kann ein Ausdruck, eine Konstante oder eine
Variable sein.
- Der Wert des ursprünglichen Parameters bleibt hierbei
unverändert.
- Diese Art der Parameterübergabe sollte man auf Parameter
beschränken, die nicht viel Speicher (z.B. einfache Datentypen)
benötigen.
Tobias Wolf
http://informatik.swoke.de
Seite 16 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
call-by-reference
- Die aufgerufene Funktion arbeitet statt mit einer Kopie des
Parameters mit dem Original.
- Hierzu wird eine Referenz auf den Parameter übergeben.
- Ändert sich der Wert des Parameters nun innerhalb der
Funktion, so ändert er sich automatisch auch im aufrufenden
Programm
Tobias Wolf
http://informatik.swoke.de
Seite 17 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
call-by-reference
- Der zu übergebene Parameter muss eine Variable sein.
- Um einen Parameter als Referenz zu kennzeichnen, wird bei
der Deklaration und der Definition der Funktion nach dem
Datentyp des Parameters der Operator & angefügt.
Typ Funktionsname(Typ &Parametername);
Tobias Wolf
http://informatik.swoke.de
Seite 18 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Eindimensionale Arrays als
Parameter
- Um ein eindimensionales Array an eine Funktion zu übergeben,
wird nur dessen Anfangsadresse übergeben.
(Ein Array wird daher immer als call-by-reference übergeben.)
- Eine Funktion, die ein Array übergeben bekommt, kennt nur
diese Anfangsadresse.
- Die Länge des Feldes ist nicht implizit bekannt und muss mit
übergeben werden.
Tobias Wolf
http://informatik.swoke.de
Seite 19 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Mehrdimensionale Arrays als
Parameter
- Die Größe des übergebenen Arrays muss, bei der Definition
bzw. Deklaration einer Funktion mit einem mehrdimensionalen
Array als Parameter, angegeben werden.
- Der Compiler ist damit in der Lage, innerhalb der Funktion die
Position der einzelnen Arrayelemente korrekt zu berechnen.
Tobias Wolf
http://informatik.swoke.de
Seite 20 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 14
Variablen,
typedef, enum
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Gültigkeitsbereiche von Variablen
- Jede Variable hat einen Gültigkeitsbereich.
- Innerhalb dieses Gültigkeitsbereichs kann auf die Variable
zugegriffen werden.
- Es werden folgende Arten von Variablen unterschieden:
globale Variablen
funktionslokale Variablen
blocklokale Variablen
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Globale Variablen
- Globale Variablen sind an einer beliebigen Stelle innerhalb einer
Datei, aber außerhalb eines Blocks {} definiert.
- Sie sind ab der Stelle in der Datei gültig, an der sie definiert
sind.
- Globale Variablen werden automatisch beim Programmstart mit
0 initialisiert.
- Ihr Gültigkeitsbereich endet am Dateiende.
Tobias Wolf
http://informatik.swoke.de
Seite 3 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Funktionslokale Variablen
- Funktionslokale Variablen sind an einer beliebigen Stelle
innerhalb einer Funktion definiert.
- Ihr Gültigkeitsbereich ist auf die Funktion beschränkt, in der sie
definiert sind.
- Sie werden nicht automatisch initialisiert. Ihre Namen können
in unterschiedlichen Funktionen gleich sein.
- Ist der Name einer funktionslokalen Variable gleich dem einer
globalen Variable, so überdeckt die funktionslokale Variable die
globale Variable.
Tobias Wolf
http://informatik.swoke.de
Seite 4 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Blocklokale Variablen
- Blocklokale Variablen sind innerhalb eines Blocks innerhalb des
Funktionsblocks definiert.
- Sie haben die gleichen Eigenschaften, wie funktionslokale
Variablen, allerdings auf ihren Block beschränkt.
- Blocklokale Variablen überdecken gleichnamige globale und
funktionslokale Variablen.
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Beispiel
int g;
void main()
{
int f = 0;
{
int b = 0;
}
}
Tobias Wolf
http://informatik.swoke.de
// globale Variable
// funktionslokale Variable
// blocklokale Variable
Seite 6 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Gültigkeitsbereichsoperator ::
- Werden globale Variablen durch funktionslokale oder
blocklokale Variablen verdeckt, kann mit dem
Gültigkeitsbereichsoperator vor dem entsprechenden Namen
der Variablen trotzdem auf die globalen Variablen zugegriffen
werden.
- Dieser Zugriff funktioniert aber nur auf globalen Variablen.
Tobias Wolf
http://informatik.swoke.de
Seite 7 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Gültigkeitsbereichsoperator ::
int g=1;
void main()
{
int f = 2;
{
int b=3, g=4;
cout << setw(2) << ::g << setw(2) << g << endl;
}
}
Ausgabe: 1 4
Tobias Wolf
http://informatik.swoke.de
Seite 8 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Umbennung von Datentypen -
typedef
- In C++ kann man Datentypen einen neuen Namen geben:
typedef unsigned long int ULONG;
ULONG i;
Tobias Wolf
http://informatik.swoke.de
Seite 9 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Aufzählungen - enum
- Eine Aufzählung ist ein selbst definierter ganzzahliger Datentyp.
- Die Definition einer Aufzählung erfolgt über das Schlüsselwort
enum.
- Es werden mögliche Werte und Namen für diese Werte
festgelegt.
- Die in der Liste angegebenen Namen bezeichnen jetzt
ganzzahlige Konstanten.
- Die erste Konstante hat den Wert 0, die zweite den Wert 1, etc.
Tobias Wolf
http://informatik.swoke.de
Seite 10 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Aufzählungen - enum
#include <iostream>
using namespace std;
enum Automarke {Audi, BMW, Ford, Mercedes, Opel, Porsche};
void main()
{
Automarke marke;
marke = Porsche;
cout << marke << endl;
}
Ausgabe: 5
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 11
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 15
Präprozessor Anweisungen,
Makros, Namensbereiche
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Präprozessor Anweisungen
- Die Präprozessor Anweisungen werden immer mit dem
Doppelgatter # eingeleitet.
- Der Präprozessor erzeugt – entsprechend der Anweisung – den
Quelltext, der dann vom Compiler übersetzt wird.
- Am Ende einer Präprozessor Anweisung steht kein Semikolon.
- Präprozessor Anweisungen sind Anweisungen, die vor dem
eigentlichen Übersetzen des Programms durch den
Präprozessor ausgeführt werden.
- Alle Zeilen, die mit dem Doppelgatter beginnen, werden als
Präprozessor Anweisung interpretiert.
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
include Anweisung
- Der Quelltext von Header-Dateien kann mit der include
Anweisung eingebunden werden.
- Header-Dateien sind Textdateien, die u.a. Deklarationen
enthalten.
- Es gibt zwei Schreibweisen:
#include <Dateiname>
#include "Dateiname.h"
- Spitze Klammern werden bei Standard-Header-Dateien
verwendet (zB. iostream, cmath).
Tobias Wolf
http://informatik.swoke.de
Seite 3 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
include Anweisung
- Die Dateien werden in einem von der Entwicklungsumgebung
voreingestellten Pfad gesucht.
- Zur Einbindung von selbst verfassten Header-Dateien
verwendet man Anführungszeichen.
- Sie werden im aktuellen Arbeitsverzeichnis gesucht.
- Es können absolute und relative Pfade angegeben werden:
#include "D:\Entwicklung\CPP\include\const.h"
#include "..\include\const.h"
Tobias Wolf
http://informatik.swoke.de
Seite 4 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
include Anweisung
- Alle in einer Header-Datei deklarierten Namen sind global
verfügbar.
- Das kann bei großen Programmen zu Namenskonflikten führen.
- Daher gibt es in C++ z.B. zur Header-Datei math.h noch eine
Header-Datei cmath, die dieselben Namen in einem
Namensbereich std deklariert.
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
include Anweisung
#include <math.h>
- ist äquivalent zu:
#include <cmath>
using namespace std;
Tobias Wolf
http://informatik.swoke.de
Seite 6 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
define Anweisung
- Mit der define Anweisung werden symbolische Konstanten und
Makros definiert.
- Es werden drei Formen unterschieden:
Definition eines Symbols
Definition eines Symbols mit Wertzuweisung
Definition eines Makros
Tobias Wolf
http://informatik.swoke.de
Seite 7 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Definition eines Symbols
- Das Symbol (z.B. DEBUG) ist ein beliebiger Name.
- Diese Definition kann in anderen Präprozessor Anweisungen
(z.B. #ifdef) abgefragt werden.
#define DEBUG
Tobias Wolf
http://informatik.swoke.de
Seite 8 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Definition eines Symbols mit
Wertzuweisung
- Es wird ein Symbol definiert und diesem ein Wert zugewiesen.
#define MAXINDEX 10
- Der Präprozessor ersetzt das Wort MAXINDEX vor dem
Compilerlauf durch 10.
Tobias Wolf
http://informatik.swoke.de
Seite 9 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Definition eines Symbols mit
Wertzuweisung
- Von der Ersetzung ausgenommen sind Strings und
Kommentare.
- Zur Definition von Konstanten ist es in jedem Fall besser,
benannte Konstanten zu verwenden, anstatt sie mit define zu
definieren
const int MAXINDEX = 10;
Tobias Wolf
http://informatik.swoke.de
Seite 10 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Definition eines Makros
- Ein Makro ist eine Abkürzung für eine beliebige Anweisung.
#define BEEP cout << "\a"
- Trifft der Präprozessor auf das Wort Symbol (hier: BEEP), wird
dieses durch die bei der Makrodefinition angegebenen
Anweisungen ersetzt.
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Definition eines Makros
- Erstrecken sich die Anweisungen eines Makros über mehrere
Zeilen, sind die Zeilen mit einem Backslash abzuschließen.
- Makros können auch Parameter besitzen.
- Die Parameter werden hier - genauso, wie bei Funktionen - in
Klammern eingeschlossen und durch Kommata getrennt.
Datentypen werden keine angegeben.
Tobias Wolf
http://informatik.swoke.de
Seite 12 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Definition eines Makros
#include <iostream>
using namespace std;
#define BEEP cout "\a"
#define MOD(a,b) ((a)%(b))
#define QUAD(a) ((a) * (a))
void main()
{
BEEP;
cout << MOD(123, 11) << endl;
cout << QUAD(17) << endl;
}
Ton!
2
289
Tobias Wolf
http://informatik.swoke.de
Seite 13 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
undef Anweisung
- Mit der undef Anweisung kann ein definiertes Symbol wieder
gelöscht werden.
#undef DEBUG
Tobias Wolf
http://informatik.swoke.de
Seite 14 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
ifdef, ifndef und endif Anweisung
- Mit der Präprozessor Anweisung ifdef kann abgefragt werden,
ob ein bestimmtes Symbol definiert ist oder nicht.
- Ist das Symbol definiert, übernimmt der Präprozessor alle
Anweisungen die zwischen der ifdef Anweisung und der
dazugehörigen endif Anweisung stehen.
Tobias Wolf
http://informatik.swoke.de
Seite 15 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
ifdef, ifndef und endif Anweisung
#define DEBUG
#ifdef DEBUG
cout << "Debug Version" << endl;
#endif
#undef DEBUG
#ifndef DEBUG
cout << "Release Version" << endl;
#endif
Debug Version
Release Version
Tobias Wolf
http://informatik.swoke.de
Seite 16 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
if, elif, else und endif Anweisung
- Diese Anweisungen bieten erweiterte Möglichkeiten.
- Sie arbeiten ähnlich, wie die Verzweigung in C++.
#define INTBITS 32
#if INTBITS == 16
cout << "16 Bit int" << endl;
#elif INTBITS == 32
cout << "32 Bit int" << endl;
#else
cout << "INTBITS undef oder falsch!" << endl;
#endif
32 Bit int
Tobias Wolf
http://informatik.swoke.de
Seite 17 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
if, elif, else und endif Anweisung
- Die if und elif Anweisungen können auch mehrere Ausdrücke
als Bedingungen auswerten.
- Die einzelnen Bedingungen können dann mit dem OderOperator || oder dem UND-Operator && verknüpft werden.
Tobias Wolf
http://informatik.swoke.de
Seite 18 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
defined Operator
- Mit dem defined Operator kann überprüft werden, ob eine
symbolische Konstante oder ein Makro definiert ist.
- Vor defined kann noch der Operator ! stehen, um das Ergebnis
der Abfrage zu negieren.
#if !defined(_WIN32) && !defined(_MAC)
// aus math.h
#error ERROR: Only Mac or Win32 targets supported!
#endif
Tobias Wolf
http://informatik.swoke.de
Seite 19 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
error Anweisung
- Diese Anweisung bewirkt einen sofortigen Abbruch des
Compilervorgangs.
- Nach der Präprozessor Anweisung kann noch ein Text stehen.
- Der Text muss nicht in Anführungszeichen stehen und wird
ausgegeben.
#if !defined(__cplusplus)
#error C++ compiler required.
#endif
Tobias Wolf
http://informatik.swoke.de
Seite 20 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
pragma Anweisung
- Mit der pragma Anweisung wird der Compiler angewiesen, eine
(implementationsspezifische) Operation auszuführen.
- Nicht alle Operationen, die nach dem Schlüsselwort pragma
folgen, sind bei allen Compilern bekannt.
- Eine, dem Compiler nicht bekannte pragma Operation, wird
vom Präprozessor einfach ignoriert.
#if _M_IX86 == 500
#pragma message("Erstellung für Pentium-Prozessor")
#endif
Tobias Wolf
http://informatik.swoke.de
Seite 21 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
pragma Anweisung
- Mit pragma message kann bei Microsoft Visual C++ eine
Meldung ausgegeben werden, ohne dass der Compilervorgang
abgebrochen wird.
- Der Text muss eingeklammert und in Anführungszeichen
stehen.
- Außer der Operation message gibt es noch ein paar weitere
pragma Operationen. Diese können sich aber von Compiler zu
Compiler unterscheiden.
Tobias Wolf
http://informatik.swoke.de
Seite 22 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Namensbereiche
- Bei großen Programmen kommt es bei der Vergabe von
globalen Variablen häufig zu Konflikten, wenn gleiche Namen
verwendet werden.
- Namensbereiche werden zur Vermeidung solcher Konflikte
eingesetzt.
- Innerhalb eines Namensbereiches können Namen verwendet
werden, auch wenn sie außerhalb bereits definiert wurden.
- Der globale Geltungsbereich wird somit in Teilbereiche
unterteilt.
Tobias Wolf
http://informatik.swoke.de
Seite 23 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Namensbereiche
- Wird von außerhalb auf die Elemente eines Namensbereichs
zugegriffen, muss zusätzlich der Namensbereich angegeben
werden.
- Dieser wird dem Elementnamen mit dem Bereichsoperator ::
vorangestellt.
#include <iostream>
void main()
{
std::cout << "Text" << std::endl;
}
Tobias Wolf
http://informatik.swoke.de
Seite 24 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Namensbereiche
- Mit der using Anweisung kann explizit der Namensbereich einer
Variablen oder Funktion für die restlichen Anweisungen des
aktuellen Blocks vorgegeben werden.
#include <iostream>
void main()
{
using std::cout;
using std::endl;
cout << "Text" << endl;
}
Tobias Wolf
http://informatik.swoke.de
Seite 25 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Namensbereiche
- Sollen aber alle Elemente eines Namensbereichs eingebunden
werden, wird die bereits häufig gezeigte Form der using
Anweisung verwendet.
#include <iostream>
using namespace std;
void main()
{
cout << "Text" << endl;
}
Tobias Wolf
http://informatik.swoke.de
Seite 26 von 26
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 16
Datei Aus- und Eingabe
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Datei Aus- und Eingabe
- Für die Ausgabe auf Dateien und die Eingabe von Dateien
werden die Streams ofstream und ifstream verwendet.
- Sie sind in der Bibliothek fstream deklariert.
- Man unterscheidet zwischen Text- und Binärdateien.
- Textdateien enthalten ausschließlich ASCII-Zeichen.
- Sie können mit gewöhnlichen Editoren bearbeitet werden.
- C++ Quelldateien sind Textdateien.
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Datei Aus- und Eingabe
- Binärdateien enthalten Daten in binärer Form.
- Diese Daten können nur mit speziellen Editoren (z.B. WinHex)
sinnvoll dargestellt werden.
- Binärdateien verwendet man, um größere Datenmengen
abzulegen.
- Sie benötigen hierfür nicht so viel Speicher wie Textdateien.
Tobias Wolf
http://informatik.swoke.de
Seite 3 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Ausgabe in Textdatei
- Will man Daten in eine Datei schreiben, muss zunächst ein
Ausgabestream vom Typ ofstream definiert und mit einer Datei
verbunden werden:
ofstream myFile("D:\\Entwicklung\\CPP\\Datei.txt");
- Bei der Pfadangabe ist jeder Backslash zu verdoppeln.
Tobias Wolf
http://informatik.swoke.de
Seite 4 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Ausgabe in Textdatei
-
Falls die Datei noch nicht existiert, wird sie neu angelegt.
Beim Öffnen einer Datei können Fehler auftreten.
Diese Fehler sollten abgefangen werden.
Zum Schreiben der Daten in diese Textdatei kann der
Operator << verwendet werden.
- Für die Dateiausgabe stehen die gleichen Manipulatoren wie für
cout zur Verfügung. (Beispielsweise: setprecision, setw)
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Beispiel: Ausgabe in Textdatei
#include <iostream> #include <iomanip> #include <fstream>
using namespace std;
void main()
{
ofstream myFile("Datei.txt");
if(!myFile)
cerr << "Fehler beim Öffnen der Datei";
else
myFile << setprecision(5) << 1.0/3.0 << endl;
myFile.close();
}
Tobias Wolf
http://informatik.swoke.de
Seite 6 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Einlesen von Textdatei
- Will man Daten aus einer Datei lesen, muss zunächst ein
Eingabestream vom Typ ifstream definiert und mit einer Datei
verbunden werden:
ifstream myFile("Datei.txt");
- Die Datei muss bereits existieren.
- Zum Lesen von Daten aus dieser Textdatei kann der
Operator >> verwendet werden.
Tobias Wolf
http://informatik.swoke.de
Seite 7 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Beispiel: Einlesen von Textdatei
#include <iostream> #include <iomanip> #include <fstream>
using namespace std;
void main()
{ double x;
ifstream myFile("Datei.txt");
if(!myFile)
cerr << "Fehler beim Öffnen der Datei";
else
myFile >> x;
myFile.close();
}
Tobias Wolf
http://informatik.swoke.de
Seite 8 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Die Bibliothek fstream
- Bisher haben wir die Datentypen ifstream und ofstream
verwendet, die in der Bibliothek fstream deklariert sind.
- Diese Datentypen nennt man auch "Klassen".
- Sie stellen die benötigten Funktionen/Methoden zur
Verarbeitung von Dateien zur Verfügung.
Tobias Wolf
http://informatik.swoke.de
Seite 9 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Einige Methoden von fstream
Methode
eof()
<<
>>
open()
close()
getline()
Tobias Wolf
http://informatik.swoke.de
Beschreibung
Prüfung auf Dateiende
Schreiben in Datei
Lesen von Datei
Öffnen einer Datei
Schließen einer Datei
Lesen einer ganzen Zeile aus einer Datei
Seite 10 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Erkennen des Dateiendes
- Ist nicht bekannt, wie viele Daten sich in einer Datei zum Lesen
befinden, muss bis zum Dateiende gelesen werden.
- Das Erreichen des Dateiendes kann durch die Methode eof()
geprüft werden.
- eof() gibt bei Erreichen des Dateiendes true zurück.
while(!myInputFile.eof())
{
getline(myInputfile, zeile);
cout << zeile << endl;
}
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Öffnen von Dateien
- Um den Inhalt einer Datei lesen zu können, muss diese erst
einmal geöffnet werden.
- Dies wird entweder erreicht, indem man bei der Deklaration
des Eingabestreams die Datei gleich angibt:
ifstream myFile("Datei.txt");
- Oder aber man deklariert zunächst die Streamvariable und
öffnet die Datei dann im nächsten Schritt:
ifstream myFile;
myFile.open("Datei.txt");
Tobias Wolf
http://informatik.swoke.de
Seite 12 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Schließen von Dateien
- Wenn die Bearbeitung einer Datei beendet ist, sollte die Datei
durch close() geschlossen werden.
myFile.close();
- Am Ende eines Programms werden alle geöffneten Dateien
automatisch geschlossen.
- Der Destruktor eines Datei-Streams schließt die Datei ebenfalls
automatisch.
Tobias Wolf
http://informatik.swoke.de
Seite 13 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Lesen einer ganzen Zeile
- Durch die Methode getline() wird eine ganze Zeile aus der
angegebenen Datei gelesen.
string zeile;
getline(myFile, zeile);
Tobias Wolf
http://informatik.swoke.de
Seite 14 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Die Bibliothek sstream
- Die Bibliothek sstream stellt istringstream und ostringstream
zur Verfügung.
- Zur Umwandlung einer Zeichenkette in eine Zahlenvariable
kann istringstream verwendet werden:
int meineZahl;
string s("123");
istringstream inputStream(s);
inputStream >> meineZahl;
Tobias Wolf
http://informatik.swoke.de
Seite 15 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Die Bibliothek sstream
- Soll aus einer Zahlenvariablen eine Zeichenkette werden, so
kann ostringstream verwendet werden:
int meineZahl = 123;
string s;
ostringstream outputStream;
outputStream << meineZahl;
s = outputStream.str();
- Die Methode str() wandelt den Stream in einen String um und
schreibt ihn in s.
Tobias Wolf
http://informatik.swoke.de
Seite 16 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Die Methode str()
- Einerseits wandelt also str() den Stream in einen String um:
string s = outputStream.str();
- Andererseits kann so, ein String dem Stream zugewiesen
werden, um ihn dann durch >> in eine Variable zu schreiben:
getline(myFile, zeile);
istringstream iss.str(zeile);
iss >> name;
Tobias Wolf
http://informatik.swoke.de
Seite 17 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Die Methode str() - Fortsetzung
- Warum wird der String durch getline() nicht gleich in name
eingelesen (statt - wie im Beispiel - in zeile) ?
- Man beachte, dass im eingelesen String zeile auch Leerzeichen
enthalten sein können. Durch dem Umweg über istringstream
ist es dadurch nun möglich, den String durch >> zu trennen
und die Teilstrings verschiedenen Variablen zuzuweisen.
- Analog zu cin, welches bei der Eingabe auch den Gebrauch von
cin >> a >> b >> c;
- erlaubt, bei der man die Werte durch Leerzeichen getrennt
hintereinander schreiben kann.
Tobias Wolf
http://informatik.swoke.de
Seite 18 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Die Methode clear()
- Die Methode clear() löscht den zugewiesenen String, so dass
eine neue Zuweisung erfolgen kann.
iss.clear();
Tobias Wolf
http://informatik.swoke.de
Seite 19 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Vollständiges Schreiben einer
Textdatei
- Im ersten Teil des folgenden Beispiels wird eine Datei
Namen.txt zum Schreiben geöffnet, ein string-Feld mit Namen
und Ident-Nummer angelegt und komplett element- und
zeilenweise in die Datei Namen.txt geschrieben.
- Danach wird die Datei geschlossen.
=> siehe
"Beispiel_18_-_Datei_-_Aus_-_und_Eingabe.zip" – 1. Teil
Tobias Wolf
http://informatik.swoke.de
Seite 20 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Bsp: Vollständiges Lesen einer
Textdatei
- Im zweiten Teil des Beispiels wird die Datei Namen.txt zum
Lesen geöffnet und bis zum Erreichen des Dateiendes
zeilenweise ausgelesen.
- In jeder Zeile wird die Ident-Nummer vor den Namen gestellt
und das string-Feld wieder beschrieben und ausgegeben.
- Am Ende wird die Datei wieder geschlossen.
=> siehe
"Beispiel_18_-_Datei_-_Aus_-_und_Eingabe.zip" – 2. Teil
Tobias Wolf
http://informatik.swoke.de
Seite 21 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Einige Methoden von string
Methode
find(s)
insert(n, s)
erase(p, n)
length()
Tobias Wolf
http://informatik.swoke.de
Beschreibung
Liefert die Position, an der sich der String
s befindet. Das Zählen beginnt hier – wie
bei Arrays – bei 0.
Die Methode liefert string::npos, wenn s
nicht gefunden wurde.
string::npos steht für den Wert -1
Fügt den String s an Position n ein.
Entfernt ab Position p n Zeichen.
Liefert die Länge des Strings.
Seite 22 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Einige Methoden von string - Bsp
string s("123");
int len = s.length();
s.insert(2, "xy");
s.erase(2, 2);
int pos = s.find("23");
// String s erstellen mit Zeichenkette "123"
// liefert 3; Die Länge des Strings
// s ist nun "12xy3"
// s ist nun "123"
// liefert die Position 1
Siehe dazu auch: Skript Informatik - Kapitel 12 (Strings)
Tobias Wolf
http://informatik.swoke.de
Seite 23 von 23
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 17
Klassen und Objekte
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Prozedurale Programmierung
- Die Prozedurale Programmierung trennt die Daten von den
Funktionen, die diese Daten bearbeiten.
- Das hat zur Folge, dass ein Programmierer selbst für die
Initialisierung von Daten vor ihrer Verwendung sorgen muss
und dass beim Aufruf einer Funktion korrekte Daten übergeben
werden.
- Wird die Darstellung der Daten geändert, müssen auch die
entsprechenden Funktionen angepasst werden.
- Ein solches Vorgehen erhöht den Wartungsaufwand und ist
fehleranfällig.
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Datenabstraktion
- Ziel der „Objektorientierten Programmierung“, auch kurz OOP,
ist es, komplexe Sachverhalte als Ganzes abzubilden, d.h. die
Eigenschaften (Daten, Attribute) und die darauf wirkenden
Methoden (Funktionen, Fähigkeiten) zusammenzufassen.
- Die Objekte der OOP bilden eine Einheit aus Eigenschaften und
Methoden.
- Eigenschaften und Methoden einer Klasse nennt man auch
Member einer Klasse.
Tobias Wolf
http://informatik.swoke.de
Seite 3 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Datenabstraktion
- Vor der Implementierung werden in einem
Komponentenentwurf die Objekte herausgearbeitet. Mehrere
gleichartige Objekte werden dann zu einer Klasse
zusammengefasst.
- Dabei werden alle Gemeinsamkeiten der gleichartigen Objekte
herausgearbeitet und in einer Klasse vereinigt.
- Die Bildung von Klassen zur Beschreibung von Objekten nennt
man auch Datenabstraktion.
Tobias Wolf
http://informatik.swoke.de
Seite 4 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Klassen und Objekte
- Eine Klasse ist ein selbst definierter Datentyp und ein Objekt ist
eine Variable (Instanz) dieser Klasse.
- Eine Klasse CKonto enthält z.B. die Eigenschaften:
o Name des Kontoinhabers
o Kontonummer
o Kontostand
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Klassen und Objekte
- Ferner enthält die Klasse CKonto die Methoden:
o Name abfragen und ändern
o Kontonummer abfragen und ändern
o Kontostand abfragen und ändern
o Kontodaten ausgeben
- Diese Eigenschaften und Methoden gehören zu jedem
beliebigen Konto.
- Im folgenden Beispiel (Bsp: CKonto_Schnittstelle.zip) ist die
Schnittstelle der Klasse CKonto definiert.
Tobias Wolf
http://informatik.swoke.de
Seite 6 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Deklaration der Klasse CKonto
class CKonto
{
private:
string m_name
// Name des Kontoinhabers
int m_number
// Kontonummer
double m_stand
// Kontostand
public:
string getName();
// Name abfragen
void setName(string name);
// Name ändern
int getNumber();
// Kontonummer abfragen
void setNumber(int number);
// Kontonummer ändern
…
// Kontostand abfragen / ändern
Ausgabe();
// Kontodaten ausgeben
};
Tobias Wolf
http://informatik.swoke.de
Seite 7 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Deklaration einer Klasse - Allgemein
- Jede Klasse besteht aus einer Menge von Eigenschaften und
Methoden.
- Eigenschaften und Methoden verschiedener Klassen dürfen die
gleichen Namen tragen.
- Jede Klasse wird beschrieben durch eine .cpp- und eine .hDatei.
- Die Deklaration (die Beschreibung der Schnittstelle) erfolgt
normalerweise in der .h-Datei.
Tobias Wolf
http://informatik.swoke.de
Seite 8 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Deklaration einer Klasse - Allgemein
- Die Eigenschaften und Methoden einer Klasse werden in einem
Block zusammengefasst.
- Vor diesem Block steht das Schlüsselwort class gefolgt vom
Klassennamen. Am Ende des Blocks muss ein Semikolon
stehen.
class CKonto
{
…
};
Tobias Wolf
http://informatik.swoke.de
Seite 9 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Definition einer Klasse
- Man beachte, dass die Methoden bisher nur deklariert wurden.
- Die Definition der Klasse bzw. der einzelnen Methoden erfolgt
in der .cpp-Datei.
- Jede Quelldatei kann jetzt auf die Klasse CKonto zugreifen,
indem sie Konto.h inkludiert.
- Dies ist eine Grundvoraussetzung für die modulare
Programmierung, also die Aufteilung des Programmcodes auf
mehrere Module (Dateien).
Tobias Wolf
http://informatik.swoke.de
Seite 10 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Datenkapselung
- Die Eigenschaften einer Klasse sind bei guter Programmierung
nur über die Methoden veränderbar.
- Die Menge aller Methoden einer Klasse nennt man auch
Schnittstelle der Klasse.
- Die Schnittstelle (siehe: Deklaration) einer Klasse muss sich
nicht ändern, wenn sich die interne Darstellung der Daten
ändert.
- Das hat den Vorteil, dass alle die Klasse verwendenden
Programmteile unverändert bleiben können.
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Definition eines Objekts
- Ist die Schnittstelle der Klasse CKonto bekannt, können Objekte
dieser Klasse definiert werden:
CKonto konto;
- Man sagt auch: konto ist ein Objekt der Klasse CKonto.
- Die .cpp/.h-Datei ist sozusagen der Bauplan, nachdem die
Objekte erstellt werden.
Tobias Wolf
http://informatik.swoke.de
Seite 12 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Definition eines Objektfeldes
- Es ist auch möglich ein Feld von Objekten zu definieren:
CKonto konto[10];
Tobias Wolf
http://informatik.swoke.de
Seite 13 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Definition der Methoden einer Klasse
- Die Methoden werden üblicherweise in einer cpp-Datei (z.B.
Konto.cpp) definiert (Bsp: CKonto_Komplett.zip):
#include "Konto.h"
string CKonto::GetName()
{
return m_name;
}
void CKonto::SetName(string name)
{
m_name = name;
}
…
Tobias Wolf
http://informatik.swoke.de
Seite 14 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Definition der Methoden einer Klasse
- Es ist auch möglich, die Definition der Methoden direkt in die
Klassendefinition einzubeziehen. Die Datei Konto.cpp kann
hierbei entfallen. (Bsp: CKonto_InEinerDatei.zip):
…
public
string GetName()
{
return m_name;
}
…
Tobias Wolf
http://informatik.swoke.de
Seite 15 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Aufruf der Methoden einer Klasse
- Funktion wird in der objektorientierten Programmierung
Methode genannt.
- Der Aufruf der Methode einer Klasse erfolgt immer für ein
bestimmtes Objekt der Klasse.
- Der Name des Objekts muss durch einen Punkt getrennt vor
den Namen der Methode geschrieben werden.
Tobias Wolf
http://informatik.swoke.de
Seite 16 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Aufruf der Methoden einer Klasse
// Klasse string und Objekt error
void main(void)
{
meineKlasse fehler; // fehler ist ein Objekt der Klasse meineKlasse.
// Die Klasse meineKlasse hat eine Methode
// namens ausgabe, welche den Fehler
// ausgibt.
fehler.ausgabe();
// Aufruf der Methode ausgabe in der
// Klasse meineKlasse.
}
Tobias Wolf
http://informatik.swoke.de
Seite 17 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Zugriffsrechte bei Klassen
- Allen Membern (Eigenschaften, Methoden) einer Klasse sind
Zugriffsrechte zugeordnet.
- Die Zugriffsrechte definieren, ob auf ein Member von außen
zugegriffen werden darf oder nicht.
- Der Zugriff von außen kann durch das Schlüsselwort private
gesperrt werden.
- Das Schlüsselwort public erlaubt den Zugriff von außen.
public:
string GetName();
Tobias Wolf
http://informatik.swoke.de
Seite 18 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Zugriffsrechte bei Klassen
- Ist kein Zugriffsrecht angegeben, ist es standardmäßig private.
- Methoden einer Klasse haben generell immer Zugriff auf alle
anderen Member der eigenen Klasse.
- Die Schlüsselwörter (public, private) sind innerhalb einer Klasse
gültig, bis sie durch ein anderes verändert werden.
- Die Reihenfolge und Anzahl von private bzw. public ist beliebig.
- Alle Eigenschaften einer Klasse sollten im private -Bereich der
Klasse stehen.
Tobias Wolf
http://informatik.swoke.de
Seite 19 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Zugriff auf Member einer Klassen
- Auf ein public Member einer Klasse kann von extern (z.B. von
der main -Funktion aus) direkt zugegriffen werden.
- Auf Member einer Klasse kann nur über ein Objekt der Klasse
direkt zugegriffen werden.
- Der Zugriff auf Member erfolgt durch die Angabe des
entsprechenden Objekts, gefolgt vom Punktoperator und dem
Namen des Members.
CKonto konto;
konto.SetName("Hans Meier");
konto.SetNumber(123456);
konto.Ausgabe();
Tobias Wolf
http://informatik.swoke.de
Seite 20 von 20
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 18
Konstruktor / Destruktor einer
Klasse
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Konstruktoren
- Zur Initialisierung der Eigenschaften einer Klasse werden
Konstruktoren verwendet.
- Der Konstruktor wird bei der Definition eines Objekts der Klasse
automatisch aufgerufen.
- Der Konstruktor besitzt den gleichen Namen wie die Klasse.
- Bis auf Objekte derselben Klasse dürfen in einem Konstruktor
auch Objekte definiert werden.
CKonto::CKonto(string name)
{
m_name = name;
}
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Konstruktoren
- Ein Konstruktor besitzt keinen Rückgabewert; auch nicht den
Typ void.
- Er darf nicht private sein.
- Für globale Objekte wird der Konstruktor unmittelbar vor der
Ausführung der main()- Funktion ausgeführt und bei lokalen
Objekten an der Stelle, an der sie definiert werden.
- Hat ein Konstruktor Parameter, werden diese bei der Definition
des Objekts angegeben.
CKonto konto2("Mueller, Anna");
Tobias Wolf
http://informatik.swoke.de
Seite 3 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Standardkonstruktor
- Ist für eine Klasse kein Konstruktor definiert, so hat sie einen
parameterlosen Standardkonstruktor.
CKonto();
- Auch der Aufruf des Standardkonstruktors erfolgt bei der
Definition eines Objekts:
CKonto konto1;
Tobias Wolf
http://informatik.swoke.de
Seite 4 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Konstruktoren mit einem Parameter
- Hat ein Konstruktor nur einen Parameter, kann die
Initialisierung bei der Definition auch über eine Zuweisung
erfolgen.
- Der Aufruf erfolgt bei folgender Definition:
CKonto konto2("Mueller, Anna");
- Oder bei folgender Definition:
CKonto konto2 = "Mueller, Anna";
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Konstruktoren mit einem Parameter
- Umgekehrt können auch einfache Datentypen (z.B. int)
entsprechend der Konstruktor-Schreibweise initialisiert werden.
- Der Aufruf erfolgt bei folgender Definition:
int x = 4;
- Oder:
int x(4);
Tobias Wolf
http://informatik.swoke.de
// Runde Klammern!
Seite 6 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Konstruktoren mit mehr als einem
Parameter
- Bei der Definition eines Objekts können hinter dem Namen des
Objekts Anfangswerte in Klammern angegeben werden:
CKonto konto4("Maier, Hans", 10002000, 1000.00);
- Der Compiler ordnet dieser Initialisierungsliste einem
Konstruktor mit gleicher Parameterliste zu:
CKonto(string name, int nummer, double stand);
=> Bsp: CGirokonto
Tobias Wolf
http://informatik.swoke.de
Seite 7 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Elementinitialisierer
- Unter Verwendung von Elementinitialisierern kann statt der
bisherigen Schreibweise:
CKonto::CKonto(string name)
{
m_name = name;
}
- die Konstruktordefinition auch wie folgt geschrieben werden:
CKonto::CKonto(string name) : m_name(name)
{
}
Tobias Wolf
http://informatik.swoke.de
Seite 8 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Elementinitialisierer
- Ein Elementinitialisierer wird nach der Parameterklammer der
Konstruktor-Definition durch einen Doppelpunkt eingeleitet.
- Nach dem Doppelpunkt werden die zu initialisierenden
Eigenschaften aufgelistet, wobei die Initialwerte jeder
Eigenschaft in runden Klammern angegeben werden.
Tobias Wolf
http://informatik.swoke.de
Seite 9 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Destruktoren
- Destruktoren werden am Ende des Gültigkeitsbereichs des
Objekts automatisch aufgerufen (z.B. Blockende).
- Bei globalen Objekten werden Destruktoren am Ende von main
aufgerufen.
- Der Name eines Destruktors beginnt mit dem Tilde-Zeichen ~
gefolgt von dem Namen der Klasse.
- Ein Destruktor hat keine Parameter und liefert keinen Wert
zurück. Er darf nicht im private Bereich einer Klasse liegen.
CKonto::~CKonto()
{
}
Tobias Wolf
http://informatik.swoke.de
Seite 10 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Aufruf von externen Funktionen in
Methoden
- Gibt es innerhalb der Klasse keine Methode mit dem gleichen
Namen, erfolgt der Aufruf der Funktion wie gewohnt.
- Gibt es innerhalb der Klasse eine Methode mit dem gleichen
Namen wie die externe Funktion, wird die Klassen-Methode
aufgerufen.
- Um aber beispielsweise eine Funktion der Standardbibliothek
aufzurufen, schreibt man std:: vor den Funktionsnamen.
std::pow(x, y);
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Aufruf von externen Funktionen in
Methoden
- Handelt es sich bei der aufzurufenden Funktion um eine
Funktion, die in keinem Namensbereich liegt z.B. Test(), wird
einfach auf die Angaben des Namensbereichs verzichtet:
z = ::Test();
Tobias Wolf
http://informatik.swoke.de
Seite 12 von 12
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Kapitel 19
Vererbung, UML
Tobias Wolf
http://informatik.swoke.de
Seite 1 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Vererbung
- Neben der Datenabstraktion und der Datenkapselung ist die
Vererbung ein weiteres Merkmal der OOP.
- Durch Vererbung werden die Methoden und die Eigenschaften
einer Klasse (Basisklasse) an eine andere Klasse (abgeleitete
Klasse) vererbt.
- Die abgeleitete Klasse verfügt neben ihren eigenen Methoden
und Eigenschaften auch über die der Basisklasse.
Tobias Wolf
http://informatik.swoke.de
Seite 2 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Vererbung
- Wenn eine Klasse B von einer Klasse A abgeleitet werden soll,
so muss dies wie folgt geschrieben werden:
class B : public A
{
};
- Die Klasse B erbt die hinter dem Doppelpunkt mit public
angegebene Klasse A.
Tobias Wolf
http://informatik.swoke.de
Seite 3 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Vererbung
- Im folgenden Beispiel wird die Klasse CGiroKonto von der
Basisklasse CKonto abgeleitet.
class CGiroKonto : public CKonto
{
…
};
=> Bsp. CGirokonto
Tobias Wolf
http://informatik.swoke.de
Seite 4 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Zugriffsrecht protected
- Bisher haben wir die Zugriffsrechte private und public kennen
gelernt.
- Das Zugriffsrecht protected wird bei der Vererbung wichtig.
- Auf protected Member einer Klasse kann nur von abgeleiteten
Klassen zugegriffen werden.
Tobias Wolf
http://informatik.swoke.de
Seite 5 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Zugriffsrechte auf Basisklassen
- Eine abgeleitete Klasse hat nur Zugriff auf die public und die
protected Member der Basisklasse.
- Sie hat keinen Zugriff auf die private Member.
Tobias Wolf
http://informatik.swoke.de
Seite 6 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Konstruktoren und Destruktoren von
abgeleiteten Klassen
- Für das Anlegen eines Objekts einer abgeleiteten Klasse
(CGiroKonto) ist der Konstruktor der abgeleiteten Klasse
zuständig.
- Da die abgeleitete Klasse alle Eigenschaften der Basisklasse
enthält, sind auch diese mit Anfangswerten zu versorgen.
- Hierfür wird der Konstruktor der Basisklasse (CKonto)
aufgerufen.
- Ist kein Aufruf explizit angegeben, wird implizit der
Standardkonstruktor der Basisklasse (CKonto) aufgerufen.
Tobias Wolf
http://informatik.swoke.de
Seite 7 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Konstruktoren und Destruktoren von
abgeleiteten Klassen
- Vor dem Konstruktor der abgeleiteten Klasse wird der
Konstruktor der Basisklasse aufgerufen.
- Die Aufrufreihenfolge bei den Destruktoren ist umgekehrt:
Zunächst wird der Destruktor der abgeleiteten Klasse und dann
der Destruktor der Basisklasse aufgerufen.
Tobias Wolf
http://informatik.swoke.de
Seite 8 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Konstruktoren und Destruktoren von
abgeleiteten Klassen
- Vor dem Aufruf des Konstruktors:
CGiroKonto(string name, int nummer, double stand,
double dispo, double sollzins);
- Wird der Standardkonstruktor der Basisklasse CKonto:
CKonto::CKonto();
- implizit aufgerufen.
Tobias Wolf
http://informatik.swoke.de
Seite 9 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Basisinitialisierer
- Im Konstruktor werden Zugriffsmethoden (z.B. SetName) der
Klasse CKonto zum Initialisieren der Basisklassen-Eigenschaften
verwendet:
CGiroKonto::CGiroKonto(string name, int nummer, double stand,
double dispo, double sollzins)
{
SetName(name);
SetNummer(nummer);
SetStand(stand);
m_dispo = dispo; m_sollzins = sollzins;
}
Tobias Wolf
http://informatik.swoke.de
Seite 10 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Basisinitialisierer
- Da die Basisklasse CKonto einen Konstruktor mit Parametern
besitzt, kann dieser aufgerufen werden.
- Hierfür verwendet man dann den Basisinitialisierer:
CGiroKonto::CGiroKonto(string name, int nummer, double stand,
double dispo, double sollzins) :
CKonto(name, nummer, stand)
{
m_dispo = dispo; m_sollzins = sollzins;
}
Tobias Wolf
http://informatik.swoke.de
Seite 11 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Basisinitialisierer
- Unter Verwendung von Elementinitialisierern kann man
zusätzlich zum Basisinitialisierer auch schreiben:
CGiroKonto::CGiroKonto(string name, int nummer, double stand,
double dispo, double sollzins) :
CKonto(name, nummer, stand) ,
m_dispo(dispo), m_sollzins(sollzins)
{
}
Tobias Wolf
http://informatik.swoke.de
Seite 12 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Zuweisung zwischen abgeleiteten
Klassen
- Ein Objekt einer abgeleiteten Klasse (CGiroKonto) kann wie ein
Objekt der Basisklasse (CKonto) verwendet werden.
CKonto konto;
CGiroKonto giroKonto("Maier, Wilhelm", 47114711, 0.00, 1000.00, 14.24);
giroKonto.Ausgabe();
cout << endl;
konto = giroKonto;
konto.Ausgabe();
cout << endl;
Tobias Wolf
http://informatik.swoke.de
Seite 13 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Zuweisung zwischen abgeleiteten
Klassen
- Alle Eigenschaften des Objekts konto erhalten die Werte der
Eigenschaften des Objekts giroKonto.
- Eine Umkehrung der Zuweisung ist nicht möglich.
Tobias Wolf
http://informatik.swoke.de
Seite 14 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Mehrfache Vererbung
- Es ist möglich, dass eine Klasse mehrere Basisklassen hat, also
von mehreren Klassen abgeleitet wird.
- Im folgenden Beispiel wird die Klasse CPlusKonto von den
CSparKonto und CGiroKonto abgeleitet.
class CPlusKonto : public CSparKonto, public CGiroKonto
{
…
}
Tobias Wolf
http://informatik.swoke.de
Seite 15 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Mehrere gleiche Basisklassen
- Im obigen Beispiel haben die beiden Basisklassen CSparKonto
und CGiroKonto jeweils die gleiche Basisklasse CKonto. Man
spricht dann von einer mehrfach indirekten Basisklasse.
- Hierdurch entstehen Mehrdeutigkeiten. Sowohl CSparKonto als
auch CGiroKonto besitzen eine Methode SetName().
- Diese Mehrdeutigkeiten können unter Verwendung des
Gültigkeitsbereichsoperators :: aufgelöst werden.
Tobias Wolf
http://informatik.swoke.de
Seite 16 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Virtuelle Basisklassen
- Das mehrfache Vorkommen der indirekten Basisklasse CKonto
kann mit Verwendung virtueller Basisklassen vermieden
werden.
class CGiroKonto : public virtual CKonto
class CSparKonto : public virtual CKonto
- Durch das Schlüsselwort virtual wird erreicht, dass ein Objekt
einer mehrfach abgeleiteten Klasse die Elemente einer
virtuellen Basisklasse (CKonto) nur einmal enthält.
Tobias Wolf
http://informatik.swoke.de
Seite 17 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
Unified Modeling Language (UML)
- UML ist eine Sprache und Notation zur Spezifikation,
Konstruktion, Visualisierung und Dokumentation von Modellen
für Softwaresysteme.
- Sie wird häufig in der objektorientierten Softwareentwicklung
eingesetzt.
- In UML ist eine Vielzahl unterschiedlicher Diagrammtypen
definiert.
- Im Folgenden wird auf die Klassendiagramme eingegangen.
Tobias Wolf
http://informatik.swoke.de
Seite 18 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
UML Klassendiagramme
- Eine Klasse wird durch ein Rechteck dargestellt.
- Dieses Rechteck wird mit horizontalen Linien in drei Rubriken
unterteilt: Klassenname, Eigenschaften und Methoden.
- Neben dem Namen der Eigenschaften, können noch Angaben
zu ihrem Typ und einem Initialwert gemacht werden.
- Neben dem Namen der Methoden, können zusätzlich die
Parameter mit ihrem Typ angegeben werden.
Tobias Wolf
http://informatik.swoke.de
Seite 19 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
UML Klassendiagramme
- Die Klassen-Zugriffsrechte private, public und protected werden
durch Voranstellen von -, + und # dargestellt:
CPerson
-m_vorname:string
-m_nachname:string
+SetVorname(string):void
+GetVorname():string
+SetNachname(string):void
+GetNachname():string
+Ausgabe():void
+Eingabe():void
Tobias Wolf
http://informatik.swoke.de
Seite 20 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
UML Klassendiagramme, Vererbung
- Eine Vererbungsbeziehung wird durch einen nicht ausgefüllten
Pfeil dargestellt.
- Der Pfeil zeigt immer auf die Basisklasse.
Tobias Wolf
http://informatik.swoke.de
Seite 21 von 22
Informatik
Wintersemester
Maschinenbau und Kunststofftechnik
UML Klassendiagramme, Vererbung
Tobias Wolf
http://informatik.swoke.de
Seite 22 von 22
Herunterladen