Ανάλυση λειτουργίας της "Για"

Ξεκίνησε από Νίκος Αδαμόπουλος, 11 Φεβ 2009, 12:22:59 ΜΜ

« προηγούμενο - επόμενο »

gpapargi

Παναγιώτη το ότι έχουμε άπειρες επαναλήψεις αν το βήμα είναι 0 δεν πρέπει να το δεχόμαστε σαν αξίωμα. Είναι κάτι που πρέπει να προκύψει εφόσον εξηγηθεί πως γίνεται η μετατροπή. Ας μου επιτραπεί η έκφραση… "δεν είναι αξίωμα, είναι θεώρημα"

Στάθη το διάγραμμα ροής της Για πρέπει να είναι συγκεκριμένο στη δομή του ανεξάρτητα από το παράδειγμα. Στο συγκεκριμένο φαίνεται καθαρά ότι η συνθήκη  είναι στην αρχή και άρα ισοδυναμεί με κάποια Όσο. Δεν είναι συνεπές να θεωρούμε το ΔΡ της Για  άλλοτε με συνθήκη στην αρχή και άλλοτε με συνθήκη στο τέλος.

Εγώ θέλω να ξέρω ένα σαφή ορισμό που να δένει και με όσα λέει το βιβλίο. Δηλαδή να έχει έλεγχο στην αρχή (Όσο) και να έχει τέτοια συνθήκη που να καταλήγει σε ατέρμονα βρόχο όταν το βήμα είναι 0. Τέτοιος ορισμός δεν υπάρχει. Επίσης δεν είναι σωστό να λέμε απλά ότι έχουμε ατέρμονα βρόχο όταν το βήμα είναι 0. Αυτό είναι κάτι που πρέπει να προκύψει από τη συνθήκη και τη μηδενική αύξηση του μετρητή.
Γιώργος Παπαργύρης

Καρκαμάνης Γεώργιος

Νομίζω ότι ο αλγόριθμος που ανέπτυξε ο Παναγιώτης για την εντολή ΓΙΑ καλύπτει όλες τις περιπτώσεις.
Βέβαια το πρόβλημα είναι πως θα εξηγήσουμε ότι για βήμα=0 έχουμε άπειρες επαναλήψεις.
Νομίζω πως όσο και να το αναλύσουμε δεν πρόκειται να βρούμε τρόπο να το εξηγήσουμε και γι΄αυτό το αποδέχομαι έτσι όπως είναι "Βήμα μηδέν τότε άπειρες επαναλήψεις"

gpapargi

Παράθεση από: Καρκαμάνης Γεώργιος στις 16 Φεβ 2009, 01:54:00 ΠΜ
Βέβαια το πρόβλημα είναι πως θα εξηγήσουμε ότι για βήμα=0 έχουμε άπειρες επαναλήψεις.
Νομίζω πως όσο και να το αναλύσουμε δεν πρόκειται να βρούμε τρόπο να το εξηγήσουμε και γι΄αυτό το αποδέχομαι έτσι όπως είναι "Βήμα μηδέν τότε άπειρες επαναλήψεις"

Γιατί το αποδέχεσαι; Το ότι δεν μπορούμε να εξηγήσουμε γιατί με βήμα 0 έχουμε άπειρες επαναλήψεις... αποδεικνύει (δια της εις άτοπον απαγωγής) ένα πράγμα: Ότι η "Για" δεν έχει οριστεί με κάποιο συνεπή τρόπο.

Πρώτα πρέπει να οριστεί με σαφήνεια και μετά θα δούμε πόσες επαναλήψεις γίνονται σε κάθε περίπτωση.
Γιώργος Παπαργύρης

Καρκαμάνης Γεώργιος

Γιώργο το αποδέχομαι για την απλούστευση των περιπτώσεων.
Νομίζω πως όλοι έχουμε κατασταλάξει ότι για βήμα μηδέν υπάρχει ατέρμων βρόχος. Το πρόβλημα είναι πως θα γίνει η απόδειξη. Παραθέτω την δική μου απόδειξη η οποία δεν είναι κομψή αλλά μπορεί να βοηθήσει έναν μαθητή να καταλάβει :

Αν η αρχική τιμή <= τελική τιμή και το βήμα μηδέν
τότε μπαίνουμε μέσα στο βρόχο αλλά δεν αυξάνεται ποτέ η τιμή του μετρητή με αποτέλεσμα να μην μπορεί να ξεπεράσει ποτέ την τελική τιμή για να τερματίσει

Αν η αρχική τιμή >= τελική τιμή και το βήμα μηδέν
τότε μπαίνουμε μέσα στο βρόχο αλλά δεν μειώνεται ποτέ η τιμή του μετρητή με αποτέλεσμα να μην ξεπεράσει ποτέ την τελική τιμή για να τερματίσει


P.Tsiotakis

Αφενός, συμφωνώ στην αιτιολόγηση με τον Γιώργο Καρκαμάνη

αφετέρου για τη διδασκαλία της αλγοριθμικής σκέψης στους μαθητές μου, μου φτάνουν αυτά

gpapargi

Η αιτιολόγηση του Γιώργου, αν και λογική, είναι αυθαίρετη. Πουθενά το διδακτικό πακέτο για τη μετατροπή από Για σε Όσο δε στηρίζεται στα όρια του μετρητή αλλά στο πρόσημο του βήματος.

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

Νίκος Αδαμόπουλος

#21
Με την ιδιότητα αυτού που άρχισε το συγκεκριμένα θέμα, εκφράζω την γνώμη ότι αυτή η κουβέντα έπρεπε να είχε κλείσει στο 15ο μήνυμα!

Ακούστηκαν οι διαφορετικές απόψεις και προσπάθησα να καταγράψω εκεί ένα συμπέρασμα με λίγο φιλοσοφικό-ποιητικό τρόπο (που μου άρεσε έτσι καλύτερα και σαν εκπαιδευτικός που θέλω να αυτοχαρακτηρίζομαι). Ήμουν σχεδόν σίγουρος ότι θα ακολουθούσαν κι άλλα μηνύματα αλλά είχα αποφασίσει να μην συνεχίσω κι εγώ.

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

Έτσι αποφάσισα να δώσω λίγο χρόνο ώστε να καταγράψω κάποια πράγματα με περισσότερο τεχνοκρατικό τρόπο (που δεν μου αρέσει πάντα!).

Λόγω έκτασης, θα ακολουθήσουν λοιπόν άλλα 2 μηνύματα κάπως μεγάλα...

Νίκος Αδαμόπουλος

#22
Σε αυτό το μήνυμα κάποιοι σχολιασμοί και λεπτομέρειες:

Παράθεση από: Καρκαμάνης Γεώργιος στις 17 Φεβ 2009, 01:39:54 ΠΜ
Γιώργο το αποδέχομαι για την απλούστευση των περιπτώσεων.
Νομίζω πως όλοι έχουμε κατασταλάξει ότι για βήμα μηδέν υπάρχει ατέρμων βρόχος.

Το ότι το αποδεχόμαστε (κατά τη διδασκαλία) και για τις 2 περιπτώσεις (1η:  βήμα 0 και αρχική <= τελική, 2η: βήμα 0 και αρχική > τελική) ενώ το βιβλίο το αναφέρει με σαφήνεια μόνο για τη μια (και θα εξηγήσω στο επόμενο μήνυμα γιατί το λέω αυτό!), πιθανώς να το κάνουμε όλοι για λόγους απλούστευσης ή και γιατί δεν είναι σκόπιμο να ζαλίζουμε τα παιδάκια, ούτε και ηθικό να προσπαθούμε να τους κάνουμε τους έξυπνους...

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

Επίσης, αναφέρθηκε:

Παράθεση από: Καρκαμάνης Γεώργιος στις 17 Φεβ 2009, 01:39:54 ΠΜ
Παραθέτω την δική μου απόδειξη η οποία δεν είναι κομψή αλλά μπορεί να βοηθήσει έναν μαθητή να καταλάβει :

Αν η αρχική τιμή <= τελική τιμή και το βήμα μηδέν
τότε μπαίνουμε μέσα στο βρόχο αλλά δεν αυξάνεται ποτέ η τιμή του μετρητή με αποτέλεσμα να μην μπορεί να ξεπεράσει ποτέ την τελική τιμή για να τερματίσει

Αν η αρχική τιμή >= τελική τιμή και το βήμα μηδέν
τότε μπαίνουμε μέσα στο βρόχο αλλά δεν μειώνεται ποτέ η τιμή του μετρητή με αποτέλεσμα να μην ξεπεράσει ποτέ την τελική τιμή για να τερματίσει

Μα αυτό δεν αποδεικνύει και τίποτα! Είναι απλά μια εικασία (με το πραγματικό νόημα της λέξης αυτής) για τον τρόπο που θα μπορούσε να λειτουργεί η Για, ώστε να εξηγεί τις άπειρες επαναλήψεις και για τις δύο περιπτώσεις. Μπορούμε να την δεχτούμε, μπορούμε και όχι όμως! (εγώ ουσιαστικά δεν την δέχομαι - και θα εξηγήσω στο επόμενο μήνυμα το γιατί).

Επίσης, αναφέρθηκε:

Παράθεση από: Τσιωτάκης Παναγιώτης στις 12 Φεβ 2009, 08:15:31 ΜΜ
Προσωπικά, απο το σχολικό βιβλίο έχω καταλάβει το παρακάτω:

Αν βήμα = 0 τότε  ! πρώτα αυτός ο έλεγχος
  Άπειρες επαναλήψεις
Αλλιώς_αν β >0 τότε
  Αν τελική >= αρχική τότε
     κάποιες επαναλήψεις
  Αλλιώς
     ΚΑΜΙΑ επανάληψη
  Τέλος_αν
Αλλιώς
  Αν τελική <= αρχική τότε
     κάποιες επαναλήψεις
  Αλλιώς
     ΚΑΜΙΑ επανάληψη
  Τέλος_αν
Τέλος_αν

και οφείλω να πω οτι είναι ιδιαίτερα απλός αλγόριθμος

Κι αυτό μπορούμε να το εκλάβουμε ως ανάλυση του τρόπου λειτουργίας της Για (την ίδια πιστεύω δεχόμαστε όλοι - μόνο κατά τη διδασκαλία όμως). Παρόλα αυτά, κι αυτό η ίδια εικασία είναι, που έχει τον ίδιο σκοπό: να εξηγήσει τις άπειρες επαναλήψεις και για τις δύο περιπτώσεις. Μπορούμε να την δεχτούμε, μπορούμε και όχι όμως!

Παράθεση από: Καρκαμάνης Γεώργιος στις 16 Φεβ 2009, 01:54:00 ΠΜ
Νομίζω ότι ο αλγόριθμος που ανέπτυξε ο Παναγιώτης για την εντολή ΓΙΑ καλύπτει όλες τις περιπτώσεις.

Μα όλες οι διαφορετικές εικασίες καλύπτουν όλες τις περιπτώσεις! Ωστόσο, πώς θα διαλέξουμε κάποια;

Με την ευκαιρία: Δεν μπορούμε να το αποκαλούμε "αλγόριθμο"! Δεν γίνεται σε έναν αλγόριθμο να βάζουμε άπειρες επαναλήψεις με την έννοια ότι το κάνουμε σκόπιμα. Εκτός κι αν το εννοούμε σαν "τρόπο_ανάλυσης_λειτουργίας_της_Για_σε_αλγοριθμική _μορφή_για_λόγους_συντομίας".

Με τη λογική λοιπόν ότι αυτά είναι εικασίες, εξηγείται και γιατί ο gpapargi λέει:

Παράθεση από: gpapargi στις 13 Φεβ 2009, 08:43:49 ΠΜ
Παναγιώτη το ότι έχουμε άπειρες επαναλήψεις αν το βήμα είναι 0 δεν πρέπει να το δεχόμαστε σαν αξίωμα. Είναι κάτι που πρέπει να προκύψει... Ας μου επιτραπεί η έκφραση… "δεν είναι αξίωμα, είναι θεώρημα"

Διαφωνώ κάθετα με το:

Παράθεση από: Καρκαμάνης Γεώργιος στις 17 Φεβ 2009, 01:39:54 ΠΜ
....μπορεί να βοηθήσει έναν μαθητή να καταλάβει :

Γιατί να είναι καλύτερο να καταλάβει ο μαθητής κάτι για το οποίο υπάρχει ασάφεια και δεν είμαστε καν σίγουροι; Εγώ συνήθως προσπερνάω τη δεύτερη περίπτωση (για βήμα 0 και αρχική > τελική), ενώ κάποιες λίγες φορές αφού οι μαθητές με ρώτησαν σχετικά, τους είπα: "ξέρετε η περίπτωση αυτή στο βιβλίο δεν αναφέρεται με σαφήνεια και μπράβο σας που το σκεφτήκατε! - όντως μπορεί να ισχύει ότι θα γίνουν άπειρες επαναλήψεις αλλά μπορεί να ισχύει και το ότι θα γίνουν 0 επαναλήψεις - ωστόσο επειδή πάνω σε αυτό πιστεύω και ελπίζω ότι δεν θα πέσει τίποτα στις εξετάσεις ας περιοριστούμε σε αυτά που λέει το βιβλίο για να είμαστε καλυμμένοι!". Δεν είναι περισσότερο τίμιο και παιδαγωγικό αυτό; Δηλαδή φοβόμαστε να πούμε στα παιδιά ότι δεν είναι όλα τέλεια;

Παράθεση από: Τσιωτάκης Παναγιώτης στις 17 Φεβ 2009, 10:18:32 ΠΜ
για τη διδασκαλία της αλγοριθμικής σκέψης στους μαθητές μου, μου φτάνουν αυτά

Αυτό θα έπρεπε να είναι το συμπέρασμα από το 15ο μήνυμα της αλυσίδας, ώστε να ασχολούμαστε με το δάσος και όχι με το δέντρο. Παρόλα αυτά συνεχίζει μια συζήτηση που ανακυκλώνει τα ίδια και τα ίδια και που δεν οδηγεί πουθενά...

Και μόνο που υπάρχει αυτή η συζήτηση, αυτό δείχνει (προσέξτε: δεν λέω αποδεικνύει - είναι βαριά κουβέντα το "αποδεικνύει"!) ότι όντως υφίσταται η συγκεκριμένη ασάφεια...

Μη βιαστείτε να απαντήσετε σε αυτό το μήνυμα... Θα ακολουθήσει κι άλλο...

Νίκος Αδαμόπουλος

#23
Τελικό μήνυμα: (συγγνώμη για την έκταση και τον χρόνο σας – όποιος αντέξει! )

(σε συνέχεια του προηγούμενου...)

Επειδή δεν έχει γίνει από όλους αντιληπτή η αιτία των διαφωνιών και πολλοί πιστεύουν πως δεν υπάρχει καν θέμα προβληματισμού, ας καταγράψουμε πιο ξεκάθαρα τις 3 (και όχι 2!) διαφορετικές εικασίες για τον τρόπο λειτουργίας της Για (ακολουθώ περίπου το στυλ του Παναγιώτη σε περίπου_αλγοριθμική_μορφή_για_λόγους_συντομίας. Προσοχή δεν είναι αλγόριθμος - δεν θέλουμε σκόπιμα σε αλγορίθμους να προκαλούμε άπειρες επαναλήψεις για προφανείς λόγους! Έτσι δεν είναι;  ;) ):

