Να γραφεί αλγόριθμος για την εύρεση όλων των ακέραιων λύσεων της εξίσωσης
4x + 2y = 14
για τιμές των x, y μεταξύ των 1 και 5.
Γενικός κανόνας του δομημένου προγραμματισμού είναι η εσωτερική δομή να βρίσκεται εξ’ ολοκλήρου μέσα στην εξωτερική. Ειδικά στην περίπτωση των εμφωλευμένων δομών επανάληψης ισχύουν οι ακόλουθοι κανόνες:
- ο βρόχος που ξεκινάει τελευταίος πρέπει να ολοκληρώνεται πρώτος,
- δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσότερων βρόχων που ο ένας βρίσκεται στο εσωτερικό του άλλου.
Το ότι ο βρόχος που ξεκινάει τελευταίος πρέπει να ολοκληρώνεται πρώτος, μπορεί να γίνει αντιληπτό με παρακολούθηση τιμών (σε οριζόντιο πίνακα, χάριν ευκολίας):
x |
1 |
|
|
|
|
|
2 |
|
|
|
|
|
3 |
|
|
|
|
|
4 |
|
|
y |
1 |
2 |
3 |
4 |
5 |
6 |
1 |
2 |
3 |
4 |
5 |
6 |
1 |
2 |
3 |
4 |
5 |
6 |
1 |
2 |
… |
4x+2y=14 |
|
|
|
|
Αληθής |
|
|
|
Αληθής |
|
|
|
Αληθής |
|
|
|
|
|
|
|
|
Οθόνη |
|
|
|
|
1,5 |
|
|
|
2,3 |
|
|
|
3,1 |
|
|
|
|
|
|
|
|
Αρχικά ο εξωτερικός βρόχος ξεκινά πρώτος και το x παίρνει την τιμή 1. Ο βρόχος του y ξεκινάει δεύτερος (εσωτερικός, τελευταίος) και το y παίρνει όλες τις τιμές μέχρι να ολοκληρωθεί μία φορά (δηλαδή και την τιμή 6, η οποία αλλάζει την τιμή της συνθήκης επανάληψης σε Ψευδής και τερματίζει την επανάληψη). Τότε αλλάζει και η τιμή της x σε 2, το οποίο φαίνεται λίγο πιο καθαρά στον αλγόριθμο με τις Όσο, και ξεκινά να εκτελείται από την αρχή άλλη μία φορά ο βρόχος της y. (Με τον ίδιο μπορεί να γίνει μετατροπή σε Μέχρις_ότου).
Ουσιαστικά χρησιμοποιήσαμε εμφωλευμένη (διπλή) Για, για να εξαντλήσουμε όλους τους δυνατούς συνδυασμούς ακέραιων τιμών που μπορούν να πάρουν δύο μεταβλητές σε συγκεκριμένο διάστημα (ο έλεγχος της συνθήκης 4*x + 2*y = 14 γίνεται 5*5 = 25 φορές).