Κριτική - Σχολιασμός νέου βιβλίου

Ξεκίνησε από sstergou, 25 Σεπ 2014, 04:50:18 ΜΜ

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

sstergou

Σήμερα έκανα μια προσεχτική ανάγνωση του δεύτερου κεφαλαίου του νέου βιβλίου και θέλω να μοιραστώ μαζί σας τις εντυπώσεις μου :

Σελίδα 13: Δεν μπορώ να καταλάβω γιατί τέτοια εμμονή με ένα πρόβλημα (του 2000) που δεν λέει τίποτε στα παιδιά..

Σελίδα 15: Μου αρέσουν οι αναφορές στην ιστορία της επιστήμης υπολογιστών. Μπερδεύτηκα όμως με τις λέξεις υπολογίσιμος και υπολογιστικός και δεν έχω καταλάβει ακριβώς τι θέλουν να πουν οι συγγραφείς.

Σελίδα 17 – περιθώριο: "Δεδομένο είναι μια παράσταση γεγονότων, εννοιών ή εντολών...." . Δεν έχω καταλάβει ακριβώς εννοεί με το εντολών.

Σελίδα 20: Καλό θα ήταν να αναφερθεί ότι ο αρχικός αλγόριθμος του Ευκλείδη δούλευε με διαδοχικές αφαιρέσεις.

Σελίδα 21: Επιτέλους ένα πρότυπο για τους πίνακες τιμών.

Σελίδα 22: Στο χαρακτηριστικό (ευτυχώς!) της εισόδου αναφέρεται ότι "κάθε αλγόριθμος χρειάζεται να δέχεται ένα σύνολο μεταβλητών (που μπορεί να είναι το κενό σύνολο), οι οποίες αποτελούν και τα δεδομένα του αλγορίθμου". Προσωπικά θεωρώ ότι η διατύπωση εδώ πέρα είναι άσχημη. Κατ' αρχάς μιλάμε για τιμές εισόδου και όχι για μεταβλητές. Ακόμη το "πρέπει να δέχεται ένα σύνολο όπου μπορεί να είναι το κενό" σημαίνει ότι μπορεί να μην έχει και είσοδο οπότε γιατί να μην αναφερθεί αυτό άμεσα; Επίσης δεν εξηγείται πάλι τι είναι η είσοδος...

Σελίδα 23: Έξοδος του αλγορίθμου είναι μία ή περισσότερες "μεταβλητές ή/και σταθερές...". Και πάλι μιλάμε για τιμές.

Σελίδα 24: Από τον πίνακα λείπει η παραγοντική πολυπλοκότητα που υπάρχει στην διπλανή σελίδα. Επίσης ο κλασικός quicksort έχει πολυπλοκότητα χειρότερης περίπτωσης Ο(n^2).

Σελίδα 25 – περιθώριο: Έχει βρεθεί πιο γρήγορος και λέγεται timsort. Επίσης οι συγκρίσεις αυτές αφορούν αλγορίθμους ταξινόμησης οι οποίοι βασίζονται στη σύγκριση αυτόνομων στοιχείων. Σε άλλες εφαρμογές (όταν π.χ. ταξινομούνται αλφαριθμητικά τότε άλλοι αλγόριθμοι όπως ο radix sort είναι πιο γρήγοροι).

Σελίδα 31: Δεν καταλαβαίνω πάλι αυτή την περιγραφή του αρχείου. Ούτε όλα τα αρχεία είναι έτσι ούτε αυτό είναι χρήσιμο να το μάθουν οι μαθητές.

Σελίδα 32 – περιθώριο: Το κόμμα σαν υποδιαστολή δεν μπορεί να υλοποιηθεί από κάποιο προγραμματιστικό περιβάλλον για τους γνωστούς λόγους. Δεν ξέρω αν αυτό βέβαια ενδιαφέρει.

