ΘΕΜΑ 4 β.

Ξεκίνησε από dozb, 30 Μαΐου 2006, 03:57:29 ΜΜ

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

dozb

Μια ερώτηση....

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

Κλείνουν την επανάληψη και με μια ακόμα  προσπέλαση (που γίνεται αν βρέθηκε η πόλη) βρίσκουν τη μέγιστη θερμοκρασία.
Όταν έλυσα τα θέματα αυτό που σκέφτηκα ήταν να βάλω την εύρεση του μεγίστου μέσα στην επανάληψη που ψάχνει το μονοδιάστατο των ονομάτων.
Δηλ

Αν Ον[ι] = πόλη Τότε
     max<- [ι,1]
     Για  j από 2 μέχρι 31
           Αν max<A[i,j] Τότε
                max<- Α[i,j]
           Τέλος_Αν
     Τέλος_Επανάληψης
     βρέθηκε<- Αληθής
Τέλος_Αν

κλπ....
Is this wrong?

apapag

Αυτό που σκέφτηκα εγώ όταν είδα το θέμα, ήταν να κανείς πρώτα μία αναζήτηση στον μονοδιάστατο πίνακα των ονομάτων των πόλεων. Εφόσον βρεις την ζητούμενη ΠΟΛΗ_ΚΕΥ, τότε θέτεις σε μία μεταβλητή ΘΕΣΗ το i, στο οποίο βρήκες αυτή την ζητούμενη πόλη.
Στη συνέχεια, σαρώνεις τον πίνακα των θερμοκρασιών, μόνο για τη ζητούμενη πόλη.
Δηλαδή:

ΔΙΑΒΑΣΕ πόλη_key
i <-- 1
βρέθηκε <-- ψευδής
ΟΣΟ (i<=20) και (βρέθηκε=ψευδής) ΕΠΑΝΑΛΑΒΕ
   ΑΝ ΠΟΛΗ = πόλη_key ΤΟΤΕ
       βρέθηκε <-- αληθής
       θέση <-- i
   ΑΛΛΙΩΣ
       i <-- i + 1
   ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΑΝ  (βρέθηκε = ψευδής) ΤΟΤΕ
   ΕΜΦΑΝΙΣΕ 'Δεν υπάρχει αυτή η πόλη'
ΑΛΛΙΩΣ
   μέγιστη <-- θ[θέση, 1]
   ΓΙΑ j ΑΠΟ 2 ΜΕΧΡΙ 31
      ΑΝ θ[θέση,j] > μέγιστη ΤΟΤΕ
          μέγιστη <-- θ[θέση, j]
      ΤΕΛΟΣ_ΑΝ
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
   ΕΜΦΑΝΙΣΕ 'Η μέγιστη θ είναι:', μέγιστη
ΤΕΛΟΣ_ΑΝ


Αυτό που έκανε η μαθήτρια, και για το οποίο ρωτάω τη γνώμη σας είναι το εξής:
- Έκανε σωστά την πρώτη αναζήτηση, βρήκε τη θέση της πόλης, και στην περίπτωση που δεν τη βρήκε εμφάνισε σωστό μήνυμα
- Αλλά μετά, δεν χρησιμοποίησε τη θέση που βρήκε, και έκανε κάτι τέτοιο:
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
    max <-- θ[i,1]
    ΓΙΑ j ΑΠΟ 2 ΜΕΧΡΙ 31
         AN ΠΟΛΗ [ i ] = πόλη_key TOTE
             AN θ[i, j] > max TOTE
               .......... και ούτω καθεξής....

Νομίζω ότι πιάσατε το νόημα.

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

Αυτά τα ολίγα...

Ευχαριστώ
Νάσια Παπαγιάννη
Ηλ/γος Μηχ/κος και Μηχ/κος Υπολογιστών

dozb

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

Έτσι όπως το βλέπω δεν είναι σωστή ως προς το αποτέλεσμα, γιατί (εκτός κι αν η πόλη είναι στην 20 θέση- πράγμα που είναι τρελλό κάρφωμα ) έχει χάσει το max . Δεν είναι απλά θέμα περιττών επαναλήψεων δηλαδή....       

filippos

Έχει δίκαιο ο dozb.

Αν όμως απλά το είχε ως

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
    AN ΠΟΛΗ [ i ] = πόλη_key TOTE
         max <-- θ[i,1]
         ΓΙΑ j ΑΠΟ 2 ΜΕΧΡΙ 31
             AN θ[i, j] > max TOTE
               .......... και ούτω καθεξής....

νομίζω δε θα υπήρχε λόγος να χάσει μονάδες.