ΤΡΟΠΟΙ ΛΕΙΤΟΥΡΓΙΑΣ ΤΗΣ ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ...ΜΕ_ΒΗΜΑ

ΕΙΚΑΣΙΑ_1:

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

Παρατηρήσεις:
1. Η εικασία αυτή είναι συμβατή με αυτό που λέει ο Τσιωτάκης Παναγιώτης, και ο Γιώργος Καρκαμάνης, και ίσως οι περισσότεροι...
2. Πλεονέκτημα: Όταν β=0 έχουμε άπειρες επαναλήψεις σε κάθε περίπτωση άρα είναι συμβατό (ας πούμε) και με το βιβλίο.
4. Μειονέκτημα: Είναι πολύπλοκο αφού όταν το β=0 τότε ελέγχει επιπλέον το αν αρχική<=τελική ώστε να προκαλέσει σκόπιμα άπειρες επαναλήψεις σε κάθε περίπτωση!!!
3. Έτσι, αν θεωρήσουμε ότι αυτό λέει και το βιβλίο (λέμε: ΑΝ!!), τότε όντως κατά την υλοποίηση κάποιου διερμηνευτή ή μεταγλωττιστή η ΓΙΑ θα έπρεπε να δουλεύει κάπως έτσι!!!


ΕΙΚΑΣΙΑ_2 (η οποία ξεφύτρωσε από το πουθενά!)

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

Παρατηρήσεις:
1. Είναι το ίδιο με την πρώτη εικασία μόνο που (αυθαίρετα κι εγώ - γιατί όχι; ) όταν το β=0 έχω αλλάξει τα >= σε <= και αντιθέτως!!!
2. Όταν β=0 τότε δεν έχουμε καθόλου επαναλήψεις σε κάθε περίπτωση!!!
3. Μειονέκτημα: Η εικασία αυτή είναι δεν συμβατή με το βιβλίο, για αυτό βέβαια δεν την υποστηρίζει κανένας από εμάς!!!
4. Μειονέκτημα: Είναι το ίδιο πολύπλοκο αφού όταν το β=0 τότε ελέγχει επιπλέον το αν αρχική<=τελική ώστε να μην προκαλέσει άπειρες επαναλήψεις σε καμία περίπτωση!!! (τουλάχιστον όμως γίνεται για καλό σκοπό! βλ. επόμενο)
5. Πλεονέκτημα: Δεν έχουμε ποτέ άπειρες επαναλήψεις πράγμα που όντως ποτέ δεν το θέλουμε. Άρα κατά κάποιο τρόπο θα προστατευόταν έτσι ο προγραμματιστής από απροσεξίες και... κακοτοπιές ( :) ).

Βέβαια ισοδυναμεί με το:

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

Οπότε έτσι εξαλείφεται το μειονέκτημα της πολυπλοκότητας. Παραμένει όμως η ασυμβατότητα με το βιβλίο!


ΕΙΚΑΣΙΑ_3

Αν β>=0 τότε έχουμε:
   ι<-αρχική
   Όσο  ι<=τελική επανάλαβε
     <εντολές>
     ι<-ι+β
   Τέλος_επανάληψης
   ! οπότε Αν τελική >= αρχική τότε έχουμε κάποιες επαναλήψεις, ή και άπειρες επαναλήψεις αν το β=0
   ! Αν όμως τελική < αρχική δεν έχουμε καμία επανάληψη ακόμα κι αν β=0!!!
αλλιώς (δηλαδή αν  β<0) έχουμε:
   ι<-αρχική
   Όσο  ι>=τελική επανάλαβε
     <εντολές>
     ι<-ι+β
   Τέλος_επανάληψης
   ! οπότε Αν τελική <= αρχική τότε έχουμε κάποιες επαναλήψεις
   ! αλλιώς δεν έχουμε καμία επανάληψη
Τέλος_αν

