Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Δομή επανάληψης => Γ΄ Λυκείου => Εντολή ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ => Μήνυμα ξεκίνησε από: drac στις 19 Ιαν 2010, 04:27:00 ΜΜ

Τίτλος: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: drac στις 19 Ιαν 2010, 04:27:00 ΜΜ
Είναι σωστό σε μια δομή επανάληψης 'Για' να χρησιμοποιήσουμε 'Με_βήμα 0' ?? Και ο μετρητής ν' αλλάζει μέσα στην επανάληψη;;
π.χ.:

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50 ΜΕ_ΒΗΜΑ 0
    ......
    εντολές
    ......
    i <- i + 2
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Τίτλος: Απ: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: toufeki στις 19 Ιαν 2010, 04:55:17 ΜΜ
...με βήμα 0 δε πάμε πουθενά πατριώτη. >:D

..άσε που δεν ικανοποιείται και το κριτήριο της περατότητας.....


Τίτλος: Απ: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: drac στις 19 Ιαν 2010, 05:05:47 ΜΜ
Συμφωνώ εγώ...απλά λέω γιατί αυτή η γλωσσομάθεια το δέχεται: http://spinet.gr/glossomatheia/download/
Τίτλος: Απ: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: sstergou στις 19 Ιαν 2010, 05:10:35 ΜΜ
Παράθεση
...με βήμα 0 δε πάμε πουθενά πατριώτη

Δείτε και αυτό (αν δεν το έχετε δει ήδη)
https://alkisg.mysch.gr/steki/index.php?topic=1797.15
Τίτλος: Απ: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: toufeki στις 19 Ιαν 2010, 05:26:07 ΜΜ
...διάβασα προσεκτικά τον διάλογο και ξέρετε τι πέρασε από το νου μου; (όχι ένα βλήμα να όπως έλεγε και ο Ψάλτης σε μια ταινία..) 
Ένας άπειρος διάλογος περί άπειρου που υπήρχε υπάρχει και θα υπάρχει.
Και καλά κάνει βέβαια και υπάρχει αλλιώς δεν θα υπήρχε επιστήμη .....
Τίτλος: Απ: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: Νίκος Αδαμόπουλος στις 19 Ιαν 2010, 08:48:58 ΜΜ
Παράθεση από: drac στις 19 Ιαν 2010, 04:27:00 ΜΜ
Είναι σωστό σε μια δομή επανάληψης 'Για' να χρησιμοποιήσουμε 'Με_βήμα 0' ?? Και ο μετρητής ν' αλλάζει μέσα στην επανάληψη;;
π.χ.:

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50 ΜΕ_ΒΗΜΑ 0
    ......
    εντολές
    ......
    i <- i + 2
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Θα λέγαμε καλύτερα πως δεν είναι "πολιτικώς ορθό"!
Τίτλος: Απ: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: toufeki στις 19 Ιαν 2010, 09:10:02 ΜΜ
...α ρε Διπλωμάτη!

Γρήγορα στο Διπλωματικό Σώμα.
Χωρίς καθυστέρηση. >:D
Τίτλος: Απ: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: andreas_p στις 19 Ιαν 2010, 09:11:59 ΜΜ
Το

i <- i + 2


όπου  i  η μεταβλητή ελέγχου της  Για,  καλό είναι να αποφεύγεται.

Κάνε το ίδιο με Όσο !
Τίτλος: Απ: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: drac στις 24 Ιαν 2010, 02:32:15 ΠΜ
Δεν υπάρχει μια ξεκάθαρη άποψη για το 'με_βημα 0';;
ok...για την περίπτωση που δεν αλλάζει ο μετρητής μέσα στην επανάληψη είναι ξεκάθαρο ότι είναι λάθος, αφού δεν αλλάζει ο μετρητής....
Αλλά ρωτάω για την περίπτωση που αλλάζει ο μετρητής μέσα στην επανάληψη... τότε;;
Τίτλος: Απ: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: Νίκος Αδαμόπουλος στις 24 Ιαν 2010, 10:46:57 ΠΜ
Μα σε αυτό αναφερόμαστε!
Τίτλος: Απ: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: gpapargi στις 25 Ιαν 2010, 09:13:35 ΠΜ
O drac αναφέρεται σε τελείως διαφορετικό θέμα από αυτό που συζητούσαμε την άλλη φορά. Μιλάει για την αλλαγή του μετρητή μέσα στη "Για". ΑΥτό πρέπει να αποφεύγεται γιατί δίνει δυανάγνωστο κώδικα. Είναι θέμα σύμβασης μεταξύ προγραμματιστών για να καταλαβαίνει ο ένας τι κάνει ο άλλος (όπως πχ αποφεύφγουμε και τη goto). Δε σημαίνει ότι η αλλαγή του μετρητή δίνει λάθος αποτελέσματα ή ότι δεν υποστηρίζεται. Επειδή το μάθημα είναι εισαγωγικό και τα παιδιά τώρα παίρνουν τις πρώτες τους αρχές καλό είναι να τις παίρνουν σωστά γιατί διαφορετικά μπορεί να αποχτήσουν κακές συνήθειες που θα δυσκολευτούν να τις κόψουν.

