Permanente Datenspeicherung

Slides:



Advertisements
Ähnliche Präsentationen
Strukturen in C Spelz, Sievers, Bethke.
Advertisements

Variablen und Datentypen
Zusammenfassung der Vorwoche
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
10. Grundlagen imperativer Programmiersprachen
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.
Dateihandles Um in Perl eine bestimmte Datei zum Lesen, Schreiben oder Anhängen zu öffnen, benötigt man so genannte Dateihandles. Ein Dateihandle ist der.
ARRAY oder FELD oder VEKTOR
Objekte und Arbeitsspeicher
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
Programmierung 1 - Repetitorium
Programmieren mit MS Small Basic
Delphi II - OOP IFB Fortbildung
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:
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
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.
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Ganzheitliches Projekt-, Ressourcen- und Qualitätsmanagement 1 Reports und AddOns Auf den folgenden Seiten wird Ihnen die Funktionsweise der Reports und.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 5 Dr. W. Narzt u. Dr. A. Stritzinger.
Konzept einer Programmiersprache!
Grundlagen von Objekt-Pascal Erstellt von J. Rudolf überarbeitet von H.Brehm.
Agenda für heute, 9. Juni, 2005 Direkte FilezugriffeDirekte Filezugriffe Textfiles Bitmap-Dateien Datentypen: Mengen.
Algorithmen und Datenstrukturen SS 2005
Objektorientierte Programmierung
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.
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.
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Programmierparadigmen
Vorkurs Programmierungstechnik Einführung in Pascal Michael Gellner Lehrstuhl für Softwaretechnik am Institut für praktische Informatik der Universität.
Kurzreferat über Funktionen und Prozeduren Von Alexander RothHomepage:
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:
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
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
Strukturierte Variablen: Records
Datentypen: integer, char, string, boolean
 Präsentation transkript:

Permanente Datenspeicherung Agenda für heute, 1. Juni, 2006 Permanente Datenspeicherung Deklaration von Files Files verwenden Filetypen: Drei Kategorien Sequentielle Files

Permanente Datenspeicherung Daten, die während der Ausführung eines Computerprogramms erzeugt werden, gehen bei Beendigung des Programms verloren, ausser sie werden als Datei auf ein permanentes Speicher- medium geschrieben Solche Dateien werden in Pascal mit Variablen vom Datentyp File bearbeitet 2/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Für das File muss eine Filevariable deklariert sein Arbeiten mit Files Damit ein Programm mit externen Dateien arbeiten kann, müssen folgende Schritte ausgeführt werden: Für das File muss eine Filevariable deklariert sein Das File muss mit einem dem Betriebssystem bekannten, ev. noch zu kreierenden, Dateinamen in Verbindung gebracht werden Das File muss durch das Programm geöffnet werden Über die Filevariable wird in die Datei geschrieben oder aus der Datei gelesen Das File muss durch das Programm geschlossen werden 333 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Die Elemente eines Files Filevariable Filekomponente File: Eine verlängerbare Folge von Filekomponenten 1 Komponentennummer Positionszeiger der Filevariablen 4/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Deklaration von Files Permanente Datenspeicherung Files verwenden Filetypen: Drei Kategorien Sequentielle Files

Deklaration einer Filevariablen var Eingabedaten: file of Integer; Deklaration von Files Deklaration einer Filevariablen var Eingabedaten: file of Integer; Name der Filevariablen Basistyp Ein in Pascal deklarierbarer Typ 5/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Deklaration eines Filetyps type Messung = Real; Deklaration von Files Deklaration eines Filetyps type Messung = Real; Messwerte = file of Messung; var MWDatei_1 : Messwerte; MWDatei_2 : Messwerte; MWDatei_3 : file of Messung; MWDatei_4 : file of Messung; Vom gleichen Typ Nicht vom gleichen Typ 6/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Files verwenden Permanente Datenspeicherung Deklaration von Files Filetypen: Drei Kategorien Sequentielle Files

