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

Σύνταξη:

Για( αρχικοποίηση; κατάσταση; τροποποίηση) ( Οδηγίες σώματος βρόχου; )

Εάν υπάρχει μία εντολή στο σώμα του βρόχου, τότε η ( ) μπορεί να παραλειφθεί. Η μεταβλητή παραμέτρου κύκλου (μετρητής) μπορεί να είναι οποιουδήποτε αριθμητικού τύπου. Αυτό κάνει τον βρόχο C++ for εξίσου ευέλικτο με έναν βρόχο while. Στην ενότητα τροποποίησης, η λειτουργία αύξησης (ή μείωσης) μεταθέματος ή προθέματος χρησιμοποιείται πιο συχνά, αλλά μπορεί να χρησιμοποιηθεί οποιαδήποτε έκφραση εκχώρησης που αλλάζει την τιμή της παραμέτρου βρόχου. Ο βρόχος λειτουργεί ως εξής:

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

Σημείωση: στην C++ είναι κανόνας να γίνεται η περιγραφή της μεταβλητής του μετρητή στην κεφαλίδα του βρόχου. Αλλά αυτό δεν είναι απαραίτητο, ειδικά εάν σκοπεύετε να αρχικοποιήσετε πολλές μεταβλητές στην ενότητα προετοιμασίας όπως υλοποιείται στο Πρόγραμμα 9.2. Ωστόσο, η χρήση μιας δήλωσης μεταβλητής μετρητή στην κεφαλίδα βρόχου έχει ως αποτέλεσμα μια δήλωση τοπικής μεταβλητής που καταστρέφεται αυτόματα όταν ο βρόχος τερματίζεται. Επομένως, εκτός εάν είναι απολύτως απαραίτητο, η περιγραφή της μεταβλητής μετρητή εκτός του βρόχου for δεν θα πρέπει να εκτελείται.
Ενώ εκτελείται ο βρόχος for, δεν συνιστάται η αλλαγή των τελεστών στις εκφράσεις της κεφαλίδας του βρόχου - αυτό θα οδηγήσει σε κάθε είδους σφάλματα! Αλλά οι τιμές των μεταβλητών (ή σταθερών), συμπεριλαμβανομένων μεταβλητές τιμές(μετρητής), μπορείτε να χρησιμοποιήσετε. Εξετάστε ένα κλασικό παράδειγμα.

Πρόγραμμα 9.1Δίνεται φυσικός αριθμός Ν. Εκτυπώστε όλους τους διαιρέτες αυτού του αριθμού.

#περιλαμβάνω << "N = "; cin >>Ν; για (int i = 2; i< N / 2; i++) { if (N % i == 0) cout << i << " "; } return 0; } N = 16000 2 4 5 8 10 16 20 25 32 40 50 64 80 100 125 128 160 200 250 320 400 500 640 800 1000 1600 2000 3200 4000

Χρησιμοποιώντας τη δήλωση συνέχειας σε έναν βρόχο for

Όταν χρησιμοποιείτε τη δήλωση συνέχεια σε έναν βρόχο for, είναι απαραίτητο να λάβετε υπόψη τις ιδιαιτερότητες της λειτουργίας αυτού του βρόχου:

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

