Τελεστές γλώσσας Pascal. Τελεστές υπό όρους Μεταφραστική γραμματική που μεταφράζει τον τελεστή υπό όρους της γλώσσας Pascal

Αυτό το μάθημα εξετάζει τον τελεστή υπό όρους στο Pascal ( αν). Εξηγεί τον τρόπο χρήσης πολλαπλών συνθηκών σε μία κατασκευή ( ΚΑΙΚαι Ή). Εξετάζονται παραδείγματα εργασίας με έναν χειριστή

Σας υπενθυμίζουμε ότι αυτός ο ιστότοπος δεν προσποιείται ότι παρέχει πλήρη παρουσίαση πληροφοριών σχετικά με το θέμα. Σκοπός της πύλης είναι να παρέχει την ευκαιρία εκμάθησης υλικού βασισμένου σε έτοιμα λυμένα παραδείγματα για το θέμα «Γλώσσα Προγραμματισμού Pascal» με πρακτικές εργασίες για την ενίσχυση του υλικού. Οι εργασίες Pascal που παρουσιάζονται στον ιστότοπο ταξινομούνται διαδοχικά καθώς αυξάνεται η πολυπλοκότητά τους. Η ιστοσελίδα μπορεί να χρησιμοποιηθεί από καθηγητές και καθηγητές ως βοηθητικό οπτικό βοήθημα.

Πριν εξετάσουμε αυτό το θέμα, χρησιμοποιήθηκαν κυρίως γραμμικοί αλγόριθμοι στο Pascal, οι οποίοι είναι τυπικοί για πολύ απλά προβλήματα όταν οι ενέργειες (τελεστές) εκτελούνται διαδοχικά, η μία μετά την άλλη. Οι πιο περίπλοκοι αλγόριθμοι περιλαμβάνουν τη χρήση μιας δομής διακλάδωσης.

Μπλοκ διάγραμμα τελεστή υπό όρους:

Η υπό όρους δήλωση στο Pascal έχει την ακόλουθη σύνταξη:

Συνοπτική έκδοση:

αν συνθήκη τότε δήλωση?

Πλήρη έκδοση:

αν συνθήκη τότε δήλωση else δήλωση?

Ο τελεστής υπό όρους στο Pascal - if - χρησιμεύει για την οργάνωση της προόδου μιας εργασίας με τέτοιο τρόπο ώστε η ακολουθία εκτέλεσης των τελεστών να αλλάζει ανάλογα με κάποια λογική συνθήκη. Μια λογική συνθήκη μπορεί να λάβει μία από τις δύο τιμές: είτε true είτε false, αντίστοιχα, μπορεί να είναι είτε true είτε false.

Σύνθετος χειριστής

Εάν, υπό μια αληθή συνθήκη, είναι απαραίτητο να εκτελεστούν πολλές εντολές, τότε Σύμφωνα με τους κανόνες της γλώσσας Pascal, πρέπει να περικλείονται σε ένα μπλοκ, ξεκινώντας με τη συνάρτηση λέξη αρχή και τελειώνοντας με τη συνάρτηση λέξη τέλος. Ένα τέτοιο μπλοκ συνήθως ονομάζεται βραχίονες χειριστήκαι αυτή η κατασκευή - σύνθετος χειριστής:

Αγκύλες χειριστή και σύνθετος τελεστής στο Pascal:

εάν η λογική έκφραση, τότε ξεκινά η πρόταση1. χειριστής2; τέλος αλλού έναρξη δήλωση1? χειριστής2; τέλος;

Η μετάφραση από τα αγγλικά του χειριστή συνθηκών θα διευκολύνει την κατανόηση της χρήσης του:

ΑΝ ΕΠΕΙΤΑ ΑΛΛΟΥ
ΑΝ ΟΤΙ ΣΕ ΔΙΑΦΟΡΕΤΙΚΗ ΠΕΡΙΠΤΩΣΗ


Η συνθήκη (σε μια λογική έκφραση) χρησιμοποιεί σχεσιακούς τελεστές.
Εξετάστε τη λίστα των σχεσιακών τελεστών του Pascal:

  • περισσότερα >
  • πιο λιγο
  • μεγαλύτερο από ή ίσο σε Pascal >=
  • μικρότερο ή ίσο σε Pascal
  • σύγκριση σε Pascal =
  • όχι ίσος στον Πασκάλ

Παράδειγμα:βρείτε τον μεγαλύτερο από τους δύο αριθμούς