Zuordnung eines Files zu einer Datei Mit der Prozedur AssignFile wird der Filevariablen ein (und nur ein) in einer Stringkonstanten oder -variablen angegebener Dateiname zugeordnet. AssignFile(Eingabedaten,'C:\Messwerte')   Name der Filevariablen Verzeichnispfad und Dateiname oder: const Filename = 'C:\Messwerte'; AssignFile(Eingabedaten, Filename); 7/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Zuordnung eines Files zu einer externen Datei mit OpenDialog Unter Verwendung der Delphi-Komponente OpenDialog: können Dateinamen interaktiv eingegeben oder bestehende Dateinamen ausgewählt werden: Nach drücken des Buttons Öffnen kann der ausge- wählte Dateiname im Feld FileName der Komponente OpenDialog gelesen werden AssignFile(Eingabedaten,OpenDialog1.FileName); 8/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Files zum Lesen oder Schreiben vorbereiten Lese- oder Schreibzugriffe auf Filekomponenten sind erst möglich nachdem ein File geöffnet worden ist Dazu stellt Pascal die Prozeduren Reset und Rewrite zur Verfügung In Delphi gibt es zusätzlich die Prozedur Append um Text an Textfiles anzufügen 9/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Öffnen eines Files zum Lesen Mit der Prozedur Reset wird das File für eine bereits vorhandene Datei geöffnet: Reset(Eingabedaten); Ist keine Datei mit dem angegebenen Namen vorhanden, dann tritt ein Eingabe/Ausgabe-Fehler auf Ist das zu öffnende File bereits offen, wird es zuerst geschlossen und dann erneut geöffnet. Nach dem Öffnen wird der Positions-zeiger an den Anfang des Files gesetzt 10/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Mit der Prozedur Read wird der Inhalt einer Filekomponente gelesen var Lesen eines Files Mit der Prozedur Read wird der Inhalt einer Filekomponente gelesen var Messwert: Real; Eingabedaten: file of Real; begin AssignFile(Eingabedaten,'C:\Messwerte') Reset(Eingabedaten); Read(Eingabedaten, Messwert); Filevariable Variable, in die gelesen wird 11/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

