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