Όμως, και πάλι, πώς χειριζόταν το θέμα μη εύρεσης της πόλης;

SuperTz

Παράθεση από: filippos στις 30 Μαΐου 2006, 07:25:49 ΜΜ
Έχει δίκαιο ο dozb.
...
Όμως, και πάλι, πώς χειριζόταν το θέμα μη εύρεσης της πόλης;
Για τη λύση του/της dozb ο χειρισμός γίνεται με τη σημαία "βρέθηκε".

dozb

Είναι η dozb

Και κάτι άλλο.... Αυτή η συνθήκη που βάζουν στο βιβλίο για τις boolean μεταβλητές δεν είναι περιττή?
Δηλ, αυτό το

ΑΝ  (βρέθηκε = ψευδής)  ΤΟΤΕ

δεν είναι πιο απλό

ΑΝ όχι(βρέθηκε) ΤΟΤΕ

κ.ο.κ

Chrisp88

#6
Να ρωτήσω κατι ...

Αν αντί της Σειριακής αναζήτησης στον πίνακα των πόλεων, εκανα το παρακάτω

Διάβασε όνομα
f <-- Ψευδής
Για i απο 1 μέχρι 20
 Αν ΟΝ=όνομα τότε
   f <-- Αληθής
 Τέλος_αν
Τέλος_επανάληψης
Αν f=Ψευδής τότε
 Εμφάνισε "Η πόλη", όνομα "δεν υπάρχει στον πίνακα"
αλλιώς
 θέση <-- 0
 Για i από 1 μέχρι 20
   Αν ΟΝ=όνομα τότε
     θέση <-- i
   Τέλος_αν
 Τέλος_επανάληψης
Τέλος_αν
max <-- ΘΕΡΜ[θέση,1]
Για i απο 2 μέχρι 31
 Αν ΘΕΡΜ[θέση,i]>max τότε
    max <-- ΘΕΡΜ[θέση,i]
  Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε "Η πόλη με όνομα", όνομα, "έχει μέγιστη θερμοκρασία", max, "βαθμούς"

ε ί ν α ι  λ ά θ ο ς ? ? ?

Υπάρχει περίπτωση να μην μου δώσουν όλες τις μονάδες του ερωτήματος?

EleniK

μια χαρά σωστή είναι η άσκησή σου. Παρεπιμπτόντως σειριακή αναζήτηση κάνεις.Φαντάζομαι ότι όπου ΟΝ έχεις ΟΝ.
Ελένη Κοκκίνου
Καθηγήτρια Πληροφορικής, ΠΕ19

Vangelis

Chriisp88
Πας βέβαια μέσω βρυξελών!!! αλλά σωστή η λύση και αυτό μετράει.


apapag

Παράθεση από: filippos στις 30 Μαΐου 2006, 07:25:49 ΜΜ
Έχει δίκαιο ο dozb.

Αν όμως απλά το είχε ως

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
    AN ΠΟΛΗ [ i ] = πόλη_key TOTE
         max <-- θ[i,1]
         ΓΙΑ j ΑΠΟ 2 ΜΕΧΡΙ 31
             AN θ[i, j] > max TOTE
               .......... και ούτω καθεξής....

νομίζω δε θα υπήρχε λόγος να χάσει μονάδες.

Όμως, και πάλι, πώς χειριζόταν το θέμα μη εύρεσης της πόλης;

dozb και filippos έχετε απόλυτο δίκιο. Δεν είμαι σίγουρη ότι έκανε την αρχικοποίηση του max στο σωστό σημείο.
Παρόλα αυτά, το θέμα μη εύρεσης της πόλης, το χειρίστηκε σωστά, όπως λέει και ο SuperTz, με τη χρήση της 'βρέθηκε'

Ευχαριστώ πολύ παιδιά.
Νάσια Παπαγιάννη
Ηλ/γος Μηχ/κος και Μηχ/κος Υπολογιστών

vkap

Chrisp88

Αν f=ψευδής (δηλ. η πόλη δεν υπάρχει στον πίνακα των πόλεων) τότε δεν παίρνει καμία τιμή η μεταβλητή θέση και η εντολή max <-- ΘΕΡΜ[θέση,1] δεν θα εκχωρήσει καμία τιμή στη max.

Άρα το τμήμα για την εύρεση του max λειτουργεί σωστά μόνο όταν η πόλη που αναζητήθηκε βρέθηκε στον πίνακα των πόλεων.





ΠΤ

