Πέρυσι φοίτησα και εγώ στην Γ λυκείου και ένας κώδικας όπως ο παρακάτω δεν ήταν αποδεκτός:
διάβασε κλειδι
Για Ι από 1 μέχρι Ν
Αν πίνακας[Ι]=κλειδί τότε
θέση<-Ι
Ι<-Ν+1 !βίαιη έξοδος από το βρόχο.
τέλος_αν
τέλος_επανάληψης
.....
Σε εφαρμογή όμως ο κώδικας "τρέχει" μια χαρά οπότε η αναζήτηση μπορεί να γίνει και με χρήση της για όπως γίνεται και στην όσο.
Γιατί όμως θεωρείται λάθος?Αν κάποιος μαθητής το έγραφε αυτό θα ήταν λάθος/
διάβασε κλειδι
Για Ι από 1 μέχρι Ν
Αν πίνακας[Ι]=κλειδί τότε
θέση<-Ι
πήγαινε στο 1
τέλος_αν
τέλος_επανάληψης
1.
Σαν διορθωτής όμως δεν ξέρω αν θα έκοβα. Άλλωστε συμφωνώ και με αυτό που αναφέρεις.
Το μάθημα Ανάπτυξη Εφαρμογών δεν έχει σαν στόχο την εκμάθηση κάποιου συγκεκριμένου προγραμματιστικού περιβάλλοντος ούτε την καλλιέργεια προγραμματιστικών δεξιοτήτων από τη μεριά των μαθητών. Δεν αποσκοπεί στη λεπτομερειακή εξέταση της δομής, του ρεπερτορίου και των συντακτικων κανόνων κάποιας γλώσσας
Προσωπικά δεν θα έκοβα για καμία από τις παραπάνω λύσεις (μπορεί να έβαζα και παραπάνω μάλιστα!!) και εξηγώ το σκεπτικό μου
Για έναν μαθητή ο οποίος θα δώσει μια τις παραπάνω λύσεις δύο πράγματα είναι βέβαια:
1) Έχει προγραμματίσει σε κάποια γλώσσα προγραμματισμού εκτός από ΓΛΩΣΣΑ, και καταλαβαίνει τι κάνει
2) Δεν είχε σωστή καθοδήγηση, είτε από το σχολείο είτε από το φροντιστήριο, δηλαδή κανείς δεν του είπε ότι "οκ, αυτά που γράφεις είναι σωστά γενικά στον προγραμματισμό αλλά στο μάθημα αυτό μην τολμήσεις και τα γράψεις στις εξετάσεις.
Μόνη εξαίρεση θα ήταν αν με τον τρόπο αυτό "ξεγλιστρούσε" από κάποιο πολύ δύσκολο σημείο της άσκησης, οπότε τότε δεν θα ήταν δίκαιο για τους άλλους μαθητές.Αυτό ακριβώς πιστεύω ότι κάνει σε περίπτωση που η εκφώνηση αναφέρει να τερματίζει αν βρεθεί το στοιχείο, ξεγλιστράει, οπότε προσωπικά θα του έκοβα. Αν όμως η εκφώνηση δεν διευκρίνιζε να τερματίζει η αναζήτηση αν βρεθεί το στοιχείο, τότε δεν ξέρω τι θα έκανα, μάλλον δεν θα του έκοβα.
διάβασε κλειδι
Για Ι από 1 μέχρι Ν
Αν πίνακας[Ι]=κλειδί τότε
θέση<-Ι
Ι<-Ν+1 !βίαιη έξοδος από το βρόχο.
τέλος_αν
τέλος_επανάληψης
-----------------------
διάβασε κλειδι
Για Ι από 1 μέχρι Ν
Αν πίνακας[Ι]=κλειδί τότε
θέση<-Ι
πήγαινε στο 1
τέλος_αν
τέλος_επανάληψης
1.
j<--1
pos<--0
οσο j<=n και Pos=0 επανέλαβε
Αν Α[j]=key τότε
pos<--j
Τέλος_Αν
j<--j+1
Τέλος επανάληψης
Αν pos=0 τότε Εμφάνισε 'Δε βρέθηκε το key'
αλλιώς Εμφάνισε 'Βρέθηκε το key στη θέση',Pos
Καλημέρα σας.
Προσωπικά αν διόρθωνα στις πανελλήνιες δεν θα έκοβα μονάδες για την αναζήτηση με ΓΙΑ διότι δεν μας ενδιαφέρει,σύμφωνα με το υπουργείο,η αποδοτικότητα του αλγορίθμου.Όμως στην τάξη,αν κάποιος μαθητής την κάνει με για,του κόβω μονάδες.Διότι αφού έχει διδαχθεί η αναζήτηση με συγκεκριμένο τρόπο και ο μαθητής την κάνει με άλλον σημαίνει είτε ότι δεν έχει διαβάσει και απλά του κόβει,είτε ότι κάνει εξυπνάδες.Και οι δύο περιπτώσεις έχουν μεγάλη πιθανότητα να του στοιχίσουν στις πανελλήνιες και γι αυτό του κόβω κανα δυό μονάδες.
Μου φαίνεται μια χαρά,εξάλλου ο συγκεκριμένος αλγόριθμος είναι πιο γενικός μια και αν δεν διευκρινίζεται ότι το Key είναι σε μια μόνο θέση(όπως συνήθως), ο άλλος είναι λάθος.Εγώ έχω βάλει τα παιδιά να γράψουν δίπλα στο βιβλίο και αυτή την περίπτωση και τους έχω πει να την εφαρμόζουν όταν δε λέει ξεκάθαρα ότι το Key είναι σε μια μόνο θέση.
εγώ θέλω να ρωτήσω κάτι άλλο.Στον αλγόριθμο σειριακής όπως τον έχει το βιβλίο με ρώτησε μια μαθήτρια τι χρειάζεται το flag τη στιγμή που υπάρχει το Pos.Πρότεινε η μικρή την εξής λύση
j<--1
pos<--0
οσο j<=n και Pos=0 επανέλαβε
Αν Α[j]=key τότε
pos<--j
Τέλος_Αν
j<--j+1
Τέλος επανάληψης
Αν pos=0 τότε Εμφάνισε 'Δε βρέθηκε το key'
αλλιώς Εμφάνισε 'Βρέθηκε το key στη θέση',Pos
τι λετε;
Επίσης θα διαφωνήσω με το γεγονός ότι τα θέματα αυτά εμπίπτουν στην ίδια κατηγορία. Σε αυτές τις περιπτώσεις θα πρέπει να εξετάζουμε 2 πράγματα
1) Ο αλγόριθμος που δίνεται είναι χειρότερος από αυτόν που ζητάμε? για παράδειγμα δε μπορεί να σου ζητάνε μέγιστο και να ταξινομείς όλον τον πίνακα, ούτε να σου ζητάνε συγχώνευση και να ενώνεις τους 2 πίνακες σε έναν και να τους ταξινομείς (φυσικά θα σου εξηγούν αναλυτικά τον αλγόριθμο)
2) Το "λάθος" του μαθητή δείχνει κάποια παρανόησή του σε κάποια βασική έννοια? Αυτό θα μπορούσαμε να το πούμε για έναν μαθητή που χρησιμοποιεί περιττές συνθήκες σε μια Αλλιώς_Αν
Διάβασε α
max <- α
Για i από 1 μέχρι 20
Διάβασε α
Αν α>=max τότε max <- α
Τέλος_επανάληψης
Εδώ ο μαθητής διαβάζει έναν παραπάνω, οπότε κάτι πρέπει να του κόψεις
Το να σου ζητάνε μέγιστο και να ταξινομείς όλον τον πίνακα δεν πρόκειται απλώς για περιττούς ελέγχους αλλά για κάτι πολύ περισσότερο (οπότε κατά τη γνώμη μου δεν πρέπει να το συζητάμε καν!).
Οπότε σε καμία περίπτωση δεν υποστηρίζω τυποποιημένη και μπακαλίστικη βαθμολόγηση. Αυτό μάλλον ισχύει για την άλλη άποψη, την τελείως ισοπεδωτική που λέει ότι δεν κόβει ποτέ τίποτα από όλα αυτά...Μάλλον είναι και η δικιά μου άποψη :). Μπορεί να είναι τυποποιημένη, αλλά δεν καταλαβαίνω γιατί μπακαλίστικη. Αντίθετα
Εγώ για όλα αυτά πιθανώς να έκοβα ελαφρώς κάτι βλέποντας όμως και τη συνολικότερη εικόνα του γραπτού...αυτό το θεωρώ κάπως μπακαλίστικη. :angel:
Στις εξετάσεις μας ενδιαφέρει η αποτελεσματικότητα του αλγόριθμου και όχι η πολυπλοκότητα του αλγόριθμου.
Θέση<--0
Αρχή_ Επανάληψης
Θέση<--Θέση+1
Μέχρις_ Ότου A[Θέση]= key ή Θέση=Ν
Αν Α[Θέση]= key τότε
Εμφάνισε 'Βρέθηκε το', key, ' στη θέση', Θέση
Αλλιώς
Εμφάνισε 'Δε βρέθηκε το', key
Τέλος_ Αν
Το ίδιο αποτέλεσμα μπορεί να έλθει με πάρα πολλούς διαφορετικούς τρόπους.
Στις εξετάσεις μας ενδιαφέρει η αποτελεσματικότητα του αλγόριθμου και όχι η πολυπλοκότητα του αλγόριθμου.
Άσχετο αλλά αυτά είναι άμεσα σχετιζόμενα. Ένας αλγόριθμος με εκθετική πολυπλοκότητα μπορεί να μην είναι αποτελεσματικός.Καταρχήν πιστεύω να μην χρησιμοποιούμε την λέξη αποτελεσματικότητα, γιατί το μυαλό μας πάει αλλού και θα έχουμε πρόβλημα. Δεύτερον θα συμφωνήσω με το Θανάση, που λογικά ως αποτελεσματικότητα εννοεί να λύνει απλά το πρόβλημα. Φίλε Στάθη σωστό είναι αυτό που λες, αλλά στην ύλη του μάθημά μας δεν υπάρχει η έννοια πολυπλοκότητα, οπότε κάθε απάντηση που λύνει το πρόβλημα ασχέτως και αν η λύση που δίνει κάνει πολύ περισσότερες επαναλήψεις, ασχέτως αν δεσμεύει πολύ περισσότερο μνήμη πρέπει να θεωρηθεί σωστή.
Φίλε Wizard ο αλγόριθμος του Θανάση είναι σωστός. Δεν έχει το πρόβλημα που λες, αφου δεν υπάρχει περίπτωση η Θέση να γίνει Ν+1.
Καταρχήν πιστεύω να μην χρησιμοποιούμε την λέξη αποτελεσματικότητα, γιατί το μυαλό μας πάει αλλού και θα έχουμε πρόβλημα. Δεύτερον θα συμφωνήσω με το Θανάση, που λογικά ως αποτελεσματικότητα εννοεί να λύνει απλά το πρόβλημα. Φίλε Στάθη σωστό είναι αυτό που λες, αλλά στην ύλη του μάθημά μας δεν υπάρχει η έννοια πολυπλοκότητα, οπότε κάθε απάντηση που λύνει το πρόβλημα ασχέτως και αν η λύση που δίνει κάνει πολύ περισσότερες επαναλήψεις, ασχέτως αν δεσμεύει πολύ περισσότερο μνήμη πρέπει να θεωρηθεί σωστή.
ΑντίθεταΠαράθεσηΕγώ για όλα αυτά πιθανώς να έκοβα ελαφρώς κάτι βλέποντας όμως και τη συνολικότερη εικόνα του γραπτού...αυτό το θεωρώ κάπως μπακαλίστικη. :angel:
Το αποφεύγουμε !!! :) :) :)
Με την ευκαιρία: Έχει ποτέ συζητηθεί το ακόμα πιο σοβαρό πρόβλημα "Αν και η λύση είναι σωστή, ωστόσο δεν το καταλαβαίνει ο βαθμολογητής"; :o