Ας το δείξουμε αυτό με ένα παράδειγμα: int main() ( for (int i = 1; i< 20; i++) { if (i % 2 == 0) continue; cout << i << " "; } 1 3 5 7 9 11 13 15 17 19

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

int main() ( for (int i = 1; i< 20; i += 2) cout << i << " ";

Πολλαπλές εκφράσεις στην ενότητα προετοιμασίας και τροποποίησης

Όπως σημειώσαμε νωρίτερα, θα πρέπει να υπάρχουν τρεις ενότητες στην κεφαλή της δήλωσης για. Οι εκφράσεις σε αυτές τις ενότητες μπορούν να παραληφθούν, αλλά το ";" δεν μπορεί να παραλειφθεί. . Μετά από όλα, μπορείτε μόνο να φύγετε? . Τίτλος με τη μορφή:

Για (;;) ( ... )

είναι η επικεφαλίδα ενός «άπειρου» βρόχου. (Η έξοδος από τον βρόχο πρέπει να προγραμματιστεί μέσα στο σώμα του βρόχου).
Η C++ υποστηρίζει πολλαπλές εκφράσεις στις ενότητες αρχικοποίησης και τροποποίησης της κεφαλίδας της δήλωσης for. Σε αυτή την περίπτωση, η προϋπόθεση για τη συνέχιση του κύκλου πρέπει να είναι μία!
Για παράδειγμα. Δήλωση προβλήματος: Υπολογίστε το παραγοντικό ενός αριθμού που δεν υπερβαίνει το 20.
Πρόγραμμα 9.2

#περιλαμβάνω χρησιμοποιώντας namespace std? int main() ( ανυπόγραφο long long n; int i, k; cout<< "k = "; cin >>k; // 0<= k <= 20 for(n = 1, i = 1; i <= k; n *= i, ++i); cout << k << "! = " << n << endl; return 0; } k = 20 20! = 2432902008176640000

Σημείωση: σημειώστε ότι η ροή εξόδου στη γραμμή 12 δεν αναφέρεται στο σώμα του βρόχου! (Στο τέλος του τίτλου - ;). Έτσι, αυτός ο βρόχος έχει μια κενή εντολή στο σώμα και όλες οι εκφράσεις αξιολογούνται στην κεφαλίδα. Το πρόγραμμα 9.2 υπολογίζει σωστά το παραγοντικό ενός αριθμού από το 0 έως το 20.

Βρόχος για βάση εύρους

Για να επαναλάβετε τα στοιχεία ενός πίνακα ή κοντέινερ, πρέπει να εκτελέσετε τον ίδιο τύπο ενεργειών, ενώ χρησιμοποιείτε δυσκίνητο κώδικα. Για να απλοποιηθεί η εργασία με κοντέινερ σε C++, υπάρχει μια ειδική μορφή του βρόχου for - βάσει εύρους για (βρόχος για με βάση το εύροςή εύρος για).
Σύνταξη:

Για( Ενα δ : όνομα_ακολουθίας) loop_statement

Χρησιμοποιώντας το range-based for σε ένα παράδειγμα C-array:
Πρόγραμμα 9.3

#περιλαμβάνω χρησιμοποιώντας namespace std? int main() ( int x ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ); for (auto &s: x) ( cout<< s << " "; } return 0; }

Για να αλλάξουν τα στοιχεία του πίνακα, η μεταβλητή s πρέπει να είναι μεταβλητή αναφοράς (όπως στο παραπάνω παράδειγμα). Εάν η μεταβλητή δεν είναι αναφορά, τότε τα δεδομένα θα αντιγραφούν. Για αυτόματη εξαγωγή συμπερασμάτων τύπου, ο αυτόματος προσδιοριστής χρησιμοποιείται σε αυτόν τον βρόχο. Το range-based for έχει έναν περιορισμό για την εργασία με δυναμικούς πίνακες: δεν υποστηρίζει αλλαγή μεγέθους πίνακα, καθώς περιέχει έναν σταθερό δείκτη τέλους πίνακα. Όταν ασχολείστε με πίνακες που έχουν σταθερό μέγεθος, το εύρος για είναι μια εξαιρετική και ασφαλής εναλλακτική λύση σε σχέση με την κανονική για .

Φωλιασμένο για βρόχους

Όπως και άλλες εντολές βρόχου, το for υποστηρίζει τη δομή των ένθετων βρόχων. Η χρήση ένθετων βρόχων για την οργάνωση της εισόδου και της εξόδου των δισδιάστατων πινάκων είναι πολύ πιο συμπαγής από τη χρήση βρόχου while.
Ωστόσο, κατά τη διέλευση τέτοιων πινάκων, η χρήση της εντολής if θα πρέπει να αποφεύγεται. Συχνά, η εργασία μπορεί να υλοποιηθεί πιο ορθολογικά με το χειρισμό των δεικτών (μεταβλητές βρόχου i και j). Δηλαδή να εξαρτηθεί η αλλαγή του ενός δείκτη από την τιμή του άλλου. Ας εξετάσουμε δύο παραδείγματα.
Πρόγραμμα 9.4Δίνεται τετράγωνος πίνακας μεγέθους n, τα στοιχεία του οποίου είναι ίσα με 0. Συμπληρώστε τα στοιχεία κάτω και στην κύρια διαγώνιο με ένα.

#περιλαμβάνω χρησιμοποιώντας namespace std? int main() ( int n; cout<< "n = "; cin >>n; intmas[n][n]; // Συμπληρώστε με μηδενικά για(int i = 0; i< n; i++) for(int j = 0; j < n; j++) mas[i][j] = 0; // Реализация for(int i = 0; i < n; i++) for(int j = 0; j <= i; j++) mas[i][j] = 1; // Вывод for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { cout.width(2); cout << mas[i][j]; } cout << "\n"; } return 0; } n = 10 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1

Πρόγραμμα 9.5Γράψτε ένα πρόγραμμα για να γεμίσετε έναν πίνακα με τους αριθμούς του τριγώνου του Pascal και να εξάγετε αυτόν τον πίνακα. Το τρίγωνο του Πασκάλ μοιάζει με:


Αυτό το τρίγωνο έχει 1 στην κορυφή και τις πλευρές (στο πρόγραμμα 9.5 το τρίγωνο είναι "ξαπλωμένο στην πλευρά του" - οι πλευρές του τριγώνου: η πρώτη στήλη και η κύρια διαγώνιος). Κάθε αριθμός είναι ίσος με το άθροισμα των δύο αριθμών από πάνω του. Οι γραμμές του τριγώνου είναι συμμετρικές ως προς τον κατακόρυφο άξονα και περιέχουν διωνυμικούς συντελεστές.

#περιλαμβάνω χρησιμοποιώντας namespace std? int main() ( int n; cout<< "n = "; cin >>n; int pass[n][n]; για (int i = 0; i< n; i++) for (int j = 0; j < n; j++) pas[i][j] = 0; pas = 1; for (int i = 1; i < n; i++) { pas[i] = 1; for (int j = 1; j <= i; j++) { pas[i][j] = pas + pas[j]; } } for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) { cout.width(4); cout << pas[i][j]; } cout << "\n"; } return 0; } n = 12 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 1 10 45 120 210 252 210 120 45 10 1 1 11 55 165 330 462 462 330 165 55 11 1

Ερωτήσεις
  1. Μπορεί μια πρόταση βρόχου for να αντικατασταθεί από μια εντολή βρόχου while σε ένα πρόγραμμα; Είναι πάντα δυνατό να γίνει αυτό;
  2. Πότε είναι καλύτερο να χρησιμοποιήσετε τη δήλωση for για επαναφορά; ενώ?
  3. Είναι δυνατές οι ακόλουθες εκφράσεις στην κεφαλίδα της δήλωσης for: α) για (;a > b && !(a % 2);) β) για (a > b;;) γ) για (;;i = 0) δ) για (;i = 0;) ε) για (;;i++, --b) στ) για (--i;;) g) για (b = 0; b != a;) ?
  4. Η μεταβλητή i είναι η παράμετρος του εξωτερικού βρόχου και j είναι η παράμετρος του ένθετου βρόχου. Θα είναι διαθέσιμη η μεταβλητή j στον εξωτερικό βρόχο; είμαι σε ένθετο βρόχο;
