Prozedurale Programmierung - Wirtschaftsinformatik

Werbung
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Aufbau betrieblicher Informationssyteme
0 Einleitung
1 Gegenstand und Ziele
2 Entwicklung von Software: Prozedurale Programmierung
3 Software Engineering
4 Objektorientierte Systementwicklung
5 Entwicklung prozessorientierter Anwendungssysteme
Folie 21
Okt-09
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
2 Entwicklung von Software:
Prozedurale Programmierung
2 1 Gegenstand und Ziele der Programmierung
2.1
2.2 Historische Entwicklung der Programmierung
2.3 Grundprinzipien der Programmierung
2.4 Programmstrukturen (Algorithmen)
2.5 Datenstrukturen
2.6 Übung Programmierung (Beispiele)
Folie 22
Okt-09
Ruhr-Universität Bochum
1
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Programm
Eine zur Lösung einer Aufgabe vollständige Anweisung
an einem Automaten (Rechner) zusammen mit allen
erforderlichen Vereinbarungen heißt PROGRAMM.
Ein Programm setzt sich aus Befehlen zusammen, die
von der Zentraleinheit in logischer Reihenfolge
abgearbeitet werden.
Der Vorgang der Erstellung einer derartigen Anweisung
heißt PROGRAMMIEREN.
Folie 23
Okt-09
2.1 Gegenstand und Ziele der Programmierung
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Programmiersprachen
Eine PROGRAMMIERSPRACHE ist eine künstliche
Sprache zum Abfassen von Computerprogrammen
(DIN 44300).
Programmiersprachen sollen es ermöglichen, den
Lösungsweg (Algorithmus) für eine spezielle
Problemstellung in einer der Maschine verständlichen
Sprache zu formulieren.
Folie 24
Okt-09
2.1 Gegenstand und Ziele der Programmierung
Ruhr-Universität Bochum
2
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Software
g von PROGRAMMEN,, zugehörigen
g
g DATEN
Die Menge
und notwendigen DOKUMENTATIONEN, die
zusammengefasst erlauben, mit Hilfe eines Computers
Aufgaben zu erledigen, nennt man SOFTWARE.
Software-Engineering/Software-Technik:
Zielorientierte Bereitstellung und systematische
Verwendung von Prinzipien, Methoden und
Werkzeugen für die arbeitsteilige, ingenieurmäßige
Entwicklung und Anwendung von umfangreichen
Software-Systemen. (Balzert, 2000)
Folie 25
Okt-09
Ruhr-Universität Bochum
2.1 Gegenstand und Ziele der Programmierung
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Softwareschichten
Benutzer
Benutzeroberfläche
Benutzer
Anwendungssoftware
Kommunikation
DBMS
Branchen-
Dienstprogramme
CASE
Betriebssystem
Assembler
Interpreter
orient.
Compiler
Individuell entwickelte
Programme
Benutzer
Folie 26
Okt-09
2.1 Gegenstand und Ziele der Programmierung
Benutzer
Ruhr-Universität Bochum
3
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
2 Entwicklung von Software:
Prozedurale Programmierung
2 1 Gegenstand und Ziele der Programmierung
2.1
2.2 Historische Entwicklung der Programmierung
2.3 Grundprinzipien der Programmierung
2.4 Programmstrukturen (Algorithmen)
2.5 Datenstrukturen
2.6 Übung Programmierung (Beispiele)
Folie 27
Ruhr-Universität Bochum
Okt-09
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Sprachgenerationen
Maschinensprache
Sprachen der ersten Generation:
MASCHINENSPRACHEN
Sprachen der zweiten Generation:
ASSEMBLERSPRACHEN
Assemblersprachen
Sprachen der dritten Generation:
HÖHERE PROGRAMMIERSPRACHEN
Höhere Programmiersprachen
Sprachen der vierten Generation:
4GL-Systeme
4GL-SYSTEME
Alternative Sprachrichtungen
Alt
Alternative
ti Sprachrichtungen:
S
h i ht
9 SPRACHEN DER KÜNSTLICHEN INTELLIGENZ
(Sprachen der fünften Generation)
9 OBJEKTORIENTIERTE
PROGRAMMIERSPRACHEN
9 VISUELLE PROGRAMMIERSPRACHEN
Folie 28
Okt-09
2.2 Historische Entwicklung der Programmierung
Ruhr-Universität Bochum
4
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Sprachgenerationen
Maschinensprache
Sprachen der ersten Generation:
MASCHINENSPRACHEN
Sprachen der zweiten Generation:
ASSEMBLERSPRACHEN
Assemblersprachen
Sprachen der dritten Generation:
HÖHERE PROGRAMMIERSPRACHEN
Höhere Programmiersprachen
Sprachen der vierten Generation:
4GL-Systeme
4GL-SYSTEME
Alternative Sprachrichtungen
Alt
ti Sprachrichtungen:
S
h i ht
Alternative
9 SPRACHEN DER KÜNSTLICHEN INTELLIGENZ
(Sprachen der fünften Generation)
9 OBJEKTORIENTIERTE
PROGRAMMIERSPRACHEN
9 VISUELLE PROGRAMMIERSPRACHEN
Folie 29
Okt-09
2.2 Historische Entwicklung der Programmierung
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Sprachgenerationen
Maschinensprache
Sprachen der ersten Generation:
MASCHINENSPRACHEN
Sprachen der zweiten Generation:
ASSEMBLERSPRACHEN
Assemblersprachen
Sprachen der dritten Generation:
HÖHERE PROGRAMMIERSPRACHEN
Höhere Programmiersprachen
Sprachen der vierten Generation:
4GL-Systeme
4GL-SYSTEME
Alternative Sprachrichtungen
Alt
Alternative
ti Sprachrichtungen:
S
h i ht
9 SPRACHEN DER KÜNSTLICHEN INTELLIGENZ
(Sprachen der fünften Generation)
9 OBJEKTORIENTIERTE
PROGRAMMIERSPRACHEN
9 VISUELLE PROGRAMMIERSPRACHEN
Folie 30
Okt-09
2.2 Historische Entwicklung der Programmierung
Ruhr-Universität Bochum
5
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Sprachgenerationen
Maschinensprache
Sprachen der ersten Generation:
MASCHINENSPRACHEN
Sprachen der zweiten Generation:
ASSEMBLERSPRACHEN
Assemblersprachen
Sprachen der dritten Generation:
HÖHERE PROGRAMMIERSPRACHEN
Höhere Programmiersprachen
Sprachen der vierten Generation:
4GL-Systeme
4GL-SYSTEME
Alternative Sprachrichtungen
Alt
ti Sprachrichtungen:
S
h i ht
Alternative
9 SPRACHEN DER KÜNSTLICHEN INTELLIGENZ
(Sprachen der fünften Generation)
9 OBJEKTORIENTIERTE
PROGRAMMIERSPRACHEN
9 VISUELLE PROGRAMMIERSPRACHEN
Folie 31
Okt-09
2.2 Historische Entwicklung der Programmierung
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Übersetzungsprogramm
QUELLCODE:
PROGRAM test;
BEGIN
WriteLN (´Hallo!´);
...
ÜBERSETZUNGSPROGRAMM
(Assemblierer,
Compiler, Interpreter)
OBJEKTCODE:
0101000100111
0110010011111
1110110001100
1101000011011
1100011...
Hallo!
Folie 32
Okt-09
2.2 Historische Entwicklung der Programmierung
Ruhr-Universität Bochum
6
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Sprachgenerationen
Maschinensprache
Sprachen der ersten Generation:
MASCHINENSPRACHEN
Sprachen der zweiten Generation:
ASSEMBLERSPRACHEN
Assemblersprachen
Sprachen der dritten Generation:
HÖHERE PROGRAMMIERSPRACHEN
Höhere Programmiersprachen
Sprachen der vierten Generation:
4GL-Systeme
4GL-SYSTEME
Alternative Sprachrichtungen
Alt
ti Sprachrichtungen:
S
h i ht
Alternative
9 SPRACHEN DER KÜNSTLICHEN INTELLIGENZ
(Sprachen der fünften Generation)
9 OBJEKTORIENTIERTE
PROGRAMMIERSPRACHEN
9 VISUELLE PROGRAMMIERSPRACHEN
Folie 33
Okt-09
2.2 Historische Entwicklung der Programmierung
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Programmiersprachenstammbaum
Folie 34
Okt-09
2.2 Historische Entwicklung der Programmierung
Ruhr-Universität Bochum
7
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Ära der Programmiersprachen
Folie 35
Okt-09
2.2 Historische Entwicklung der Programmierung
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Gefragte Softwaretechnologien
bei den IT-Kernberufen
Softwareentwicklung /
g
g
Programmierung
IT-Organisation / IT-Projekte
Netzwerke / Betriebssysteme
Service / Support
Datenbanken
[CDI, Sept 2001]
Folie 36
Okt-09
2.2 Historische Entwicklung der Programmierung
Ruhr-Universität Bochum
8
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Gefragte Softwaretechnologien
bei den IT-Mischberufen
Multimedia
E
Business / E-Commerce
E Commerce
E-Business
SAP
CAD
Kaufmännische
Sachbearbeitung
[CDI, Sept 2001]
Folie 37
Okt-09
2.2 Historische Entwicklung der Programmierung
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
2 Entwicklung von Software:
Prozedurale Programmierung
2 1 Gegenstand und Ziele der Programmierung
2.1
2.2 Historische Entwicklung der Programmierung
2.3 Grundprinzipien der Programmierung
2.4 Programmstrukturen (Algorithmen)
2.5 Datenstrukturen
2.6 Übung Programmierung (Beispiele)
Folie 38
Okt-09
Ruhr-Universität Bochum
9
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Motivation ...
Folie 39
Ruhr-Universität Bochum
2.3 Grundprinzipien der Programmierung
Okt-09
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Vorgehensweise
Aufteilung in einzelne Arbeitsschritte
Methode der schrittweisen Verfeinerung
g ((Top-Down-Strategie)
g )
Programmiersprac
chen-
unabhäng
gig
ProblemProblemaufbereitung
• Algorithmus in einer graphikorientierten
ProblemstrukProblemstrukBeschreibungssprache (Struktogramm)
turierung
• jeder
j d Programmablauf
P
bl f basiert
b i t auff wenigen
i
Grundstrukturen (Sequenz, Auswahl, Wiederholung)
ProgrammProgrammerstellung
Folie 40
Okt-09
• Definition der Aufgabe
• Festlegen der Programmstruktur nach dem
EVA-Prinzip:
EINGABE - VERARBEITUNG - AUSGABE
• Formulierung in einer höheren Programmiersprache
• Übersetzen des Quellcodes in Maschinensprache
durch den Compiler
• Fehlerbeseitigung und Programmtest
2.3 Grundprinzipien der Programmierung
Ruhr-Universität Bochum
10
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Betrachtungsebenen und Vorgehensweise
Betriebswirtschaftliche
Problemstellung
Fachkonzept
Systemkonzept
Implementierung
Informationstechnik
Folie 41
Okt-09
2.3 Grundprinzipien der Programmierung
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Prinzipien der Softwareentwicklung
System
9 Ist ein Ausschnitt aus der realen oder
gedanklichen Welt, bestehend aus
Systemkomponenten bzw. Subsystemen, die
untereinander in verschiedenen Beziehungen
stehen
9 Systeme können in allgemeiner Form durch
Graphen dargestellt werden
• Systemkomponenten bzw. Subsysteme = (markierte)
Knoten(punkte)
• Beziehungen (Relationen) = verbindende (benannte)
Linien (Kanten).
Folie 42
Okt-09
2.3 Grundprinzipien der Programmierung
Ruhr-Universität Bochum
11
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Grundprinzipien der Programmierung
Abstraktion
St kt i
Strukturierung
Hierarchisierung
Modularisierung
Lokalität
Mehrfachverwendung
Standardisierung
Integrierte Dokumentation
Konstruktive Voraussicht und methodische Restriktion
a
a
b
b
Folie 43
Okt-09
a setz b voraus
a entsteht aus b
a
b
a steht in Wechselwirkung mit b
2.3 Grundprinzipien der Programmierung
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
2 Entwicklung von Software:
Prozedurale Programmierung
2 1 Gegenstand und Ziele der Programmierung
2.1
2.2 Historische Entwicklung der Programmierung
2.3 Grundprinzipien der Programmierung
2.4 Programmstrukturen (Algorithmen)
2.5 Datenstrukturen
2.6 Übung Programmierung (Beispiele)
Folie 44
Okt-09
Ruhr-Universität Bochum
12
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Ziele der
strukturierten Programmierung
Unterstützung einer
methodischen
Vorgehensweise
th di h V
h
i
beim Programmentwurf
lineare Form des Programmcodes
ohne unbedingte Sprünge
(kein “ Spaghetticode”)
Ergebnis sind
hierarchisch gegliederte Programmstrukturen
Steigerung der Lesbarkeit/Übersichtlichkeit
Steigerung der Zuverlässigkeit
Verbesserung der Wartung und Pflege
Folie 45
Okt-09
2.4 Programmstrukturen (Algorithmen)
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Prinzipien der
strukturierten Programmierung
Prinzip der schrittweisen Verfeinerung (Top-DownStrategie):
Strukturierung des Programms durch
verschiedene Abstraktionsebenen
Prinzip der Modularisierung:
Gesamtaufgabe wird solange weiter in logisch
zusammenhängende Teilaufgaben zerlegt,
bis kleine überschaubare Einheiten (Module)
entstehen (Top
(Top-Down-Methode)
Down Methode)
Prinzip der linearen Kontrollstrukturen:
Jeder Programmablauf ist auf die Grundstrukturen
9 Sequenz,
9 Auswahl und
9 Wiederholung
zurückzuführen, die linear geordnet sind.
Folie 46
Okt-09
2.4 Programmstrukturen (Algorithmen)
Ruhr-Universität Bochum
13
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Struktogrammtechnik
Einsatz in der Phase der Problemstrukturierung
Struktogramm-Notation wurde 1973 von Nassi und Shneiderman
entwickelt (Nassi-Shneiderman-Diagramme)
jeder Strukturblock ist ein Rechteck, mit einem Eingang (obere
Kante und einem Ausgang (untere Kante)
Zwang zur STRUKTURIERTEN PROGRAMMIERUNG, da keine
Sprunganweisungen abzubilden sind
jeder Programmablauf basiert auf wenigen Grundstrukturen:
Sequenz
Folie 47
Wiederholung
Auswahl
Ruhr-Universität Bochum
2.4 Programmstrukturen (Algorithmen)
Okt-09
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Repräsentationsformen der Grundstrukturen prozeduraler Programmierg.
Mehrfach
Auswahl
Aus
swahl (einund zweiseitig)
Sequenz
Pseudo-Code
Folie 48
Okt-09
Programmablaufplan
Struktogramm
-
Anweisung 1;
Anweisung 1;
Anweisung 2;
Anweisung 3;
Anweisung 1;
Anweisung 2;
Anweisung 2;
Anweisung 3;
Anweisung 3;
Ausdruck
if
Ausdruck
then
Ja-Anweisung (;
else
Nein-Anweisung)
end if;
case Ausdruck is
when
Fall1 -> Anweisung 1;
when
Fall2 -> Anweisung 2;
...;
when
Sonst -> Anweisung n;
end case ;
Ausdruck
JaAnweisung
(NeinAnweisung)
Wahr
Falsch
JaA
Anweisung
i
(NeinA
Anweisung)
i
)
Ausdruck
Ausdruck
Fall 1
2.4 Programmstrukturen (Algorithmen)
Anw .
1
Fall 2
Anw .
2
...
Sonst
Fall 1
Fall 2
...
Anw .
n
Anw .
1
Anw .
2
...
...
Sonst
Anw .
n
Ruhr-Universität Bochum
14
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Repräsentationsformen der Grundstrukturen prozeduraler Programmierg.
Schleife mit
fester Anzahl
Durchläufe
Schleife mit Schleife mit
Be
edingung Bedingung
iim Fuß
im Kopf
Pseudo-Code
Folie 49
Okt-09
while Ausdruck
loop
Wiederholungsanweisung
end loop ;
Programmablaufplan
Struktogramm
-
Schleife 1
Ausdruck
Ausdruck
WiederholungsAnweisung
Anweisung
Ende
Schleife 1
Schleife 2
loop
Wiederholungsanweisung
exit when Ausdruck;
end loop
p;
WiederholungsAnweisung
Anweisung
Ausdruck
Ausdruck Ende
Schleife 2
for Zähler in Bereich
loop
Wiederholungsanweisung
end loop ;
Schleife 3
AW; EW; SW
für
Anweisung
Ende
Schleife 3
Zähler := Anfangswert
to Endwert
WiederholungsAnweisung
AW = Anfangswert,
EW = Endwert, SW= Schrittweite
2.4 Programmstrukturen (Algorithmen)
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
2 Entwicklung von Software:
Prozedurale Programmierung
2 1 Gegenstand und Ziele der Programmierung
2.1
2.2 Historische Entwicklung der Programmierung
2.3 Grundprinzipien der Programmierung
2.4 Programmstrukturen (Algorithmen)
2.5 Datenstrukturen
2.6 Übung Programmierung (Beispiele)
Folie 50
Okt-09
Ruhr-Universität Bochum
15
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Datentypen - Systematisierung
(Zusammensetzung)
Ein Datentyp
9 legt eine Menge von Werten (Wertebereich) sowie
9 eine Sammlung von darauf zugeschnittenen Operationen fest.
Klassifikationskriterium:
Zusammensetzung
Datentypen
unstrukturierte (einfache)
Datentypen
Aufzählungstypen
String
Array
Teilbereichstypen
Record
Set
Standardtypen
Folie 51
Okt-09
strukturierte (zusammengesetzte)
Datentypen
Integer
Boolean
Char
Real
ordinale/abzählbare Datentypen: bilden eine geordnete Menge,
bei der jedem möglichen Wert eine ganzzahlige Ordinalzahl
zugeordnet wird
Standardfunktionen:
Ord (x)
(Ordinalzahl)
Pred (x) (Predecessor:Vorgänger)
Succ (x) (Successor: Nachfolger)
Ruhr-Universität Bochum
2.5 Datenstrukturen
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Datentypen - Systematisierung
(Speicherverwaltung)
Klassifikationskriterium:
Speicherverwaltung
Datentypen
statische Datentypen
unstrukturierte
Datentypen
strukturierte
Datentypen
dynamische Datentypen
File
Pointer
Dynamische Variablen erhalten ihren Speicherplatz nicht zur
Übersetzungszeit, sondern erst zur Laufzeit.
Das Ziel dynamischer Datentypen ist, keinen Speicherplatz bei
einer unbekannten Zahl von zu speichernden Datenobjekten zu
verschwenden.
Folie 52
Okt-09
2.5 Datenstrukturen
Ruhr-Universität Bochum
16
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
2 Entwicklung von Software:
Prozedurale Programmierung
2 1 Gegenstand und Ziele der Programmierung
2.1
2.2 Historische Entwicklung der Programmierung
2.3 Grundprinzipien der Programmierung
2.4 Programmstrukturen (Algorithmen)
2.5 Datenstrukturen
2.6 Übung Programmierung (Beispiele)
Folie 53
Ruhr-Universität Bochum
Okt-09
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Datentyp Array - Eigenschaften
Besteht aus einer festgelegten Anzahl geordneter
K
t
Komponenten
Komponenten haben alle den gleichen Datentyp
eine oder mehrere Dimensionen
Zugriff auf einzelne Komponenten über Index
Index muss ordinalen Typs sein
Folie 54
Okt-09
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
17
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Datentyp Array - Syntax
ARRAY
[
K
Konstante
t t
K
Konstante
t t
..
]
,
OF
Folie 55
Okt-09
Typ
2.6 Übung Programmierung (Beispiele)
;
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Beispielprogramm: Matrix
PROGRAM zweidimensionale_arrays; USES Wincrt;
VAR zeile, spalte : Integer; matrix : ARRAY [1..3, 1..3] OF Integer;
BEGIN
Writeln ('Füllen der Matrix mit Werten:');
FOR zeile := 1 TO 3 DO
FOR spalte := 1 TO 3 DO
BEGIN
Write ('Wert für das Feld (', zeile,',', spalte,')
eingeben:');
Readln (matrix [zeile, spalte])
END;
Writeln ('Ausgabe der Matrix:');
FOR zeile := 1 TO 3 DO
BEGIN
FOR spalte := 1 TO 3 DO
Write (matrix [zeile, spalte], ' ');
Writeln
END
END.
Folie 56
Okt-09
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
18
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Datentyp SET
Definition von Mengen
SET
OF
Ordinaltyp
Operationen mit Mengen
Stufe
Operator Operandentyp Ergebnistyp
1
Bedeutung
*
Menge
Menge
Schnittmenge
+
Menge
Menge
Vereinigungsmenge
2
-
Menge
Menge
Mengendifferenz
=
Menge
Boolean
Test auf Gleicheit
<>
Menge
Boolean
Test auf
Ungleichheit
>=
Menge
Boolean
<=
Menge
Boolean
in
Links: Ausdruck
Rechts: Menge
Boolean
Test auf Teilmenge
3
Test auf Teilmenge
Folie 57
Okt-09
Test auf Mengenzugehörigkeit
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Beispiel SET
TYPE
farbe
vektor
index
= (gruen, rot, gelb, schwarz);
= ARRAY [farbe] OF real;
= 1..10;
VAR
m1,m2,m3
: SET OF farbe;
f1,f2
: farbe;
v1
: vektor;
t1
: ARRAY [index] OF vektor;
n
: integer;
x
: real;
b
: boolean;
Die Variablen werden mit folgenden Werten belegt:
m1 := [gruen, rot];
m2 := [rot, gelb, schwarz];
f1 := rot;
FOR f2 := gruen TO schwarz DO
v1[f2] := ORD (f2);
FOR n := 1 TO 10 DO
IF n = 1
THEN FOR f2 := gruen TO schwarz DO
t1 [n,f2] := 1.0
ELSE
BEGIN
t1[n,gruen]
:= t1[n-1,gruen] + 1;
t1[n,rot]
:= t1[n,gruen] * t1[n,gruen];
t1[n,gelb]
:= t1[n,rot] * t1[n,gruen];
t1[n,schwarz]
:= Sqrt(t1[n,gruen])
END;
Folie 58
Okt-09
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
19
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Geben Sie nun für jede Wertzuweisung an, welchen Wert
die Variable nach der Wertzuweisung annimmt:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11
11.
12.
13.
14.
15.
Folie 59
Okt-09
b
b
m3
m3
b
f2
f2
n
x
x
x
m3
b
n
x
:= m1 <= m2;
:= m1 >= m2;;
:= m1 - m2;
:= m1 + m2;
:= f1 IN m1;
:= succ(f1);
:= pred(f1);
:= ord(f1);
:= t1[5,rot];
:= t1[trunc(t1[4,gruen]),schwarz];
:= t1[Sqr(3),pred(gelb)];
t1[S (3)
d( lb)]
:= m1 m2 - m1;
:= 7/2 = 7 DIV 2;
:= ord(schwarz) DIV ord(gelb) + succ(2) MOD pred(3);
:= v1[gruen] * v1[succ(gruen)] v1[succ(gruen)];
Ruhr-Universität Bochum
2.6 Übung Programmierung (Beispiele)
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Datentyp RECORD - Syntax
Ein Record enthält verschiedene Komponenten oder Felder, die
aus verschiedenen Typen bestehen können
können.
;
RECORD
Feldname
:
Typangabe
END
,
VAR datensatz = RECORD
name, vorname : string[30];
END;
Folie 60
Okt-09
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
20
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Datentyp RECORD - Beispiel
Variablenname
datensatz
Typangabe
RECORD vorname
: string[20];
nachname
: string[15];
wohnort
: string[15];
alter
: integer;
END;
Wert
'Klaus'
'Klein'
'Herne'
21
Recordkomponente (Felder)
Folie 61
Okt-09
Ruhr-Universität Bochum
2.6 Übung Programmierung (Beispiele)
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Datentyp RECORD - Beispiel
PROGRAM beispiel_III;
TYPE datumstyp = RECORD
tag
:
monat :
jahr :
END;
1..31;
1..12;
0..99
VAR datensatz: RECORD
vorname : String[10];
nachname : String[15];
geburt
: datumstyp
END;
Folie 62
Okt-09
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
21
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Sortieren
Prozess des Anordnens einer gegebenen Menge von
Objekten
bestimmten
Obj kt in
i einer
i
b
ti
t Ordnung
Od
Sortierverfahren
9 Sortieren von ARRAYS
• (internes Sortieren)
9 Sortieren von sequentiellen FILES
• (externes Sortieren)
Folie 63
Okt-09
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Sortieren von ARRAYS
Grundlegende Sortierverfahren
9 Sortieren durch Einfügen (insertion)
•
•
- direktes Einfügen
- binäres Einfügen
9 Sortieren durch Auswählen (selection)
•
direkte Auswahl
9 Sortieren durch Austauschen (exchange)
•
•
Folie 64
Okt-09
direktes Austauschen (bubblesort)
shakersort
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
22
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Effizienz eines Sortierverfahrens
Messbarkeit der Effizienz anhand des Zeitaufwandes
Relevante Größen:
9
9
Anzahl C der erforderlichen Schlüsselvergleiche
Anzahl M der Bewegungen (Umstellungen) der Elemente
Komplexität des Sortierverfahrens:
9 c̄ worst-case
c best-case
9_
9 c~ average-case
Umfangreiche Datenbestände (n)
9
9
gute Sortieralgorithmen (c~ = n*log(n))
Komplexe, aufwendige Programme _
Geringe Datenbestände
9
9
Folie 65
Okt-09
Einfache Sortieralgorithmen (c~ = n²)
Kleine, übersichtliche Programme
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Höhere Sortiermethoden
Ei fü
Einfügen
9 Shell sort
Auswählen
9 Heapsort
Austauschen
9 Quick sort
Folie 66
Okt-09
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
23
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Direktes Einfügen
FOR i:=2 TO n DO
x:= a[i]
a[0]:=x
j:=i-1
WHILE x < a[j] DO
a[j+1]:=a[j]
j:=j-1
a[j+1]:=x
Folie 67
Okt-09
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Direktes Auswählen
FOR i:= 1 TO n-1 DO
k:=i
x:=a[i]
FOR j:=i+1 TO n DO
IF a[j]<x
THEN
j
k:=j
x:a[j]
a[k]:=a[i]
a[i]:=x
Folie 68
Okt-09
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
24
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Datentypen - Systematisierung
(Speicherverwaltung)
Klassifikationskriterium:
Speicherverwaltung
Datentypen
statische Datentypen
unstrukturierte
Datentypen
dynamische Datentypen
strukturierte
Datentypen
File
Pointer
Dynamische Variablen erhalten ihren Speicherplatz nicht zur
Übersetzungszeit, sondern erst zur Laufzeit.
Das Ziel dynamischer Datentypen ist, keinen Speicherplatz bei
einer unbekannten Zahl von zu speichernden Datenobjekten zu
verschwenden.
Folie 69
Okt-09
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Zeiger (1)
Der Datentyp Zeiger (Pointer) ist ein einfacher Datentyp
(wie Integer, Char, Real, Boolean etc.)
Ein Zeiger zeigt auf ein Objekt
Deklaration:
TYPE zeiger = ^Objekt; (z.B.: zeiger =
^real;)
VAR a, b : zeiger;
Nach der Deklaration verfügt der Zeiger über einen
undefinierten
d fi i t Zustand.
Z t d Er
E zeigt
i t auff gar nichts.
i ht
Damit der Zustand auf „nichts“ zu zeigen definiert ist, gibt
es die Konstante Nil.
a := Nil;
b
a
Nil
Nil
b := Nil;
Folie 70
Okt-09
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
25
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Zeiger (2)
Damit der Zeiger auf eine bestimmte Speicherstelle
(Variable)
diese mitit d
der P
Prozedur
(V i bl ) zeigen
i
kkann, muss di
d
New(<zeiger>) erzeugt werden.
New(a);
New(b);
erzeugt Variablen mit dem Namen
a^ und b^.
a
Folie 71
Okt-09
a^
b
b^
Ruhr-Universität Bochum
2.6 Übung Programmierung (Beispiele)
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Zeiger (3)
Wertzuweisung
^ := 0.16;
0 16
a^
b^ := 3.14;
a := b;
a^ := b^;
Folie 72
Okt-09
2.6 Übung Programmierung (Beispiele)
a
0 16 aa^
0.16
b
3.14 b^
a
0.16 a^
b
3.14 b^
a
3.14 a^
b
3.14 b^
Ruhr-Universität Bochum
26
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Lineare Listen (1)
Eine Liste stellt eine Reihung gleichartiger Elemente dar
Im Gegensatz zum Array (eindimensionales Feld) ist eine
Liste dynamisch, so dass die Anzahl der Elemente zur
Laufzeit verändert werden kann
Ein Element einer Liste besitzt zwei Bestandteile
9 Einen Zeiger auf ein anderes Element
9 Den Dateninhalt
Folie 73
Okt-09
Ruhr-Universität Bochum
2.6 Übung Programmierung (Beispiele)
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Lineare Listen (2)
Einfache lineare Listen enthalten folgende Elemente
9 Einen Startpunkt der „Wurzel“ genannt wird
9 Die Elemente der Liste mit dem Dateninhalt und einem Zeiger,
der auf das nächste Element zeigt
9 Einen Endpunkt „Nil“
Wurzel
Nil
Hans
Folie 74
Okt-09
Peter
2.6 Übung Programmierung (Beispiele)
Uwe
Jörg
Ruhr-Universität Bochum
27
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Lineare Listen (3)
Deklaration der Elemente einer Liste:
TYPE zeiger = ^element
element;
element = RECORD
naechster : zeiger;
daten
: String
END;
VAR wurzel, z : zeiger;
BEGIN
New(z);
Nil
Wurzel
Zeiger, der auf
nichts zeigt
z
Folie 75
Okt-09
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Lineare Listen (4)
1. z^.daten := "Jörg";
Nil
Wurzel
z
Jörg
2. z^.naechster := wurzel;
Nil
Wurzel
z
Jörg
Folie 76
Okt-09
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
28
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Lineare Listen (5)
3. Wurzel := z;
Nil
Wurzel
z
Jörg
4. New(z);
Nil
Wurzel
z
Jörg
Folie 77
Okt-09
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Lineare Listen (6)
Programm zur Erstellung einer Liste
PROGRAM Liste1;
TYPE zeiger = ^element;
element = RECORD
naechster : zeiger;
daten : String
END;
VAR wurzel, z : zeiger;
BEGIN
wurzel := Nil;
REPEAT
New(z);
Readln(z^.daten);
z^.naechster := wurzel;
wurzel := z
UNTIL z^.daten = "0"
END.
Folie 78
Okt-09
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
29
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Arten linearer Listen (1)
Zyklische Listen
Zeigerteil des letzen Listenelementes enthält die Adresse des
ersten Listenelementes statt Nil
Wurzel
Hans
Folie 79
Peter
Uwe
Ruhr-Universität Bochum
2.6 Übung Programmierung (Beispiele)
Okt-09
Jörg
Lehrstuhl für Wirtschaftsinformatik
Prof. Dr. Roland Gabriel
Arten linearer Listen (2)
Doppelt verkettete Listen
Listenelemente besitzen zwei Zeigerteile
Zeigerteile, einer zeigt auf das
nachfolgende und einer auf das vorherige Listenelement
Wurzel
Nil
Hans
Peter
Uwe
Jörg
Nil
Folie 80
Okt-09
2.6 Übung Programmierung (Beispiele)
Ruhr-Universität Bochum
30
Herunterladen