Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Informatik II (für Fakultät Maschinenwesen) Heinrich Hußmann Sommersemester 2001.

Ähnliche Präsentationen


Präsentation zum Thema: "Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Informatik II (für Fakultät Maschinenwesen) Heinrich Hußmann Sommersemester 2001."—  Präsentation transkript:

1 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Informatik II (für Fakultät Maschinenwesen) Heinrich Hußmann Sommersemester 2001 Technische Universität Dresden

2 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Prof. Dr. Heinrich Hußmann Fakultät Informatik Lehrstuhl Softwaretechnologie Dürerstr. 26, 2. OG, Raum 258 Telefon Informationen zur Vorlesung im WWW: Betreuung zum Praktikum: Frank-Ulrich Kumichel, Telefon

3 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Gliederung und Terminplan Vorlesungsumfang 1 SWS, aber Doppelstunden Achtung: Termine nicht ganz regelmäßig! 1.Pointer-Programmierung mit Object Pascal (4. Studienbrief, Abschnitt 5.7) Objektorientierte Programmierung mit Object Pascal (5. Studienbrief, Kapitel 5)17.4, 24.4., Datenbankprogrammierung mit SQL und Delphi15.5., (5. Studienbrief, Kapitel 6) 4.Einordnung und Ausblick (unter anderem: Software-Engineering)

4 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Studienbriefe Für erste Doppelstunde: –4. Studienbrief (vorhanden) Für weitere Vorlesungen: –5. Studienbrief in Arbeit –Verfügbar voraussichtlich Anfang Mai –Verkaufspreis voraussichtlich 3 DM

5 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Delphi-Praktikum Praktikumszeiten in Pool Willersbau A 119: –Dienstag 6. und 7. DS (16:40 bis 20:00 Uhr) –Donnerstag 5. und 6. DS (14:50 bis 18:30 Uhr) Testatabnahme während des Praktikums –Termin individuell vereinbart –Mitbringen: »Aufgabenstellung »Projekt-Listing »Testatblatt –Einschreibung in Klausur im Praktikum

6 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Vorbemerkung Warum Programmieren lernen? –Verständnis grundlegender Mechanismen –Qualifizierter Umgang mit Anwendungssoftware –Fähigkeit zur Kooperation mit Software-Spezialisten Warum Pointer, Objektorientierung, Komponenten, Datenbanken: –Fortgeschrittene Konzepte für komplexe Anwendungen –Erleichterung von Anpassungen »Komponenten, Datenbanken –Softwarekomponenten vs. Hardwarekomponenten Warum Delphi? –Leicht zugänglich (Pascal-basiert) –Umfaßt alle modernen Programmier-Konzepte (sh. oben) –Wissen übertragbar auf Java, C++,...

7 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Rückblick Variablen Datentypen Ausdrücke Anweisungen –Zuweisungen –Fallunterscheidung –Schleifen Unterprogramme Units (Module) Grafikprogrammierung

8 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Speicherverwaltung: Stack Für statische Parameter und Variable wird Speicherplatz während des Programmablaufs automatisch reserviert und freigegeben. function fac (n: integer); begin if n = 0 then fac := 1 else fac := n * fac(n–1); end; Stack für Aufruf fac(3): Speicher für n in fac(3) Dynamisches Wachsen und Schrumpfen des Stacks Speicher für n in fac(2) Speicher für n in fac(1) Speicher für n in fac(0)

9 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Speicherverwaltung: Heap Für dynamische Variablen muß Speicherplatz explizit angefordert und freigegeben werden type Elem = record a, b: integer end; Ptr = ^Elem; var p, q: Ptr; new(p); p^.a := 1; p^.b := 2; new(q); q^.a := 3; q^.b := 4; a: 1 b: 2 Speicher für p^ a: 3 b: 4 Speicher für q^ Heap ("Halde"):...

10 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Listen Linear verkettete Liste: Zyklisch verkettete Liste: Doppelt verkettete Liste: Inhalt1Inhalt2Inhalt3nil Inhalt1Inhalt2Inhalt3 Inhalt1nilInhalt2Inhalt3nil

11 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Linear verkettete Liste Es gibt genau ein Listenelement, das keinen Vorgänger hat. –Listenanfang Es gibt genau ein Listenelement, das keinen Nachfolger hat. –Listenende Die übrigen Listenelemente haben genau einen Vorgänger und einen Nachfolger. Alle Listenelemente sind vom Listenanfang aus durch Nachfolgerbildung erreichbar. Die Anzahl der Listenelemente heißt Listenlänge.