Σχολικό βιβλίο
Εργασία για το σπίτι
  1. Οπισθεν 29. Γράψτε ένα πρόγραμμα που εισάγει φυσικούς αριθμούς ένακαι σικαι στην οθόνη εμφανίζονται όλοι οι πρώτοι αριθμοί στην περιοχή από έναπριν σι(Ιδέα αλγορίθμου Πρόγραμμα 8.5)
  2. Οπισθεν 30. Τέλειος αριθμός είναι ένας αριθμός ίσος με το άθροισμα όλων των διαιρετών του μικρότερων από τον εαυτό του (για παράδειγμα, ο αριθμός 6 = 1 + 2 + 3). Γράψτε ένα πρόγραμμα που να παίρνει έναν φυσικό αριθμό Ν και να καθορίζει αν το Ν είναι τέλειο.
  3. Γράψτε ένα πρόγραμμα που εμφανίζει έναν n x n τετράγωνο αριθμητικό πίνακα που μοιάζει με αυτό για n = 10: 1 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 9 * * * * * * * * * * * 10
Βιβλιογραφία
  1. Laforet R. Αντικειμενοστραφής Προγραμματισμός στη C++ (4η έκδ.). Πέτρος: 2004
  2. Πράτα, Στέφανος. Γλώσσα προγραμματισμού C++. Διαλέξεις και ασκήσεις, 6η έκδ.: Περ. από τα Αγγλικά. - Μ.: Ι.Δ. William, 2012
  3. Lippman B. Stanley, Josy Lajoye, Barbara E. Moo. Γλώσσα προγραμματισμού C++. Βασικό μάθημα. Εκδ. 5η. Μ: LLC «Ι. D. Williams», 2014
  4. Elline A. C++. Από lamer σε προγραμματιστή. Αγία Πετρούπολη: Πέτρος, 2015
  5. Schildt G. C++: Basic course, 3rd ed. Μ.: Williams, 2010



Γεια σας αγαπητοί αναγνώστες! Εδώ ερχόμαστε στη μελέτη των κύκλων. Κύκλοι σε Pascal. Τι είναι? Πως να το χρησιμοποιήσεις? Σε τι χρειάζονται; Αυτές είναι οι ερωτήσεις που θα απαντήσω σήμερα.
Εάν έχετε διαβάσει, τότε γνωρίζετε ότι υπάρχουν τρεις τύποι αλγορίθμων: γραμμικοί, διακλαδιζόμενοι και κυκλικοί. Γνωρίζουμε ήδη πώς να εφαρμόζουμε αλγόριθμους στο Pascal. Ας αρχίσουμε να μελετάμε τον τελευταίο τύπο αλγορίθμων.
Στο Pascal, όπως και στις περισσότερες γλώσσες προγραμματισμού, υπάρχουν τρεις τύποι δομών βρόχου.

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

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