Παρατηρήσεις:
1. Σε αυτήν δεν μας πολυαπασχολεί η περίπτωση του β=0, απλά προκύπτει από μόνο του ότι μπορεί να έχουμε άπειρες επαναλήψεις (αν τελική >= αρχική) ή καμία επανάληψη (αν τελική< αρχική)
2. Πλεονέκτημα: Όταν β=0 έχουμε άπειρες επαναλήψεις στην 1η περίπτωση, άρα είναι συμβατό με το ένα και μοναδικό παράδειγμα του βιβλίου!
3. Πλεονέκτημα: Δεν είναι πολύπλοκος άρα υλοποιείται εύκολα σε κάποιον διερμηνευτή ή μεταγλωττιστή.
4. Το σημαντικότερο τώρα: Αν υποθέσουμε ότι απλά οι συγγραφείς του βιβλίου δεν σκέφτηκαν καν την περίπτωση του "β=0 και τελική< αρχική" (που δεν είναι και τόσο δύσκολο να έχει συμβεί αυτό!), που στο κάτω κάτω δεν αναφέρεται καν, τότε η εικασία αυτή είναι ΠΛΗΡΩΣ συμβατή και με το βιβλίο!!!


Για να δούμε τώρα ποιαν θα διαλέγαμε εμείς:
1) Αν δεν ήμασταν δεσμευμένοι από το βιβλίο να τολμήσω να υποθέσω ότι θα διαλέγαμε την ΕΙΚΑΣΙΑ_2;;;;!!!! Είναι ίσως η καλύτερη! Επειδή όμως εκ των πραγμάτων είμαστε δεσμευμένοι, την απορρίπτουμε ασυζητητί.
2) ʼρα θα μένει η ΕΙΚΑΣΙΑ_1 και ΕΙΚΑΣΙΑ_3.

Για να δούμε τώρα ποιαν θα διάλεγαν οι συγγραφείς αν ήταν πιο προσεκτικοί:
1) Υποστηρίζω λοιπόν (και πάνω σε αυτό περιμένω και τις απόψεις σας!!) ότι ΔΕΝ θα διάλεγαν την ΕΙΚΑΣΙΑ_1 για τον εξής λόγο: Θα ήταν σαν να ήθελαν με το ζόρι να «τιμωρήσουν» τον προγραμματιστή επειδή έβαλε απερίσκεπτα το β=0!!! Είναι όμως δυνατόν σε προγραμματιστική δομή επανάληψης που εντάσσεται στη λογική του δομημένου προγραμματισμού (και άρα που δεν είναι «πρέπον» να χρησιμοποιείται η goto για έξοδο από το βρόχο) να αποτελεί αυτοσκοπό στον ορισμό λειτουργίας της η δημιουργία άπειρων επαναλήψεων;;;; Μα τότε δεν είναι σαν να επιδιώκουμε την παραβίαση του κριτηρίου της περατότητας;
2) ʼρα μένει η ΕΙΚΑΣΙΑ_2 και ΕΙΚΑΣΙΑ_3.
3) Ξέρουμε λόγω του βιβλίου ότι την ΕΙΚΑΣΙΑ_2 τελικά δεν την επέλεξαν και ορθά κατά τη γνώμη μου (το εξηγώ παρακάτω αναφερόμενος στις πραγματικές γλώσσες προγραμματισμού).
4) ʼρα θεωρώ ότι έχουν επιλέξει την ΕΙΚΑΣΙΑ_3.

Η τομή τού τι επιλέγουμε εμείς και τι οι συγγραφείς είναι η ΕΙΚΑΣΙΑ_3. Βέβαια, ατυχώς, οι συγγραφείς δεν περιέγραψαν αναλυτικά τις περιπτώσεις για το β=0 (ή, για να μην τους αδικούμε, μπορεί να μην έκριναν σκόπιμο να το κάνουν), και είμαστε τώρα εμείς εδώ να διαφωνούμε...

