Κατανόηση και χρήση βρόχων στον προγραμματισμό των Δελφών

click fraud protection

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

Ο βρόχος FOR

Ας υποθέσουμε ότι πρέπει να επαναλάβουμε μια πράξη ορισμένο αριθμό φορές.

// εμφανίζει κουτιά μηνυμάτων 1,2,3,4,5
var j: ακέραιο;
ξεκινήσει
Για j: = 1 προς το 5 κάνω
ξεκινήσει
ShowMessage ('Κουτί:' + IntToStr (j));
τέλος;
τέλος;

Η τιμή μίας μεταβλητής ελέγχου (j), η οποία είναι πραγματικά απλά ένας μετρητής, καθορίζει πόσες φορές εκτελείται μία δήλωση. Η λέξη-κλειδί για τη δημιουργία μετρητή. Στο προηγούμενο παράδειγμα, η τιμή εκκίνησης για τον μετρητή ορίζεται στο 1. Η τελική τιμή είναι 5.
Όταν η εντολή για αρχίζει να τρέχει η μεταβλητή μετρητή ορίζεται στην τιμή εκκίνησης. Δελφοί από ότι ελέγχει αν η τιμή για τον μετρητή είναι μικρότερη από την τελική τιμή. Αν η τιμή είναι μεγαλύτερη, δεν γίνεται τίποτα (η εκτέλεση του προγράμματος μεταβαίνει στη γραμμή κώδικα αμέσως μετά το μπλοκ κώδικα για το βρόχο). Εάν η τιμή εκκίνησης είναι μικρότερη από την τελική τιμή, εκτελείται το σώμα του βρόχου (εδώ: εμφανίζεται το πλαίσιο μηνύματος). Τέλος, οι Δελφοί προσθέτουν 1 στο πάγκο και ξεκινούν ξανά τη διαδικασία.

instagram viewer

Μερικές φορές είναι απαραίτητο να μετράτε προς τα πίσω. ο μέχρι η λέξη-κλειδί ορίζει ότι η τιμή ενός μετρητή θα πρέπει να μειώνεται κατά ένα κάθε φορά που εκτελείται ο βρόχος (δεν είναι δυνατό να προσδιοριστεί μια αύξηση / μείωση εκτός από μία). Ένα παράδειγμα ενός βρόχου που μετράει προς τα πίσω.

var j: ακέραιο;
ξεκινήσει
Για j: = 5 μέχρι 1 κάνω
ξεκινήσει
ShowMessage ('T μείον' + IntToStr (j) + 'δευτερόλεπτα')?
τέλος;
ShowMessage ('Για εκτέλεση ακολουθίας!');
τέλος;

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

Φυσιοθετημένοι βρόχοι FOR

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

var k, j: ακέραιο;
ξεκινήσει
// αυτός ο διπλός βρόχος εκτελείται 4x4 = 16 φορές
Για k: = 1 προς το 4 κάνω
Για j: = 4 μέχρι 1 κάνω
ShowMessage ('Κουτί:' + IntToStr (k) + ',' + IntToStr (j));
τέλος;

Ο κανόνας για τη ρύθμιση των επόμενων βρόχων είναι απλός: ο εσωτερικός βρόχος (j counter) πρέπει να ολοκληρωθεί πριν εμφανιστεί η επόμενη εντολή για τον εξωτερικό βρόχο (k counter). Μπορούμε να έχουμε τριπλούς ή τετραπλάσιους βρόχους, ή ακόμα περισσότερους.

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

Ο βρόχος FOR-IN

Αν έχετε Delphi 2005 ή οποιαδήποτε νεότερη έκδοση, μπορείτε να χρησιμοποιήσετε την "νέα" επανάληψη του στυλ στοιχείου σε συλλογή πάνω από τα δοχεία. Ακολουθεί το ακόλουθο παράδειγμα επανάληψη πάνω σε συμβολοσειρές: για κάθε char στο string ελέγξτε εάν ο χαρακτήρας είναι είτε 'a' είτε 'e' ή 'i'.

const
s = 'Σχετικά με τον προγραμματισμό των Delphi';
var
c: char;
ξεκινήσει
Για ντο σε μικρό κάνω
ξεκινήσει
αν ντο σε ['a', 'e', ​​'i'] έπειτα
ξεκινήσει
// Κάνε κάτι
τέλος;
τέλος;
τέλος;

Οι βρόχοι WHILE και REPEAT

Μερικές φορές δεν θα γνωρίζουμε ακριβώς πόσες φορές θα έπρεπε να κυκλώσει ένας βρόχος. Τι γίνεται αν θέλουμε να επαναλάβουμε μια λειτουργία μέχρι να φτάσουμε σε ένα συγκεκριμένο στόχο;

Η πιο σημαντική διαφορά μεταξύ του βρόχου while-do και του επαναληπτικού βρόχου είναι ότι ο κώδικας του επανάληψη δήλωσης εκτελείται πάντα τουλάχιστον μία φορά.

Το γενικό μοτίβο όταν γράφουμε έναν τύπο επαναλήψεως (και ενώ) τύπου βρόχου στους Δελφούς έχει ως εξής:

επαναλαμβάνω
ξεκινήσει
δηλώσεις ·
τέλος;
μέχρι condition = true
ενώ condition = true κάνω
ξεκινήσει
δηλώσεις ·
τέλος;

Εδώ είναι ο κώδικας που δείχνει 5 διαδοχικά πλαίσια μηνυμάτων χρησιμοποιώντας την επανάληψη-μέχρι:

var
j: ακέραιο;
ξεκινήσει
j: = 0;
επαναλαμβάνω
ξεκινήσει
j: = j + 1.
ShowMessage ('Κουτί:' + IntToStr (j));
τέλος;
μέχρι j> 5;
τέλος;

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

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

var j: ακέραιο;
ξεκινήσει
j: = 0;
ενώ j <5 κάνω
ξεκινήσει
j: = j + 1.
ShowMessage ('Κουτί:' + IntToStr (j));
τέλος;
τέλος;

Διάλειμμα και Συνέχεια

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

instagram story viewer