Εργασία 1. Εμφάνιση όλων των αριθμών από το 1 έως τον αριθμό που εισάγεται από το πληκτρολόγιο.

Ενώ, ή βρόχος με προϋπόθεση

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

ενώ έχει τη μορφή:

ενώ < условие> κάνω<оператор 1>; (Αντίο…κάντε….)

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

Η λύση του προβλήματος.

Πρόγραμμα example_while; var i, N: ακέραιος; (δηλώνοντας μεταβλητές) ξεκινούν i:= 1; ( Ορίστε το i σε 1 ) readln(N); (Διαβάστε τον τελευταίο αριθμό) ενώ i<= N do {Как только i станет больше N, цикл прекратится (можно было бы написать просто <, но пришлось бы добавлять 1 к N) } begin {Открываем операторные скобки} write(i, " "); {Выводим i} Inc(i); {увеличиваем i на один.} end; { закрываем скобки } end.

Επαναλάβετε ή έναν βρόχο με μια μετασυνθήκη

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

Η επανάληψη έχει τη μορφή:

επαναλαμβάνω( επαναλαμβάνω … )
<оператор 1>;
< оператор 2>;

μέχρι(πριν…) <условие>

Να αρχίσεικαι τέλοςδεν απαιτείται.

Η λύση του προβλήματος.

Πρόγραμμα example_repeat; var i, N: ακέραιος;( δήλωση μεταβλητών) αρχίζει i:= 1; ( Ορίστε το i σε 1 ) readln(N); ( Διαβάστε τον τελευταίο αριθμό ) επαναλάβετε (δεν χρειάζεται αρχή και τέλος μετά την επανάληψη ) write(i, " "); (Εμφάνιση i) Inc(i); (Αυξήστε το i κατά ένα.) έως ότου i = N + 1; (Για παράδειγμα, i = 11 και N = 10. Ο βρόχος θα σταματήσει, οπότε η συνθήκη γίνεται αληθής.) τέλος.

Για, ή ένας βρόχος με μια παράμετρο

Γιαείναι ένας βρόχος στον οποίο το σώμα εκτελείται δεδομένο αριθμό φορών.

Υπάρχουν δύο τρόποι για να γράψετε αυτόν τον βρόχο:

Πρώτη μορφή

Για<счетчик1> := <значение1>προς την<конечное_значение>κάνω<оператор1>;

<счетчик1>θα αυξηθεί κατά 1.

<значение1>είναι η αρχική τιμή του μετρητή. Μπορεί να είναι μια μεταβλητή ή ένας αριθμός.
<конечное_значение>: μόλις η αξία<счетчик1>θα γίνει περισσότερο<конечное_значение>

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

Και<счетчик1>, και<конечное_значение>, και<значение1>- μεταβλητές ΟΛΟΚΛΗΡΟτύπος.

Τις περισσότερες φορές, η μεταβλητή i χρησιμοποιείται ως μετρητής.

Δεύτερη μορφή

Για<счетчик2> := <значение2>μέχρι<конечное_значение>κάνω<оператор1>;

Μετά από κάθε επανάληψη, η τιμή<счетчик2>θα μειωθεί κατά 1.

<значение2>είναι η αρχική τιμή του μετρητή.
<конечное_значение>: μόλις η αξία<счетчик2>θα γίνει λιγότερο<конечное_значение>, ο βρόχος τερματίζεται.

Δύο σημαντικές σημειώσεις:

  1. Ο βρόχος επαναλαμβάνεται όσο η τιμή του μετρητή βρίσκεται στο τμήμα [value; τελική_τιμή].
  2. Αλλάξτε την τιμή του μετρητή μέσα στο σώμα ειναι ΑΠΑΓΟΡΕΥΜΕΝΟ! Εδώ είναι τι βγάζει ο μεταγλωττιστής:

Η λύση του προβλήματος:

Πρόγραμμα παράδειγμα_για; var i, N: ακέραιος; έναρξη ανάγνωσης(N); (ας υποθέσουμε ότι εισάγαμε 10) για i:= 1 έως N do write(i, " "); (αριθμός επαναλήψεων - 10 - 1 + 1 = 10) τέλος.

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

Ας λύσουμε μερικά προβλήματα.

Για 1. Δίνονται ακέραιοι Κ και Ν (Ν > 0). Έξοδος N επί τον αριθμό K.

Οργανώνουμε έναν απλό κύκλο από το 1 στον απαιτούμενο αριθμό.

Πρόγραμμα για 1; var K, N, i: ακέραιος; έναρξη ανάγνωσης (K, N); for i:= 1 έως N do write(K, " "); (Γράφουμε Κ χωρισμένα με κενό) τέλος.