if NOT EOF(Eingabedaten) then Read(Eingabedaten, Messwert); Lesen eines Files Beim Lesen eines Files muss geprüft werden, ob das Ende des Files erreicht wurde Die Funktion EOF (End Of File) liefert "TRUE" sobald die letzte Filekomponente gelesen wurde if NOT EOF(Eingabedaten) then Read(Eingabedaten, Messwert); 12/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Öffnen eines Files zum Schreiben Die Prozedur Rewrite erstellt ein neues File und öffnet es anschliessend: Rewrite(MWDatei_1); Mit Rewrite wird ein File darauf vorbereitet, Daten in eine neue Datei unter dem mit AssignFile der Filevariablen (MWDatei_1) zugewiesenen Dateinamen zu schreiben Existiert bereits eine gleichnamige Datei, wird deren Inhalt gelöscht und an ihrer Stelle die neue Datei angelegt Ein bereits offenes File wird zuerst geschlossen und dann erneut geöffnet. Nach dem Öffnen wird der Positionszeiger an den Anfang des Files gesetzt 13/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Mit der Prozedur Write wird eine Filekomponente geschrieben var Schreiben eines Files Mit der Prozedur Write wird eine Filekomponente geschrieben var Messwert: Real; Eingabedaten: file of Real; begin AssignFile(Eingabedaten,'C:\Messwerte') Rewrite(Eingabedaten); Messwert:= 12.87; Write(Eingabedaten, Messwert); Filevariable Variable, deren Wert geschrieben wird 14/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Schliessen eines Files Mit der Prozedur CloseFile wird ein File geschlossen. Diese Operation stellt sicher, dass alle Daten in die Datei geschrieben werden Nach CloseFile kann die Filevariable mit AssignFile einer anderen (oder nochmals der gleichen) Datei zugeordnet werden   AssignFile(Eingabedaten, 'C:\Messwerte'); Reset(Eingabedaten); { Datei Messwerte verarbeiten } CloseFile(Eingabedaten); AssignFile(Eingabedaten, 'A:\NeueWerte'); { Datei NeueWerte verarbeiten } 15/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Abfangen des Fehlers bei fehlenden Dateien Pascal überprüft standardmässig ob Aufrufe von Eingabe-/Ausgabe Prozeduren und -Funktionen zu Problemen geführt haben (E/A-Fehler) Beim Auftreten eines solchen Fehlers wird der Programmablauf in der Regel abgebrochen Die automatische Fehlerüberprüfung kann mit einer sog. Compiler-Direktive deaktiviert werden: {$I-} Kommentar Compiler-Direktive Name Parameter { $ I - } E/A-Fehler können so im eigenen Programm behandelt werden 16/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Abfangen des Fehlers bei fehlenden Dateien Die Funktion IOResult liefert den Status der letzten E/A-Operation Dazu muss die automatische E/A-Prüfung mit der Compiler-Direktiven {$I–} deaktiviert werden AssignFile(Eingabedaten, 'C:\Messwerte'); {$I-} {E/A-Prüfung ausschalten} Reset(Eingabedaten); {$I+} {E/A-Prüfung einschalten} if IOResult = 0 then begin {File wurde fehlerfrei geöffnet} . . . end else begin {File konnte nicht geöffnet werden} 17/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Zusammenfassung: Dateneingabe Pascal-Anweisungen Externer Speicher A:\Meindok.txt 1 AssignFile(Eingabe,'A:\Meindok.txt'); Arbeitsspeicher 2 Reset(Eingabe); Es soll eine Textdatei, Zeichen um Zeichen, eingelesen werden Read(Eingabe,ch); 3 ch Schritt 3 kann wiederholt werden bis das Ende des Files erreicht wird 18/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Zusammenfassung: Datenausgabe Pascal-Anweisungen ch Arbeitsspeicher Write(Ausgabe,ch); 3 2 Rewrite(Ausgabe); Es soll eine Textdatei, Zeichen um Zeichen, ausgeschrieben werden AssignFile(Ausgabe,'A:\Meindok.txt'); 1 Externer Speicher A:\Meindok.txt 19/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Filetypen: Drei Kategorien Permanente Datenspeicherung Deklaration von Files Files verwenden Filetypen: Drei Kategorien Sequentielle Files

Drei Kategorien von Files Pascal unterscheidet zwischen folgenden Filetypen: Typisierte Files Untypisierte Files Textfiles 20/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Die Filekomponenten sind von einem in Pascal deklarierbaren Typ Typisierte Files Die Filekomponenten sind von einem in Pascal deklarierbaren Typ Beispiele var Messwerte: file of Real; Beobachtung: file of Boolean; Sequenz: file of Char; Bezeichner Basistyp 21/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Untypisierte Files Wird bei der Deklaration der Filevariablen kein Basistyp angegeben, dann speichert jede Filekomponente ein Byte Verwendet für Zugriffe bei denen keine Voraussetzungen für Struktur und Inhalt der entsprechenden Dateien gemacht werden Beispiel var Eingabedaten: file; 22/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Speichert zeilenweise angeordnete Textzeichen var Dokument: Textfile; Textfiles Speichert zeilenweise angeordnete Textzeichen var Dokument: Textfile; Standardprozeduren und -funktionen: AssignFile, Reset, Rewrite, Read, Write, CloseFile, EOF Read- und Write-Prozeduren erlauben das Lesen und Schreiben von Werten, die nicht den Typ Char haben Mit Reset geöffnete Textfiles sind schreibgeschützt 23/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

AssignFile(Dokument, 'C:\Meintext.txt'); Reset(Dokument); Textfiles lesen Jede Zeile in einem Textfile wird mit einem Zeilenende-Zeichen abgeschlossen Dieses Zeichen muss auch gelesen werden var Dokument: Textfile; Zeile: String; Zeichen: Char; begin AssignFile(Dokument, 'C:\Meintext.txt'); Reset(Dokument); Read(Dokument, Zeile); Read(Dokument); {liest End of line} 24/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Read(Dokument, Zeile); Read(Dokument); können wir abgekürzt schreiben Textfiles lesen Zur Vereinfachung stellt Pascal die Prozedur Readln (für Read Line) zur Verfügung Statt Read(Dokument, Zeile); Read(Dokument); können wir abgekürzt schreiben Readln(Dokument, Zeile); 25/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

