Sie sind auf Seite 1von 30

WIRTSCHAFTSWISSENSCHAFT

EN
Professur für Information Systems
Engineering

Prof. Dr. Roland Holten


www.ise.wiwi.uni-frankfurt.de

Lernziele Kapitel 3 – Algorithmen, Struktogramme


und Programme

Sie lernen in diesem Kapitel,

 den Begriff Algorithmus kennen


 mit welchen Kontrollstrukturen Algorithmen formuliert werden
 Pseudo-Code und Struktogramme zur Darstellung von Algorithmen
kennen
 wie Kontrollstrukturen in Python umgesetzt werden
 wie mit Python aus einer Liste von Netto-Rechnungsposten eine
Brutto-Gesamtrechnungssumme berechnet werden kann

Campus Westend  Theodor-W.-Adorno-Platz 2, RuW-Gebäude, R. 2.219  D-60629 Frankfurt am Main


Information Systems Engineering
Prof. Dr. Roland Holten

3 Algorithmen, Struktogramme
und Programme
Gliederung der Vorlesung
Themenblöcke und Kapitel

I. Betriebliche Aufgaben und Prozesse


1. Betriebliche Aufgaben und Anwendungssysteme
2. Das klassische Bestellmodell
3. Algorithmen, Struktogramme und Programme
4. Koordination Betrieblicher Aufgaben und MRP II-Systeme
5. Modellierung Betrieblicher Prozesse mit BPMN

II. IT-Einsatz zur Integration Betrieblicher Prozesse


6. Datenintegration und Relationale Datenbanken
7. Datenmodellierung mit dem Entity-Relationship-Modell
8. Prozessintegration – Enterprise Systems & SAP

III. Verbesserung Betrieblicher Prozesse


9. Prozessqualität und ihre Messung
10. Determinanten von Durchlaufzeiten
11. Management von Kapazitäten und Engpässen
12. E-Commerce und Sozio-Technische Systeme

© Professur für Information Systems Engineering, Prof. Dr. Holten 3-2


Fallstudie: Leiner Health
KRISE!

Schwachstelle: Rechnungsstellung / verfügbare Finanzen

• Konditionen: Variierende Preise,


Werbeaktionen, Sonderangebote
zu unterschiedlichen Zeiten

• Keine Rechnungsprüfung durch Marketing / Vertrieb

• Fehlerhafte Rechnungen durch Buchhaltung gestellt

• Bearbeitung von Reklamationen langsam und Papier-basiert

• Rechnungen bis zu 90 Tage unbezahlt


 Verlust von 17 Mio. USD pro Jahr

© Professur für Information Systems Engineering, Prof. Dr. Holten 3-3


Fallstudie: Leiner Health Products

Verbesserung des Cash-Flow-Management:


• Neue Software der Firma Emagia Corp.
aus Santa Clara

• Überwachung der Kundenverträge von der Rechnungsstellung


bis zur Zahlung
• Keine Papieraufträge mehr
• Reduzierung der Außenstände in 6 Wochen um 75%

© Professur für Information Systems Engineering, Prof. Dr. Holten 3-4


Fallstudie: Rechnungserstellung (1/2)

• Die Finanzbuchführung erhält vom Vertrieb elektronische


Auftragsbelege, bspw. in Form eines XML-Dokuments oder
durch eine zentrale Datenbank.

• Mittels der Belege sollen Kundenrechnungen erstellt werden.

• Preise sind Nettowerte („Nettopreis“).

• Ein Beleg enthält für jeden Artikel die entsprechende MwSt-


Klasse („V“ oder „E“), die jeweils für 19% oder 7%
Umsatzsteuer steht.

• Für die Rechnungserstellung muss die Bruttogesamtsumme


über alle Posten der Rechnung gebildet werden.

© Professur für Information Systems Engineering, Prof. Dr. Holten 3-5


Fallstudie: Rechnungserstellung (2/2)

Beispieldaten:

Artikelnummer MwSt-Klasse Nettopreis


0001 V 10,00 €
0002 V 5,00 €
0003 E 1,00 €
0004 E 2,00 €
0005 V 20,00 €

MwSt-Klasse Prozent
V 19,00 %
Brutto: 44,86 €
E 7,00 %

Wie kann dieses "Rechnungsproblem" formalisiert werden?

© Professur für Information Systems Engineering, Prof. Dr. Holten 3-6


Algorithmus

• Präzise formulierte Verarbeitungsvorschrift zur Lösung


eines Problems (z.B. durch einen Computer)

• Gibt an, wie Eingabedaten schrittweise in


Ausgabedaten umgewandelt werden
(Eingabe – Verarbeitung – Ausgabe (EVA-Prinzip))

• Genaue und eindeutige Handlungsanweisung

© Professur für Information Systems Engineering, Prof. Dr. Holten 3-7


Ablaufstrukturen von Algorithmen

Ablaufstruktur Bedeutung

