Δηλώσεις READ και READLN. Διαφορά μεταξύ readLn και read Τι είναι η εντολή readLn

Η εντολή ανάγνωσης προορίζεται για την εισαγωγή μεταβλητών τιμών (αρχικά δεδομένα) από το πληκτρολόγιο. Σε γενικές γραμμές, η οδηγία μοιάζει με αυτό:

ανάγνωση (Variable!, Variable2, ... VariableU όπου μεταβλητή είναι το όνομα της μεταβλητής της οποίας η τιμή πρέπει να εισαχθεί από το πληκτρολόγιο κατά την εκτέλεση του προγράμματος.

Ακολουθούν παραδείγματα σύνταξης μιας δήλωσης ανάγνωσης:

Διάβασε ένα); ανάγνωση (Cena, Kol);

Όταν εκτελείται μια πρόταση ανάγνωσης, συμβαίνουν τα εξής:

1. Το πρόγραμμα διακόπτει την εργασία του και περιμένει μέχρι να πληκτρολογηθούν τα απαιτούμενα δεδομένα στο πληκτρολόγιο και να πατηθεί το πλήκτρο .

2. Αφού πατήσετε το πλήκτρο η εισαγόμενη τιμή εκχωρείται στη μεταβλητή της οποίας το όνομα καθορίζεται στη δήλωση.

Για παράδειγμα, ως αποτέλεσμα της εκτέλεσης της εντολής

Ανάγνωση (Ισχυρή θερμοκρασία);

και πληκτρολογώντας τη γραμμή 21 στο πληκτρολόγιο, η τιμή της μεταβλητής Tempérât θα είναι ο αριθμός 21.

Μια δήλωση ανάγνωσης σάς επιτρέπει να λαμβάνετε τις τιμές πολλών μεταβλητών. Σε αυτήν την περίπτωση, οι εισαγόμενοι αριθμοί πρέπει να πληκτρολογηθούν σε μία γραμμή και να χωριστούν με κενά. Για παράδειγμα, εάν ο τύπος των μεταβλητών a, b και c είναι πραγματικός, τότε ως αποτέλεσμα της εκτέλεσης της εντολής διαβάστε (a, b, c); και είσοδος πληκτρολογίου της γραμμής:

4.5 23 0.17

Οι μεταβλητές θα έχουν τις ακόλουθες τιμές: a = 4,5; b = 23, o; c = 0,17.

Εάν υπάρχουν περισσότεροι αριθμοί σε μια γραμμή από τις μεταβλητές στην πρόταση ανάγνωσης, τότε η υπόλοιπη γραμμή θα υποβληθεί σε επεξεργασία από την επόμενη πρόταση ανάγνωσης. Για παράδειγμα, ως αποτέλεσμα της εκτέλεσης των εντολών:

Read(a, b); read(C);

και είσοδο πληκτρολογίου

10 25 18

Οι μεταβλητές θα λάβουν τις ακόλουθες τιμές: a = 10, b = 25. Η εντολή διαβάστηκε (C); θα εκχωρήσει την τιμή 18 στη μεταβλητή c.

Η εντολή readln διαφέρει από την εντολή ανάγνωσης στο ότι μετά την εξαγωγή του επόμενου αριθμού από τη συμβολοσειρά που εισάγεται στο πληκτρολόγιο και την αντιστοίχιση στην τελευταία μεταβλητή στη λίστα της εντολής readln, η υπόλοιπη συμβολοσειρά χάνεται και η επόμενη εντολή ανάγνωσης ή ανάγνωσης θα απαιτήσει νέα εισαγωγή.

Για παράδειγμα, ως αποτέλεσμα της εκτέλεσης της δήλωσης:

readln(a, b); read(C);

και πληκτρολογώντας από το πληκτρολόγιο

10 25 18

Οι μεταβλητές θα λάβουν τις ακόλουθες τιμές: a = u, b = 25. Μετά από αυτό, το πρόγραμμα θα περιμένει να εισαχθεί ένας νέος αριθμός για να τον αντιστοιχίσει στη μεταβλητή c.

