Strukturierte Variablen: Records

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

Imperative Programmierung
Pascal-Datentypen Skalare Typen Zeiger- Typen Strukturierte Typen
10. Grundlagen imperativer Programmiersprachen
der Universität Oldenburg
Objekte und Arbeitsspeicher
Processing: Arrays & Laden von Dateien Aufbauend auf dem Beispiel: File I/O LoadFile1.
Dateiformate für Rasterbilder
Agenda für heute, 8. Juni, 2006 Strukturierte Variablen: RecordsStrukturierte Variablen: Records Kombiniertes Strukturieren Bitmap-Dateien Datentypen:
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
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.
Grundlagen von Objekt-Pascal Erstellt von J. Rudolf überarbeitet von H.Brehm.
Permanente Datenspeicherung
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
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.
Programmieren in C Grundlagen C 2
Programmierparadigmen
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:
Delphi Chars und Strings
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
The Programming Language Pascal
Prüfungsbesprechung Barbara Scheuner Vorlesung: Programmieren und Problemlösen Prof. Hans Hinterberger.
Extended Pascal Erweiterung von Pascal shadi Behzadipour shadi Shadi behzadipour.
Wiederholte Programmausführung
Programmieren und Problemlösen
Konstruktoren.
Units und Übung 7 Barbara Scheuner
Programmierparadigmen
Strukturierte Variablen: Records
Datentypen: integer, char, string, boolean
Formale Sprachen.
Direkte Filezugriffe Agenda für heute, 22. Juni, 2006
Programmieren und Problemlösen
Prüfungsbesprechung Barbara Scheuner
Datentypen: integer, char, string, boolean
Parametrisierte Prozeduren und Funktionen
Variable: typ varName = Wert Kiste: Art Aufschrift  Inhalt
SS 04 Christiane Rauh Christian Hellinger
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Arrays in C Ein Array ist eine Variable, die aus einer Anzahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
Implementieren von Klassen
Felder in der Informatik
Datentyp- umwandlung.
Schleifen Datenfelder (Arrays) Verzweigungen
The Programming Language Pascal
 Präsentation transkript:

Strukturierte Variablen: Records Agenda für heute, 8. Juni, 2006 Strukturierte Variablen: Records Kombiniertes Strukturieren Bitmap-Dateien Datentypen: Unterbereichstypen

Strukturierung von Variablen: Records Der Datentyp Record erlaubt Variablen, die aus mehreren Feldern bestehen. Die einzelnen Felder können von unterschiedlichem Typ sein. var R: record Tag: byte; Monat: string[9]; Jahr: integer; Werktag: boolean end; Variablebezeichner Recordfeld Feldbezeichner Feldtyp 2/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Records: Datenzugriff Für den Zugriff auf ein Recordfeld muss der Bezeichner der Record- Variablen zusammen mit dem Bezeichner des Feldes angegeben werden. R 12 'Juni' 2000 false R.Monat = Feld mit Wert 'Juni' Recordbezeichner Feldbezeichner Punkt 3/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Kombiniertes Strukturieren Strukturierte Variablen: Records Kombiniertes Strukturieren Bitmap-Dateien Datentypen: Unterbereichstypen

EinJahr: array[1..366]of Tag; Heute: Tag; Arrays von Records Type Tag = record Datum: byte; Wochentag: string[2]; Monat: string[9]; Jahr: integer; Werktag: boolean end; var EinJahr: array[1..366]of Tag; Heute: Tag; Heute 8 'MO' 'Juni' 2006 true 4/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Arrays und Records kombiniert: Zuweisungsbeispiele EinJahr[127].Datum:= 8; EinJahr[127].Wochentag:= 'MO'; EinJahr[127].Monat:= 'Mai'; EinJahr[127].Jahr:= 2006; EinJahr[127].Werktag:= true Heute:= EinJahr[127]; Heute.Datum:= 9; Heute.Wochentag:= 'DI'; EinJahr[128]:= Heute; 5/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Tage: array[1..31] of string[2]; end; Records mit Arrays Type WTage = record Jahr: byte; Monat: byte; Tage: array[1..31] of string[2]; end; var Mai06, Jan07: WTage; Wochentag: string[2]; Mai06 2006 5 'MO' 'DI' 'MI' 'DO' 'FR' ... 6/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Records und Arrays kombiniert: Zuweisungsbeispiele Mai06.Jahr:= 2006; Mai06.Monat:= 5; j:= 1; for i:= 0 to 4 do Mai06.Tage[j+i*7]:= 'MO'; Jan07:= Mai06; Jan07.Jahr:= 2007; Jan07.Monat:= 1; Wochentag:= Mai06.Tage[22]; ('DO') 7/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Wochentag: Jahreszeit; Monat: M; Records mit Records Type M = record Name: string[9]; Jzeit: char; end; Jahreszeit = record Tag: 1..366; Monat: M; end; var Wochentag: Jahreszeit; Monat: M; Wochentag 23 'Januar' 'W' 8/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Records mit Records: Zuweisungsbeispiele Wochentag.Monat.Jzeit:= 'W' Monat.Name:= 'Oktober'; Monat.Jzeit:= 'H'; Wochentag.Monat:= Monat; 9/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Bitmap-Dateien Strukturierte Variablen: Records Kombiniertes Strukturieren Bitmap-Dateien Datentypen: Unterbereichstypen

