Ενα απλό διαγώνισμα για επανάληψη κεφ 3-5
Προσοχή όταν ζητάμε μετατροπή μεταξύ δομών επανάληψης διότι στην Python οι δομές while/for δεν είναι "ισοδύναμες" Για παράδειγμα τα δυο παρακάτω τμήματα κώδικα στο τέλος δεν θα εμφανίσουν τον ίδιο αριθμό:
sum = 0
for i in range(10):
sum += i
print i
Εδώ η for θα εμφανίσει στο τέλος τον αριθμό 9
ενώ η while παρακάτω
sum = 0
i = 0
while i<10 :
sum += i
i = i + 1
print i
θα εμφανίσει 10
Αυτό συμβαίνει διότι στη for η μεταβλητή i δεν αυξάνεται αλλά διατρέχει τα στοιχεία μιας λίστας όπως φαίνεται παρακάτω:
sum = 0
for i in [0,1,2,3,4,5,6,7,8,9]:
sum += i
print i
σωστα και ευχαριστώ , η προσπάθεια όμως μετατροπής δίνει την κατανόηση της διαφοράς
σίγουρα οι ασκήσεις αυτές έχουν νόημα απλά η πρόταση είναι να δίνουμε μια εκφώνηση στην οποία να μην μιλάμε για ισοδύναμα τμήματα γιατί δεν υλοποιούν τα ίδια βήματα, αλλά για τμήματα κώδικα που εμφανίζουν τους ίδιους αριθμούς.
δηλ. η Python εχει "iterator" στο for....προχωρημενος προγραμματισμος....
Οι μαθητες μπορουν να ανταποκριθούν σε τετοιες εννοιες;
Η εμπειρια σας τι λεει;
Στην τρίτη γυμνασίου που το δοκιμάζω μια χαρά ανταποκρίνονται.
Σαν έννοια είναι πιο εύκολο από την κλασική for που κρύβει τον μετρητή. Μπορεί εμάς να μας φαίνεται προχωρημένο γιατί έχουμε συνηθίσει αλλιώς.
Για παράδειγμα το παρακάτω τμήμα κώδικα:
for i in [4,6,8,10]:
print i*i
μπορεί να εξηγηθεί ως εξής:
Για κάθε αριθμό της λίστας [4,6,8,10]:
Εμφάνισε το τετράγωνό του
Μπορεί κανείς να κάνει πιο απλά παραδείγματα όπως το παρακάτω:
for team in ['aek', 'paok', 'pao', 'ethnikos']:
print team + ' ' + team
Δεν φαίνεται πουθενά δείκτης που να αυξάνεται κάτι που δυσκολεύει πολύ τους μαθητές στη for.
Απλά θα πρέπει από πριν να δείξει ο καθηγητής μερικά παραδείγματα με απλές λίστες στον διερμηνευτή.
ΥΓ. Το παραπάνω παράδειγμα το έκανα σε σχολείο του Πειραιά >:D
αυτο ζητηθηκε απο τους μαθητες (.py file το επισυναπτομενο)