Επιλογή 1 Επιλογή 2


Κατανοήστε το έργο λεπτομερώς μπορείτε να χρησιμοποιήσετε τον τελεστή υπό όρους στο Pascal παρακολουθώντας το εκπαιδευτικό βίντεο:

Παράδειγμα:υπολογίστε την τιμή της μεταβλητής y χρησιμοποιώντας έναν από τους δύο κλάδους

Εμφάνιση λύσης:

var x,y:real; start writeln("enter x"); read(x); αν x>0 τότε y:=ln(x) αλλιώς y:=exp(x); writeln ("y=", y:6:2) (ο αριθμός που προκύπτει θα καταλαμβάνει 6 θέσεις και θα έχει 2 δεκαδικά ψηφία) τέλος.

Παρατηρήστε πώς εξάγεται το y σε αυτό το παράδειγμα. Όταν συνάγετε μεταβλητές τύπου σε pascal, μπορείτε να χρησιμοποιήσετε το λεγόμενο μορφοποιημένη έξοδο, ή σημειογραφία με δύο άνω και κάτω τελείες:
ε:6:2
- ο αριθμός μετά την πρώτη άνω και κάτω τελεία (6) υποδεικνύει πόσους χαρακτήρες θα καταλάβει ο αριθμός όταν εμφανίζεται στην οθόνη
- ο αριθμός μετά τη δεύτερη άνω και κάτω τελεία (2) υποδεικνύει πόσα δεκαδικά ψηφία του πραγματικού αριθμού θα εμφανιστούν

Έτσι, η χρήση τέτοιας σημειογραφίας στο pascal σας επιτρέπει πρακτικά να στρογγυλοποιήσετε στα εκατοστά, στα χιλιοστά κ.λπ.

Εργασία 0.Υπολογίστε την τιμή της μεταβλητής y χρησιμοποιώντας έναν από τους δύο κλάδους:

Εργασία 1.Δύο αριθμοί εισάγονται στον υπολογιστή. Εάν το πρώτο είναι μεγαλύτερο από το δεύτερο, τότε υπολογίστε το άθροισμά τους, διαφορετικά - το γινόμενο. Μετά από αυτό, ο υπολογιστής θα πρέπει να εκτυπώσει το αποτέλεσμα και το κείμενο PROBLEM SOLVED

Εργασία 2.Ο δράκος μεγαλώνει τρία κεφάλια κάθε χρόνο, αλλά αφού γίνει 100 ετών, μόνο δύο. Πόσα κεφάλια και μάτια έχει ένας δράκος; Νχρόνια;

Λογικές πράξεις σε Pascal (σε λογική έκφραση)

Όταν πρέπει να χρησιμοποιήσετε μια διπλή συνθήκη στο Pascal, θα χρειαστείτε λογικές πράξεις.

  • Λογική λειτουργία ΚΑΙ Το (Και), τοποθετημένο ανάμεσα σε δύο προϋποθέσεις, λέει ότι και οι δύο αυτές προϋποθέσεις πρέπει να πληρούνται ταυτόχρονα (πρέπει να είναι αληθείς). Η λογική έννοια της πράξης είναι «σύνδεση».
  • Τοποθετείται ανάμεσα σε δύο συνθήκες, το σημάδι Ή Το (OR) λέει ότι αρκεί εάν τουλάχιστον ένας από αυτούς ικανοποιείται (η μία από τις δύο προϋποθέσεις είναι αληθής). Η λογική έννοια της πράξης είναι «διάσπαση».
  • Στον Πασκάλ XOR - ένα σημάδι μιας λογικής πράξης που έχει την έννοια της «αυστηρής διάσπασης» και υποδεικνύει ότι είναι απαραίτητο να πληρούται η μία από τις δύο προϋποθέσεις (αληθής) και η άλλη να μην πληρούται (ψευδή).
  • Λογική λειτουργία ΔΕΝ πριν από μια λογική έκφραση ή μεταβλητή σημαίνει "άρνηση" ή "αναστροφή" και υποδεικνύει ότι εάν μια δεδομένη μεταβλητή ή έκφραση είναι αληθής, τότε η άρνησή της είναι ψευδής και το αντίστροφο.

Σπουδαίος:Κάθε απλή συνθήκη πρέπει να περικλείεται σε παρένθεση.

Παράδειγμα: Ας δούμε παραδείγματα λογικών πράξεων σε λογικές εκφράσεις στο Pascal

1 2 3 4 5 6 7 8 var n: ακέραιος ; έναρξη n: = 6 ; εάν (n>5 ) και (n<10 ) then writeln ("истина" ) ; if (n>7 ) ή (n<10 ) then writeln ("истина" ) ; if (n>7)xor(n<10 ) then writeln ("истина" ) ; if not (n>7) στη συνέχεια writeln("αληθές"); τέλος.

var n:ακέραιος; έναρξη n:=6; εάν (n>5) και (n<10) then writeln("истина"); if (n>7) ή (n<10) then writeln("истина"); if (n>7)xor(n<10) then writeln("истина"); if not(n>7) στη συνέχεια writeln("αληθές"); τέλος.

Παράδειγμα:Η εταιρεία προσλαμβάνει υπαλλήλους από 25 έως 40 ετών συμπεριλαμβανομένων. Εισαγάγετε την ηλικία του ατόμου και καθορίστε εάν είναι κατάλληλο για αυτήν την εταιρεία (εμφανίστε την απάντηση "κατάλληλο" ή "μη κατάλληλο").
Ιδιορρυθμία:πρέπει να ελέγξουμε αν πληρούνται δύο προϋποθέσεις ταυτόχρονα.

Ένας τελεστής είναι ένα αδιαίρετο στοιχείο ενός προγράμματος που καθιστά δυνατή την εκτέλεση ορισμένων αλγοριθμικών ενεργειών. Η διαφορά μεταξύ ενός χειριστή και άλλων στοιχείων είναι ότι πάντα συνεπάγεται κάποιο είδος δράσης. Στο Pascal, οι τελεστές αποτελούνται από συναρτησιακές λέξεις. Οι τελεστές που χρησιμοποιούνται σε ένα πρόγραμμα διαχωρίζονται μεταξύ τους και από άλλα στοιχεία του προγράμματος με το σύμβολο (;). Ολα Χειριστές Pascalμπορούν να χωριστούν χονδρικά σε δύο ομάδες:

  1. απλός;
  2. δομημένος.

Απλοί χειριστέςείναι τελεστές που δεν περιέχουν άλλους τελεστές. Αυτά περιλαμβάνουν:

  • χειριστής εκχώρησης (:=);
  • δήλωση διαδικασίας·
  • χειριστής άνευ όρων άλματος (GOTO).

Δομημένες δηλώσειςείναι τελεστές που περιέχουν άλλους τελεστές. Αυτά περιλαμβάνουν:

  • σύνθετος χειριστής?
  • τελεστές υπό όρους (IF, CASE).
  • τελεστές βρόχου (FOR, WHILE, REPEAT).
  • join operator (WITH).

Απλοί χειριστές

Χειριστής διαδικασίας

Χειριστής διαδικασίαςχρησιμεύει για την κλήση μιας διαδικασίας.

Μορφή: [όνομα_διαδικασίας] (λίστα παραμέτρων κλήσης).

Μια δήλωση διαδικασίας αποτελείται από ένα αναγνωριστικό διαδικασίας, ακολουθούμενο αμέσως από μια λίστα παραμέτρων κλήσης σε παρένθεση. Το Pascal έχει διαδικασίες χωρίς παραμέτρους. Σε αυτήν την περίπτωση, όταν καλείται, δεν υπάρχει λίστα παραμέτρων. Η εκτέλεση μιας δήλωσης διαδικασίας οδηγεί στην ενεργοποίηση των ενεργειών που περιγράφονται στο σώμα της. Υπάρχουν δύο τύποι διαδικασιών στο Pascal:

  • Τα τυπικά, τα οποία περιγράφονται στην ίδια τη γλώσσα και αποτελούν μέρος της γλώσσας.
  • Διαδικασίες χρήστη που δημιουργούνται από τον χρήστη.

Για να καλέσετε τυπικές διαδικασίες, πρέπει να συνδεθείτε στην ενότητα ΧΡΗΣΕΙΣ του ονόματος της λειτουργικής μονάδας (βιβλιοθήκη), όπου περιγράφεται αυτή η διαδικασία. Ένας αριθμός διαδικασιών που βρίσκονται στη μονάδα SYSTEM συνδέονται πάντα με το πρόγραμμα αυτόματα και η σύνδεσή τους στην ενότητα USES δεν είναι απαραίτητη. Οι τυπικές διαδικασίες Pascal είναι READ, WRITE, REWRITE, CLOSE, RESET.

