Σειριακά αρχεία
Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr
Εισαγωγή στα αρχεία
- Τα
αρχεία (files)
παρέχουν στην Pascal τη δυνατότητα μεταφοράς των δεδομένων
από και προς τις αντίστοιχες οντότητες που υποστηρίζει
το λειτουργικό σύστημα.
- Έτσι από την Pascal μπορούμε να δημιουργήσουμε αρχεία στην
περιφερειακή μνήμη (λ.χ. τη μονάδα δίσκου) για να φυλάξουμε στοιχεία
τα οποία θα έχουν διάρκεια ζωής μεγαλύτερη από αυτή του προγράμματός
μας.
- Ως υπηρεσία που προσφέρεται από το λειτουργικό σύστημα ο
χειρισμός των αρχείων αλλάζει ανάλογα με την υλοποίηση της γλώσσας
και το λειτουργικό σύστημα.
- Εμείς εξετάζουμε τη χρήση των αρχείων σε Turbo Pascal
κάτω από το MS-DOS.
Βασικός χειρισμός
- Ο χειρισμός των αρχείων στην Pascal γίνεται μέσω μιας
μεταβλητής τύπου
FILE OF ...
- Πριν θελήσουμε να διαβάσουμε ή να γράψουμε ένα αρχείο πρέπει
να συνδέσουμε τη μεταβλητή χειρισμού του αρχείου (π.χ. FileVar) με το
όνομα του αρχείου που θα χρησιμοποιήσει το λειτουργικό σύστημα.
Η σύνδεση αυτή γίνεται με την εντολή
assign(FileVar, FileName)
- Πριν γράψουμε στο αρχείο
πρέπει να καλέσουμε την εντολή
rewrite(FileVar)
ενώ πριν διαβάσουμε από το αρχείο
πρέπει να καλέσουμε την εντολή reset(FileVar)
.
- Από το αρχείο διαβάζουμε και γράφουμε με τη χρήση των
εντολών
read(FileVar, Var ...)
και
write(FileVar, Var ...)
.
- Οι εντολές αυτές μεταφέρουν τα δεδομένα μεταξύ της μεταβλητής
και του αρχείου σύμφωνα με την παράσταση των δεδομένων στην
εσωτερική μνήμη του υπολογιστή.
- Κατά την ανάγνωση του αρχείου μπορούμε να ελέγξουμε αν το αρχείο
περιέχει και άλλα στοιχεία με τη συνάρτηση
EOF(FileVar)
(End of File).
- Τέλος, όταν τελειώσουμε τη χρήση του αρχείου καλούμε την εντολή
close(FileVar)
για να σταματήσει ο συσχετισμός της
μεταβλητής χειρισμού του αρχείου με το αρχείο του λειτουργικού
συστήματος.
Παράδειγμα:
program testfile;
var
f : file of integer;
i : integer;
begin
assign(f, 'INT.DAT');
rewrite(f);
for i := 1 to 5 do
write(f, i);
close(f);
reset(f);
while not eof(f) do
begin
read(f, i);
writeln(i)
end;
close(f);
end.
Μετά την εκτέλεση του παραπάνω προγράμματος
το αρχείο INT.DAT θα περιέχει τις παρακάτω τιμές:
01 00 02 00 03 00 04 00 05 00
Αρχεία κειμένου
- Η Pascal ορίζει έναν ειδικό τύπου αρχείου το αρχείο κειμένου
(
TEXT
) κατά τη χρήση του οποίου οι τιμές
που περιέχονται στο αρχείο μετατρέπονται αυτόματα ανάμεσα σε
κείμενο και την εσωτερική παράσταση του υπολογιστή.
- Τα αρχεία αυτά έχουν τις παρακάτω διαφορές σε σχέση με
τα αρχεία τα οποία έχουμε δει μέχρι τώρα:
- Μπορούν να διαβαστούν και να γραφούν από άνθρωπο με τη χρήση
κειμενογράφου.
- Μπορούν να μεταφερθούν ανάμεσα σε υπολογιστές με διαφορετική
αρχιτεκτονική.
- Μπορούν να χρησιμοποιηθούν για τη φύλαξη διαφορετικών τύπων
τιμών χωρίς τη χρήση εγγραφών.
- Δεν μπορούν να χρησιμοποιηθούν για τη φύλαξη σύνθετων στοιχείων
(πινάκων, εγγραφών).
- Η λειτουργία τους είναι πιο αργή λόγω του κόστους της μετατροπής.
- Κατά τη χρήση των αρχείων αυτών μπορούμε να γράφουμε και να
διαβάζουμε τιμές με τις εντολές
WRITE, WRITELN, READ, READLN
όπως θα γράφαμε τιμές στην οθόνη και θα τις διαβάζαμε τιμές από το
πληκτρολόγιο.
Παράδειγμα:
program testfile;
var
f : text;
i : integer;
begin
assign(f, 'INT.TXT');
rewrite(f);
for i := 1 to 5 do
writeln(f, i);
close(f);
reset(f);
while not eof(f) do
begin
readln(f, i);
writeln(i)
end;
close(f);
end.
Μετά την εκτέλεση του παραπάνω προγράμματος
το αρχείο INT.TXT θα περιέχει το παρακάτω κείμενο:
1
2
3
4
5
Παράδειγμα
Το παρακάτω παράδειγμα ζητάει από το χρήστη να προσδιορίσει
δύο ονόματα αρχείων Α, Β και αντιγράφει το αρχείο Α στο αρχείο Β.
program copyfile;
var
infname, outfname : packed array [0..8] of char;
fin, fout : file of char;
c : char;
begin
write('Give input file:');
readln(infname);
write('Give output file:');
readln(outfname);
assign(fin, infname);
assign(fout, outfname);
rewrite(fout);
reset(fin);
rewrite(fout);
while not eof(fin) do
begin
read(fin, c);
write(fout, c)
end;
close(fin);
close(fout);
end.
Βιβλιογραφία
- Θ. Αλεβίζου, Α. Καμπουρέλη
Μαθήματα προγραμματισμού: Εισαγωγή με τη γλώσσα Pascal.
σ. 211-250.
Θυμέλη, 1995.
- Doug Cooper and
Michael Clancy.
Oh! Pascal, pages 419–458.
W. W. Norton & Company, second edition, 1985.
Ασκήσεις
Pascal 10
- Να επεκταθεί το πρόγραμμα της αριθμομηχανής (Pascal 09) έτσι
ώστε να καταγράφει σε αρχείο κειμένου τις πράξεις και τα αποτελέσματα.
- Ως παραδοτέο της άσκησης να αποσταλεί (με τον κωδικό PASCAL 20)
και ένα αντίγραφο του αρχείου
αυτού που να περιέχει δείγματα όλων των πράξεων.
Παράδειγμα του αρχείου:
(5 + 3i) + (1 + 2i) = (6 + 5i)
(5 + 3i) - (1 + 2i) = (4 + 1i)
(1 + 1i) * (1.5 + 2i) = (-0.5 + 3.5i)
...
Περισσότερες λεπτομέρειες για τις ασκήσεις