Σχετικά με το θέμα που συζητούσαμε την άλλη φορά από ότι καταλαβαίνω η θεωργτική προσέγγιση που χτησιμοποιούσαμε τότε ίσως δεν είνα κατανοητή. Για αυτό θα μιλήσω με πολύ συγκεκριμένα παραδείγματα ώστε να φανεί το άτοπο που καταλήγουμε όταν λέμε ότι "η Για με βήμα 0 δίνει άπειρες επαναλήψεις" και πρότεινα το σαφή ορισμό της μετατροπής σε Όσο.

Ας μου πει κάποιος πόσες φορές θα εκτελεστούν οι παρακάτω βρόχοι:

Βρόχος 1
Για ι από 1 μέχρι 10 με_βήμα 0
  εντολές
Τέλος επανάληψης

Βρόχος 2
Για ι από 10 μέχρι 1 με_βήμα 0
  εντολές
Τέλος επανάληψης

Θέλω να μου πει ποια είναι η συνθήκη που ελέγχεται και βγαίνει αληθής επ΄άπειρον.
Τίτλος: Απ: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: Νίκος Αδαμόπουλος στις 25 Ιαν 2010, 10:35:07 ΠΜ
Παράθεση από: gpapargi στις 25 Ιαν 2010, 09:13:35 ΠΜ
...

Σχετικά με το θέμα που συζητούσαμε την άλλη φορά από ότι καταλαβαίνω η θεωργτική προσέγγιση που χτησιμοποιούσαμε τότε ίσως δεν είνα κατανοητή. Για αυτό θα μιλήσω με πολύ συγκεκριμένα παραδείγματα ώστε να φανεί το άτοπο που καταλήγουμε όταν λέμε ότι "η Για με βήμα 0 δίνει άπειρες επαναλήψεις" και πρότεινα το σαφή ορισμό της μετατροπής σε Όσο.

Ας μου πει κάποιος πόσες φορές θα εκτελεστούν οι παρακάτω βρόχοι:

Βρόχος 1
Για ι από 1 μέχρι 10 με_βήμα 0
  εντολές
Τέλος επανάληψης

Βρόχος 2
Για ι από 10 μέχρι 1 με_βήμα 0
  εντολές
Τέλος επανάληψης

Θέλω να μου πει ποια είναι η συνθήκη που ελέγχεται και βγαίνει αληθής επ΄άπειρον.

Παρόλο που ίσως δεν έχει και μεγάλη αξία για τους μαθητές να επιμένουμε πάνω σε αυτό το σημείο (για να μην έχουμε και βαθμολογικά ατυχήματα!), όμως κι εγώ από τη μεριά μου ποτέ δεν δέχτηκα κάτι τέτοιο. Είχα καταλήξει σε αυτό: https://alkisg.mysch.gr/steki/index.php?topic=1797.msg13024#msg13024 (Εικασία 3!)

Δηλαδή στο 1ο παράδειγμά σου θα έχουμε άπειρες επαναλήψεις και στο 2ο θα έχουμε 0 επαναλήψεις... !!!
Τίτλος: Απ: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: gpapargi στις 25 Ιαν 2010, 11:47:54 ΠΜ
Αυτό σημαίνει τα εξής:

όταν το βήμα είναι θετικό  η μετατροπή είναι:
ι<-αρχική_τιμή
Όσο ι<=τελική_τιμή επανάλαβε  ! προσοχή στον συγκριτικό τελεστή
   εντολές
   ι<- ι+β
   Τέλος_επανάληψης

όταν το βήμα είναι αρνητικό η μετατροπή είναι:
ι<-αρχική_τιμή
Όσο ι>=τελική_τιμή επανάλαβε
   εντολές
   ι<- ι+β ! το β είναι αρνητικό και τελικά έχουμε αφαίρεση
Τέλος_επανάληψης

Μέχρι εδώ όλοι συμφωνούμε. Το κρίσιμο είναι το εξής: Για να δώσει άπειρες επαναλήψεις ο βρόχος 1 και καμία ο βρόχος 2 σημαίνει ότι η μετατροπή τους σε Όσο γίνεται ως εξής:

Βρόχος 1
ι<-1
Όσο ι<=10 επανάλαβε
   εντολές
   ι<-ι+0
Τέλος_επανάληψης

Βρόχος 2
ι<-10
Όσο ι<=1 επανάλαβε
   εντολές
   ι<-ι+0
Τέλος_επανάληψης

Εδώ έχουμε μια περίπτωση που η ΓΙΑ με βήμα 0 δεν δίνει άπειρες επαναλήψεις.

Όπως είναι αναμενόμενο, εφόσον ο τελεστής προκύπτει από το πρόσημο του βήματος και όχι από το αν η αρχική τιμή είναι μεγαλύτερη ή μικρότερη από την τελική τιμή, χρησιμοποιήσαμε και στις 2 περιπτώσεις το βήματος 0 τον ίδιο συγκριτικό τελεστή που είναι ο "<="