READ ([file_variable], [input_list])

READ(x,y)

Οι διαδικασίες χρήστη (μη τυπικές) πρέπει να δημιουργηθούν πριν από τη χρήση τους στο πρόγραμμα και βρίσκονται είτε στην ενότητα περιγραφής του ίδιου του προγράμματος είτε σε ξεχωριστές ενότητες προγράμματος της ενότητας. Εάν η διαδικασία είναι σε μια ενότητα, τότε το όνομα αυτής της ενότητας πρέπει να αναφέρεται στην εφαρμογή USES.

Χειριστής GOTO άνευ όρων

Μορφή: GOTO [ετικέτα];

Το GOTO είναι μια δεσμευμένη λέξη στο Pascal. Το [label] είναι ένα αυθαίρετο αναγνωριστικό που σας επιτρέπει να επισημάνετε μια συγκεκριμένη δήλωση προγράμματος και αργότερα να ανατρέξετε σε αυτήν. Στο Pascal, είναι δυνατή η χρήση ανυπόγραφων ακέραιων αριθμών ως ετικέτες. Η ετικέτα τοποθετείται πριν και διαχωρίζεται από τον σημειωμένο τελεστή (:). Μια δήλωση μπορεί να επισημανθεί με πολλές ετικέτες. Χωρίζονται επίσης μεταξύ τους (:). Πριν χρησιμοποιήσετε μια ετικέτα στην ενότητα δήλωσης, πρέπει να περιγραφεί στην ενότητα LABEL (ενότητα περιγραφής).

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

  • η ετικέτα πρέπει να περιγράφεται στην ενότητα περιγραφών και να χρησιμοποιούνται όλες οι ετικέτες.
  • αν χρησιμοποιούνται ακέραιοι ως ετικέτες, δεν δηλώνονται.

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

Δομημένες δηλώσεις

δηλώσεις συνθήκης IF

Ο τελεστής υπό όρους χρησιμοποιείται στο πρόγραμμα για την υλοποίηση της αλγοριθμικής δομής - διακλάδωσης. Σε αυτή τη δομή, η υπολογιστική διαδικασία μπορεί να συνεχιστεί σε μία από τις πιθανές κατευθύνσεις. Η επιλογή της κατεύθυνσης πραγματοποιείται συνήθως ελέγχοντας κάποια κατάσταση. Υπάρχουν δύο τύποι δομών διακλάδωσης: δομές περόνης και παράκαμψης.

Στη γλώσσα Pascal, ο τελεστής IF υπό όρους είναι ένα μέσο οργάνωσης μιας διακλαδούμενης υπολογιστικής διαδικασίας.

Μορφή: IF [boolean_expression] Στη συνέχεια [operator_1]; Άλλο [operator_2];

IF, Τότε, Else είναι λέξεις συνάρτησης. [operator_1], [operator_2] - συνηθισμένες λειτουργίες της γλώσσας Pascal. Το τμήμα Else είναι προαιρετικό (μπορεί να λείπει).

Η πρόταση IF λειτουργεί ως εξής: Ελέγχει πρώτα το αποτέλεσμα μιας Boolean έκφρασης. Εάν το αποτέλεσμα είναι TRUE, τότε η [statement_1] που ακολουθεί τη λέξη συνάρτησης Τότε εκτελείται και η [statement_2] παραλείπεται. Εάν το αποτέλεσμα είναι FALSE, τότε η [statement_1] παραλείπεται και η [statement_2] εκτελείται.

Εάν λείπει το τμήμα Else, τότε η δήλωση IF δεν είναι σε πλήρη μορφή:

IF [boolean expression] Στη συνέχεια [operator];

Σε αυτήν την περίπτωση, εάν το αποτέλεσμα είναι True (TRUE), τότε η [δήλωση] εκτελείται εάν False (FALSE), τότε ο έλεγχος μεταφέρεται στην πρόταση που ακολουθεί την πρόταση IF.

Υπάρχουν 2 αριθμοί Α και Β. Βρείτε τον μέγιστο αριθμό.

Σύνθετος χειριστής

Μια σύνθετη πρόταση είναι μια ακολουθία αυθαίρετων πράξεων σε ένα πρόγραμμα, που περικλείεται στις λεγόμενες αγκύλες χειριστή (Αρχή-Τέλος).

Μορφή: Ξεκινήστε [χειριστές]; Τέλος;