Για 2. < B). Вывести в порядке возрастания все целые числа, расположенные между A и B (включая сами числа A и B), а также количество N этих чисел.

Αφού ο Α< B, то цикл должен будет выводить все числа от А до B. Чтобы сосчитать количество чисел, используем формулу: <конечное_значение> — <начальное_значение> + 1.

Πρόγραμμα για 2; var A, B, i, count: ακέραιος; έναρξη ανάγνωσης (Α, Β); for i:= A έως B do write(i, " "); (γράψτε αριθμούς από τον μικρότερο στον μεγαλύτερο) μετρήστε:= B - A + 1; (μετρήστε τον αριθμό των αριθμών) γραμμένο; write("Αριθμός αριθμών - ", count); τέλος.

Για 9. Δίνονται δύο ακέραιοι Α και Β (Α< B). Найти сумму квадратов всех целых чисел от A до B включительно.

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

Πρόγραμμα για 9; var A, B, i, S: ακέραιος; έναρξη ανάγνωσης (Α, Β); S:= 0; (Το PascalABC το κάνει αυτό αυτόματα, αλλά αν έχετε διαφορετικό μεταγλωττιστή, σας συμβουλεύουμε να μηδενίσετε τις μεταβλητές με μη αυτόματο τρόπο) για i:= A έως B do S:= S + Sqr(i); (προσθήκη όλων των τετραγώνων) writeln? write("Άθροισμα τετραγώνων - ", S); τέλος.

Για 13°. Δίνεται ακέραιος N (> 0). Βρείτε την τιμή της παράστασης 1,1 - 1,2 + 1,3 - ... (Ν όροι, πρόσημα εναλλάσσονται). Μην χρησιμοποιείτε τον τελεστή υπό όρους.

Για να αλλάξουμε το πρόσημο, κάθε επανάληψη του βρόχου αλλάζουμε την τιμή της ειδικής μεταβλητής στο αντίθετο.

Πρόγραμμα για 13; var N, A, i: ακέραιος; Σ: αληθινό start Write("N = "); readln(N); S:= 1,1; Α:= 1; (Πρώτα θετικά) για i:= 2 έως N do (έχουμε ήδη κάνει την πρώτη επανάληψη του βρόχου, οπότε ξεκινάμε να μετράμε από το 2) ξεκινάμε A:= -A; (Τώρα αρνητικό) S:= S + A * (1 + i / 10); (προσθήκη) τέλος· WriteIn(S:5:1); (Ας δώσουμε μια εξοικείωση για το κλασματικό μέρος) τέλος.

Ενώ 1°. Δίνονται οι θετικοί αριθμοί Α και Β (Α > Β). Σε ένα τμήμα μήκους Α, τοποθετείται ο μέγιστος δυνατός αριθμός τμημάτων μήκους Β (χωρίς επικαλύψεις). Χωρίς να χρησιμοποιήσετε τον πολλαπλασιασμό και τη διαίρεση, βρείτε το μήκος του μη κατειλημμένου τμήματος του τμήματος Α.

Κάθε φορά αφαιρούμε το Β από το Α μέχρι το Α - Β >= 0.

Πρόγραμμα while1; var A, B: ακέραιος; έναρξη ανάγνωσης (A, B); ενώ (A - B) >= 0 do A:= A - B; (Ενώ η διαφορά είναι θετική, αφαιρούμε. Είναι απαραίτητο να παρέχουμε μια παραλλαγή με πολλαπλότητα Α και Β, επομένως >=) write(A); τέλος.

Ενώ 4°.Δίνεται ακέραιος N (> 0). Εάν είναι ισχύς 3, τότε βγάζουμε True, αν όχι, έξοδο False.

Ενεργούμε ως εξής: ενώ το Ν διαιρείται με το 3, το διαιρούμε με το 3. Τότε, αν N = 1, ο αριθμός είναι δύναμη του τρία. αν Ν<>1, τότε ο αριθμός δεν είναι δύναμη τριών. Για να λύσετε αυτό το πρόβλημα, πρέπει να γνωρίζετε τι είναι και πώς λειτουργούν.

Πρόγραμμα while4; var N: ακέραιος; start readln(N); ενώ N mod 3 = 0 do N:= N div 3; (Εφόσον το υπόλοιπο της διαίρεσης με το τρία είναι μηδέν, διαιρέστε το N με 3) writeln(N = 1); (Boolean έκφραση) τέλος.

Αυτά για σήμερα! Μην ξεχνάτε να επισκέπτεστε τον ιστότοπό μας πιο συχνά και να κάνετε κλικ στα κουμπιά που βρίσκονται μπροστά από τα σχόλια.

Ο κύκλος με μια παράμετρο έχει ήδη εξεταστεί από εμάς στην ενότητα "Αλγόριθμος" στο θέμα "Τύποι αλγορίθμων".
Χρησιμοποιείται βρόχος με παράμετρο,όταν είναι γνωστό εκ των προτέρων πόσες φορές πρέπει να εκτελεστεί ο βρόχος.

Μορφή εγγραφής κύκλου:

Εδώ για, να, κάνει- δεσμευμένες λέξεις (για, πριν, εκτέλεση)

<пар. цикла> - παράμετρος κύκλου - μεταβλητή ακέραιος αριθμόςτύπος (ακέραιος τύπος);
<нач. знач.> - αρχική τιμή - αριθμός ή μεταβλητήακέραιος αριθμόςτύπος (ακέραιος τύπος);
<кон. знач.> - τελική τιμή - αριθμός ή
μεταβλητόςακέραιος αριθμόςτύπος (ακέραιος τύπος);
<оператор> είναι ένας αυθαίρετος τελεστής Pascal.

Παράδειγμα: Για i:=1 έως n κάνω<оператор>
εδώ i είναι η παράμετρος βρόχου
1 - αρχική τιμή
n - τελική τιμή
Εάν χρησιμοποιούνται αρκετοί τελεστές στο σώμα του βρόχου, τότε χρησιμοποιούνται αγκύλες χειριστή: αρχή ... τέλος.
Κατά την εκτέλεση της πρότασης for, η έκφραση αξιολογείται πρώτα<нач.знач.>και εκχωρώντας την τιμή του στη μεταβλητή βρόχου<пар.цикла> := <нач. знач.>. Στη συνέχεια συγκρίνονται<пар.цикла>και <кон.знач.>. Μέχρι να γίνουν ίσες, θα εκτελούνται οι δηλώσεις. Τιμή μεταβλητής βρόχου<нач.знач>αυξάνεται αυτόματα κατά ένα κατά τη διάρκεια του βρόχου.Θα πρέπει να σημειωθεί αμέσως ότι είναι αδύνατο να ορίσετε ένα βήμα κύκλου διαφορετικό από το 1 σε αυτόν τον τελεστή.
Παράδειγμα:
Οι ακόλουθες δηλώσεις βρόχου είναι δυνατές:

1) για i:= 1 έως n κάνω s1;

2) για i:= 3 έως 10 κάνουμε s1;

3) για i:= a έως b κάνει s1;

4) για i:= a έως b do
να αρχίσει

s1;
s2;
...
sn

τέλος;

Εδώ οι s1, s2, s3, ... sn είναι τελεστές βρόχου.

Παράδειγμα:
Γράψτε ένα πρόγραμμα για την εμφάνιση αριθμών από το 1 έως το 10.

Παράδειγμα:
Γράψτε ένα πρόγραμμα για τον υπολογισμό του παραγοντικού ενός αριθμού n, δηλαδή n!. (0!=1)

Επεξήγηση προγράμματος:
Η μεταβλητή n είναι για τον αριθμό που εισάγει ο χρήστης, το παραγοντικό του οποίου πρέπει να βρεθεί. f - μια μεταβλητή στην οποία θα "συσσωρευτεί" η τιμή του παραγοντικού του αριθμού n. i - μεταβλητή βρόχου.
Ορίζεται η αρχική τιμή της μεταβλητής f:= 1.
Μετά αρχίζει ο κύκλος. Η μεταβλητή i αρχικοποιείται σε 1. συγκρίνεται με το τελικό - n (1<= n), если условие истинно, тогда выполняется оператор (в этой программе он один): f:= f*i, 1*1=1; значение переменной цикла увеличивается на 1, т. е. станет равным: i:= i + 1, 1 + 1 = 2 и цикл повторяется.
Όταν η τιμή του i γίνει ίση με n, τότε ο βρόχος θα εκτελεστεί για τελευταία φορά, επειδή η επόμενη τιμή του i θα είναι n + 1, που είναι μεγαλύτερη από την τελική τιμή του n, η συνθήκη i<= n - ложно, цикл не выполняется.

Υπάρχει μια άλλη μορφή της δήλωσης βρόχου For:
Μορφή εγγραφής κύκλου:

Η αντικατάσταση της δεσμευμένης λέξης σε με downto σημαίνει ότι το βήμα της παραμέτρου βρόχου είναι (-1).
Η αλλαγή στην τιμή της παραμέτρου πηγαίνει από μια μεγαλύτερη τιμή σε μια μικρότερη, δηλ.<нач. знач.> <кон. знач.>.

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

1) για i:= n μέχρι 1 έως s1;

2) για i:= 10 downto 3 do s1;

3) για i:= b κάτω σε a do s1; (υποθέτοντας β>α)

4) για i:= b κάτω σε ένα do
να αρχίσει