Η αυθαιρεσία είναι η εξής: Με ποιο δικαίωμα βάζουμε στο βήμα 0 τον τελεστή "<=" που μπαίνει στο θετικό βήμα και όχι τον τελεστή ">=" που βάζουμε στο αρνητικό; Το 0 δεν είναι ούτε θετικός ούτε αρνητικός και δείχνουμε κάποιου είδους προτίμηση στους θετικούς. Δεν αντιμετωπίζουμε θετικούς και αρνητικούς με συμμετρικό τρόπο
Τίτλος: Απ: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: Νίκος Αδαμόπουλος στις 26 Ιαν 2010, 11:39:23 ΠΜ
Παράθεση από: gpapargi στις 25 Ιαν 2010, 11:47:54 ΠΜ
Η αυθαιρεσία είναι η εξής: Με ποιο δικαίωμα βάζουμε στο βήμα 0 τον τελεστή "<=" που μπαίνει στο θετικό βήμα και όχι τον τελεστή ">=" που βάζουμε στο αρνητικό; Το 0 δεν είναι ούτε θετικός ούτε αρνητικός και δείχνουμε κάποιου είδους προτίμηση στους θετικούς. Δεν αντιμετωπίζουμε θετικούς και αρνητικούς με συμμετρικό τρόπο[/b]

Αν δείχναμε προτίμηση στους αρνητικούς πάλι θα είχαμε το ίδιο πρόβλημα αλλά από την ανάποδη!

Αλλά έτσι κι αλλιώς πάντα προτιμάμε τους θετικούς για τον λόγο ακριβώς ότι είναι θετικοί !!!  ;) Δεν το βλέπω ως αδικία αλλά ως μία προτίμηση... Απ' την άλλη ... (αν και το ανακάλυψα εκ των υστέρων!) ... δεν είναι και τόσο αυθαίρετο... :

Quiz: Από ποιας γλώσσας το help έχω αντιγράψει το εξής: (?)

Value*                        Loop executes if
Positive or 0              counter <= end
Negative                    counter >= end


* To Value αναφέρεται στο βήμα της Για ... και το end στο μέχρι...
Τίτλος: Απ: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: evry στις 26 Ιαν 2010, 11:44:43 ΠΜ

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

Για ι από 1 μέχρι 3 με βήμα -1

θα σου πουν άπειρες, αφού ξεκινάμε από το 1 και μειώνουμε μέχρι να φτάσουμε στο 3. Αυτός ο τρόπος που έχει επιλέξει το βιβλίο (καθηγητή) αντιβαίνει όχι μόνο στην κοινή λογική αλλά και στην διδακτική πρακτική
Τίτλος: Απ: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: evry στις 26 Ιαν 2010, 12:04:10 ΜΜ
Λογικά από εδώ
http://msdn.microsoft.com/en-us/library/5z06z1kb.aspx (http://msdn.microsoft.com/en-us/library/5z06z1kb.aspx)

αλλά αυτό το κατασκεύασμα δεν θα το έλεγα γλώσσα :D
Τίτλος: Απ: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: Νίκος Αδαμόπουλος στις 26 Ιαν 2010, 12:17:32 ΜΜ
... Αυτό είναι άλλο θέμα!  :) Πάντως από ό,τι φαίνεται οι συγγραφείς του βιβλίου αυτή τη γλώσσα είχαν στο μυαλό τους!
Τίτλος: Απ: ερώτηση σε δομή Επανάληψης 'Για'...
Αποστολή από: gpapargi στις 26 Ιαν 2010, 01:36:34 ΜΜ
Παράθεση από: Νίκος Αδαμόπουλος στις 26 Ιαν 2010, 11:39:23 ΠΜ
Αν δείχναμε προτίμηση στους αρνητικούς πάλι θα είχαμε το ίδιο πρόβλημα αλλά από την ανάποδη!

Αλλά έτσι κι αλλιώς πάντα προτιμάμε τους θετικούς για τον λόγο ακριβώς ότι είναι θετικοί !!!  ;) Δεν το βλέπω ως αδικία αλλά ως μία προτίμηση... Απ' την άλλη ... (αν και το ανακάλυψα εκ των υστέρων!) ... δεν είναι και τόσο αυθαίρετο... :

Δεν υπάρχει θέμα αδικίας. Είναι απλά αυθαίρετο. Δεν ορίζεται πουθενά μέσα στο βιβλίο πως γίνεται ο  συγκριτικός τελεστής με βήμα 0 και άρα υπάρχει αυθερεσία  ότι και να υποθέσουμε
Όταν δόθηκε η διευκρίνηση είπαν ότι το Για ι από 10 μέχρι 1 με_βήμα 0 δεν εκτελείται καμία φορά και αυτό δείχνει ότι θεωρούν τη Για να μετατρέπεται σε Όσο και το βήμα 0 αντιμετωπίζεται σα θετικός. Το ενδιαφέρον είναι ότι στη ΓΛΩΣΣΑ η  Για ι από 10 μέχρι 1 με_βήμα 0 δίνει καμία επανάληψη. Αλλά στην ψευδογλώσσα μας λένε ότι δίνει άπειρες επαναλήψεις. Απαράδεκτοι.