Εναλλακτικές εντολές για ανάγνωση/εγγραφή Ανάγνωση από το πληκτρολόγιο και εγγραφή στην οθόνη γίνεται με τις εντολές Εναλλακτικές μορφές είναι οι Οι τελευταίες μπορούν να επεκταθούν για ανάγνωση και εγγραφή σε αρχείο
Σύνδεση αρχείου σε πρόγραμμα (1/4) Για να χρησιμοποιήσουμε αρχείο για ανάγνωση/εγγραφή, πρέπει να εκτελέσουμε την εντολή όπου unit = ένας μη αρνητικός ακέραιος αριθμός ή ακέραια σταθερή ποσότητα ( ) Προτεινόμενες τιμές 10 99 file = το όνομα του αρχείου σε εισαγωγικά action = ή αν θέλουμε να χρησιμοποιήσουμε το αρχείο για ανάγνωση ή εγγραφή
Σύνδεση αρχείου σε πρόγραμμα (2/4) Για να χρησιμοποιήσουμε αρχείο για ανάγνωση/εγγραφή, πρέπει να εκτελέσουμε την εντολή όπου status = ή ή το αρχείο υπάρχει ήδη το αρχείο δεν υπάρχει και θα δημιουργηθεί αν υπάρχει το αρχείο θα σβηστεί και θα δημιουργηθεί, αν δεν υπάρχει θα δημιουργηθεί
Αρχεία Σύνδεση αρχείου σε πρόγραμμα (3/4) Παρατηρήσεις Η εκτέλεση της εντολής αντιστοιχίζει ένα αρχείο με συγκεκριμένο αριθμό unit
Αρχεία Σύνδεση αρχείου σε πρόγραμμα (3/4) Παρατηρήσεις Η εκτέλεση της εντολής αντιστοιχίζει ένα αρχείο με συγκεκριμένο αριθμό unit Η σειρά των ορισμάτων (,,, ) μπορεί να είναι οποιαδήποτε
Σύνδεση αρχείου σε πρόγραμμα (3/4) Παρατηρήσεις Η εκτέλεση της εντολής αντιστοιχίζει ένα αρχείο με συγκεκριμένο αριθμό unit Η σειρά των ορισμάτων (,,, ) μπορεί να είναι οποιαδήποτε Το, αν είναι πρώτο, μπορεί να παραληφθεί (όχι όμως ο ακέραιος):
Σύνδεση αρχείου σε πρόγραμμα (3/4) Παρατηρήσεις Η εκτέλεση της εντολής αντιστοιχίζει ένα αρχείο με συγκεκριμένο αριθμό unit Η σειρά των ορισμάτων (,,, ) μπορεί να είναι οποιαδήποτε Το, αν είναι πρώτο, μπορεί να παραληφθεί (όχι όμως ο ακέραιος): Τα, μπορούν να παραληφθούν (μην το κάνετε!) Τα μόνα απαραίτητα είναι το unit και το όνομα αρχείου
Σύνδεση αρχείου σε πρόγραμμα (3/4) Παρατηρήσεις Η εκτέλεση της εντολής αντιστοιχίζει ένα αρχείο με συγκεκριμένο αριθμό unit Η σειρά των ορισμάτων (,,, ) μπορεί να είναι οποιαδήποτε Το, αν είναι πρώτο, μπορεί να παραληφθεί (όχι όμως ο ακέραιος): Τα, μπορούν να παραληφθούν (μην το κάνετε!) Τα μόνα απαραίτητα είναι το unit και το όνομα αρχείου Μπορούμε να έχουμε συνδεδεμένα ταυτόχρονα πάνω από ένα αρχεία
Αρχεία Σύνδεση αρχείου σε πρόγραμμα (4/4) Παραδείγματα Σύνδεση του αρχείου με όνομα για ανάγνωση, που (προφανώς) προϋπάρχει:
Σύνδεση αρχείου σε πρόγραμμα (4/4) Παραδείγματα Σύνδεση του αρχείου με όνομα για ανάγνωση, που (προφανώς) προϋπάρχει: Σύνδεση του αρχείου με όνομα για εγγραφή:
Αρχεία Ανάγνωση/Εγγραφή αρχείου (1/2) Αφού εκτελεστεί η εντολή : Ανάγνωση μίας γραμμής αρχείου που αντιστοιχήθηκε στον αριθμό 25 και ανοίχθηκε για ανάγνωση:
Ανάγνωση/Εγγραφή αρχείου (1/2) Αφού εκτελεστεί η εντολή : Ανάγνωση μίας γραμμής αρχείου που αντιστοιχήθηκε στον αριθμό 25 και ανοίχθηκε για ανάγνωση: Εγγραφή μίας γραμμής σε αρχείο που αντιστοιχήθηκε στον αριθμό 59 και ανοίχθηκε για εγγραφή: Κάθε ή προχωρά αυτόματα στην επόμενη γραμμή
Ανάγνωση/Εγγραφή αρχείου (2/2) Αν υπάρχουν περισσότερες μεταβλητές στην εντολή από τα δεδομένα στη γραμμή του αρχείου, η ανάγνωση συνεχίζεται στην επόμενη γραμμή (η οποία διαβάζεται ολόκληρη) Παράδειγμα Αρχείο με 25: Εντολές: Τιμές: το a 1, το b 2, το c 3, το d 4, το e 7, το f 10, το g 11
Αρχεία Αποσύνδεση αρχείου Αφού ολοκληρώσουμε τη χρήση του αρχείου: ή πιο απλά, αφού το μπορεί να παραληφθεί:
Αποσύνδεση αρχείου Αφού ολοκληρώσουμε τη χρήση του αρχείου: ή πιο απλά, αφού το μπορεί να παραληφθεί: Παρατηρήσεις Μετά την εκτέλεση της εντολής δεν μπορούμε να διαβάσουμε/γράψουμε στο αρχείο, μπορούμε να χρησιμοποιήσουμε τον αριθμό unit για άλλο αρχείο
Παράδειγμα ανάγνωσης αρχείου Το αρχείο έχει 10 γραμμές με δύο ακέραιους αριθμούς σε κάθε γραμμή Η αποθήκευση σε διανύσματα γίνεται με τον κώδικα
Παράδειγμα εγγραφής σε αρχείο Το διάνυσμα περιέχει αριθμούς Θέλουμε να γραφούν στο αρχείο, με κάθε αριθμό σε ξεχωριστή γραμμή:
Αρχεία Εντολές READ/WRITE Παρατήρηση (1/2) H πρώτη θέση στο ή στο προσδιορίζει το πού θα γίνει η ανάγνωση/εγγραφή: Αν έχει θα γίνει από πληκτρολόγιο/οθόνη Αν έχει ακέραιο, θα γίνει από το αρχείο που συνδέθηκε στον αριθμό αυτό
Εντολές READ/WRITE Παρατήρηση (2/2) Το (μόνο) στις εντολές ή το δεύτερο στις ισοδύναμες εντολές προσδιορίζει ότι η ανάγνωση/εγγραφή θα γίνει από το μεταγλωττιστή με βάση τα δεδομένα που παρατίθενται στις εντολές (από τον τύπο τους θα καταλάβει τι τιμές θα τυπώσει), με όποιο τρόπο επιλέξει (πχ πλήθος δεκαδικών) Μπορούμε να προσδιορίσουμε εμείς πώς θα γίνει
Διαμόρφωση εγγραφής Θα περιγράψουμε αποκλειστικά πώς προσδιορίζουμε τη διαμόρφωση κατά την εγγραφή Η ανάγνωση καλύτερα να γίνεται από τον μεταγλωττιστή (βάζουμε στο ) Γράφουμε ή ισοδύναμα Εντός των παρενθέσεων στα εισαγωγικά παραθέτουμε το προσδιοριστικό της ποσότητας που θα εκτυπωθεί ή ένα προσδιοριστικό ελέγχου
Αρχεία Προσδιοριστικό εγγραφής ακεραίου (1/2) Για ακέραια ποσότητα χρησιμοποιούμε το χαρακτήρα Ι ακολουθούμενο από το πλήθος των θέσεων, w Η γενική μορφή είναι Iw Αν το w είναι μεγαλύτερο από το πλήθος των ψηφίων (με το πιθανό πρόσημο), ο αριθμός συμπληρώνεται με κενά Αν είναι μικρότερο, τυπώνεται w φορές ο χαρακτήρας (και όχι ο αριθμός)
Προσδιοριστικό εγγραφής ακεραίου (1/2) Για ακέραια ποσότητα χρησιμοποιούμε το χαρακτήρα Ι ακολουθούμενο από το πλήθος των θέσεων, w Η γενική μορφή είναι Iw Αν το w είναι μεγαλύτερο από το πλήθος των ψηφίων (με το πιθανό πρόσημο), ο αριθμός συμπληρώνεται με κενά Αν είναι μικρότερο, τυπώνεται w φορές ο χαρακτήρας (και όχι ο αριθμός) Παράδειγμα Η εντολή Τυπώνει τον ακέραιο 12 σε 5 θέσεις, στοιχισμένο δεξιά:
Προσδιοριστικό εγγραφής ακεραίου (2/2) Για ακέραια ποσότητα μπορούμε να θέσουμε το w είναι 0 (δηλαδή η διαμόρφωση είναι I0) Η εκτύπωση θα γίνει ακριβώς σε όσες θέσεις χρειάζονται, χωρίς κενά πριν και μετά Παράδειγμα Η εντολή Τυπώνει τον ακέραιο 12 σε 3 θέσεις:
Προσδιοριστικό εγγραφής πραγματικού (1/3) Για την εκτύπωση πραγματικής ποσότητας σε δεκαδική μορφή χρησιμοποιούμε το χαρακτήρα F ακολουθούμενο από το πλήθος των θέσεων, w, και το επιθυμητό πλήθος δεκαδικών, d Στις θέσεις υπολογίζονται το πιθανό πρόσημο και η τελεία Η γενική μορφή είναι Fwd Αν οι θέσεις w δεν επαρκούν, τυπώνεται w φορές ο χαρακτήρας (και όχι ο αριθμός) Το w μπορεί να είναι 0 Παράδειγμα Η εντολή Τυπώνει τον πραγματικό 14629 σε 9 θέσεις με 3 δεκαδικά:
Προσδιοριστικό εγγραφής πραγματικού (2/3) Για την εκτύπωση πραγματικής ποσότητας σε εκθετική μορφή, δηλαδή, στη μορφή ±0xxxxE±yy ή ±0xxxxE±yyy ή και ±xxxxe±yy ή ±xxxxe±yyy, χρησιμοποιούμε το χαρακτήρα E ακολουθούμενο από το πλήθος των θέσεων, w, και το επιθυμητό πλήθος δεκαδικών, d Στις θέσεις υπολογίζονται τα πιθανά πρόσημα, η τελεία και το E Η γενική μορφή είναι Ewd Αν οι θέσεις w δεν επαρκούν, τυπώνεται w φορές ο χαρακτήρας (και όχι ο αριθμός)
Προσδιοριστικό εγγραφής πραγματικού (3/3) Παράδειγμα Οι εντολές Τυπώνουν καθώς ο πραγματικός αριθμός 14629 = 014629 10 3 χρειάζεται τουλάχιστον 10 θέσεις για να τυπωθεί με 3 δεκαδικά
Προσδιοριστικό εγγραφής σειράς χαρακτήρων Για την εκτύπωση σειράς χαρακτήρων (κείμενο εντός εισαγωγικών) χρησιμοποιούμε το χαρακτήρα A Μπορεί, αλλά δεν είναι υποχρεωτικό, να ακολουθείται από το πλήθος των θέσεων, w Προσέξτε ότι κάθε ελληνικός χαρακτήρας χρειάζεται δύο τέτοιες θέσεις Παράδειγμα Οι εντολές Τυπώνουν
Αρχεία Προσδιοριστικά ελέγχου Στο προσδιοριστικό διαμόρφωσης μπορούμε να συμπεριλάβουμε σειρές χαρακτήρων εντός εισαγωγικών, οι οποίες τυπώνονται αυτούσιες, τον χαρακτήρα /, που προκαλεί αλλαγή γραμμής, τους χαρακτήρες nx, όπου n ακέραιος αριθμός Το format αυτό προκαλεί την εκτύπωση n κενών
Πολλαπλά προσδιοριστικά διαμόρφωσης Στην περίπτωση εκτύπωσης πολλών ποσοτήτων, παραθέτουμε στο format όλα τα προσδιοριστικά διαμόρφωσης, χωριζόμενα με κόμμα (,) Μπορούμε να επαναλάβουμε διαδοχικές ίδιες διαμορφώσεις γράφοντας ένα προσδιοριστικό και μπροστά του το πλήθος επανάληψης Μπορούμε να ομαδοποιήσουμε, εντός παρενθέσεων, και να επαναλάβουμε προσδιοριστικά διαμόρφωσης
Πολλαπλά προσδιοριστικά διαμόρφωσης Στην περίπτωση εκτύπωσης πολλών ποσοτήτων, παραθέτουμε στο format όλα τα προσδιοριστικά διαμόρφωσης, χωριζόμενα με κόμμα (,) Μπορούμε να επαναλάβουμε διαδοχικές ίδιες διαμορφώσεις γράφοντας ένα προσδιοριστικό και μπροστά του το πλήθος επανάληψης Μπορούμε να ομαδοποιήσουμε, εντός παρενθέσεων, και να επαναλάβουμε προσδιοριστικά διαμόρφωσης Παράδειγμα Η εντολή Τυπώνει
Αποφυγή αλλαγής γραμμής στην εκτύπωση Αν δεν επιθυμούμε να αλλάξει η γραμμή μετά την εκτύπωση, συμπληρώνουμε την εντολή με το Είναι απαραίτητο να προσδιορίζεται συγκεκριμένο για την εκτύπωση και όχι απλώς το Παράδειγμα Με τις εντολές αυτές η πληκτρολόγηση της τιμής για το x από το χρήστη γίνεται στην ίδια γραμμή με το κείμενο