Οι σύνθετες εντολές επιτρέπουν μια ομάδα εντολών να αναπαρασταθεί ως μια ενιαία πρόταση.

Δήλωση επιλογής CASE

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

Μορφή: ΠΕΡΙΠΤΩΣΗ [select_key] OF

[selection_constant_1]:[operator_1];

[selection_constant_2]:[operator_2];

[selection_constant_N]:[operator_N];

ALSE [χειριστής];

CASE, OF, ELSE, END - συναρτησιακές λέξεις. Το [select_key] είναι μια παράμετρος ενός από τους τακτικούς τύπους. [selection_constants] - σταθερές του ίδιου τύπου με το κλειδί επιλογής που υλοποιούν την επιλογή. Ο [operator_1(N)] είναι ένας συνηθισμένος τελεστής. Μπορεί να λείπει το ΑΛΛΟ.

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

Η δήλωση CASE δεν έχει τον ρητό έλεγχο υπό όρους που είναι τυπικός για τη δήλωση IF. Ταυτόχρονα, η λειτουργία σύγκρισης εκτελείται σιωπηρά. Το CASE εισάγει την ασυμφωνία σε ένα πρόγραμμα Pascal, καθώς αυτή η δήλωση τελειώνει με τη λέξη υπηρεσίας End, η οποία δεν έχει ζεύγη Αρχή.

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

Το πρόγραμμα λειτουργεί ως εξής: χρησιμοποιώντας τη διαδικασία Read, εισάγεται το γράμμα του χρώματος του φαναριού από το πληκτρολόγιο. Εάν εισαχθεί το γράμμα «z» που αντιστοιχεί στο πράσινο χρώμα, τότε στη δήλωση CASE η τιμή που εισάγεται στη λίστα επιλογής θα βρει τη σταθερά επιλογής «z» και θα εμφανιστεί το μήνυμα «Πράσινο χρώμα, επιτρέπεται η κίνηση». Όταν εισάγετε το σύμβολο των γραμμάτων 'k' και 'zh', θα εμφανιστούν παρόμοια μηνύματα. Εάν εισαγάγετε οποιονδήποτε άλλο χαρακτήρα, θα εμφανιστεί το μήνυμα "Το φανάρι δεν λειτουργεί", γιατί σε αυτήν την περίπτωση λειτουργεί το άλλο μέρος της δήλωσης CASE.

Χειριστές βρόχου

Μια κυκλική αλγοριθμική δομή είναι μια δομή στην οποία ορισμένες ενέργειες εκτελούνται πολλές φορές. Υπάρχουν δύο τύποι δομών βρόχου στον προγραμματισμό: ο βρόχος με μια παράμετρο και ο επαναληπτικός βρόχος.

Σε έναν κύκλο με παράμετρο υπάρχουν πάντα οι λεγόμενες παράμετροι κύκλου: X, X n, X k, ∆X. Μερικές φορές ένας βρόχος με μια παράμετρο ονομάζεται κανονικός βρόχος. Ένα χαρακτηριστικό γνώρισμα είναι ότι ο αριθμός των βρόχων και των επαναλήψεων μπορεί να προσδιοριστεί πριν από την εκτέλεση του βρόχου.

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

Η γλώσσα Pascal έχει τρεις τελεστές που εφαρμόζουν κυκλικές υπολογιστικές δομές:

  • τελεστής μέτρησης ΓΙΑ. Προορίζεται για την υλοποίηση ενός βρόχου με μια παράμετρο και δεν μπορεί να χρησιμοποιηθεί για την υλοποίηση ενός επαναληπτικού βρόχου.
  • τελεστής βρόχου με προϋπόθεση WHILE.
  • τελεστής βρόχου με REPEAT postcondition.

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

ΓΙΑ χειριστή

Μορφή: ΓΙΑ [loop_parameter] := [n_z_p_ts] Για [k_z_p_ts] Κάνετε [operator];

FOR, To, Do είναι συναρτησιακές λέξεις. [κύκλος_παράμετρος] - παράμετρος κύκλου. [n_z_p_ts] - η αρχική τιμή της παραμέτρου του κύκλου. [k_z_p_ts] - τελική τιμή της παραμέτρου κύκλου. [χειριστής] - αυθαίρετος χειριστής.

Η παράμετρος βρόχου πρέπει να είναι μια τακτική μεταβλητή. Οι τιμές έναρξης και λήξης της παραμέτρου βρόχου πρέπει να είναι του ίδιου τύπου με την παράμετρο βρόχου.