Πριν από κάθε εντολή ανάγνωσης ή ανάγνωσης, θα πρέπει να τοποθετήσετε μια εντολή εγγραφής για να πείτε στον χρήστη ποια δεδομένα περιμένει το πρόγραμμα από αυτόν. Για παράδειγμα, ένα τμήμα ενός προγράμματος για τον υπολογισμό του κόστους μιας αγοράς μπορεί να μοιάζει με αυτό:

Writeln("Εισαγάγετε αρχικά δεδομένα."); write("Τιμή προϊόντος:"); readln(sepa); write("Ποσότητα παρτίδας:"); readln(col); write("Έκπτωση:"); readln(Skidka);

Εάν ο τύπος των δεδομένων που εισάγονται από το πληκτρολόγιο δεν ταιριάζει ή δεν μπορεί να μεταδοθεί στον τύπο των μεταβλητών των οποίων τα ονόματα καθορίζονται στην εντολή ανάγνωσης (readln), τότε το πρόγραμμα διακόπτεται (οι οδηγίες που ακολουθούν την ανάγνωση δεν εκτελούνται) και εμφανίζεται μήνυμα στην οθόνη.

Η γλώσσα προγραμματισμού Pascal χρησιμοποιεί οδηγίες όπως read και readLn. Τι είναι?

Τι είναι μια οδηγία ανάγνωσης;

Αυτή η οδηγία προορίζεται να παρέχει είσοδο από το πληκτρολόγιο του υπολογιστή διαφόρων τιμών μεταβλητών κατά τη χρήση της γλώσσας Pascal. Το σχήμα για τη χρήση της εν λόγω εντολής φαίνεται απλό: σαν ανάγνωση ("μεταβλητή τιμή").

Στην πράξη, η δήλωση ανάγνωσης χρησιμοποιείται για να διασφαλιστεί ότι ορισμένα δεδομένα διαβάζονται από ένα αρχείο και στη συνέχεια οι τιμές που εξάγονται από τα αντίστοιχα δεδομένα αντιστοιχίζονται στις μεταβλητές που καθορίζονται κατά την κλήση της διαδικασίας.

Εάν ο χρήστης έκανε λάθος κατά την εισαγωγή δεδομένων, δεν αντιστοιχούν σε κανένα τύπο μεταβλητών που αντικατοπτρίζονται στην οδηγία, το πρόγραμμα σταματά να εκτελεί εντολές. Ταυτόχρονα, εμφανίζεται ένα μήνυμα στην οθόνη του υπολογιστή ότι έχει προκύψει σφάλμα στην εφαρμογή.

Εάν ο προγραμματιστής χρησιμοποιεί πολλαπλές οδηγίες ανάγνωσης, τότε τα δεδομένα θα εισαχθούν με τον ένα ή τον άλλο τρόπο στην ίδια γραμμή. Η μετάβαση στην επόμενη είναι δυνατή μόνο εάν τελειώσει η τρέχουσα γραμμή. Ωστόσο, μπορείτε να διαβάσετε πληροφορίες που έχουν τοποθετηθεί σε άλλη γραμμή χρησιμοποιώντας την εντολή readLn. Ας εξετάσουμε τα χαρακτηριστικά του με περισσότερες λεπτομέρειες.

Τι είναι η εντολή readLn;

Η ουσία της εντολής readLn είναι να ορίσετε μια συνθήκη στο πρόγραμμα σύμφωνα με την οποία:

  • Κάθε αριθμός που εισάγεται στη γραμμή εκχωρείται στην τελευταία μεταβλητή σύμφωνα με την οδηγία.
  • η υπόλοιπη περιοχή της γραμμής δεν επεξεργάζεται το πρόγραμμα, ενώ η επόμενη εντολή θα απαιτήσει νέα εισαγωγή.

Έτσι, μπορείτε να εισάγετε την οδηγία:

readLn(C,D); read(E);

Και αν μετά από αυτό εισαχθεί η σειρά 1 2 3 από το πληκτρολόγιο, τότε η μεταβλητή C θα αποκτήσει την τιμή 1, D - 2. Αλλά το πρόγραμμα δεν θα εκχωρήσει μια συγκεκριμένη τιμή στη μεταβλητή E έως ότου ο χρήστης εισαγάγει έναν νέο αριθμό.

