Η εγγραφή (Record)
Μια εγγραφή (record) μας δίνει την δυνατότητα να έχουμε συσχετισμένα δεδομένα σε μία κοινή δομή. Δηλώνοντας μια έγγραφη δηλώνουμε ένα δικό μας τύπο ο οποίος περιέχει όσα πεδία θέλουμε το καθένα απο τα οποία μπορεί να είναι διαφορετικού τύπου.
Για να δηλώσουμε μια εγγραφή (record), χρησιμοποιούμε την εξής σύνταξη:
type TypeName = record identifierlist1 : datatype1; ... identifierlistn : datatypen; end;
Για παράδειγμα, αν θέλουμε να συγκεντρώσουμε πληροφορίες για ένα άτομο, όπως όνομα, ηλικία, πόλη κατοικίας, ΤΚ κ.ά., μπορούμε να δημιουργήσουμε μια εγγραφή ως εξής:
type InfoType = record Name : string; Age : integer; City, State : String; Zip : integer; end;
Χρήση των εγγραφών (record) στο πρόγραμμα
Όπως και με τους πίνακες για να χρησιμοποιήσουμε μια εγγραφή ισχύουν τα ίδια βήματα:
- Πρώτα δημιουργούμε τον τύπο record στο τμήμα type
- Στην συνέχεια δημιουργούμε μεταβλητή τύπου αυτού του record.
- Και μετά μπορούμε να χρησιμοποιήσουμε τη μεταβλητή αυτή
Παρομοίως μπορούμε να στείλουμε μεταβλητές τύπου record ως παραμέτρους σε μεθόδους και πρέπει να προσέξουμε τη χρήση της λέξης var στη δήλωση του τίτλου της συνάρτησης ή διαδικασίας (μεθόδου) που χρησιμοποιούμε.
Το καθένα από τα αναγνωριστικά (identifiers) Name, Age, City, State και Zip είναι γνωστό και ως πεδίο (field).
Μπορούμε να έχουμε πρόσβαση σ’ ένα πεδίο μέσω μιας μεταβλητής ως εξής :
VariableIdentifier.FieldIdentifier
ΣΗΜΕΙΩΣΗ: Μια ΤΕΛΕΙΑ ξεχωρίζει την μεταβλητή από το όνομα του πεδίου.
Η εντολή With
Υπάρχει μια πολύ χρήσιμη εντολή όταν ασχολούμαστε με records. Αν σκοπεύουμε να χρησιμοποιήσουμε μια μεταβλητή record για να αναφερθούμε σε πολλά πεδία που ανήκουν σ’ αυτό το record και ΔΕΝ θέλουμε να γράφουμε το ίδιο όνομα συνέχεια, μπορούμε να χρησιμοποιήσουμε την εντολή with, ως εξής :
with RecordVariable do begin ... end; With myBookRec do Begin Title := 'Some Book'; Author := 'Victor John Saliba'; ISBN := '0-12-345678-9'; Price := 25.5; End;
Παραδείγματα (Εφαρμογές των Εγγραφών):
Ακολουθεί ένα παράδειγμα :
Type Str25 = String[25]; TBookRec = Record Title, Author, ISBN : Str25; Price : Real; End; Var myBookRec : TBookRec; Begin myBookRec.Title := 'Some Book'; myBookRec.Author := 'Victor John Saliba'; myBookRec.ISBN := '0-12-345678-9'; myBookRec.Price := 25.5; Writeln('Here are the book details:'); Writeln; Writeln('Title: ', myBookRec.Title); Writeln('Author: ', myBookRec.Author); Writeln('ISBN: ', myBookRec.ISBN); Writeln('Price: ', myBookRec.Price); Readln; End.
Ακολουθεί ακόμη ένα παράδειγμα με διαδικασίες / συναρτήσεις:
{Δηλώσεις Τύπων} Type Str25 = String[25]; TBookRec = Record Title, Author, ISBN : Str25; Price : Real; End; {Δηλώσεις Μεθόδων} Procedure EnterNewBook(var newBook : TBookRec); Begin Writeln('Please enter the book details: '); Write('Book Name: '); Readln(newBook.Title); Write('Author: '); Readln(newBook.Author); Write('ISBN: '); Readln(newBook.ISBN); Write('Price: '); Readln(newBook.Price); End; Procedure DisplayBookDetails(myBookRec : TBookRec); Begin Writeln('Here are the book details:'); Writeln; Writeln('Title: ', myBookRec.Title); Writeln('Author: ', myBookRec.Author); Writeln('ISBN: ', myBookRec.ISBN); Writeln('Price: ', myBookRec.Price); End; {Δηλώσεις Καθολικών Μεταβλητών} Var bookRec : TBookRec; {Κύριο Πρόγραμμα} Begin EnterNewBook(bookRec); Writeln('Thanks for entering the book details'); DisplayBookDetails(bookRec); Readln; End.