Ας εξετάσουμε το έργο του χειριστή χρησιμοποιώντας τον αλγόριθμό του:

Στο πρώτο βήμα, η τιμή της παραμέτρου κύκλου παίρνει [n_z_p_ts], και στη συνέχεια ελέγχεται ότι η παράμετρος κύκλου είναι μικρότερη ή ίση με [k_z_p_ts]. Αυτή η συνθήκη είναι η προϋπόθεση για τη συνέχιση του βρόχου. Εάν εκτελεστεί, ο βρόχος συνεχίζει τη λειτουργία του και εκτελείται η [δήλωση], μετά την οποία η παράμετρος βρόχου αυξάνεται (μειώνεται) κατά ένα. Στη συνέχεια, με τη νέα τιμή της παραμέτρου βρόχου, ελέγχεται η συνθήκη για τη συνέχιση του βρόχου. Εάν εκπληρωθεί, τότε οι ενέργειες επαναλαμβάνονται. Εάν δεν πληρούται η προϋπόθεση, τότε ο βρόχος σταματά να λειτουργεί.

Ο τελεστής For είναι σημαντικά διαφορετικός από παρόμοιους τελεστές σε άλλες γλώσσες προγραμματισμού. Οι διαφορές είναι οι εξής:

  • σώμα του χειριστή For. Η εντολή δεν μπορεί να εκτελεστεί ούτε μία φορά, καθώς η συνθήκη συνέχισης του βρόχου ελέγχεται πριν από το σώμα του βρόχου.
  • το βήμα αλλαγής παραμέτρου κύκλου είναι σταθερό και ίσο με 1.
  • Το σώμα του βρόχου στη δήλωση For αντιπροσωπεύεται από μία πρόταση. Εάν η δράση του σώματος του βρόχου απαιτεί περισσότερες από μία απλές εντολές, τότε αυτές οι εντολές πρέπει να μετατραπούν σε μία σύνθετη εντολή χρησιμοποιώντας αγκύλες τελεστή (BEGIN-END).
  • Μια παράμετρος βρόχου μπορεί να είναι μόνο μια τακτική μεταβλητή.

Παράδειγμα χρήσης του τελεστή FOR:δημιουργήστε έναν πίνακα για τη μετατροπή ρούβλια σε δολάρια.

Δήλωση WHILE (δήλωση βρόχου με προϋπόθεση)

Μορφή: WHILE [κατάσταση] Do [χειριστής];

WHILE, Do - λειτουργούν λέξεις. [συνθήκη] - έκφραση λογικού τύπου. [χειριστής] - συνηθισμένος χειριστής.

;

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

Όταν εργάζεστε με το while, πρέπει να δώσετε προσοχή στις ιδιότητές του:

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

Δήλωση REPEAT (δήλωση βρόχου με μετασυνθήκη)

Μορφή: ΕΠΑΝΑΛΗΨΗ [cycle_body]; ΜΕΧΡΙ [κατάσταση];

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

Ο τελεστής Repeat έχει τα ακόλουθα χαρακτηριστικά:

  • Στο Repeat, ελέγχεται η συνθήκη τερματισμού βρόχου και εάν πληρούται η προϋπόθεση, ο βρόχος σταματά να λειτουργεί.
  • Το σώμα του βρόχου εκτελείται πάντα τουλάχιστον μία φορά.
  • η παράμετρος για τον έλεγχο της συνθήκης αλλάζει στο σώμα του βρόχου.
  • Οι δηλώσεις σώματος βρόχου δεν χρειάζεται να περικλείονται σε αγκύλες τελεστή (BEGIN-END), ενώ ο ρόλος των αγκύλων χειριστή εκτελείται από το Repeat και το Until.

Υπολογίστε y=sin(x), όπου xn=10, xk=100, το βήμα είναι 10.

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

αν x>0 τότε y:=x+2 αλλιώς y:=x-2

13. Υπό όρους χειριστή.

β) Διακλαδωτική δομή

Χειριστής άλματος υπό όρους

Ο τελεστής άλματος υπό όρους στο Turbo Pascal έχει τη μορφή:

αν κατάστασηέπειτα χειριστής 1αλλού χειριστής 2;

