Αποστολέας Θέμα: Δωστε μου τα φώτα σας  (Αναγνώστηκε 2131 φορές)

Νίκος

  • Επισκέπτης
Δωστε μου τα φώτα σας
« στις: 05 Νοέ 2004, 12:57:54 μμ »
Γεια σας . Είμαι μαθητής και προσπαθώ να καταλάβω την διαφορά που υπάρχει μεταξύ των κριτηρίων Αποτελεσματικότα και Καθοριστικότητα που υπάρχουν στα κριτήρια που πρέπει να πληρεί ένας αλγόριθμος. Ο καθηγητής μου μου λέει ότι είναι το ίδιο πράγμα. Ισχύει;
Επίσης η εντολή Α_Μ(8,75) δίνει σαν αποτέλεσμα το 8 ή το 9;

Ευχαριστώ

Δ.Μ.

  • Επισκέπτης
Re: Δωστε μου τα φώτα σας
« Απάντηση #1 στις: 05 Νοέ 2004, 01:44:55 μμ »
Φίλε μαθητή, κουράγιο!
Οι περισσότεροι μαθητές έχουν πολύ περισσότερες απορίες. Δυστυχώς θεωρώ κυρίως υπεύθυνο το (από όλους γνωστό) σχολικό βιβλίο. Αυτό μας έχει όλους μπλέξει σε ένα κυκεώνα ανούσιων συζητήσεων.
Ως προς τις απορίες σου:
1) Καθοριστικότητα σημαίνει ότι πρέπει οι εντολές να είναι ξεκάθαρα διατυπωμένες ώστε ο οποιοσδήποτε αναγνώστης του αλγορίθμου (είτε μαθητής, είτε καθηγητής- βαθμολογητής) να κατανοεί ακριβώς τα ίδια με όλους τους υπολοίπους. Για να το πετύχουμε αυτό χρησιμοποιούμε τις δεσμευμένες λέξεις και αποφεύγουμε την "ελεύθερη γλώσσα".
2) ΑΑποτελεσματικότητα ποτελεσματικότητα σημαίνει ότι πρέπει να γράφουμε στον υπολογιστή τις εντολές μας με τέτοιο τρόπο ώστε να μπορεί αυτός να τις εκτελεί (να είναι εφικτές, εκτελέσιμες). Παραδείγματα για να καταλάβεις τι θέματα αφορά η αποτελεσματικότητα:
Α) Δεν μπορούμε να "διατάξουμε" τον υπολογιστή "Λύσε αυτήν την δευτεροβάθμια" γιατί είναι κάτι το οποίο ο υπολογιστής δεν μπορεί να κάνει .
Β) Δε μπορούμε να εμφανίσουμε μία απροσδιόριστη μεταβλητή
Γ) Δε μπορούμε να εκτελέσουμε μία εντολή εκχώρησης αν δεξιά βρίσκεται απροσδιόριστη μεταβλητή.

Η συνάρτηση Α_Μ κάνει αποκοπή και όχι στρογγυλοποίηση. Άρα Α_Μ(8.888)=8 Θα είναι πάντως πολύ "χοντρό" να το ζητήσουν στις εξετάσεις!

Δ.Μ.

gpapargi

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2448
  • I 'm not young enough to know everything
Re: Δωστε μου τα φώτα σας
« Απάντηση #2 στις: 07 Νοέ 2004, 12:54:02 πμ »
Πολύ καλό ερώτημα Νίκο. Να μια καλή ευκαιρία να ξεκαθαρίσουμε τις 2 έννοιες.
Δεν είναι το ίδιο η καθοριστικότητα και η αποτελεσματικότητα. Θα πω τι είναι το καθένα και σε τι διαφέρουν.

Καθοριστικότητα είναι το να είναι τα πάντα στον αλγόριθμο καθορισμένα και να ξέρει κάθε στιγμή αυτός που εκτελεί τον αλγόριθμο τι πρέπει να κάνει. Δηλαδή να μην έχει απορίες της μορφής «τι πρέπει να κάνω τώρα;» Υπάρχουν 2 περιπτώσεις παραβίασης της καθοριστικότητας:

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

Περίπτωση 2: Τα βήματα που περιέχονται να μην είναι σαφώς καθορισμένα. Παράδειγμα είναι σε μια μαγειρική συνταγή να περιέχεται η εντολή «προσθέστε λίγο αλάτι».
Τι πάει να πει λίγο; Το λίγο είναι σχετικό. Ένας υπολογιστής δεν καταλαβαίνει τι σημαίνει λίγο. Δηλαδή έχουμε ασάφεια. Τέτοιου είδους παραβιάση οδηγεί σε μη εκτελέσιμο αλγόριθμο. Στη γενική περίπτωση αυτός που εκτελεί τον αλγόριθμο δε θα ξέρει τι πρέπει να κάνει εκείνη τη στιγμή. Συγκεκριμένα στον υπολογιστή, όταν έρθει η ώρα ο αλγόριθμος να γίνει πρόγραμμα σε κάποια γλώσσα δε θα υπάρχει κάποια αντίστοιχη εντολή γλώσσας που να μπορεί να γίνει κατανοητή από τον υπολογιστή. Αυτή η περίπτωση λύνεται αν χρησιμοποιούνται οι εντολές που περιέχει το βιβλίο. Οι εντολές αυτές μόνο τυχαίες δεν είναι. Είναι αυτές που υποστηρίζονται από τις πραγματικές γλώσσες προγραμματισμού και έτσι η μετάβαση από τον αλγόριθμο στην πραγματική γλώσσα είναι ρουτίνα χωρίς παραπάνω σκέψη.

Αποτελεσματικότητα είναι το να είναι η κάθε εντολή αρκετά απλή έτσι ώστε να μπορεί να εκτελεστεί από τον υπολογιστή. Δηλαδή θα πρέπει να υπάρχει εντολή αντίστοιχη στη γλώσσα προγραμματισμού έτσι ώστε να μπορεί ο αλγόριθμος να μετατραπεί σε εκτελέσιμο πρόγραμμα.
Παράδειγμα παραβίασης αυτού του κριτηρίου είναι η εντολή «Βρες το μεγαλύτερο από αυτούς τους 100 αριθμούς». Η γλώσσες προγραμματισμού (του επιπέδου που μιλάμε) δεν έχουν τέτοια εντολή. Χρειάζεται σύνολο εντολών για να βρούμε το μεγαλύτερο από 100 αριθμούς.
Τέτοιου είδους παραβιάσεις οδηγούν σε μη εκτελέσιμο αλγόριθμο.

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

Η συνάρτηση Α_Μ είναι η συνάρτηση «ακέραιο μέρος» που ξέρουμε από τα μαθηματικά. Ο αριθμός 8.75 έχει ακέραιο μέρος 8 και δεκαδικό μέρος 0.75. Η Α_Μ επιστρέφει το ακέραιο μέρος του και άρα Α_Μ(8.75)=8

Θα χαρούμε πολύ να δούμε κι άλλες απορίες στο στέκι μας.