@ Evry: Δεν καταλαβαίνω τι εννοείς "να τον τεκμηριώσω επιστημονικά τον αλγόριθμο".
Το κομμάτι που κάνει αναζήτηση με ΓΙΑ ξέρουμε ότι μας κάνει τη δουλειά.
Επομένως αν έχουμε έναν πίνακα με 1000 στοιχεία και κάνουμε αναζήτηση με ΓΙΑ, μπορεί να υπάρχει το στοιχείο π.χ. στις 100 πρώτες θέσεις και να κάνουμε 900 περιττές επαναλήψεις.
Αν ένας πελάτης αγοράσει 100 προϊόντα στο Θέμα 4, και εμείς δημιουργήσουμε έναν πίνακα (ΑΝ ήταν σε ΓΛΩΣΣΑ) με 1000 στοιχεία, θα δεσμεύαμε 900 θέσεις περισσότερες στη μνήμη.
Γιατί το 2ο μας πειράζει και το 1ο δεν μας πειράζει;
Αυτό ρωτάω εγώ. Άσχετα με τάξεις μεγέθους απόδοσης και πολυπλοκότητες.
Διδάσκουμε στα παιδιά τον Δομημένο Προγραμματισμό και στο κεφάλαιο 10, που στην ουσία εκεί θέλουμε να φτάσουμε, όπως το καταλαβαίνω εγώ...τον ΤΜΗΜΑΤΙΚΟ Προγραμματισμό.
Με πλεονεκτήματα της πιο εύκολης ανάπτυξης του αλγορίθμου και το Προγράμματος, πιο εύκολο στην κατανόηση και στην διόρθωση των λαθών.
Το καταλαβαίνει αυτό κάποιος μαθητής, και λέει:
"Ωραία, θα τα βάλω τα στοχεία με την 1η επανάληψη σε έναν πίνακα, και μετά θα κάνω κάθε ερώτημα ξεχωριστά για να το ελέγχω και να μην τα φορτώσω όλα σε μία δομή".
Και αυτό που είναι σωστό σαν σκέψη σύμφωνα με αυτά που του διδάσκουμε, το ακυρώνουμε για να του πούμε "όχι, δεν πρέπει να παίρνεις πίνακες", γιατί θα σου πιάσει περισσότερες θέσεις μνήμης, και τον τρομάζουμε και με το ότι μπορεί να φτάσει και σε αδυναμία εκτέλεσης το πρόγραμμά... (αυτό με τους σχολικούς αγώνες και αυτό με την αγορά προϊόντων;)
Για μένα, όπως λέει και ο @Pgrontas, το καλύτερο θα ήταν να ζητούσε η εκφώνηση να σταματάει ο αλγόριθμος αμέσως μόλις βρει το στοιχείο που ψάχνει.
Ή να λέει στην εκφώνηση "μην χρησιμοποιήσετε πίνακα".
Το βασικό για μένα είναι να μην γίνονται περιττές επαναλήψεις, ή γενικά να μπορεί να χειριστεί ο μαθητής ό,τι του πει η εκφώνηση.