Aktivitäten werden
Sequenz nacheinander ausgeführt

Aktivitäten werden alternativ


Alternative
ausgeführt

Wiederholung / Eine Aktivität wird wiederholt


Schleife ausgeführt

Rekursion Aktivität „ruft sich selbst auf“

© Professur für Information Systems Engineering, Prof. Dr. Holten 3-8


Struktogramm

• Eine Entwurfsmethode für die strukturierte


Programmierung
• Lösungsweg wird in elementare Ablaufstrukturen
(Sequenz, Alternative, Wiederholung) zerlegt
• Nach den beiden Entwicklern Dr. Ike Nassi und Dr. Ben
Shneiderman auch Nassi-Shneiderman Diagramm
genannt
• Genormt nach DIN 66261

Hole Aktienkurs

Aktienkurs < mein Limit


Ja Nein

Kaufe Kaufe nicht

© Professur für Information Systems Engineering, Prof. Dr. Holten 3-9


Ablaufstruktur: Sequenz

Zu lösendes Problem:
Addition zweier Zahlen, die über die Tastatur eingegeben
werden, und Ausgabe des Ergebnisses am Bildschirm.

Algorithmus:
Schritt 1: Lies Zahl Z1 ein Lies Zahl Z1 ein
Schritt 2: Lies Zahl Z2 ein Lies Zahl Z2 ein
Schritt 3: Berechne E = Z1 + Z2 Berechne E = Z1 + Z2
Schritt 4: Gib E aus Ausgabe: E

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 10


Ablaufstruktur: Alternative

• Prüfung einer Bedingung


• Verzweigung je nach Prüfergebnis

Prüfung
Bedingung
Ja Nein

Ablauf für Ablauf für nicht


erfüllte erfüllte
Bedingung Bedingung

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 11


Ablaufstruktur: Alternative

Zu lösendes Problem:
Zwei Zahlen Z1 und Z2 sind einzulesen. Falls beide Zahlen
gleich sind, ist eine entsprechende Meldung auszugeben.
Ansonsten ist die größere Zahl auszugeben.

Lies Z1 ein
Algorithmus: Lies Z2 ein
(S1) Lies Z1 ein Z1 == Z2 ?
(S2) Lies Z2 ein
Ja Nein
(S3) Falls Z1 == Z2
Dann schreibe "Z1 gleich Z2" Z1 > Z2 ?
Sonst Falls Z1 > Z2
Dann schreibe "Z1 größer als Z2" Ausgabe: Ja Nein
Sonst Z1 ist
Ausgabe: Ausgabe:
gleich Z2
schreibe "Z2 größer als Z1" Z1 ist Z2 ist
größer größer
als Z2 als Z1

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 12


Ablaufstruktur: Wiederholung mit
WHILE-Schleife

• Eine Abfolge von Anweisungen wird wiederholt, solange eine


Bedingung erfüllt ist.
• Die Prüfung der Bedingung findet vor der Ausführung der
Anweisungen statt (vorprüfende Schleife).

Solange Bedingung erfüllt ist

Schritt 1

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 13


Ablaufstruktur: Wiederholung mit
WHILE-Schleife

Zu lösendes Problem:
Die Summe über alle Posten einer Rechnung ist zu bilden.

Algorithmus:

(S1) Setze Summe auf „0“ Setze Summe auf „0“


(S2) Solange noch Rechnungsposten
vorhanden sind Solange noch Rechnungsposten
vorhanden sind
Wiederhole
Lies den nächsten Lies nächsten
Rechnungsposten, Rechnungsposten
Addiere Rechnungsposten zu
Summe hinzu Addiere Rechnungsposten zu
Summe
(S3) Schreibe Wert von Summe
Ausgabe von Summe

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 14


Ablaufstruktur: Wiederholung mit
FOR-Schleife

• Führt einen vorgegebenen Ablauf für eine vorgegebene Anzahl


an Schleifendurchläufen aus
• Auch Zählschleife genannt
• Geeignet vor allem, um indizierte oder nummerierte Mengen
durchzugehen
• Verhält sich unter Umständen genau so wie die WHILE-Schleife

Für Zähler von Anfang


bis Ende

Schritt 1

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 15


Ablaufstruktur: Wiederholung mit
FOR-Schleife

Zu lösendes Problem:
Ausgabe der Zahlen von 1 bis 42

Algorithmus:
Für i von 1 bis 42
(S1) Für i von 1 bis 42
Gib i aus
Ausgabe von i

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 16


Übung zu Struktogrammen (1)

Zu lösendes Problem:
Einlesen von drei ungleichen Zahlen, Maximum bestimmen und
ausgeben

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 17


Übung zu Struktogrammen (2)
Schleifen

Zu lösendes Problem:
Einlesen einer Zahl d und Ausgeben aller Zahlen von 1 bis d
sowie von deren Quadratzahlen

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 19


Übung zu Struktogrammen (3)
Schleifen

