ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ 9.1 Εντολές Εισόδου/εξόδου Στην Pascal, 1. Tα δεδομένα των προγραμμάτων λαμβάνονται: είτε από το πληκτρολόγιο είτε από ένα αρχείο με τη χρήση των διαδικασιών read και readln, οι οποίες ονομάζονται και εντολές εισόδου. 2. Τα περιεχόμενα των μεταβλητών ή οι σταθερές εμφανίζονται : είτε στην οθόνη είτε στον εκτυπωτή είτε σε ένα αρχείο με τη χρήση των διαδικασιών write και writeln, οι οποίες ονομάζονται και εντολές εξόδου. 9.1.1 read, readln read(παραμετρος1, παράμετρος2,.) Η διαδικασία read ακολουθείται από μία ή περισσότερες παραμέτρους, οι οποίες είναι τα ονόματα των μεταβλητών (δηλαδή τα ονόματα των διευθύνσεων της μνήμης) όπου θα αποθηκευτούν τα δεδομένα. Οι παράμετροι περιέχονται σε μία παρένθεση και χωρίζονται με, κόμμα. Όταν εκτελείται η read τα δεδομένα διαβάζονται (συνήθως από το πληκτρολόγιο) και δίνονται στις μεταβλητές με τη σειρά που είναι γραμμένες. Συγκεκριμένα, αν οι παράμετροι της εντολής read είναι ακέραιοι, εκτελούνται τα παρακάτω βήματα: 1. Διαβάζεται ένας αριθμός από το πληκτρολόγιο 2. Αποθηκεύεται ο αριθμός στη μεταβλητή (δηλαδή στην αντίστοιχη θέση μνήμης) 3. Επαναλαμβάνονται τα βήματα 1 και 2 για την επόμενη μεταβλητή Όταν αποθηκευτεί τιμή και στην τελευταία μεταβλητή της λίστας των παραμέτρων, τότε τελειώνει η εκτέλεση της εντολής read. Προσοχή: Αν τα δεδομένα μιας γραμμής δεν είναι αρκετά για να πάρουν τιμές οι παράμετροι μιας εντολής read, τότε αυτή συνεχίζει να διαβάζει και στην επόμενη γραμμή. 1 Γεωργιλά Χιονία, Καθ. Πληροφορικής
Αν τα δεδομένα δεν φτάνουν για όλες τις μεταβλητές της εντολής read, τότε η εκτέλεση της σταματάει μέχρι να γίνει εισαγωγή από το πληκτρολόγιο. Οι εντολές: read(a); read(b); και read(a, b); είναι ισοδύναμες. Δεδομένα αριθμητικού τύπου (δηλαδή integer, real κλπ) όταν δίνονται πολλά στην ίδια γραμμή πρέπει να χωρίζονται με ένα ή περισσότερα κενά. Δεδομένα τύπου χαρακτήρα (char) δεν πρέπει να χωρίζονται με κενά, γιατί το κενό είναι ένας χαρακτήρας ο οποίος θα διαβαστεί Η εισαγωγή πραγματικού (real) σε ακέραια (integer) μεταβλητή δεν είναι επιτρεπτή (προκύπτει λάθος κατά την εκτέλεση του προγράμματος, run-time error) Η εισαγωγή ακέραιου (integer) σε πραγματική (real) μεταβλητή είναι επιτρεπτή. readln(παραμετρος1, παράμετρος2,.) Η διαδικασία readln μπορεί να ακολουθείται από μία ή περισσότερες παραμέτρους, οι οποίες είναι τα ονόματα των μεταβλητών (δηλαδή τα ονόματα των διευθύνσεων της μνήμης) όπου θα αποθηκευτούν τα δεδομένα. Οι παράμετροι περιέχονται σε μία παρένθεση και χωρίζονται με, κόμμα. Η εντολή: readln(παραμετρος1, παράμετρος2,.); είναι ισοδύναμη με τις εντολές: read(παραμετρος1, παράμετρος2,.); readln; Όταν εκτελείται μία readln με παραμέτρους, τα δεδομένα διαβάζονται, δίνονται στις μεταβλητές με τη σειρά που είναι γραμμένες και στη συνέχεια ο έλεγχος περνάει στην επόμενη γραμμή. Όταν εκτελείται μία readln χωρίς παραμέτρους, ο έλεγχος απλώς περνάει στην επόμενη γραμμή. Αν τα δεδομένα δεν φτάνουν για όλες τις μεταβλητές της εντολής readln, τότε η εκτέλεση της σταματάει μέχρι να γίνει εισαγωγή από το πληκτρολόγιο. 2 Γεωργιλά Χιονία, Καθ. Πληροφορικής
9.1.2 write, writeln write(παραμετρος1, παράμετρος2,.) Η διαδικασία ακολουθείται από μία ή περισσότερες παραμέτρους οι οποίες μπορεί να είναι: Σταθερές (πχ. 1090, Το όνομα μου είναι: ), Μεταβλητές ή Εκφράσεις (πχ. a+b/e) σε αντίθεση με τη read που παίρνει σαν παραμέτρους μόνο μεταβλητές. Η τιμή κάθε παραμέτρου τυπώνεται στη γραμμή από αριστερά προς τα δεξιά και μπορεί να είναι αριθμοί, χαρακτήρες ή αλφαριθμητικά στοιχεία (ή συμβολοσειρές ή string). Οι συμβολοσειρές περιέχονται σε μονά εισαγωγικά. Παράδειγμα: write( αυτή είναι μια συμβολοσειρά ) Χρησιμοποιείται συχνά για να εμφανίσει ένα προτρεπτικό μήνυμα κατά τη διαδικασία εισαγωγής δεδομένων. Πχ. write( Δώσε βασικό μισθό : ); readln(mistos); writeln(παραμετρος1, παράμετρος2,.) 1. Όταν η διαδικασία writeln ακολουθείται από μία ή περισσότερες παραμέτρους οι οποίες μπορεί να είναι: Σταθερές (πχ. 1090, Το όνομα μου είναι: ), Μεταβλητές ή Εκφράσεις (πχ. a+b/e) Είναι ισοδύναμη των write και writeln. Δηλαδή: η τιμή κάθε παραμέτρου τυπώνεται στη γραμμή από αριστερά προς τα δεξιά και η επόμενη ενολή εισόδου/εξόδου εκτελείται στην αρχή της επόμενης γραμμής. 2. Όταν η διαδικασία writeln εμφανίζεται χωρίς παραμέτρους έχει ως αποτέλεσμα, να περνάει ο έλεγχος στην αρχή της επόμενης γραμμής. Μορφοποιημένη εκτύπωση Υπάρχουν 2 βασικές τεχνικές για τη μορφοποίηση της εκτύπωσης: Οι κενές γραμμές: Για να έχουμε κενές γραμμές αρκεί να δώσουμε την εντολή writeln τόσες φορές όσες είναι οι κενές γραμμές που θέλουμε. Η εισαγωγή κενών: 3 Γεωργιλά Χιονία, Καθ. Πληροφορικής
Για την εισαγωγή κενών στη γραμμή μεταξύ των παραμέτρων, περιλαμβάνουμε όσα κενά θέλουμε μεταξύ εισαγωγικών. Τι είναι η οδηγία μορφοποίησης στις εντολές write και writeln; Ποιες είναι οι μορφές που έχει για ακέραιες, αλφαριθμητικές και πραγματικές παραμέτρους; Η οδηγία μορφοποίησης: καθορίζει πώς θα εκτυπωθούν τα αποτελέσματα είναι μια πληροφορία που ακολουθεί την παράμετρο δίνει πληροφορίες για το επιθυμητό εύρος πεδίου (το πλήθος των θέσεων δηλαδή) που θα πιάσει η παράμετρος κατά την εκτύπωσή της Η οδηγία μορφοποίησης έχει 2 μορφές: 1. Αν η παράμετρος x είναι ακέραιου ή αλφαριθμητικού τύπου, τότε η οδηγία μορφοποίησης είναι ως εξής: write(x:m). Όπου: x m η παράμετρος που θα τυπωθεί το πλήθος των θέσεων που θα πιάσει κατά την εκτύπωσή της Σε αυτή τη μορφή λειτουργεί ως εξής: Κάνει δεξιά στοίχιση, δηλαδή αν το πλήθος των θέσεων είναι μεγαλύτερο από αυτό που χρειάζεται η παράμετρος x, τότε εμφανίζονται κενά στην αριστερή πλευρά της τιμής της x. Αν το πλήθος των θέσεων είναι μικρότερο από αυτό που χρειάζεται η παράμετρος x, τότε αγνοείται η οδηγία μορφοποίησης και χρησιμοποιούνται οι ελάχιστες θέσεις που χρειάζονται. 2. Αν η παράμετρος x είναι πραγματικού τύπου, τότε η οδηγία μορφοποίησης είναι ως εξής: write(x:m:n). Όπου: x m n η παράμετρος που θα τυπωθεί το συνολικό πλήθος των θέσεων που θα πιάσει κατά την εκτύπωσή της, μαζί με την υποδιαστολή και το πλήθος των δεκαδικών ψηφίων Σε αυτή τη μορφή λειτουργεί ως εξής: Κάνει στρογγυλοποίηση και ο αριθμός εμφανίζεται με τη γνωστή από τα Μαθηματικά, μορφή σταθερής υποδιαστολής. Κάνει δεξιά στοίχιση, δηλαδή αν το πλήθος των θέσεων είναι μεγαλύτερο από αυτό που χρειάζεται η παράμετρος x, τότε εμφανίζονται κενά στην αριστερή πλευρά της τιμής της x. Αν το πλήθος των θέσεων είναι μικρότερο από αυτό που χρειάζεται η παράμετρος x, τότε αγνοείται η οδηγία μορφοποίησης και χρησιμοποιούνται οι ελάχιστες θέσεις που χρειάζονται. 4 Γεωργιλά Χιονία, Καθ. Πληροφορικής
Πχ. η εντολή write(3.14159265:10:4) όταν εκτελεστεί: Θα στρογγυλοποιήσει τον αριθμό στο τέταρτο δεκαδικό ψηφίο, δηλαδή θα τον κάνει 3.1416 Θα εμφανίσει τον αριθμό 3.1416 σε ένα πεδίο 10 θέσεων, στοιχισμένο δεξιά. Δηλαδή 4 κενά και ο αριθμός: 3.1416 9.2 Εντολή Αντικατάστασης μεταβλητή := έκφραση Το περιεχόμενο της μνήμης που ορίζεται με το όνομα της μεταβλητής που βρίσκεται αριστερά του συμβόλου αντικατάστασης := αντικαθίσταται από την τιμή της έκφρασης που βρίσκεται δεξιά του :=. Η έκφραση αυτή μπορεί να είναι επίσης μία σταθερά ή μια άλλη μεταβλητή Το := θεωρείται ένα σύμβολο και δεν επιτρέπονται κενά Βλέπε παραδείγματα του βιβλίου στη σελίδα 86 9.3 Ακολουθία Τι είναι η ακολουθία; Ακολουθία είναι μία σειρά εντολών που εκτελούνται η μία μετά την άλλη. Βλέπε σχήμα στο κάτω μέρος της σελίδας 86 5 Γεωργιλά Χιονία, Καθ. Πληροφορικής