ΝΑ ΞΑΝΑΤΟΝΙΣΩ ΟΜΩΣ ΤΟ ΕΞΗΣ:
Το ότι προκύπτουν άπειρες επαναλήψεις δεν μπορεί να είναι επιδιωκόμενο αποτέλεσμα του ορισμού λειτουργίας των εντολών επανάληψης, είτε από τους συγγραφείς είτε από τον εκάστοτε οργανισμό που βγάζει μια νέα γλώσσα (δεν μπορεί δηλαδή να ισχύει η ΕΙΚΑΣΙΑ_1), αλλά είναι το αναπόφευκτο αποτέλεσμα του πραγματικού τρόπου λειτουργίας των εντολών αυτών. Και εξηγούμαι:

Ξεχνάμε ότι όλες οι εντολές, σε όποια γλώσσα προγραμματισμού υψηλού επιπέδου και να είναι διατυπωμένες, τελικά μεταφράζονται σε γλώσσα μηχανής για να εκτελεστούν στον υπολογιστή; Αν έχετε προγραμματίσει σε assembly, που είναι πολύ κοντά στη γλώσσα μηχανής, θα ξέρετε ότι οι βρόχοι δημιουργούνται με τη βοήθεια αρκετών ξεχωριστών εντολών: για την αρχικοποίηση κάποιας «μεταβλητής», για την μεταβολή της κατά κάποιο βήμα, για τον έλεγχό της σε σχέση με κάποιο όριο ώστε να προκληθεί έξοδος από το βρόχο ή επιστροφή ξανά από την αρχή, κλπ. Θα λέγαμε δηλαδή ότι οι βρόχοι επανάληψης περισσότερο μοιάζουν με Όσο ή με Μέχρις_ότου παρά με Για. Το ότι υπάρχει η Για στις γλώσσες υψηλού επιπέδου γίνεται για λόγους ευκολίας του προγραμματιστή, ώστε να υπάρχει ένα ακόμα επίπεδο αφαίρεσης της πολυπλοκότητας των εντολών. Τελικά όμως κι αυτή μεταφράζεται σε γλώσσα μηχανής με το ίδιο τρόπο. Και ενώ στις πραγματικές γλώσσες η υλοποίηση της ΓΙΑ θα μπορούσε να αντιστοιχεί πάντα στην ΕΙΚΑΣΙΑ_2 (για λόγους που εξηγήσαμε) ωστόσο ούτε καν γίνεται αυτό, αφού δεν θεωρείται τόσο πολύ σημαντικό, και αφού ότι κανένας λογικός προγραμματιστής δεν θα έπαιζε με το βήμα ώστε αυτό να γίνει 0. Είπαμε, οι προγραμματιστές ξέρουν τις συνέπειες και αποφεύγουν τις κακοτοπιές (!!!). Υποστηρίζω δηλαδή (χωρίς να έχω κάνει και στατιστική μελέτη) ότι ακόμα και στις πραγματικές γλώσσες τις περισσότερες φορές υλοποιείται η ΕΙΚΑΣΙΑ_3, λιγότερες ίσως η ΕΙΚΑΣΙΑ_2, και σπανιότερα η ΕΙΚΑΣΙΑ_1. ʼρα ορθά, και πάντα κατά τη γνώμη μου, οι συγγραφείς έχουν επιλέξει την ΕΙΚΑΣΙΑ_3!!!

Και για να ολοκληρώσω κι εγώ κάποτε (ως Νίκος και όχι ως Πετρούλα...), πιστεύω ότι η ανάλυση λειτουργίας της Για (στο αρχικό μήνυμά μου και με το οποίο ξεκίνησε η αλυσίδα) ικανοποιεί τις διδακτικές ανάγκες για τους σκοπούς του μαθήματος, αλλά ορθά περιλαμβάνει και τους όποιους προβληματισμούς για να μην πέσουμε από μόνοι μας στο λάκο (δηλαδή να μην υποπέσουμε σε επιστημονικές αυθαιρεσίες) και βρεθεί κανένας και μας καρφώσει πισώπλατα!!!

evry


Άσκηση 1ου εξαμήνου!!!! στο τμήμα πληροφορικής του ΕΚΠΑ

http://cgi.di.uoa.gr/~ip/iphw0809_5.pdf

και μετά καθόμαστε και ασχολούμαστε για το μηδενικό βήμα της Για.

Απλά ξέρετε ποια είναι η απορία μου ρε παιδιά? Αφού ξέρουν ότι η Για δεν ορίζεται καλά ειδικά με βήμα 0, αφού ξέρουν ότι η ισοδυναμία αλγορίθμων δεν είναι καλά ορισμένη γιατί τα βάζουν στις εξετάσεις?  ???
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Νίκος Αδαμόπουλος

Παράθεση από: evry στις 18 Φεβ 2009, 03:50:36 ΜΜ
Απλά ξέρετε ποια είναι η απορία μου ρε παιδιά? Αφού ξέρουν ότι η Για δεν ορίζεται καλά ειδικά με βήμα 0, αφού ξέρουν ότι η ισοδυναμία αλγορίθμων δεν είναι καλά ορισμένη γιατί τα βάζουν στις εξετάσεις?  ???

Εντάξει ρε συ... αν δεν μου έχει ξεφύγει κάτι νομίζω η μόνη φορά ήταν το 2001:

------------------------------
Δίνεται η δο΅ή επανάληψης.

Για i από τι΅ή1 ΅έχρι τι΅ή2 ΅ε_βή΅α β
  Εντολές
Τέλος_επανάληψης

Να ΅ετατρέψετε την παραπάνω δο΅ή σε ισοδύνα΅η δο΅ή επανάληψης Όσο...επανάλαβε.

-----------------------------

Πιθανή λύση:


i <- τι΅ή1
Αν β > 0 τότε
  Όσο i ≤ τιμή2 επανάλαβε
    Εντολές
    i <-i + β
  Τέλος_επανάληψης
αλλιώς
  Όσο i ≥ τιμή2 επανάλαβε
    Εντολές
    i <-i + β
  Τέλος_επανάληψης
Τέλος_αν

Να σημειώσουμε πως θεωρούμε ότι το β δεν μπορεί να είναι 0 γιατί τότε η εκφώνηση θα είχε πρόβλημα περατότητας.

------------------------------------

Και τελειώσαμε... Δεν νομίζω ότι ήταν στο πνεύμα του θέματος να εξετάσουμε το β=0....

evry


Νομίζω ότι το 2005 είχαν δώσει στο θέμα 1 πάλι μια δομή Για με βήμα 0 ενώ αρκετοί λένε ότι δε μπορούμε να έχουμε βήμα 0 στη Για. Για να το δώσουν προφανώς το θώρησαν σωστό απλά έπρεπε να πεις ότι παραβιάζει το κριτήριο της περατότητας. Είναι όμως σαν να παραδέχονται ότι μπορείς να χρησιμοποιήσεις τη δομή Για με βήμα 0.

Αλλά και γενικότερα αυτό με τις ισοδύναμες δομές επανάληψης δεν νομίζω ότι στέκεται πολύ καλά από θέμα αυστηρότητας
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Νίκος Αδαμόπουλος

#27
Παράθεση από: evry στις 18 Φεβ 2009, 06:27:02 ΜΜ
Νομίζω ότι το 2005 είχαν δώσει στο θέμα 1 πάλι μια δομή Για με βήμα 0 ....

Ναι! Ήταν το:

Ποιο κριτήριο δεν ικανοποιεί ο παρακάτω αλγόριθμος και γιατί;
S←0
Για Ι από 2 μέχρι 10 με_βήμα 0
  S←S+I
Τέλος_επανάληψης
Εμφάνισε S

(Μονάδες 5)

Όμως αυτό δεν νομίζω να προβλημάτισε κανέναν...