12 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Deklarationen für einfach verkettete Liste (1) Listendeklarationen: type TListe = ^TElement; TElement = record Key: integer; NextElement: TListe end; var ListenAnfang, ListenEnde: TListe; Initialisierung:: ListenAnfang := nil; ListenEnde := nil;

13 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Anfügen an Listenende Anfügen an leere Liste: new(NewElement); NewElement^.Key := …; NewElement^.NextElement := nil; ListenAnfang := NewElement; ListenEnde := NewElement; Anfügen an nicht-leere Liste: new(NewElement); NewElement^.Key := …; NewElement^.NextElement := nil; ListenEnde^.NextElement := NewElement; ListenEnde := NewElement;

14 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Anfügen an Listenanfang Anfügen an leere Liste: new(NewElement); NewElement^.Key := …; NewElement^.NextElement := nil; ListenAnfang := NewElement; ListenEnde := NewElement; Anfügen an nicht-leere Liste: new(NewElement); NewElement^.Key := …; NewElement^.NextElement := ListenAnfang; ListenAnfang := NewElement;

15 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Einfügen nach einem bestimmten Element Zeiger auf beliebiges Listenelement: var AktElement: TListe; Einfügen nach AktElement: new(NewElement); NewElement^.Key := …; NewElement^.NextElement := AktElement^.NextElement; AktElement^.NextElement := NewElement;

16 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Durchlaufen einer Liste AktElement := ListenAnfang; while AktElement <> nil do begin... // Verarbeitung der Listenelemente... AktElement := AktElement^.NextElement; end;

17 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Delphi-Beispielprojekt zu Listen

18 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Beispiel: Einfach verkettete Liste (1) type string25=string[25]; TListe = ^TElement; TElement = record Key: integer; Name: string25; NextElement: TListe end; var ListenAnfang,ListenEnde: TListe; Zaehler: integer; procedure InitListe; begin ListenAnfang := nil; ListenEnde := nil end;

19 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Beispiel: Einfach verkettete Liste (2) procedure AppendElement(k:integer; n:string25); var NewElement: TListe; begin new(NewElement); NewElement^.Key:=k; NewElement^.Name:=n; NewElement^.NextElement:=nil; if ListenEnde = nil then ListenAnfang:=NewElement else ListenEnde^.NextElement:=NewElement; ListenEnde:=NewElement; end {AppendElement};

20 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Beispiel: Einfach verkettete Liste (3) procedure DeleteElement(k:integer); var Element, VorElement: TListe; begin Element:=ListenAnfang; VorElement:=nil; while (Element<>nil) and (Element^.Key<>k) do begin VorElement:=Element; Element:=Element^.NextElement; end; if Element <> nil then begin if VorElement = nil then ListenAnfang:=Element^.NextElement else VorElement^.NextElement:=Element^.NextElement; if Element^.NextElement=nil then ListenEnde:=VorElement; // dispose(Element); wenn gewuenscht end; end {DeleteElement};

21 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Beispiel: Einfach verkettete Liste (4) procedure ShowList; var z: integer; Element: TListe; begin Element:=Listenanfang; z:=0; while Element<>nil do begin z:=z+1; Form1.StringGrid2.Cells[0,z]:= IntToStr(Element^.Key); Form1.StringGrid2.Cells[1,z]:=Element^.Name; Element:=Element^.NextElement; end; Form1.StringGrid2.RowCount:=z+1; end {ShowList};

22 Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Beispiel: Einfach verkettete Liste (5) procedure SortList; // "Bubblesort"-Algorithmus var Element,TestElement: TListe; TestKey: integer; begin Element:=ListenAnfang; while Element<>nil do begin if Element^.NextElement<>nil then begin TestKey:=Element^.Key; TestElement:=Element^.NextElement; while TestElement<>nil do begin if TestKey>TestElement^.Key then... vertausche Element und TestElement TestElement:=TestElement^.NextElement; end; Element:=Element^.NextElement; end; end {SortList};


Herunterladen ppt "Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Informatik II (für Fakultät Maschinenwesen) Heinrich Hußmann Sommersemester 2001."

Ähnliche Präsentationen


Google-Anzeigen