Click here to load reader

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

  • View
    108

  • Download
    0

Embed Size (px)

Text of Technische Universität DresdenProf. HußmannInformatik II (Maschinenwesen) Informatik II (für...

  • Folie 1
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Informatik II (fr Fakultt Maschinenwesen) Heinrich Humann Sommersemester 2001 Technische Universitt Dresden
  • Folie 2
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Prof. Dr. Heinrich Humann Fakultt Informatik Lehrstuhl Softwaretechnologie Drerstr. 26, 2. OG, Raum 258 Telefon 463-8464 Email [email protected] Informationen zur Vorlesung im WWW: http://www-st.inf.tu-dresden.de/im2 Betreuung zum Praktikum: Frank-Ulrich Kumichel, Telefon 463-8484
  • Folie 3
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Gliederung und Terminplan Vorlesungsumfang 1 SWS, aber Doppelstunden Achtung: Termine nicht ganz regelmig! 1.Pointer-Programmierung mit Object Pascal (4. Studienbrief, Abschnitt 5.7)10.4.01 2.Objektorientierte Programmierung mit Object Pascal (5. Studienbrief, Kapitel 5)17.4, 24.4., 8.5. 3.Datenbankprogrammierung mit SQL und Delphi15.5., 29.5. (5. Studienbrief, Kapitel 6) 4.Einordnung und Ausblick12.6.00 (unter anderem: Software-Engineering)
  • Folie 4
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Studienbriefe Fr erste Doppelstunde: 4. Studienbrief (vorhanden) Fr weitere Vorlesungen: 5. Studienbrief in Arbeit Verfgbar voraussichtlich Anfang Mai Verkaufspreis voraussichtlich 3 DM
  • Folie 5
  • Technische Universitt DresdenProf. HumannInformatik 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 whrend des Praktikums Termin individuell vereinbart Mitbringen: Aufgabenstellung Projekt-Listing Testatblatt Einschreibung in Klausur im Praktikum
  • Folie 6
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Vorbemerkung Warum Programmieren lernen? Verstndnis grundlegender Mechanismen Qualifizierter Umgang mit Anwendungssoftware Fhigkeit zur Kooperation mit Software-Spezialisten Warum Pointer, Objektorientierung, Komponenten, Datenbanken: Fortgeschrittene Konzepte fr komplexe Anwendungen Erleichterung von Anpassungen Komponenten, Datenbanken Softwarekomponenten vs. Hardwarekomponenten Warum Delphi? Leicht zugnglich (Pascal-basiert) Umfat alle modernen Programmier-Konzepte (sh. oben) Wissen bertragbar auf Java, C++,...
  • Folie 7
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Rckblick Variablen Datentypen Ausdrcke Anweisungen Zuweisungen Fallunterscheidung Schleifen Unterprogramme Units (Module) Grafikprogrammierung
  • Folie 8
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Speicherverwaltung: Stack Fr statische Parameter und Variable wird Speicherplatz whrend des Programmablaufs automatisch reserviert und freigegeben. function fac (n: integer); begin if n = 0 then fac := 1 else fac := n * fac(n1); end; 1 0 3 2 Stack fr Aufruf fac(3): Speicher fr n in fac(3) Dynamisches Wachsen und Schrumpfen des Stacks Speicher fr n in fac(2) Speicher fr n in fac(1) Speicher fr n in fac(0)
  • Folie 9
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Speicherverwaltung: Heap Fr 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 fr p^ a: 3 b: 4 Speicher fr q^ Heap ("Halde"):...
  • Folie 10
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Listen Linear verkettete Liste: Zyklisch verkettete Liste: Doppelt verkettete Liste: Inhalt1Inhalt2Inhalt3nil Inhalt1Inhalt2Inhalt3 Inhalt1nilInhalt2Inhalt3nil
  • Folie 11
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Linear verkettete Liste Es gibt genau ein Listenelement, das keinen Vorgnger hat. Listenanfang Es gibt genau ein Listenelement, das keinen Nachfolger hat. Listenende Die brigen Listenelemente haben genau einen Vorgnger und einen Nachfolger. Alle Listenelemente sind vom Listenanfang aus durch Nachfolgerbildung erreichbar. Die Anzahl der Listenelemente heit Listenlnge.
  • Folie 12
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Deklarationen fr einfach verkettete Liste (1) Listendeklarationen: type TListe = ^TElement; TElement = record Key: integer; NextElement: TListe end; var ListenAnfang, ListenEnde: TListe; Initialisierung:: ListenAnfang := nil; ListenEnde := nil;
  • Folie 13
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Anfgen an Listenende Anfgen an leere Liste: new(NewElement); NewElement^.Key := ; NewElement^.NextElement := nil; ListenAnfang := NewElement; ListenEnde := NewElement; Anfgen an nicht-leere Liste: new(NewElement); NewElement^.Key := ; NewElement^.NextElement := nil; ListenEnde^.NextElement := NewElement; ListenEnde := NewElement;
  • Folie 14
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Anfgen an Listenanfang Anfgen an leere Liste: new(NewElement); NewElement^.Key := ; NewElement^.NextElement := nil; ListenAnfang := NewElement; ListenEnde := NewElement; Anfgen an nicht-leere Liste: new(NewElement); NewElement^.Key := ; NewElement^.NextElement := ListenAnfang; ListenAnfang := NewElement;
  • Folie 15
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Einfgen nach einem bestimmten Element Zeiger auf beliebiges Listenelement: var AktElement: TListe; Einfgen nach AktElement: new(NewElement); NewElement^.Key := ; NewElement^.NextElement := AktElement^.NextElement; AktElement^.NextElement := NewElement;
  • Folie 16
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Durchlaufen einer Liste AktElement := ListenAnfang; while AktElement nil do begin... // Verarbeitung der Listenelemente... AktElement := AktElement^.NextElement; end;
  • Folie 17
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Delphi-Beispielprojekt zu Listen
  • Folie 18
  • Technische Universitt DresdenProf. HumannInformatik 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;
  • Folie 19
  • Technische Universitt DresdenProf. HumannInformatik 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};
  • Folie 20
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Beispiel: Einfach verkettete Liste (3) procedure DeleteElement(k:integer); var Element, VorElement: TListe; begin Element:=ListenAnfang; VorElement:=nil; while (Elementnil) and (Element^.Keyk) 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};
  • Folie 21
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Beispiel: Einfach verkettete Liste (4) procedure ShowList; var z: integer; Element: TListe; begin Element:=Listenanfang; z:=0; while Elementnil 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};
  • Folie 22 nil do begin if Element^.NextElementnil then begin TestKey:=Element^.Key; TestElement:=Element^.NextElement; while TestElementnil do begin if TestKey>TestElement^.Key then... vertausche Element und TestElement TestElement:=TestElement^.NextElement; end; Element:=Element^.NextElement; end; end {SortList};">
  • Technische Universitt DresdenProf. HumannInformatik II (Maschinenwesen) Beispiel: Einfach verkettete Liste (5) procedure SortList; // "Bubblesort"-Algorithmus var Element,TestElement: TListe; TestKey: integer; begin Element:=ListenAnfang; while Elementnil do begin if Element^.NextElementnil then begin TestKey:=Element^.Key; TestElement:=Element^.NextElement; while TestElementnil do begin if TestKey>TestElement^.Key then... vertausche Element und TestElement TestElement:=TestElement^.NextElement; end; Element:=Element^.NextElement; end; end {SortList};