Η χρησιμοποίηση εντολής ΓΙΑ στην σειριακή αναζήτηση βαθμολογήθηκε ήδη από επιτροπή -2 μόρια, ανεξάρτητα από το αν εντόπιζε σωστά το αποτέλεσμα. Νομίζω ότι αυτό είναι σωστό. Το βιβλίο αναφέρει στην παράγραφο κάτω από τον αλγόριθμο της σειριακής, ότι στην περίπτωση που το ζητούμενο έμφανίζεται περισσότερες από μία φορά μέσα στον πίνακα, τότε δεν πρέπει να σταματά η αναζήτηση αλλά να συνεχίζεται μέχρι το τέλος του πίνακα. Τότε και μόνο πρέπει να χρησιμοποιηθεί η εντολή ΓΙΑ. Αναφέρει επίσης τις απαιτήσεις από τον αλγόριθμο στην περίπτωση που ο πίνακας είναι ταξινομημένος. Ο μαθητής που έχει ξεχωρίσει τις τρείς περιπτώσεις που παρουσιάζονται στο βιβλίο θα πρέπει να επιβραβεύεται διότι έχει εμβαθύνει στην έννοια τις σειριακής αναζήτησης όπως αυτή παρουσιάζεται από το σχολικό εγχειρίδιο.

apapag

Για να καταλάβω.... Κόβονται 2 μόρια στην περίπτωση που ένας μαθητής υλοποιήσει την αναζήτηση με ΓΙΑ, αντί με τη σωστότερη ΟΣΟ?
Τελικά, ποια είναι τα κριτήρια βαθμολόγησης?
Ποιος παίρνει ΟΛΑ τα μόρια ανεξάρτητα από το ποιος βαθμολογητής τον βαθμολογεί;

Βαθμολογούμε με άριστα τον πιο αποδοτικό αλγόριθμο ή έναν αλγόριθμο, ο οποίος επιτελεί σωστά το ζητούμενο;

Νομίζω ότι αυτό είναι ένα κρίσιμο ερώτημα, και από εκεί και πέρα, ΟΛΑ τα θέματα πρέπει να βαθμολογούνται με τον ίδιο τρόπο. Δεν μπορούμε δηλαδή, σε ένα θέμα να δίνουμε όλα τα μόρια και σε μη αποδοτικές λύσεις, και σε κάποιο άλλο θέμα να κόβουμε μόρια από μη αποδοτικές λύσεις.
Αυτό θεωρώ ότι είναι βασικό να απαντηθεί, και να το ξέρουμε όλοι -καθηγητές και μαθητές- από την αρχή!
Νάσια Παπαγιάννη
Ηλ/γος Μηχ/κος και Μηχ/κος Υπολογιστών

ΠΤ

Δεν τίθεται γενικό θέμα αποδοτικής λύσης. Απλά το σχολικό βιβλίο αναπτύσσει το θέμα της σειριακής ξεχωρίζοντας τρεις περιπτώσεις και ως εκ τούτου η συγκεκριμένη ενότητα εισάγει 'ποιοτικές' απαιτήσεις από τους αλγορίθμους. Σε όλα τα μαθήματα που εξετάζονται κυρίαρχο ρόλο παίζει το σχολικό βιβλίο για τις εξετάσεις. Ο μαθητής θα πρέπει να γνωρίζει κάθε θέμα με τον τρόπο που αυτό παρουσιάζεται στο κοινό για όλη την Ελλάδα βιβλίο. Αυτός που το έχει διδαχθεί και κατανοήσει καλύτερα πρέπει να επιβραβεύεται. Προσοχή ως εκ τούτου στην διδασκαλία της συγκεκριμένης ενότητας.

bagelis

ΚΑΘΕ ΛΥΣΗ ΕΠΙΣΤΗΜΟΝΙΚΑ ΑΠΟΔΕΚΤΗ ΕΙΝΑΙ ΣΩΣΤΗ!!! ΓΙΑΤΙ ΝΑ ΚΟΠΟΥΝ ΜΟΡΙΑ;;;; ΕΛΕΟΣ!!!
Το πρόγραμμα τρέχει και βγάζει σωστά αποτελέσματα! Γιατί να κοπούν μόρια; Σε μαθητές Λυκείου μιλάμε ρε παιδιά! Μαθηματικά και Φυσική ποτέ κανένας δεν τους είπε να το λύσουν με κάποιο τρόπο συγκεκριμένο γιατί είναι καλύτερος! Στην ύλη μας δεν υπάρχει η έννοια αποδοτικότητα αλγορίθμου. Το ΓΙΑ δουλεύει μια χαρά! Ας ωριμάσουμε επιτέλους!