S1;
s2;
...
sn

τέλος; (υποθέτοντας β>α)

Εδώ οι s1, s2, s3, ... sn είναι τελεστές βρόχου.

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


Καθήκοντα

  1. Δεδομένων 10 αριθμών, εκτυπώστε αυτούς που είναι τέλεια τετράγωνα.
  2. Δεδομένων 10 αριθμών, βρείτε το προϊόν τους.Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.
  3. Δίνονται 10 αριθμοί, βρείτε το άθροισμα των ζυγών αριθμών.Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.
  4. Δίνονται 10 αριθμοί, βρείτε τον αριθμό των αρνητικών.Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.
  5. Δίνονται n πραγματικοί αριθμοί. Βρείτε το μέγιστο και το ελάχιστο.Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.
  6. Δίνονται n πραγματικοί αριθμοί.Να βρείτε τον αριθμητικό μέσο όρο όλων των στοιχείων.Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.
  7. Δίνονται n πραγματικοί αριθμοί.Να βρείτε τον αριθμητικό μέσο όρο αρνητικών και θετικών στοιχείων.Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.
  8. Δίνονται n φυσικοί αριθμοί.Να βρείτε το άθροισμα και το γινόμενο των στοιχείων που είναι πολλαπλάσια του 3 και του 5.Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.
  9. Δίνονται n φυσικοί αριθμοί.Αποσύρωεκείνοι οι αριθμοί των οποίων οι τιμές είναι δυνάμεις του δύο (1, 2, 4, 8, 16, ...).Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.
  10. Δίνονται n φυσικοί αριθμοί.Αποσύρωτους αριθμούς των οποίων οι τιμές βρίσκονται στο τμήμα.Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.
  11. Δίνονται n φυσικοί αριθμοί.Εμφανίστε τους αριθμούς των οποίων οι τιμές είναι τα τετράγωνα κάποιου αριθμού.Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.
  12. Δίνεται φυσικός αριθμός n.Βρείτε το ν 2.Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.
  13. Δίνονται φυσικοί αριθμοί a, n. Βρείτε ένα ν.Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.
  14. Δίνεται φυσικός αριθμός n. Προσδιορίστε την χωρητικότητά του, αυξήστε το πιο σημαντικό ψηφίο του αριθμού κατά 2
  15. Δίνεται φυσικός αριθμός n. Αλλάξτε το πρώτο και το τελευταίο ψηφίο ενός αριθμού
  16. Δίνεται φυσικός αριθμός n. Τα ψηφία ενός αριθμού που είναι πολλαπλάσια του 2 αντικαθίστανται από το 0.
  17. Δίνεται φυσικός αριθμός n. Τα ψηφία ενός αριθμού που είναι πολλαπλάσια του 3 αντικαθίστανται από το 1.
  18. Δίνεται φυσικός αριθμός n. Υπολογίστε το γινόμενο (2n-1)*(3n-1)*(4n-1)*...*(10n-1).Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.
  19. Υπολογίστε το άθροισμα 2+4+6+...+100.Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.
  20. Δίνεται φυσικός αριθμός n, πραγματικός x. Υπολογίστε το γινόμενο x+x/2+x/3+...+x/n.Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.
  21. Δίνεται φυσικός αριθμός n. Υπολογίστε P=(1-1/2)(1-1/3)...(1-1/n), όπου n>2.Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.
  22. Δίνεται φυσικός αριθμός n. Υπολογίστε P=(1+x)/n+(2+x)/(n-1)+...+(n+x)/1.Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.
  23. Δίνονται n φυσικοί αριθμοί. Υπολογίστε το άθροισμα μιας σειράς1+x/1!+x 2 /2!+x 3 /3!+ ...+x n/n!. Κάντε ένα μπλοκ διάγραμμα και προγραμματίστε.

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

Για <параметр_цикла>:=<начальное_знач> προς την <конечное_знач> κάνω <оператор>;

Για <параметр_цикла>:=<конечное_знач> μέχρι <начальное_зна.> κάνω <оператор>;

Η δήλωση, η οποία είναι το σώμα του βρόχου, μπορεί να είναι απλή ή σύνθετη.

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

Η παράμετρος περιγράφεται μαζί με άλλες μεταβλητές.

Το βήμα του βρόχου for είναι πάντα σταθερό και ισούται με "1" ή "-1".

Εμφανίστε τους δέκα πρώτους θετικούς ακέραιους

var i: ακέραιος; Εισάγεται //μετρητής

fori:=1to10do//ενώ η τιμή του μετρητή είναι από 1 έως 10 κάντε τα εξής

writeln(i); //τιμή μετρητή εξόδου

vari,sum:ακέραιος;

άθροισμα:=0; //μηδενισμός της τιμής της μεταβλητής

fori:=10to99do//απαρίθμηση διψήφιων θετικών αριθμών

αν mod 3=0 τότε //πολλαπλότητα 3

sum:=sum+i; //άθροισμα της προηγούμενης τιμής της μεταβλητής και του αριθμού που αντιστοιχεί στη συνθήκη

Εμφανίστε το γινόμενο των δέκα πρώτων θετικών ζυγών αριθμών

vari,pr:ακέραιος;

pr:=1; //κατά την εύρεση του γινομένου, η αρχική τιμή της μεταβλητής δεν είναι 0, αλλά 1

για i:=1 έως 10 κάνω

αν mod 2=0 τότε //καθορίστε την ισοτιμία

Δίνονται δύο ακέραιοι Α και Β (Α< B). Вывести в порядке возрастания все целые числа, расположенные между A и B (в том числе A и B), a также количество N этих чисел .

var i,pr: ακέραιος;

k:=0; //μηδενίζει την τιμή της μεταβλητής, που σημαίνει τον αριθμό

fori:=AtoBdo//απαρίθμηση αριθμών από το δεδομένο εύρος

writeln(i); //έξοδος σε αύξουσα σειρά

k:=k+1; // μετρώντας τον αριθμό των αριθμών

writeln(k); //η έξοδος του ποσού εμφανίζεται εκτός του βρόχου επειδή εκδίδεται μία φορά

Εισαγάγετε N διαφορετικούς αριθμούς. Να βρείτε τον αριθμητικό μέσο όρο όλων των αριθμών.

Varn,i,a:ακέραιος;

Για i:=1 έως N κάνω

Writeln("αριθμητικός μέσος όρος= ",s/n:4:2);

Δήλωση βρόχου με while ... Do precondition

Η εντολή while ... do έχει σχεδιαστεί για να υλοποιεί βρόχους με μια προϋπόθεση.

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

Επικοινωνία με τον χειριστήενώ ... κάνω μεταφράζεται ως "αντίο ... να κάνω" και μοιάζει με αυτό:

ενώ <условие> κάνω <оператор>

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

Η ίδια η συνθήκη μπορεί να είναι μια boolean σταθερά, μια μεταβλητή ή μια έκφραση boolean.

Λάβετε υπόψη τα ακόλουθα όταν γράφετε βρόχους με μια προϋπόθεση.

    Για να έχει ποτέ την ευκαιρία να τελειώσει ένας βρόχος, τα περιεχόμενα του σώματός του πρέπει απαραίτητα να επηρεάζουν την κατάσταση του βρόχου.

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

Εάν η συνθήκη του βρόχου είναι ψευδής, ο βρόχος δεν θα εκτελεστεί ποτέ!

Στα περισσότερα προγράμματα, υπάρχει ανάγκη επανειλημμένης εκτέλεσης κάποιας εντολής (ή μπλοκ εντολών). Οι δηλώσεις βρόχου μπορούν να χρησιμοποιηθούν για την οργάνωση τέτοιων κατασκευών. Η γλώσσα προγραμματισμού Pascal χρησιμοποιεί τους ακόλουθους τύπους τελεστών βρόχου: for, while, repeat (Το PascalABC.NET χρησιμοποιεί επίσης τον τελεστή βρόχου foreach).

Ένα μπλοκ εντολών που πρέπει να εκτελείται επανειλημμένα ονομάζεται σώμα βρόχου.

για δήλωση στο Pascal

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

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

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

  • για την παράμετρο := start_value έως end_value do
  • χειριστής;
  • για την παράμετρο := start_value downto end_value do
  • χειριστής;

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

Ας εξετάσουμε το έργο του βρόχου for.

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

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

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

Μια εργασία. Εμφανίστε μια λίστα με τετράγωνα ακεραίων από το 10 έως το 1.

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

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

  • για i:= 10 κάτω σε 1 do
  • writeln(i:2, " ", i * i);

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

Παράδειγμα 2. Οι βαθμοί ενός υποψηφίου σε τέσσερις εξετάσεις είναι γνωστοί. Προσδιορίστε τον αριθμό των πόντων που έχουν κερδίσει.

Μια εργασία. Οι βαθμοί του αιτούντος σε τέσσερις εξετάσεις είναι γνωστοί. Προσδιορίστε τον αριθμό των πόντων που έχουν κερδίσει.

Λύση. Θα χρησιμοποιήσουμε έναν τελεστή βρόχου με παραμέτρους στο πρόγραμμα, καθώς είναι γνωστός ο αριθμός των επαναλήψεων των ενεργειών που εκτελούνται (ο αιτών έλαβε ακριβώς τέσσερις βαθμούς)

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

  • s:= 0;
  • για i:= 1 έως 4 κάνω
  • να αρχίσει
  • readln(σήμανση);
  • s:= s + σημάδι;
  • εγγραφές?