Zu lösendes Problem:
Einlesen einer Zahl d und Ausgabe des „Ein mal Eins“ im Bereich
von 1*1 bis d*d

i
1 2 3 4 5
k 1 1 2 3 4 5
2 4 6 8 10
3 9 12 15
4 16 20
5 25
Ausgabe

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 21


Lösung des Rechnungsproblems als
Struktogramm

Posten = Liste der Rechnungsposten

Bruttosumme = 0

Wiederhole für jeden Posten

MwStKlasse == „V“?

Ja Nein
Bruttosumme = Bruttosumme =
Bruttosumme + Bruttosumme +
Nettopreis aktueller Nettopreis aktueller
Posten *1.19 Posten *1.07

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 23


Lösung des Rechnungsproblems
in Pseudo-Code

// Zuweisungen
Posten = Liste der Rechnungsposten
Bruttosumme = 0

// Schleife
Wiederhole für jeden Posten
// Alternative
Wenn MwSt_Klasse == “V“
Bruttosumme = Bruttosumme + Nettopreis aktueller
Posten * 1.19
Sonst
Bruttosumme = Bruttosumme + Nettopreis aktueller
Posten * 1.07

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 24


Wiederholung mittels FOR
in Python

• Eine FOR-Schleife durchläuft eine Liste und führt für jedes


Element der Liste den eingeschlossenen Programmcode aus.

• Beispiel:
a = [ 98.90, 49.99, 225.50 ] # Liste
for x in a: # Für jedes x in (der Liste) a
print ("Netto:", round(x, 2) , end='') # Ausgabe
print ("Brutto:", round(x * 1.19, 2))

• Ausgabe:

Netto: 98.9 Brutto: 117.69


Netto: 49.99 Brutto: 59.49
Netto: 225.5 Brutto: 268.35

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 25


Alternative mittels IF
in Python

• Über die Ausführung alternativer Programmcodes wird durch


die Sprachkonstrukte IF, ELIF und ELSE entschieden. Dabei
werden Bedingungen überprüft, die entweder wahr (True) oder
falsch (False) sind.

• Beispiel:

x=1
Bedingung
if x < 0:
print ("Negativ") Alternative mit
Bedingung
elif x == 0:
print ("Null")
Alternative
else:
print ("Mindestens Eins")
Rep Schleifen
© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 26
Boolesche Werte

• Boolesche Variablen sind nach dem englischen Mathematiker


George Boole benannt, der den Grundstein für die binäre
Logik und die Rechentechnik legte.

• Ein boolescher Wert ist entweder True oder False.

• Logische Operatoren:
AND, OR und NOT

• Operatoren in Python:
== ist gleich? != ist ungleich?
> ist größer? < ist kleiner?
>= ist größer gleich? <= ist kleiner gleich?

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 27


Lösung des Rechnungsproblems
in Python

# Zuweisung
Posten = [ ["0001", "V", 10.00], ["0002", "V", 5.00],
["0003", "E", 1.00], ["0004", "E", 2.00], ["0005", "V", 20.00] ]
Bruttosumme = 0.00
# Schleife
for Artikel in Posten:
MwSt_Klasse = Artikel[1]
Nettopreis = Artikel[2]
if MwSt_Klasse == "V":
Bruttosumme = Bruttosumme + Nettopreis * 1.19
else:
Bruttosumme = Bruttosumme + Nettopreis * 1.07
# Ausgabe
print (Bruttosumme, "€")
Ausgabe: 44.86 €
© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 28
Schleifen
in Python

• In Python können zwei Schleifentypen genutzt werden:

while <Bedingung>:
<zu wiederholende Sequenz>

for <element> in <liste>:


<Sequenz pro Element>

• Beispiel:

a=1
while a < 5:
print (a)
a=a+1

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 29


Beispiel: Fibonacci-Folge
in Python

• Berechnet eine Fibonacci-Folge mittels einer Schleife:

a, b = 0, 1 # mehrfache Zuweisung
while b < 1000: # Wiederholung
print (b) # Ausgabe
a, b = b, a+b # Folge "weiterdenken"

• Ausgabe:

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 30


Wiederholung mittels FOR & range()
in Python

• Problemstellung: Eine bestimmte Aktivität soll n-mal


ausgeführt werden.
• Solche Zähl-Schleifen können in Python ebenfalls elegant
durch eine FOR-Schleife umgesetzt werden.
• Die FOR-Schleife arbeitet immer auf einer Liste, folglich muss
diese erst generiert werden.
• Dies erledigt die Funktion: range()

• Beispiel:

range(10) liefert folgende Sequenz als Liste:


0123456789

for i in range(10):
# mach was

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 31


Äquivalente Programme
in Python

• a=0
while a < 10:
print (a)
a=a+1

• for a in range(10):
print (a)

• for a in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:


print (a)

© Professur für Information Systems Engineering, Prof. Dr. Holten 3 - 32