κατάστασηείναι μια λογική έκφραση, ανάλογα με το ποιος από τους δύο εναλλακτικούς κλάδους του αλγορίθμου επιλέγεται. Εάν η τιμή της συνθήκης είναι TRUE, τότε το χειριστής 1, γραμμένο μετά την τότε λέξη-κλειδί. Διαφορετικά θα εκτελεστεί χειριστής 2, ακολουθώντας τη λέξη άλλο, ενώ χειριστής 1παρακάμπτεται. Μετά την εκτέλεση των καθορισμένων εντολών, το πρόγραμμα προχωρά στην εκτέλεση της εντολής αμέσως μετά την εντολή if.

Είναι σημαντικό να θυμάστε ότι το ερωτηματικό δεν τοποθετείται ποτέ πριν από τη λέξη-κλειδί else!

else - μπορεί να λείπει μέρος στη δήλωση if:

αν κατάστασηέπειτα χειριστής 1;

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

Θα πρέπει να θυμόμαστε ότι η σύνταξη της γλώσσας επιτρέπει να γραφτεί μόνο μία πρόταση μετά τις λέξεις-κλειδιά then and other, επομένως μια ομάδα εντολών πρέπει να συνδυαστεί σε μια σύνθετη πρόταση (περιτριγυρισμένη από αγκύλες τελεστή αρχίζουν ... τέλος). Διαφορετικά, τις περισσότερες φορές προκύπτει ένα λογικό σφάλμα προγράμματος όταν ο μεταγλωττιστής γλώσσας δεν παράγει σφάλματα, αλλά το πρόγραμμα ωστόσο λειτουργεί εσφαλμένα.

Παραδείγματα.

αν x > 0 τότε modul:= x else modul:= -x;

αν k > 0 τότε WriteLn("k είναι θετικός αριθμός");

αν min > max τότε ξεκινήστε

14.Χειριστής μετάβασης. Ετικέτες και τελεστές άλματος

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

Ωστόσο, σε ορισμένες περιπτώσεις, η χρήση τελεστών άλματος μπορεί να απλοποιήσει ένα πρόγραμμα.

Ο τελεστής μετάβασης έχει τη μορφή:

ΠΑΩ ΣΕ<метка>.

Εδώ GOTO είναι μια δεσμευμένη λέξη (μετάβαση [στην ετικέτα]).<метка>- ετικέτα.

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

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

Παράδειγμα

1: WriteLn("Μετάβαση στην ετικέτα 1");

Το αποτέλεσμα μιας δήλωσης GOTO είναι να μεταφέρει τον έλεγχο στην αντίστοιχη δήλωση με ετικέτα Όταν χρησιμοποιείτε ετικέτες, πρέπει να τηρούνται οι ακόλουθοι κανόνες: η ετικέτα που αναφέρεται στη δήλωση GOTO πρέπει να περιγράφεται στην ενότητα περιγραφής και πρέπει να εμφανίζεται κάπου στο σώμα. Οι ετικέτες που περιγράφονται στη διαδικασία (συναρτήσεις) εντοπίζονται μέσα σε αυτό, επομένως η μεταφορά του ελέγχου από έξω από τη διαδικασία (συνάρτηση) σε μια ετικέτα μέσα σε αυτό είναι αδύνατη στο πρόγραμμα. Βασικά, η κενή πρόταση χρησιμοποιείται για τη μεταφορά του ελέγχου στο τέλος μιας σύνθετης πρότασης.

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

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

Η υπό όρους δήλωση μπορεί να είναι σε δύο μορφές: πλήρη και σύντομη.

Πλήρης μορφή της δήλωσης υπό όρους

Η πλήρης μορφή του τελεστή υπό όρους στο Pascal είναι η εξής:

  • αν έκφραση τότε
  • χειριστής 1
  • χειριστής 2

Το στοιχείο έκφρασης είναι μια Boolean έκφραση. Εάν η παράσταση αξιολογηθεί ως true, τότε εκτελείται ο τελεστής 1 (μετά διακλάδωση), διαφορετικά ο τελεστής 2 (άλλος κλάδος). Στη συνέχεια, ο έλεγχος μεταβιβάζεται στον χειριστή ακολουθώντας την υπό όρους.

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

(Θραύσμα κώδικα προγράμματος)

  • αν (α > β) τότε
  • minDig:= β
  • minDig:= a;
  • writeln(minDig);

Εάν η τιμή της μεταβλητής a είναι μεγαλύτερη από την τιμή της μεταβλητής b, τότε ο τελεστής εκχώρησης θα εκτελεστεί στον τότε κλάδο (το minDig θα λάβει την τιμή του b), διαφορετικά - στον κλάδο else (το minDig θα λάβει την τιμή του a ), τότε θα εκτυπωθεί η τιμή της μεταβλητής minDig.

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