Σελίδες 32, 35, 36: Εδώ σηκώνω τα χέρια ψηλά. στην εντολή εκχώρησης:  "δεξιά (του βέλους) μπορεί να υπάρχει σταθερά, μεταβλητή ή έκφραση". Δηλαδή η σταθερά δεν είναι έκφραση; Αυτό βέβαια αναιρείται στην αρχή της 35: "Μια έκφραση μπορεί να είναι μια  σταθερά, μια μεταβλητή, μια συνάρτηση, ή ένας συνδυασμός...". Χάθηκε κάτι σαν το: "έκφραση είναι μια παράσταση η οποία δίνει μια τιμή"; Ακόμα ο ορισμός της λογικής έκφρασης είναι λίγο μπερδεμένος. Γενικά καλύτερο θα ήταν πρώτα να περιγράφονταν οι τελεστές, μετά οι εκφράσεις και μετά η εντολή εκχώρησης. Και πάμε στο καλύτερο! "Ως συνθήκη εννοείται μια λογική έκφραση στην οποία υπάρχει τουλάχιστον ένας συγκριτικός τελεστής (δηλαδή η συνθήκη δεν μπορεί να απαρτίζεται μόνο από μία μεταβλητή, μία σταθερά ή μία αριθμητική παράσταση)". Δηλαδή τα παρακάτω είναι λάθος:

Αν όχι βρέθηκε

Αν βρέθηκε ή ξεπέρασε


Δεν ξέρω τι να πω...

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

Αλγόριθμος Ευκλείδης
Διάβασε α, β
Κάλεσε ΜΚΔ(α, β)
Τέλος Ευκλείδης

Αλγόριθμος ΜΚΔ
Δεδομένα // x, y //
Αν y = 0 τότε
  Εμφάνισε x
αλλιώς
  x ← x mod y
  Κάλεσε ΜΚΔ (y, x)
Τέλος_αν
Τέλος ΜΚΔ

Στον πρώτο απλά διαβάζουμε και δεν εμφανίζουμε, ενώ στον δεύτερο παίρνουμε με δεδομένα και εμφανίζουμε. Η γενικότητα του δεύτερου πάει περίπατο.

Σελίδα 41 – περιθώριο:  Για την εντολή Για "πρέπει τ1 <= τ2, αν β >= 0 και τ1 >= τ2, αν β <= 0..". Το πρέπει εδώ δεν μου αρέσει. Δεν είναι ότι πρέπει γενικά αλλά μόνο αν χρειάζεται να γίνουν επαναλήψεις.

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

αλλά πρέπει να κάνεις τα εξής:

Κάλεσε απόλυτη(χ, απ)
Γράψε απ


ως εκ τούτου δεν μπορείς να τους συνδυάσεις εύκολα δηλαδή αυτό πως θα γραφτεί:
Γράψε μεγ(α, μεγ(β, γ)).

Καταλαβαίνω την ανάγκη να περιγραφεί (με βάση το παλιό βιβλίο) μόνο ένας τρόπος επικοινωνίας των υποπρογραμμάτων αλλά προσωπικά θεωρώ ότι επιλέχθηκε ο λάθος!!!

Αντί να έχουμε αυτό:

Αλγόριθμος παραγοντικό
Δεδομένα //ν//
Αν ν = 0 τότε
    απ <- 1
αλλιώς
    απ <- ν * παραγοντικό(ν-1)
Τέλος_αν
Αποτελέσματα //απ//
Τέλος παραγοντικό

έχουμε αυτό:

Αλγόριθμος Factorial
Δεδομένα // n //
Aν n > 0 τότε 
  Kάλεσε Factorial(n - 1, Fact)
  Fact ← Fact * n
αλλιώς
  Fact ← 1
Τέλος_αν
Αποτελέσματα // Fact //
Τέλος Factorial

Φανταστείτε την εφαρμογή του τμηματικού προγραμματισμού στην άσκηση για τον υπολογισμού της σειράς του ημιτόνου


Σελίδα 44: Νομιμοποιούνται οι δυναμικοί πίνακες και δεν εννοώ αυτούς:
Διάβασε Ν
Για ι από 1 μέχρι Ν
    Διάβασε Α[ι]
Τέλος_επανάληψης
αλλά αυτούς
i ← 0
Διάβασε Κ
Όσο Κ ≥ 0 επανάλαβε
  i ← i + 1
  A[i] ← K
  Διάβασε Κ
Τέλος_επανάληψης
n ← i


νομίζω εδώ θα έχουμε πρόβλημα, πλέον τα πάντα θα είναι σωστά.


Επίσης θεωρώ προβληματική την επικοινωνία των αλγορίθμων που χρησιμοποιούν πίνακες λόγω της εντολής Δεδομένα //Π, Ν//, όπου Ν το μέγεθος. Για να δείξω τι εννοώ, ας υποθέσουμε ότι θέλω να ταξινομήσω έναν πίνακα και μετά να εκτελέσω δυαδική αναζήτηση. Ενώ θα μπορούσα να γράψω αυτό:
Γράψε Αναζήτηση(Ταξινόμηση(Π), τιμή)
, αναγκάζομαι και γράφω αυτό:
Κάλεσε Ταξινόμηση(Π, N)
απ <- Αναζήτηση(Π, Ν, τιμή)
Γράψε απ


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

Peandbal

Με μια γρήγορη ανάγνωση και ματιά, φαίνεται ότι το βιβλίο είναι αρκετά καλό, η ύλη του όμως για μονόωρο μάθημα είναι αρκετή, δύσκολο να εμβαθύνεις και ακόμη πιο δύσκολο να κατανοήσει ικανοποιητικά ο μαθητής. Στόχος μας πρέπει να είναι οι μαθητές να αγαπήσουν το μάθημα και όχι να τους είναι δυσνόητο μέχρι τελείως ακαταλαβίστικο.

Ευχαριστώ.

itt

ΠαράθεσηΣελίδα 25 – περιθώριο: Έχει βρεθεί πιο γρήγορος και λέγεται timsort. Επίσης οι συγκρίσεις αυτές αφορούν αλγορίθμους ταξινόμησης οι οποίοι βασίζονται στη σύγκριση αυτόνομων στοιχείων. Σε άλλες εφαρμογές (όταν π.χ. ταξινομούνται αλφαριθμητικά τότε άλλοι αλγόριθμοι όπως ο radix sort είναι πιο γρήγοροι).

Θεωρητικά δεν είναι πιο γρήγορος, απλά λόγο του τρόπου λειτουργίας του, σε πραγματικά δεδομένα συνήθως είναι πιο γρήγορος. Οπότε δεν νομίζω ότι είναι ιδιαίτερα άστοχο.

ΠαράθεσηΣελίδα 31: Δεν καταλαβαίνω πάλι αυτή την περιγραφή του αρχείου. Ούτε όλα τα αρχεία είναι έτσι ούτε αυτό είναι χρήσιμο να το μάθουν οι μαθητές.

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

Το convention που υιοθετούν για τα υποπρογράμματα είναι όντως πολύ άσχημο.

stpdt

#3
Παράθεση από: sstergou στις 25 Σεπ 2014, 04:50:18 ΜΜ

Σελίδα 23: Έξοδος του αλγορίθμου είναι μία ή περισσότερες "μεταβλητές ή/και σταθερές...". Και πάλι μιλάμε για τιμές.


Έξοδος αλγορίθμου μπορεί να είναι μεταβλητές ή και σταθερές, αυτές όμως οι τιμές μπορεί με την σειρά τους να είναι ένας νέος αλγόριθμος ο οποίος αντικαθιστά τον αλγόριθμο που τρέχει εκείνη την στιγμή. Υπό αυτή την έννοια είναι σωστότερος ο ορισμός ότι "Έξοδος αλγορίθμου είναι δεδομένα ή αλγόριθμος"¨.
Είναι η ανακλαστική ιδιότητα που έχει από την φύση του κάθε υπολογιστής λόγω της γλώσσας μηχανής, ιδιότητα που διατηρούν και κάποιες γλώσσες προγραμματισμού. Σε αυτή την ιδιότητα (δηλαδή στην αλλαγή του αλγορίθμου στο runtime) βασίζονται κάποιοι ιοί για να ξεφεύγουν από τα αντιβιοτικά. Σε αυτή την ιδιότητα βασίζεται και το genetic programming και τα Genetic algorithms.