Όπως και με τη δήλωση ανάγνωσης, εάν ο χρήστης εισάγει λανθασμένα έναν τύπο δεδομένων μέσω της εντολής readLn, το πρόγραμμα εξέρχεται και αναφέρει ότι έχει προκύψει σφάλμα.

Σύγκριση

Η κύρια διαφορά μεταξύ readLn και read είναι ότι η πρώτη διαδικασία περιλαμβάνει το πρόγραμμα που μεταβαίνει στη γραμμή του αρχείου ακολουθώντας αυτή στην οποία είναι γραμμένες οι οδηγίες. Η δεύτερη διαδικασία επιτρέπει στο πρόγραμμα να διαβάσει τα δεδομένα που τοποθετούνται στην επόμενη γραμμή μόνο με την άδεια του χρήστη - εάν πατήσει Enter.

Στην πράξη, η χρήση της εντολής readLn χρησιμοποιείται συχνότερα για την παροχή καθυστέρησης μεταξύ του αποτελέσματος της εκτέλεσης της εφαρμογής και της μετάβασης στην επόμενη εντολή. Η αντίστοιχη καθυστέρηση διαρκεί μέχρι ο χρήστης να πατήσει Enter.

Έχοντας καθορίσει ποια είναι η διαφορά μεταξύ readLn και read στο Pascal, ας διορθώσουμε τα συμπεράσματα στον πίνακα.

Όπως και για τις εντολές εξόδου πληροφοριών, οι εντολές read και reeadln είναι τελεστές για πρόσβαση σε ενσωματωμένο διαδικασίες εισαγωγής πληροφοριών.

Οι τελεστές read (read) και readln, που προέρχονται από δύο αγγλικές λέξεις read (read) και line (line) χρησιμοποιούνται σε προγράμματα για την εισαγωγή πληροφοριών στη μνήμη του υπολογιστή και " αναγνώσεις" τιμές σε μια μεταβλητή.

Εξετάστε το έργο αυτών των χειριστών και τις διαδικασίες για την εισαγωγή πληροφοριών.

Το πρόγραμμά μας έχει μια διαδικασία readln(a). Κατά την εκτέλεση ενός προγράμματος, όταν συναντήσετε μια δήλωση readln, ο υπολογιστής θα σταματήσει ενώ περιμένει την εισαγωγή πληροφοριών. Αφού εισαγάγουμε την τιμή της μεταβλητής a - 16 από το πληκτρολόγιο, ο υπολογιστής θα εκχωρήσει αυτή την τιμή στη μεταβλητή a, δηλ. θα το στείλει στη θέση μνήμης με το όνομα a και θα συνεχίσει την εκτέλεση του προγράμματος. Αυτή τη διαδικασία ονομάζουμε " ΑΝΑΓΝΩΣΗ" τιμές σε μια μεταβλητή.

Έτσι, οι διαδικασίες διαβάζουν και διαβάζουν και «διαβάζουν» τις τιμές των μεταβλητών και τις εκχωρούν στις μεταβλητές που είναι γραμμένες σε αυτές.

Μπορεί να υπάρχουν πολλές τέτοιες μεταβλητές, και στη συνέχεια γράφονται σε αυτούς τους τελεστές που χωρίζονται με κόμμα, για παράδειγμα:

read(a, b, c, n, g, j, i), readln(e, f, k, p, d) κ.λπ.

Ποια είναι η διαφορά μεταξύ των διαδικασιών ανάγνωσης και ανάγνωσης;

Η διαδικασία ανάγνωσης θα απαιτεί εισαγωγή ή έξοδο πληροφοριών σε μία γραμμή μετά την ίδια και η διαδικασία readln σάς επιτρέπει να εισάγετε και να εξάγετε πληροφορίες μετά από την αρχή μιας νέας γραμμής.

Για παράδειγμα:

Στο πρόγραμμα: write("Εισαγάγετε τις τιμές a και b"); read(a,b);

write("Εισαγωγή πληροφοριών σε μία γραμμή");