Σύντομη μορφή της δήλωσης υπό όρους

Η σύντομη μορφή του τελεστή υπό όρους γράφεται ως εξής:

  • αν έκφραση τότε
  • χειριστής

Εάν η παράσταση αξιολογηθεί ως true, τότε η πρόταση εκτελείται, διαφορετικά γίνεται η μετάβαση στην επόμενη πρόταση προγράμματος. Έτσι, στο ακόλουθο τμήμα του κώδικα προγράμματος, εάν ο αριθμός x αποδειχθεί περιττός, τότε η τιμή του θα αυξηθεί κατά 1 (δηλαδή, θα γίνει άρτιος), διαφορετικά συμβαίνει η μετάβαση στην εμφάνιση της τιμής του x στην οθόνη .

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

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

Μπορεί θεωρητικά να αποδειχθεί ότι οι τελεστές που εξετάζονται είναι αρκετά επαρκείς για τη σύνταξη προγραμμάτων οποιασδήποτε πολυπλοκότητας. Από αυτή την άποψη, η παρουσία τελεστών άλματος στη γλώσσα φαίνεται περιττή. Επιπλέον, η σύγχρονη τεχνολογία δομημένου προγραμματισμού βασίζεται στην αρχή του «προγραμματισμού χωρίς GOTOs»: πιστεύεται ότι η κατάχρηση των χειριστών άλματος κάνει το πρόγραμμα δύσκολο να κατανοηθεί, να μπερδευτεί και να διορθωθεί. Ωστόσο, σε ορισμένες περιπτώσεις, η χρήση τελεστών άλματος μπορεί να απλοποιήσει ένα πρόγραμμα.

Ο τελεστής μετάβασης έχει τη μορφή:

Εδώ το goto είναι μια δεσμευμένη λέξη (πήγαινε [στην ετικέτα]). - ετικέτα.

Ετικέτα 1; // Δηλώστε μια ετικέτα με το όνομα 1 var
α: Ακέραιος αριθμός; αρχίζουν
α: = 10;
Πήγαινε 1; // Μετάβαση στην ετικέτα 1
a:= sqrt(a); // Αυτή η δήλωση δεν θα εκτελεστεί ποτέ! 1: a:= a + a; // Χειριστής με ετικέτα 1 τέλος;

Τελεστές άλματος υπό όρους

Ο τελεστής υπό όρους έχει σχεδιαστεί για να εκτελεί ή να μην εκτελεί κάποια ενέργεια ανάλογα με το αποτέλεσμα μιας συνθήκης Boolean. Αυτός ο τελεστής χρησιμοποιείται για να διακλαδώσει την εκτέλεση ενός προγράμματος,
δηλ. εάν αυτή η συνθήκη είναι αληθής (και μόνο σε αυτήν την περίπτωση!), τότε εκτελείται μια συγκεκριμένη ακολουθία τελεστών, διαφορετικά εκτελούνται άλλοι τελεστές. Ο τύπος τελεστή συνθήκης είναι:

ανκατάσταση έπειταχειριστής1 άλλος χειριστής2;

Ο τελεστής συνθήκης μπορεί επίσης να γραφτεί σε απλοποιημένη μορφή:

ανκατάσταση έπειταχειριστής;

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

αν a > 0 τότε b: = sqrt (α) αλλιώς b: = a * 2; // Χειριστής συνθήκης
αν a = 10 τότε b: = b + 1; // Απλοποιημένη μορφή

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

Σε αντίθεση με άλλες γλώσσες προγραμματισμού, στο Object Pascal η προτεραιότητα των σχεσιακών πράξεων είναι χαμηλότερη από αυτή των λογικών πράξεων, επομένως, τα επιμέρους στοιχεία μιας σύνθετης λογικής έκφρασης περικλείονται σε παρένθεση. Για παράδειγμα, η ακόλουθη δήλωση από την προηγούμενη δήλωση θα ήταν λανθασμένη:
αν a>b και b 0 τότε ...// Σφάλμα γιατί στην πραγματικότητα (λαμβάνοντας υπόψη την προτεραιότητα της λειτουργίας) ο μεταγλωττιστής θα μεταδώσει την ακόλουθη γραμμή:
αν α> (β και β)0 τότε…