Συνάδελφοι, καιρός να βάλουμε και τους γιατρούς στο παιχνίδι, γιατί όπου να ναι την χάνουν την δουλειά τους.

evry

#4
Στάθη πολύ εύστοχες οι παρατηρήσεις σου.
Θα έλεγα ότι και μένα το μάτι μου έπεσε σε αυτό με το υπολογιστικό πρόβλημα. Έχω δει αυτόν τον ορισμό και άλλου, αλλά νομίζω ότι δεν είναι σωστό. Μάλλον έπρεπε να βάλουν υπολογίσιμο.
Μάλιστα έχει ενδιαφέρον ότι σε δυο διαφορετικά βιβλία για το ίδιο αντικείμενο (ΑΕΠΠ, ΕΑΕΕ) η λέξη υπολογιστικό πρόβλημα έχει διαφορετικό ορισμό!!!

Κάτι άλλο που μου έκανε εντύπωση είναι ότι το κομμάτι της θεωρητικής επιστήμης έχει ασκήσεις ενώ το κομμάτι της εφαρμοσμένης έχει μόνο θεωρία!!!
χωρίς να αποτελεί αιχμή προς κάποιον διότι με τέτοιες ασφυκτικές προθεσμίες λογικό να υπάρχουν πολλά λάθη.

What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

batos

Σελ.32, περιθώριο, Μεταβλητές, .....Οι σταθερές και οι μεταβλητές καλούνται και τελεσταίοι.
+όταν συμμετέχουν σε μια έκφραση;

sisyfos

Σελίδα 37 - παράδειγμα 2.12 - Σύνθετη εντολή επιλογής.

  • Δεν μπορώ να κατανοήσω τη λογική για την επιλογή των ονομάτων των μεταβλητών. Γιατί "τ"; Δεν μπορούσαν να επιλέξουν "ρ" ή "ρύποι" ή "Όζον" ή ....
  • Μεταβλητή "πο". Πουθενά στην εκφώνηση δεν αναφέρεται (ούτε νομίζω ότι υπονοείται) ότι θέλουμε να εμφανίζεται πόσο πάνω από το όριο των 300 μg/m3 είναι οι ρύποι το όζοντος.
  • Τόσο ο "Αλγόριθμος Όζον1" όσο και ο "Αλγόριθμος Όζον2" μέσα στην Αν ... Τέλος_αν έχουν αλλιώς_αν ΟΧΙ όμως και αλλιώς, όπως σωστά γράφει και στη σελίδα 38 στο περιθώριο αλλά και στο παράδειγμα 2.13 "Αλγόριθμος Αριθμομηχανή".

Σπύρος Δουκάκης



Για το 1 δες το κιτρινισμένο.
Για το 2 μάλλον δεν διάβασες όλη την εκφώνηση.
Για το 3 θα μπορούσε.

Παράθεση από: sisyfos στις 07 Ιαν 2015, 09:57:46 ΜΜ
Σελίδα 37 - παράδειγμα 2.12 - Σύνθετη εντολή επιλογής.

  • Δεν μπορώ να κατανοήσω τη λογική για την επιλογή των ονομάτων των μεταβλητών. Γιατί "τ"; Δεν μπορούσαν να επιλέξουν "ρ" ή "ρύποι" ή "Όζον" ή ....
  • Μεταβλητή "πο". Πουθενά στην εκφώνηση δεν αναφέρεται (ούτε νομίζω ότι υπονοείται) ότι θέλουμε να εμφανίζεται πόσο πάνω από το όριο των 300 μg/m3 είναι οι ρύποι το όζοντος.
  • Τόσο ο "Αλγόριθμος Όζον1" όσο και ο "Αλγόριθμος Όζον2" μέσα στην Αν ... Τέλος_αν έχουν αλλιώς_αν ΟΧΙ όμως και αλλιώς, όπως σωστά γράφει και στη σελίδα 38 στο περιθώριο αλλά και στο παράδειγμα 2.13 "Αλγόριθμος Αριθμομηχανή".

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