Όταν εκτελεστεί αυτό το μέρος του προγράμματος, όλα όσα γράφτηκαν στην πρώτη δήλωση εγγραφής θα εμφανιστούν στην οθόνη, στη συνέχεια ο κέρσορας θα βρίσκεται στην ίδια γραμμή και ο υπολογιστής θα περιμένει να εμφανιστούν οι τιμές​​​​​​​​​​​​ μπήκε. Ας εισαγάγουμε τις τιμές τους - 2 και 3, χωρίζοντάς τες με ένα κενό ή, με άλλα λόγια, με ένα διάστημα. Μετά από αυτό, οι πληροφορίες που γράφονται στην επόμενη δήλωση εγγραφής θα εξάγονται στην ίδια γραμμή.

Στην οθόνη:

Εισαγάγετε τις τιμές για τα a και b 2 3 Εισαγάγετε πληροφορίες σε μία γραμμή

Σε πρόγραμμα:

writeln("Εισαγάγετε a, b, και c); readln(a, b, c);

writeln("Πληροφορίες εισόδου και εξόδου από την αρχή της γραμμής");

Στην οθόνη:

Εισαγάγετε τις τιμές a, b και c

Εισαγωγή και έξοδος πληροφοριών από την αρχή μιας γραμμής

Αριθμητικές πράξεις με ακέραιους αριθμούς. Μεταβλητές ακέραιου τύπου. Πραγματικός τύπος

Στο Pascal, χρησιμοποιούνται ακέραιοι αριθμοί, οι οποίοι περιλαμβάνουν όλους τους φυσικούς αριθμούς που σχηματίζονται κατά τη διαδικασία μέτρησης αντικειμένων: 1, 2, 3, 4, 5, 6, .... αρνητικοί αριθμοί: ..., -6, -5, -4, -3, -2, -1 και ο αριθμός μηδέν: 0. Οι ακέραιοι αριθμοί σχηματίζουν την ακόλουθη σειρά:

6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, ...

Στο Pascal, οι ακέραιοι αριθμοί κυμαίνονται από -32768 έως 32767.

Μεταβλητές, που λαμβάνουν ακέραιες τιμές, γράφονται στην ενότητα περιγραφής με ένδειξη του τύπου ακέραιος (ακέραιος).

Για παράδειγμα: var a, b, c, a1, b34, nomb: integer;

Τιμές διαφορετικού τύπου από αυτές τις μεταβλητές στο ίδιο πρόγραμμα δεν μπορεί να ανατεθεί.

Αριθμητικές πράξεις με ακέραιους και μεταβλητές ακέραιου τύπου σε Pascal

Το σύμβολο "_" σημαίνει κενό. Απαιτούνται κενά μεταξύ των ονομάτων μεταβλητών και του ονόματος λειτουργίας (div). (Προέρχεται από το αγγλικό division - division).

Το υπόλοιπο της διαίρεσης του a με το b. a_mod_b

Τα προγράμματα διαφέρουν μόνο σε μία γραμμή. Το πρώτο πρόγραμμα είναι αυτονόητο - εκτυπώνει τον αριθμό 36. Το δεύτερο πρόγραμμα δεν λέει πουθενά τι είναι το a και το b, και αντί αυτού περιλαμβάνει μια πρόταση ReadLn. Ας μιλήσουμε για αυτόν.

Το ReadLn διαβάζεται "read" γραμμή, μεταφράζεται "read the line". Λέει στον υπολογιστή να σταματήσει και να περιμένει ένα άτομο να εισάγει ορισμένες πληροφορίες από το πληκτρολόγιο και στη συνέχεια να συνεχίσει να εργάζεται. Συγκεκριμένα, το ReadLn (a, b) θα περιμένει για να εισαχθούν δύο ακέραιοι αριθμοί.

Έτσι, εάν το πρώτο πρόγραμμα, μετά την εκκίνηση, θα λειτουργήσει χωρίς διακοπή μέχρι το τέλος και θα δώσει το αποτέλεσμα χωρίς καμία ταλαιπωρία, τότε το δεύτερο πρόγραμμα θα σταματήσει και θα περιμένει στη δήλωση ReadLn. Κατά τη διάρκεια αυτής της αναμονής, το άτομο πρέπει να πληκτρολογήσει τον αριθμό 20 στο πληκτρολόγιο (επειδή ο πρώτος στη λίστα τελεστών ReadLn είναι a), μετά να πατήσει το πλήκτρο διαστήματος, μετά να πληκτρολογήσει 16 και να πατήσει το πλήκτρο Enter. Ο Pascal αντιλαμβάνεται το πάτημα του πλήκτρου διαστήματος ως ένα σήμα από ένα άτομο ότι η πληκτρολόγηση ενός αριθμού στο πληκτρολόγιο έχει τελειώσει και ένας άλλος πρόκειται να αρχίσει να πληκτρολογεί. Αφού πληκτρολογήσετε τον τελευταίο αριθμό στο πληκτρολόγιο, πρέπει να πατήσετε το πλήκτρο Enter για να υποδείξετε ότι η εισαγωγή αριθμών για αυτήν τη δήλωση ReadLn έχει ολοκληρωθεί και ο υπολογιστής μπορεί να συνεχίσει να λειτουργεί. Σύμφωνα με αυτό, ο υπολογιστής αμέσως μετά το πάτημα Enter σταματά να περιμένει και πρώτα στέλνει τον αριθμό 20 στη μνήμη, στο κελί a, τον αριθμό 16 στο κελί b. Σε αυτό, θεωρεί την εκτέλεση της εντολής ReadLn ολοκληρωμένη και προχωρά στην επόμενη δήλωση - WriteLn. Αυτό θα εκτυπώσει τον αριθμό 36.

Άρα και τα δύο προγράμματα κάνουν το ίδιο πράγμα. Γιατί τότε να χρησιμοποιήσετε το ReadLn αντί για τον τελεστή εκχώρησης; Εξάλλου, το πρώτο πρόγραμμα είναι πιο ξεκάθαρο και λειτουργεί χωρίς διακοπή. Ένας από τους λόγους είναι ότι το πρόγραμμα με το ReadLn είναι πολύ πιο καθολικό, «πιο ελεύθερο»: εάν το πρώτο πρόγραμμα λύσει το πρόβλημα της προσθήκης μόνο δύο συγκεκριμένων αριθμών, τότε το δεύτερο πρόγραμμα προσθέτει οποιουσδήποτε δύο αριθμούς. Ο δεύτερος λόγος είναι ότι ένα πρόγραμμα με ReadLn επιτρέπει στον προγραμματιστή να μην σκέφτεται τις συγκεκριμένες τιμές των δεδομένων πηγής κατά τη σύνταξη του προγράμματος, αφήνοντας αυτόν τον πονοκέφαλο τη στιγμή της εκτέλεσης του προγράμματος. Αλλά ο πιο σημαντικός λόγος είναι ότι το ReadLn επιτρέπει σε ένα άτομο να επικοινωνεί με έναν υπολογιστή, να κάνει διάλογο μαζί του ενώ το πρόγραμμα εκτελείται.

Για να επιβεβαιώσουμε τη σημασία του πρώτου λόγου, ας γράψουμε ένα πρόγραμμα για να λύσουμε το ακόλουθο πρόβλημα: Υπάρχουν τρεις ελέφαντες και αρκετά κουνέλια στον ζωολογικό κήπο και ο αριθμός των κουνελιών αλλάζει συχνά. Ένας ελέφαντας υποτίθεται ότι τρώει εκατό καρότα την ημέρα και ένα κουνέλι δύο. Κάθε πρωί ο φύλακας του ζωολογικού κήπου αναφέρει τον αριθμό των κουνελιών στον υπολογιστή. Ο υπολογιστής, σε απάντηση, θα πρέπει να πει στον συνοδό τον συνολικό αριθμό των καρότων που σήμερα πρέπει να ταΐσουν κουνέλια και ελέφαντες.

Ας βρούμε ονόματα για μεταβλητές:

kol_krol - αριθμός κουνελιών στο ζωολογικό κήπο

kol_slon - αριθμός ελεφάντων στο ζωολογικό κήπο

norma_krol - πόσα καρότα την ημέρα πρέπει ένα κουνέλι

norma_slon - πόσα καρότα την ημέρα πρέπει να έχει ένας ελέφαντας

vsego - πόσα καρότα απαιτούνται

Τώρα ας γράψουμε το πρόγραμμα:

VAR kol_krol,kol_slon,norma_krol,norma_slon,vsego:Integer;

norma_slon:=100;

ReadLn(kol_krol);

vsego:= norma_krol * kol_krol + norma_slon * kol_slon;

Έχοντας γράψει το πρόγραμμα, ο προγραμματιστής το εισάγει στον υπολογιστή, διορθώνει και το γράφει στο δίσκο. Αυτό ολοκληρώνει την αποστολή του. Το πρωί, ο συνοδός, έχοντας μετρήσει τα κουνέλια και διαπίστωσε ότι είναι 60, πηγαίνει στον υπολογιστή και ξεκινά το πρόγραμμα για εκτέλεση.

Ο υπολογιστής, αφού εκτελέσει αυτόματα τις δύο πρώτες εντολές (norma_krol:=2 και norma_slon:=100), σταματά στην εντολή ReadLn. Ο διακομιστής εισάγει τον αριθμό 60, μετά τον οποίο ο υπολογιστής στέλνει αυτόν τον αριθμό στο κελί kol_krol και προχωρά στην εκτέλεση της επόμενης εντολής (kol_slon:=3). Τελικά, η απόκριση θα εμφανιστεί στην οθόνη: 420.

Ακολουθεί μια σχηματική αναπαράσταση της διαδικασίας εκτέλεσης του προγράμματος:

ΔΙΑΤΑΞΗ ΕΚΤΕΛΕΣΗΣ ΤΩΝ ΧΕΙΡΙΣΤΩΝ

ΤΙ ΕΙΝΑΙ ΣΤΑ ΚΥΤΤΑΡΑ ΜΝΗΜΗΣ

ReadLn (kol_krol)

vsego:=norma_krol

Το επόμενο πρωί, όταν ανακαλύπτει ότι 5 κουνέλια έχουν πουληθεί σε άλλο ζωολογικό κήπο, ο συνοδός τρέχει το ίδιο πρόγραμμα, εισάγει τον αριθμό 55 και παίρνει την απάντηση 410.

Με αυτό το κάπως φανταστικό παράδειγμα, ήθελα να δείξω ότι η χρήση του ReadLn σάς επιτρέπει να δημιουργείτε προγράμματα που, ενώ παραμένουν ευχάριστα αμετάβλητα, διευκολύνουν την επίλυση ενός προβλήματος ανά πάσα στιγμή για οποιεσδήποτε τιμές των αρχικών δεδομένων. Θα ήταν δυνατό να πάτε από την άλλη πλευρά - αντί για ReadLn χρησιμοποιήστε τον τελεστή εκχώρησης, για παράδειγμα kol_krol:=60. Αλλά σε αυτήν την περίπτωση, ο προγραμματιστής θα έπρεπε να τρέχει στο ζωολογικό κήπο κάθε πρωί για να διορθώσει αυτή τη δήλωση ανάθεσης στο πρόγραμμα.

Η πρόταση ReadLn μπορεί επίσης να γραφτεί χωρίς παρενθέσεις, όπως ακριβώς: ReadLn . Κατά την εκτέλεση μιας εντολής σε μια τέτοια εγγραφή, ο υπολογιστής θα σταματήσει και θα περιμένει, αλλά όχι για την εισαγωγή οποιασδήποτε πληροφορίας, αλλά απλώς για το πάτημα του πλήκτρου Enter. Έτσι, είναι απλώς μια δήλωση για τη δημιουργία παύσης κατά την εκτέλεση του προγράμματος. Θα μιλήσουμε για το γιατί χρειάζονται παύσεις λίγο πιο χαμηλά.

Εκτός από τη δήλωση ReadLn, η δήλωση Read χρησιμοποιείται επίσης για την εισαγωγή δεδομένων. Για έναν αρχάριο προγραμματιστή, οι διαφορές στην εφαρμογή τους δεν είναι σημαντικές. Θα χρησιμοποιήσουμε μόνο ReadLn προς το παρόν. Μια πρόταση Read χωρίς παρενθέσεις δεν δημιουργεί παύση.

Συνεχίζοντας το θέμα:
μήλο

Αυτό το gadget υπόσχεται πολλά στον αυτοτουρίστα και ακραίο αθλητή που αποφασίζει να φύγει "μακριά από τον πολιτισμό", αλλά που δεν θέλει να αποχωριστεί το συνηθισμένο καθολικό "Android"....

Νέα άρθρα
/
Δημοφιλής