Direkte Filezugriffe Agenda für heute, 22. Juni, 2006

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

Ein- und Ausgabe von Dateien
Pascal-Datentypen Skalare Typen Zeiger- Typen Strukturierte Typen
10. Grundlagen imperativer Programmiersprachen
12. Iteration und Rekursion
der Universität Oldenburg
DINAMISCHE STRUKTUREN FACHBEGRIFFE 1. DER POINTERDER POINTER 2. DER BUFFERDER BUFFER 3. DER KNOTENDER KNOTEN DIE EINFACHVERKETTETE LISTE DEFINITION DEFINITION.
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Einführung Wat jibt´s denn? Mit Computa kenn´ ick mir aus! Guten Tag,
Proseminar SS Evaluation der Programmiersprache PASCAL AN ASSESSMENT OF THE PROGRAMMING LANGUAGE PASCAL Autor: Niklaus Wirth Bearbeitung:
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:
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
FORTRAN 77.
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.
Permanente Datenspeicherung
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
Agenda für heute, 9. Juni, 2005 Direkte FilezugriffeDirekte Filezugriffe Textfiles Bitmap-Dateien Datentypen: Mengen.
Algorithmen und Datenstrukturen SS 2005
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 2 Dr. W. Narzt u. Dr. A. Stritzinger.
Einführung in PHP 5.
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.
Agenda für heute, 22. Juni, 2006 Direkte FilezugriffeDirekte Filezugriffe Datentypen: Mengen Individualisierbare Datentypen.
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.
Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen.
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 Grundlagen C 2
Vorkurs Programmierungstechnik Einführung in Pascal Michael Gellner Lehrstuhl für Softwaretechnik am Institut für praktische Informatik der Universität.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Der Datentyp Verbund (record)
Agenda für heute, 21. April, 2005 Interaktion mit Pascal-ProgrammenInteraktion mit Pascal-Programmen Dateneingabe Programmsteuerung Debugging Datentypen:
(Syntax, Strings/Zahlen, Variablen, Arrays)
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
The Programming Language Pascal
Extended Pascal Erweiterung von Pascal shadi Behzadipour shadi Shadi behzadipour.
Programmiersprache PASCAL
A SHORT INTRODUCTION TO CONCURRENT EUCLID Entwicklung von Euclid 1976 Entwicklung von Euclid 1977 Entwicklung des „TORONTO Euclid“ 1977 Entwicklung.
Wiederholte Programmausführung
Programmieren und Problemlösen
Anforderungen an die neue Datenstruktur
Programmierparadigmen
Strukturierte Variablen: Records
Datentypen: integer, char, string, boolean
Programmieren und Problemlösen
Prüfungsbesprechung Barbara Scheuner
Strukturierte Variablen: Records
Datentypen: integer, char, string, boolean
Referenzen In c kennen wir gewöhnliche Variablen und Pointer.
Parametrisierte Prozeduren und Funktionen
SS 04 Christiane Rauh Christian Hellinger
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
Schleifen Datenfelder (Arrays) Verzweigungen
The Programming Language Pascal
 Präsentation transkript:

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

Das Problem sequentieller Dateien: 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

Eingabedaten: file of Integer; Messung: Integer; begin 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

Read(Eingabedaten, Messung); Seek(Eingabedaten,79); 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

Seek(F, FileSize(Eingabedaten)); 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

Zusammenhängende Bereiche einer direkten Datei verarbeiten: 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 Was aber, wenn die Datei Eingabedaten nur 150 Elemente enthält? 6/19 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

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

Standardprozeduren und -funktionen für Files AssignFile Weist einer Dateivariablen den Namen einer externen Datei zu. CloseFile Schliesst eine geöffnete Datei. Eof Prüft, ob das Ende der Datei erreicht ist. Erase Löscht eine externe Datei. FilePos Liefert die aktuelle Position innerhalb einer Datei. FileSize Liefert die aktuelle Grösse einer Datei. GetDir Ermittelt das aktuelle Verzeichnis eines Laufwerks. IOResult Liefert den Status der zuletzt durchgeführten Ein-/Ausgabe-Operation. MkDir Erzeugt ein Unterverzeichnis. Rename Benennt eine externe Datei um. Reset Öffnet eine existierende Datei. Rewrite Erzeugt und öffnet eine neue Datei. RmDir Löscht ein leeres Unterverzeichnis. Seek Bewegt den Positionszeiger zur angegebenen Filekomponente. Truncate Schneidet 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. Eoln Prüft, ob das Zeilenende in einer Textdatei erreicht ist. Flush Leert den Puffer einer Textdatei, die für die Ausgabe geöffnet wurde. Read Bei typisierten Dateien: liest eine oder mehrere Komponenten in eine Variable. Bei Textdateien: liest einen oder mehrere Werte in eine oder mehrere Variablen. Readln Führt einen Aufruf von Read aus und springt dann zum Anfang der nächsten Zeile der Datei. SeekEof Liefert den Dateiendestatus einer Datei (EOF) zurück. SeekEoln Liefert den Zeilenendestatus einer Datei (EOLN) zurück. SetTextBuf Weist einer Textdatei einen Ein-/Ausgabepuffer zu. Write Bei typisierten Dateien: Schreibt eine Variable in eine Dateikomponente. Bei Textdateien: Schreibt einen oder mehrere Werte in die Datei. Writeln Ruft die Prozedur Write auf und schreibt dann einen Zeilenvorschub in die Datei. 9/19 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Direkte Filezugriffe Datentypen: Mengen Individualisierbare Datentypen

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 2n 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 0..255 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 Der Mengentyp erlaubt einen bündigeren, besser lesbaren Ausdruck: ch in ['0'..'9'] 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". 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:= [Bananen, Icecream, Schokolade]; Bananensplit_plus:= Bananensplit + [Rahm]; 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; False True 16/19 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Individualisierbare Datentypen Direkte Filezugriffe Datentypen: Mengen Individualisierbare Datentypen

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; Aufzählungstyp Unterbereichstyp 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 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich