Ο παρακάτω αλγορίθμος.
Αλγόριθμος Δοκιμή
Διάβασε α
α<--α+β
Εμφάνισε α
Τέλος Δοκιμή
τι πρόβλημα παρουσιάζει από άποψη κριτηρίων;
Το β δεν είναι ορισμένο στον κώδικα του, άρα ο υπολογιστής δεν ξέρει να εκτελέσει την α<--α+β
Είναι πρόβλημα αποτελεσματικότητας ή καθοριστικότητας; Γιατί;
Σαφήνειας Ορισμού (καθοριστικότητας όπως το έχει το βιβλίο).
Η αποτελεσματικότητα ζητάει να έχουμε "ψιλοκόψει" αρκετά την λύση σε βήματα που μαγειρεύονται και χωνεύονται εύκολα. Αλλιώς πχ η φράση "Βάλε τα στοιχεία του πίνακα Α στη σειρά, από το μικρότερο ως το μεγαλύτερο" θα θεωρείτο αλγόριθμος ταξινόμησης. Το ένα και μοναδικό βήμα όμως που περιγράφει δεν είναι απλό. Πετάει το μπαλάκι στον αναγνώστη (ή τον υπολογιστή) για να κάνει όλη τη δουλειά μόνος του, χωρίς να τον καθοδηγήσει ουσιαστικά. Οπως το καταλαβαίνω, ένας αναποτελεσματικός αλγόριθμος έχει δυσανάλογες απαιτήσεις από αυτόν που προσπαθεί να τον εκτελέσει.
Για να γυρίσουμε στο παράδειγμά σου, τα βήματα από μόνα τους δεν είναι ιδιαίτερα απαιτητικά (ανάγνωση, πρόσθεση, εκτύπωση). Αυτό που μας εμποδίζει είναι το άγνωστο της τιμής του
β. Όση εξυπνάδα και αν έχει ο αναγνώστης, και όση προσπάθεια και αν επενδύσει, δεν πρόκειται να βρει την τιμή του
β. Για την "καθοριστικότητα" το βιβλίο μιλάει για "καθορισμό χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσης", και νομίζω ότι εκεί είναι το προβλημά μας. Το β το θεωρούμε initialized σε 0 ακολουθώντας τις συμβάσεις κάποιων γλωσσών Η/Υ; Θεωρούμε ότι θα έχει όποια τιμή είχε ξεμείνει στη θέση μνήμης που ανατέθηκε στη μεταβλητή ακολουθώντας άλλες συμβάσεις; Δηλώνουμε αμηχανία;