Βρόχοι και επανάληψη — DedSec Project
Βρόχοι — απόδειξη ότι μία επανάληψη τερματίζει Η έννοια και το αναμενόμενο αποτέλεσμα Ο βρόχος επαναλαμβάνει μία πράξη. Στην άσκηση αθροίζονται όλοι οι άρτιοι αριθμοί από το μηδέν έως το…
Βρόχοι — απόδειξη ότι μία επανάληψη τερματίζει
Η έννοια και το αναμενόμενο αποτέλεσμα
Ο βρόχος επαναλαμβάνει μία πράξη. Στην άσκηση αθροίζονται όλοι οι άρτιοι αριθμοί από το μηδέν έως το ανώτατο όριο, το οποίο περιλαμβάνεται. Χρησιμοποιούμε while αντί για έτοιμη sum. Η συνθήκη τερματισμού είναι current <= limit και σε κάθε βήμα αυξάνουμε τη current κατά δύο. Για να αιτιολογήσεις τον τερματισμό, βρες μία ποσότητα που κινείται μονότονα προς το όριο και δεν μπορεί να επαναλαμβάνεται επ' άπειρον.
Εκτελέσιμη άσκηση Python 3
Αποθήκευσε ως 04_Loops.py και εκτέλεσε με Python 3. Πρώτα πρόβλεψε το αποτέλεσμα· όλοι οι έλεγχοι χρησιμοποιούν απλές τεχνητές τιμές χωρίς δίκτυο.
def even_sum(limit):
if type(limit) is not int or not 0 <= limit <= 1000:
raise ValueError("limit out of bounds")
total = 0
current = 0
while current <= limit:
total += current
current += 2
return total
assert even_sum(0) == 0
assert even_sum(6) == 12
assert even_sum(7) == 12
assert even_sum(10) == sum(n for n in range(11) if n%2==0)
try: even_sum(-1)
except ValueError: pass
else: raise AssertionError("invalid limit accepted")
print("PASS terminating while loop")
Γιατί λειτουργεί
Με μη αρνητικό όριο μέχρι 1000, η current ξεκινά από μηδέν και αυξάνεται κατά δύο. Κάποια στιγμή θα ξεπεράσει το limit και η συνθήκη θα γίνει ψευδής. Σε κάθε βήμα το total είναι το άθροισμα των άρτιων αριθμών που επισκέφθηκε ήδη ο βρόχος· αυτό αποτελεί την αμετάβλητη συνθήκη. Ένας for με range(0, limit+1, 2) θα ήταν συντομότερος, αλλά η while βοηθά στην κατανόηση των ενημερώσεων και των ορίων.
Καθοδηγούμενη εξάσκηση
Γράψε σε πίνακα κάθε τιμή current και total όταν limit=6. Άλλαξε προσωρινά <= σε < και βρες πότε λείπει η τελευταία τιμή. Εξήγησε τι θα συμβεί αν αφαιρεθεί η current += 2, χωρίς να εκτελέσεις σκόπιμα ατέρμονο πρόγραμμα. Ξαναγράψε με for και σύγκρινε αποτελέσματα για όλα τα όρια 0 έως 100.
Αντιμετώπιση λαθών
Αν η εκτέλεση δεν σταματά, εξέτασε αν αλλάζει η μεταβλητή προς το όριο. Αν λείπει η τελευταία τιμή, έλεγξε τη διαφορά συμπεριληπτικού και αποκλειστικού ορίου. Μην εκτελείς εσκεμμένα ατέρμονους βρόχους σε κοινόχρηστο υπολογιστή ή κινητό.