Bitmap-Dateien Dateikopf (BITMAPFILEHEADER) BMP-Dateien bestehen aus drei Teilen: dem Dateikopf, dem Informationsblock und den Bilddaten. Dateikopf (BITMAPFILEHEADER) Informationsblock (BITMAPINFO): Bitmap-Eigenschaften (BITMAPINFOHEADER) Eventuell: Farbmasken Eventuell: Farbtabelle Eventuell: Ungenutzter Platz Bilddaten 14 Byte 40 Byte Die Bilddaten werden zeilenweise gespeichert. In der Regel beginnen die Bilddaten mit der letzten und enden mit der ersten Bildzeile. 10/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

bmpheader = packed record Bitmap-Dateien bmpheader = packed record {----- fileinfo --------} bfType: word; bfSize: longint; bfReservde1: word; bfReserved2: word; bfOffBits: longint; {----- Bildinfo --------} biSize: longint; biWidth: longint; biHeight: longint; biPlanes: word; biBitCount: word; biCompress: longint; biSizeImage: longint; biXPPM: longint; biYPPM: longint; biClrUsed: longint; biClrImport: longint; end; Typendeklaration für Filevariable um Dateikopf und Informationsblock einer Bitmap-Datei einzulesen. 11/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Bitmap-Dateien lesen Delphi stellt eine Komponente "Image" zur Verfügung mit der Bilddaten bearbeitet werden können Um ein Bild einzulesen wird Image.Picture.LoadFromFile(Dateiname); aufgerufen 12/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Bitmap-Dateien lesen In den Feldern Image.Height und Image.Width werden anschliessend die Bildhöhe resp. die Bildbreite angegeben Im Feld Image.Canvas wird das Bild gespeichert Mit Image.Canvas.Pixel(x,y) wird auf den Pixel an der Position x,y im Bild zugegriffen 13/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Bitmap-Dateien lesen Im Gegensatz zu Textdateien müssen bei Bilddateien zuerst Daten mit Informationen über die gespeicherten Daten (das Bild) gelesen werden Der erste Zugriff geschieht auf eine typisierte Datei (Datentyp Record für Dateikopf und Informationsblock) Die nächsten Zugriffe lesen die Bilddaten Byte um Byte (untypisierte Datei) Delphi erledigt diese Operationen für uns, wir können sie aber auch selber ausprogrammieren (z.B. im TurboPascal) 14/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Bitmap-File von Übung 7 selber einlesen var bildheader: file of bmpheader; bh: bmpheader; binfo: file of byte; i: integer; b:byte; begin AssignFile(bildheader,'Bild1.bmp'); Reset(bildheader); read(bildheader,bh); CloseFile(bildheader); AssignFile(binfo,'Bild1.bmp'); Reset(binfo) end; for i:= 1 to bh.bfOffBits do Read(binfo,b); {fileheader überspringen} {ab hier Bilddaten verarbeiten} 15/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Bitmap-File von Übung 7 selber einlesen (Fortsetzung) var bl, gr, rot: byte; x, y, i: cardinal; for y:= bh.biHeight-1 downto 0 do begin for x:= 0 to bh.biWidth-1 do Read(binfo,bl); Read(binfo,gr); Read(fi1,rot); Image1.Canvas.pixels[x,y]:= 65536*bl+256*gr+rot; end; for i:= 1 to bh.biWidth mod 4 do Read(binfo,rot) {die Null-Einträge am Ende der Zeile überspringen} 16/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Datentypen: Unterbereichstypen Strukturierte Variablen: Records Kombiniertes Strukturieren Bitmap-Dateien Datentypen: Unterbereichstypen

Unterbereichstypen Wird bei der Verwendung einer Variablen vorausgesetzt, dass sie nur Werte innerhalb eines zusammenhängenden Teilbereichs eines ordinalen Typs annehmen darf, dann kann dies durch das Deklarieren eines Unterbereichstyps überwacht werden. const n = 1000; type Teilbereich = 1..n; var x: Teilbereich; oder: x: 1..1000; Die Konstanten, welche die Bereichsgrenzen angeben, müssen vom gleichen ordinalen Typ, dem Host-Typ sein. Alle Operationen, die über den Werten des Host-Typs zulässig sind, können auch über den Werten des Unterbereichstyps ausgeführt werden. 17/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Unterbereichstypen Beispiele type Kleinbuchstabe = 'a'..'z'; Ziffer = '0'..'9'; Index = 1..25; Werktag = Montag..Freitag; Als Unterbereich des Aufzählungstyps Tag var Eingabezeichen: Kleinbuchstabe; A: array[Index] of real; Arbeitstag: Werktag; Wtage: array[Werktag] of integer; x: integer; x:= Wtage[dienstag] 18/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Unterbereichstypen: Eigenschaften Verschiedene Unterbereiche eines bestimmten Typs können im gleichen Ausdruck vorkommen. var klein: 1..10; mittel: 0..100; gross: integer; Der folgende Ausdruck ist gültig: klein * mittel + gross 19/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich

Unterbereichstypen: Eigenschaften Unterbereichstypen können auf beiden Seiten einer Zuweisungs-anweisung stehen: 0..100 1..10 mittel:= klein; klein:= mittel; 1..10 0..100 Prüfung nur während der Programmausführung möglich. (Mit Bereichsprüfung kompilieren). 20/20 Programmieren und Problemlösen © Institut für Computational Science, ETH Zürich