Για το 3 φαντάζομαι το σχόλιο του sisyfos έχει να κάνει με το αν είναι υποχρεωτικό το αλλιώς σε μια πολλαπλή Αν.

Το ίδιο ζήτημα εμφανίζεται τακτικά και στην ΑΕΠΠ, αν και θεωρούμε ότι είναι από αυτά που έχουν απαντηθεί από την κοινότητα και έχουν κλείσει! Π.χ.: https://alkisg.mysch.gr/steki/index.php?topic=2702.0

Επομένως το ίδιο θα λέγαμε και τώρα: Δεν είναι υποχρεωτικό το αλλιώς σε μια πολλαπλή Αν.

petrosp13

Γιατί να υπάρχει τέτοιο ζήτημα εξαρχής
Όπως η δομή απλής επιλογής δεν απαιτεί εντολή "αλλιώς", γιατί να το κάνει η δομή πολλαπλής επιλογής στις περιπτώσεις που δεν υπάρχουν ενέργειες "σε κάθε άλλη περίπτωση";
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

ολγα

Κάτι μάλλον ασήμαντο:
Στο παράδειγμα 2.12 καλό θα ήταν να διορθωθεί η πρώτη στήλη του πίνακα έτσι:
300>=Τιμή>250
500>=Τιμή>300
Τιμή>500
ώστε να συμφωνεί με τις λύσεις.
Αλλιώς θα μπορούσε εσφαλμένα να εννοηθεί ότι για π.χ. Τιμή=550 θα έπρεπε να τυπωθούν και τα τρία μηνύματα.
Παρόλο που η εκφώνηση λέει "το αντίστοιχο μήνυμα" θεωρώ ότι υπάρχει μια ασάφεια.

dpa2006

Παράθεση από: itt στις 28 Σεπ 2014, 01:01:51 ΜΜ
Θεωρητικά δεν είναι πιο γρήγορος, απλά λόγο του τρόπου λειτουργίας του, σε πραγματικά δεδομένα συνήθως είναι πιο γρήγορος. Οπότε δεν νομίζω ότι είναι ιδιαίτερα άστοχο.

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

Το convention που υιοθετούν για τα υποπρογράμματα είναι όντως πολύ άσχημο.
Σωστή η παρατήρηση για τα αρχεία-έχει ατονίσει και σε πανεπιστημιακό επίπεδο το μάθημα Δομές Αρχείων.
Computer science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell.source:http://en.wikipedia.org/wiki/Computer_science

lef

Φτάνοντας στην εντολή Για στο νέο βίβλιο βρήκα το εξής "παράδοξο":

(σελ 41, στο πλάι) Αν τ1 > τ2 και β=0 δεν θα εκτελεστούν ....., ενώ αν τ1<=τ2 και β=0 .... (ατέρμονας βρόχος)

Στην αντίστοιχη εντολή της ΑΕΠΠ (σελ 44, στην παλιά εκτύπωση του βιβλίου) λέει: "Έτσι το βήμα δεν μπορεί να είναι μηδέν γιατί τότε ο βρόχος εκτελείται επ'άπειρον"

Είναι το λιγότερο ανακόλουθο να μπαίνεις τη μία ώρα σε κατεύθυνση Γ και να λές το ένα, και την άλλη σε γενικής Β και να ξεχωρίζεις περιπτώσεις. Φυσικά η ανάλυση της Για σε Οσο καθιστά τη νέα διατύπωση περισσότερο "σωστή" και εξηγήσιμη (όχι ότι υπάρχει χρόνος να μετατρέψεις την ΟΣΟ σε ΓΙΑ στο ΕσΑτΕΗΥ για να το εξηγήσεις στους μαθητές) αλλά επειδή το τί θα γίνει με βήμα 0 μπορεί να είναι ρυθμιστεί σε επίπεδο compiler, για μένα δεν υπήρχε λόγος να μπερδέψουμε τα παιδιά με δυσκολονόητες περιπτώσεις. Θα μπορούσαμε να μείνουμε στο "το βήμα 0 προκαλεί ατέρμων βρόχο".


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

#13
Αυτό με τον ατέρμονα βρόχο όταν β=0, έχει προκαλέσει πρόβλημα στην ΑΕΠΠ. Εκεί λοιπόν η κοινότητα έχει κατασταλάξει στην παραδοχή ότι στην ψευδογλώσσα έχουμε άπειρες επαναλήψεις ενώ στη ΓΛΩΣΣΑ θεωρούμε ότι ισχύει το:
"Αν τ1 > τ2 και β=0 δεν θα εκτελεστούν ....., ενώ αν τ1<=τ2 και β=0 .... (ατέρμονας βρόχος)"

Επειδή μάλλον δεν το έχεις υπόψη σου σκάλισε λίγο τα σχετικά θέματα του Στεκιού, όπου υπάρχουν πάρα πολλές (μάλλον ατέρμονες) συζητήσεις για αυτό το ζήτημα.

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

gpapargi

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

lef

Παράθεση από: gpapargi στις 19 Ιαν 2015, 03:19:00 ΜΜ
Το σωστό για μένα είναι να περιγραφεί η μετατροπή της Για σε Όσο σε κάθε τιμή του βήματος (θετική, αρνητική και μηδέν). Από αυτό θα προκύψει το τι γίνεται σε κάθε περίπτωση. Το να λες αν τ1>τ2 και β=0 θα έχω 0 επαναλήψεις ενώ αν τ1<τ2 και β=0 θα γίνουν άπειρες, δείχνει να είναι χωρίς αιτιολόγηση. Δεν εξηγείς το μηχανισμό. Λες απλά το αποτέλεσμα.
Αυτός ήταν και ο μόνιμος καβγάς στην ΑΕΠΠ.

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

Είναι γνωστό ότι  το πως θα συμπεριφερθεί ο compiler στην περίπτωση βήματος 0 είναι καθαρά θέμα υλοποίησης του δημιουργού. Επίσης στο βιβλίο καθηγητή, σελ 71 λέει:

.... ισχύουν οι επόμενοι περιορισμοί:

1) από <= μέχρι      με βήμα >0
2)  από >= μέχρι      με βήμα <0
3) βήμα <> 0

ενώ στο βιβλίο (όπως αναφέρω πιο πάνω) λέει καθαρά ότι "το βήμα δεν μπορεί να είναι μηδέν γιατί τότε ο βρόχος εκτελείται επ'άπειρον".

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

Δεν θέλω να προκαλέσω νέο κύκλο ατέρμονης συζήτησης, θα επιμείνω μόνο στο γεγονός ότι πρακτικά  (σε ένα compiler)  θα μπορούσε  να υλοποιηθεί με οποιοδήποτε από τους περιγραφόμενους τρόπους. Απλά η παραδοχή ότι το μηδενικό βήμα προκαλεί σε κάθε περίπτωση ατερμων βρόχο θα ήταν και η απλούστερη για τους μαθητές.

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

Αυτό ακριβώς.

Nikosn

Συνάδελφοι σχεικά με τους πίνακες στην παράγραφο 2.2.8 τους διδάσκετε ως δυναμικούς? (εισαγωγή στοιχείων αγνώστου πλήθους???), χρήση όσο σε πίνακες?
Η γνώση κατακτάται μέσα από τα λάθη μας