while not EOLN(Dokument) do Read(Dokument, Zeichen); Textfiles lesen Die Standardfunktion EOLN (für End Of Line) liefert "TRUE" sobald das nächste zu lesende Zeichen ein Zeilenende-Zeichen ist Somit können wir Zeilen unbekannter Länge lesen: while not EOLN(Dokument) do Read(Dokument, Zeichen); Read(Dokument); {liest das Zeilenende-Zeichen} 26/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Read(Dokument, Wert_1, Wert_2); Textfiles lesen Aus Textfiles gelesene Zeichenfolgen, die ganze oder reelle Zahlen darstellen, werden automatisch in die entsprechenden numerischen Werte vom Typ Integer oder Real konvertiert Entspricht die Zahl nicht dem erwarteten Format, tritt ein E/A- Fehler auf var Dokument: Textfile; Wert_1, Wert_2: Integer; begin Read(Dokument, Wert_1, Wert_2); 27/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Zeile: String; Wert: Real; begin Rewrite(Dokument); Textfiles schreiben Akzeptiert werden Werte vom Typ Char, String, Boolean, einem Integer-Typ oder einem Real-Typ (automatische Konvertierung) var Dokument: Textfile; Zeile: String; Wert: Real; begin Rewrite(Dokument); Zeile:= 'ETH Zuerich'); Write(Dokument, Zeile); Writeln; Wert:= 37.85; Writeln(Dokument, Wert); 28/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Text anfügen Mit der Prozedur Append wird ein Textfile so für Schreibzugriffe geöffnet, dass die Daten am Ende des Files angefügt werden Append(Dokument); Die Textfilevariable (Dokument) muss mit AssignFile einer Datei zugeordnet worden sein Ist das File bereits offen, wird es zuerst geschlossen und dann erneut geöffnet Der Positionszeiger wird auf das Fileende gesetzt Im Gegensatz zu Rewrite wird mit Append der Inhalt einer bestehenden Datei nicht gelöscht 29/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Writeln(Dokument,Zeile,Leitzahl,' Zuerich'); Text anfügen var Dokument: Textfile; Zeile: String; Leitzahl: Integer; begin Append(Dokument); Zeile:= 'ETH '; Leitzahl:= 8092; Writeln(Dokument,Zeile,Leitzahl,' Zuerich'); 30/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Sequentielle Files Permanente Datenspeicherung Lesen und schreiben in Pascal Filetypen: Drei Kategorien Arbeiten mit Files Sequentielle Files

Schreiben einer sequentiellen Datei Schematische Darstellung AssignFile(F,'D') F D Rewrite(F) F D Vorsicht: Rewrite löscht den Inhalt einer bestehenden Datei! Write(F,V) F D V 1 Programmcode  AssignFile(Messstation, 'C:\Messung1'); Rewrite(Messstation); MW1.Xkoord:= 10; MW1.YKoord:= 3; 1. Filekomponente MW1.Wert:= 1266; Write(Messstation,MW1); MW1.Xkoord:= 135; MW1.YKoord:= 22; 2. Filekomponente MW1.Wert:= 751; Write(F,V) F D V 2 31/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Lesen einer sequentiellen Datei Schematische Darstellung AssignFile(F,'D') F D Reset(F) F D Read(F,V) F D V 1 Read(F,V) F D V 2 32/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Lesen einer sequentiellen Datei Schematische Darstellung Read(F,V) F D V n Read(F,V) F D V n+1 EOF(F) = true Programmcode Lesen der ersten Filekomponente: AssignFile(Messstation,'C:\Messung1'); Reset(Messstation); Read(Messstation,MW1); Lesen aller Filekomponenten: while not Eof(Messstation) do begin . . . { verarbeiten von MW1 } Eof gibt den Wert true zurück nachdem die letzte Filekomponente gelesen wurde oder wenn die Datei keinen Inhalt hat. Eine weitere Read-Anweisung würde zu einem Laufzeitfehler führen 33/33 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich