Agenda für heute, 22. Juni, 2006 Direkte FilezugriffeDirekte Filezugriffe Datentypen: Mengen Individualisierbare Datentypen.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Strukturen in C Spelz, Sievers, Bethke.
Abschluss Gegeben Menge F von funktionalen Abhängigkeiten.
Pascal-Datentypen Skalare Typen Zeiger- Typen Strukturierte Typen
10. Grundlagen imperativer Programmiersprachen
12. Iteration und Rekursion
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2012.
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (3) Konstruktion optimaler Suchbäume Prof. Dr. Th. Ottmann.
Union-Find-Strukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
DbjFileManager Paul Fruntzek Michael Stanek. Überblick Unterste Ebene im Schichtenmodell Schnittstelle zum BS (Low-Level) Aufgabenbereich: Persistente.
Rel-Modell Relationenspezifische Operationen (11|21) Definition: natural join (natürlicher Verbund) Geg.: zwei Relationen r 1 : (A) und.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
INHALT INHALT Inhalt Delphi IDE ObjectPascal Hello World! Delphi IDE
Textdateien. Definition Die Textdateien sind eine Sammlung von homogene Daten(vom selben Typ), die auf einer externen Gerät gespeichert sind und durch.
Agenda für heute, 8. Juni, 2006 Strukturierte Variablen: RecordsStrukturierte Variablen: Records Kombiniertes Strukturieren Bitmap-Dateien Datentypen:
Diskrete Mathematik II
Diskrete Mathematik II
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Wiederholte Programmausführung
Willkommen... Studentinnen und Studenten der Studiengänge Umweltnaturwissenschaften Erdwissenschaften Agrarwissenschaften zur.
Agenda für heute, 20. Juni, 2010 Strukturieren von Programmen: UnitsStrukturieren von Programmen: Units Datentypen: Unterbereichstypen Übung 7: Bitmap-Dateien.
Konzept einer Programmiersprache!
Prozess-synchronisation
Agenda für heute, 19. Januar 2007 Informationssysteme: ETH-BibliothekInformationssysteme: ETH-Bibliothek Logische Verknüpfungen als Grundlage für die Informationsgewinnung.
Permanente Datenspeicherung
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
Agenda für heute, 9. Juni, 2005 Direkte FilezugriffeDirekte Filezugriffe Textfiles Bitmap-Dateien Datentypen: Mengen.
Mala Bachmann, Beispiel Velorennen Velorennen mit 5 TeilnehmerInnen Wie kann die durchschnittliche Rennzeit berechnet werden?
Mala Bachmann, Beispiel Velorennen (1) Velorennen mit 5 TeilnehmerInnen Wie kann die durchschnittliche Rennzeit berechnet werden?
MODULA-2.
Objektorientierte Programmierung
Willkommen... Studentinnen und Studenten der Studiengänge Umweltnaturwissenschaften Erdwissenschaften Agrarwissenschaften zur.
Agenda für heute, 18. Mai, 2006 Strukturierung von Programmen: ProzedurenStrukturierung von Programmen: Prozeduren Strukturierung von Programmen: Units.
Datentypen: integer, char, string, boolean
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Willkommen... Studentinnen und Studenten der Studiengänge Umweltnaturwissenschaften Erdwissenschaften Agrarwissenschaften zur.
Praxismodul 7 Agenda für heute, 15. Juni, 2006 Dateiformate
Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen.
Programmierparadigmen
Agenda für heute, 28. April, 2005 Strukturierte VariablenStrukturierte Variablen Arrays.
Agenda für heute, 2. Juni, 2005 Permanente DatenspeicherungPermanente Datenspeicherung Lesen und schreiben in Pascal Filetypen: Drei Kategorien Arbeiten.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 26. Mai, 2005 Strukturierte Variablen: RecordsStrukturierte Variablen: Records Kombiniertes Strukturieren Individualisierbare Datentypen.
Programmieren in C Dateien
Programmierparadigmen
Kurzreferat über Funktionen und Prozeduren Von Alexander RothHomepage:
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Agenda für heute, 21. April, 2005 Interaktion mit Pascal-ProgrammenInteraktion mit Pascal-Programmen Dateneingabe Programmsteuerung Debugging Datentypen:
Prüfungsbesprechung Barbara Scheuner Vorlesung: Programmieren und Problemlösen Prof. Hans Hinterberger.
Extended Pascal Erweiterung von Pascal shadi Behzadipour shadi Shadi behzadipour.
Programmiersprache PASCAL
Wiederholte Programmausführung
Programmieren und Problemlösen
Programmierparadigmen
Objektorientierte Programmierung
Strukturierte Variablen: Records
Datentypen: integer, char, string, boolean
Direkte Filezugriffe Agenda für heute, 22. Juni, 2006
Programmieren und Problemlösen
Prüfungsbesprechung Barbara Scheuner
Strukturierte Variablen: Records
Datentypen: integer, char, string, boolean
Parametrisierte Prozeduren und Funktionen
 Präsentation transkript:

Agenda für heute, 22. Juni, 2006 Direkte FilezugriffeDirekte Filezugriffe Datentypen: Mengen Individualisierbare Datentypen

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Direkte Filezugriffe Das Problem sequentieller Dateien: Zugriff auf die k-te Filekomponente bedingt k Leseoperationen Schreiben ist nur am Ende der Datei möglich Die Lösung: Mit der Prozedur Seek den Positionszeiger einer Filevariablen F direkt auf die Position k setzen Eine nachfolgende Read- oder Write-Operation betrifft die Filekompenente k Seek(F, k); 2/19

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Direkte Filezugriffe Beispiel var Eingabedaten: file of Integer; Messung: Integer; begin AssignFile(Eingabedaten,'C:\Messwerte') Reset(Eingabedaten); 3/19

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Direkte Filezugriffe Beispiel Der 21. Eintrag in der Datei Eingabedaten in die 80. Position derselben Datei schreiben: Seek(Eingabedaten,20); Read(Eingabedaten, Messung); Seek(Eingabedaten,79); Write(Eingabedaten,Messung) 4/19

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Direkte Filezugriffe Beispiel Datei vergrössern: Seek(F, FileSize(Eingabedaten)); Dieser Prozeduraufruf setzt den Positionszeiger ans Dateiende FileSize kann nicht für Textdateien verwendet werden 5/19

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Direkte Filezugriffe Beispiel Zusammenhängende Bereiche einer direkten Datei verarbeiten: Seek(Eingabedaten,100); for i:= 101 to 200 do begin Read(Eingabedaten,Messung); { Messung verarbeiten } end 6/19 Was aber, wenn die Datei Eingabedaten nur 150 Elemente enthält?

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Direkte Filezugriffe 7/19 Um Zugriffsfehler zu verhindern: var s: Integer; begin s:= FileSize(Eingabedaten); Seek(Eingabedaten,100); for i:= 101 to 200 do if i <= s then begin Read(Eingabedaten,Messung); { Messung verarbeiten } end;

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Standardprozeduren und -funktionen für Files AssignFileWeist einer Dateivariablen den Namen einer externen Datei zu. CloseFileSchliesst eine geöffnete Datei. EofPrüft, ob das Ende der Datei erreicht ist. EraseLöscht eine externe Datei. FilePosLiefert die aktuelle Position innerhalb einer Datei. FileSizeLiefert die aktuelle Grösse einer Datei. GetDirErmittelt das aktuelle Verzeichnis eines Laufwerks. IOResultLiefert den Status der zuletzt durchgeführten Ein-/Ausgabe-Operation. MkDirErzeugt ein Unterverzeichnis. RenameBenennt eine externe Datei um. ResetÖffnet eine existierende Datei. RewriteErzeugt und öffnet eine neue Datei. RmDirLöscht ein leeres Unterverzeichnis. SeekBewegt den Positionszeiger zur angegebenen Filekomponente. TruncateSchneidet eine Datei an der aktuellen Position ab. 8/19

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Standardprozeduren und -funktionen für Files AppendÖffnet eine existierende Datei für das Anhängen weiterer Daten. EolnPrüft, ob das Zeilenende in einer Textdatei erreicht ist. FlushLeert den Puffer einer Textdatei, die für die Ausgabe geöffnet wurde. ReadBei typisierten Dateien: liest eine oder mehrere Komponenten in eine Variable. Bei Textdateien: liest einen oder mehrere Werte in eine oder mehrere Variablen. ReadlnFührt einen Aufruf von Read aus und springt dann zum Anfang der nächsten Zeile der Datei. SeekEofLiefert den Dateiendestatus einer Datei (EOF) zurück. SeekEolnLiefert den Zeilenendestatus einer Datei (EOLN) zurück. SetTextBufWeist einer Textdatei einen Ein-/Ausgabepuffer zu. WriteBei typisierten Dateien: Schreibt eine Variable in eine Dateikomponente. Bei Textdateien: Schreibt einen oder mehrere Werte in die Datei. WritelnRuft die Prozedur Write auf und schreibt dann einen Zeilenvorschub in die Datei. 9/19

Direkte Filezugriffe Datentypen: MengenDatentypen: Mengen Individualisierbare Datentypen

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Mengentypen Jeder Datentyp definiert eine Menge von Werten. Im Falle des Mengentyps ist es die Menge aller möglichen Mengen, die aus den Elementen eines gegebenen Basistyps bestehen. Beispiel Type Aufzählungstyp Farbe = (rot, gruen, blau); S = set of Farbe; Basistyp (max. 256 Elemente) 10/19

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Mengentypen: Eigenschaften Die Werte des Typs S sind die Mengen: [], [rot], [gruen], [blau], [rot, gruen], [rot, blau], [gruen, blau], [rot, gruen, blau] Hat der Basistyp n unterschiedliche Werte, dann besitzt ihr Mengentyp 2 n Werte. Die Basis eines Mengentyps muss ein Ordinaltyp sein. (Aufzählungs- oder Unterbereichstyp) Die Ordinalwerte der oberen und unteren Grenzen des Basistyps müssen im Bereich liegen. 11/19

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Mengentypen: Operationen Vereinigung + [rot] + [gruen] [rot, gruen] Durchschnitt * [rot, gruen] * [gruen, blau] [gruen] Differenz – [rot, gruen, blau] – [gruen] [rot, blau] Element in (Mengenzugehörigkeit) [rot] in [rot, gruen] TRUE 12/19

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Mengentypen: Operationen Vergleich =Gleichheit <>Ungleichheit <=Teilmenge >=Obermenge [rot] = [rot, blau] FALSE [rot] <> [rot, blau] TRUE [rot] <= [rot, blau] TRUE [rot] >= [rot, blau] FALSE 13/19

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Mengentypen: Anwendungsbeispiele Vergleichsoperationen werden durch den Mengentyp vereinfacht: var ch: Char; ('0' <= ch) and (ch <= '9') ist wahr, wenn ch eine Ziffer darstellt Oft müssen beim Lesen einer Datei bestimmte Werte übersprungen werden. Die Anweisung: while ch in [' ',',','.',';',':'] do read(F,ch); "springt" über Leerzeichen und Satzzeichen in der File "F". Der Mengentyp erlaubt einen bündigeren, besser lesbaren Ausdruck: ch in ['0'..'9'] 14/19

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Mengentypen: Anwendungsbeispiele Das Kombinieren verschiedener Objekte wird durch den Mengentyp vereinfacht: type Zutaten = (Aepfel, Erdbeeren, Bananen, Nuesse, Icecream, Schokolade, Rahm, Zucker); Dessert = set of Zutaten; var Bananensplit, Strudel, Bananensplit_plus: Dessert; Bananensplit_plus:= Bananensplit + [Rahm]; Bananensplit:= [Bananen, Icecream, Schokolade]; 15/19

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Mengentypen: Anwendungsbeispiele Test auf Mengenzugehörigkeit: var Rahmschlagen: boolean; Rahmschlagen:= Rahm in Bananensplit; Rahmschlagen:= Rahm in Bananensplit_plus; True False 16/19

Direkte Filezugriffe Datentypen: Mengen Individualisierbare DatentypenIndividualisierbare Datentypen

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Kategorien von Datentypen Standardtypen Dazu gehören: Integer, Real, Boolean und Char. Die Eigenschaften dieser Typen wird durch den Pascal-Standard und die verwendete Programmierumgebung bestimmt. Individualisierbare Typen Dazu gehören: Aufzählungstyp, Unterbereichstyp, Mengentyp, Arraytyp, Recordtyp, Filetyp, Zeigertyp. Die Eigenschaften dieser Typen können Programmiererinnen und Programmierer im Deklarationsabschnitt selber definieren. 17/19

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Arrays als Typen const N = 50; type zeichenarray = array ['a'..'z'] of Integer; var B: array [1..N] of zeichenarray; {ein zweidimensionaler Array, der mit ganzen Zahlen und Buchstaben indiziert wird} 18/19

Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich Records als Typen type Monate =(Jan,Feb,Mar,Apr,Mai,Jun, Jul,Aug,Sep,Okt,Nov,Dez); Datum =record Tag: 1..31; Monat: Monate; Jahr: Integer end; Person =record Name: string[50]; Geschl: (M, W, KA); GebTag: Datum end; var d1, d2: Datum; p1, p2, p3: Person; PListe: array[1..100] of Person; 19/19 Aufzählungstyp Unterbereichstyp