Σειριακή Αναζήτηση με τη δομή Για...από...μέχρι

Ξεκίνησε από evry, 12 Δεκ 2008, 07:31:51 ΜΜ

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

ntzios kostas

Και η παρακάτω Βασίλη θεωρείται σωστή;

Για Ι από 1 μέχρι Ν
    Αν πίνακας[Ι]=κλειδί τότε
        θέση<-Ι
        πήγαινε στο 1
    τέλος_αν
τέλος_επανάληψης
1.

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

Σούλας Βασίλης

Την παρακάτω την θεωρώ πιθανή να την γράψει κάποιος μαθητής.

διάβασε κλειδι
Για Ι από 1 μέχρι Ν
    Αν πίνακας[Ι]=κλειδί τότε
        θέση<-Ι
        Ι<-Ν+1      !βίαιη έξοδος από το βρόχο.
    τέλος_αν
τέλος_επανάληψης

την παρακάτω δεν την θεωρώ πιθανή.

διάβασε κλειδι
Για Ι από 1 μέχρι Ν
    Αν πίνακας[Ι]=κλειδί τότε
        θέση<-Ι
        πήγαινε στο 1
    τέλος_αν
τέλος_επανάληψης
1.

Τώρα αν την θεωρώ σωστή να απαντήσω. Θα συμφωνήσω με τον Παναγιώτη. Σαν προγραμματιστής δεν θα μου άρεσε καθόλου αυτή η λύση και για να σου πω πιο ειλικρινά την θεωρώ κατα κάποιο τρόπο λάθος. Σαν διορθωτής όμως δεν ξέρω αν θα έκοβα. Άλλωστε συμφωνώ και με αυτό που αναφέρεις.
Το μάθημα Ανάπτυξη Εφαρμογών δεν έχει σαν στόχο την εκμάθηση κάποιου συγκεκριμένου προγραμματιστικού περιβάλλοντος ούτε την καλλιέργεια προγραμματιστικών δεξιοτήτων από τη μεριά των μαθητών. Δεν αποσκοπεί στη λεπτομερειακή εξέταση της δομής, του ρεπερτορίου και των συντακτικων κανόνων κάποιας γλώσσας
Σούλας Βασίλης
Ηλεκτρολόγος Μηχανικός & Μηχανικός Η/Υ Δ.Π.Θ.
Καθηγητής Πληροφορικής ΠΕ19
http://users.sch.gr/vasisoulas
http://eclass.sch.gr/modules/auth/opencourses.php?fc=%D4-52

evry

Παράθεση από: Σούλας Βασίλης στις 18 Δεκ 2008, 06:24:39 ΜΜ

διάβασε κλειδι
Για Ι από 1 μέχρι Ν
    Αν πίνακας[Ι]=κλειδί τότε
        θέση<-Ι
        πήγαινε στο 1
    τέλος_αν
τέλος_επανάληψης
1.

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

Όσον αφορά την εντολή πήγαινε τα πράγματα δεν είναι τόσο απλά. Δεν πρόκειται για απλό χαρακτηριστικό κάποιας γλώσσας, ούτε για συντακτικό ούτε για κάτι απλά τεχνικό ή προγραμματιστικό κόλπο. Μιλάμε για μια ολόκληρη φιλοσοφία. Με το σκεπτικό λοιπόν ότι ο μαθητής ξέρει από τη θεωρία ότι δεν χρησιμοποιούμε GOTO και μάλιστα ξέρει και τους λόγους για τους οποίους δεν την χρησιμοποιούμε, γνωρίζει δηλαδή για τις αρχές του δομημένου προγραμματισμού, έχεις ένα καλό επιχείρημα να του κόψεις αν το κρίνεις σωστό.

Προσωπικά δεν θα έκοβα για καμία από τις παραπάνω λύσεις (μπορεί να έβαζα και παραπάνω μάλιστα!!) και εξηγώ το σκεπτικό μου
Για έναν μαθητή ο οποίος θα δώσει μια τις παραπάνω λύσεις δύο πράγματα είναι βέβαια:
1)  Έχει προγραμματίσει σε κάποια γλώσσα προγραμματισμού εκτός από ΓΛΩΣΣΑ, και καταλαβαίνει τι κάνει
2)  Δεν είχε σωστή καθοδήγηση, είτε από το σχολείο είτε από το φροντιστήριο, δηλαδή κανείς δεν του είπε ότι "οκ, αυτά που γράφεις είναι σωστά γενικά στον προγραμματισμό αλλά στο μάθημα αυτό μην τολμήσεις και τα γράψεις στις εξετάσεις"

Και μόνο με τις σκέψεις αυτές δεν θα τολμούσα να κόψω σε καμία περίπτωση. Μόνη εξαίρεση θα ήταν αν με τον τρόπο αυτό "ξεγλιστρούσε" από κάποιο πολύ δύσκολο σημείο της άσκησης, οπότε τότε δεν θα ήταν δίκαιο για τους άλλους μαθητές.
Σε αυτές τις περιπτώσεις κατά τη γνώμη μου δε βαθμολογείς με το γράμμα αλλά με το πνεύμα του "νόμου".
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Σούλας Βασίλης

ΠαράθεσηΠροσωπικά δεν θα έκοβα για καμία από τις παραπάνω λύσεις (μπορεί να έβαζα και παραπάνω μάλιστα!!) και εξηγώ το σκεπτικό μου
Για έναν μαθητή ο οποίος θα δώσει μια τις παραπάνω λύσεις δύο πράγματα είναι βέβαια:
1)  Έχει προγραμματίσει σε κάποια γλώσσα προγραμματισμού εκτός από ΓΛΩΣΣΑ, και καταλαβαίνει τι κάνει
2)  Δεν είχε σωστή καθοδήγηση, είτε από το σχολείο είτε από το φροντιστήριο, δηλαδή κανείς δεν του είπε ότι "οκ, αυτά που γράφεις είναι σωστά γενικά στον προγραμματισμό αλλά στο μάθημα αυτό μην τολμήσεις και τα γράψεις στις εξετάσεις.

Συμφωνώ Ευριπίδη. Ούτε εγώ θα έκοβα. (Παραπάνω δεν θα έβαζα!!!  :laugh:)
Σούλας Βασίλης
Ηλεκτρολόγος Μηχανικός & Μηχανικός Η/Υ Δ.Π.Θ.
Καθηγητής Πληροφορικής ΠΕ19
http://users.sch.gr/vasisoulas
http://eclass.sch.gr/modules/auth/opencourses.php?fc=%D4-52

ntzios kostas

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

Σούλας Βασίλης

Παράθεσηδιάβασε κλειδι
Για Ι από 1 μέχρι Ν
    Αν πίνακας[Ι]=κλειδί τότε
        θέση<-Ι
        Ι<-Ν+1      !βίαιη έξοδος από το βρόχο.
    τέλος_αν
τέλος_επανάληψης

-----------------------

διάβασε κλειδι
Για Ι από 1 μέχρι Ν
    Αν πίνακας[Ι]=κλειδί τότε
        θέση<-Ι
        πήγαινε στο 1
    τέλος_αν
τέλος_επανάληψης
1.

Συμφωνούμε τότε. Άλλωστε και στις 2 παραπάνω τερματίζει όταν το βρει.
Σούλας Βασίλης
Ηλεκτρολόγος Μηχανικός & Μηχανικός Η/Υ Δ.Π.Θ.
Καθηγητής Πληροφορικής ΠΕ19
http://users.sch.gr/vasisoulas
http://eclass.sch.gr/modules/auth/opencourses.php?fc=%D4-52

summer

#21
Μου φαίνεται μια χαρά,εξάλλου ο συγκεκριμένος αλγόριθμος είναι πιο γενικός μια και αν δεν διευκρινίζεται ότι το Key είναι σε μια μόνο θέση(όπως συνήθως), ο άλλος είναι λάθος.Εγώ έχω βάλει τα παιδιά να γράψουν δίπλα στο βιβλίο και αυτή την περίπτωση και τους έχω πει να την εφαρμόζουν όταν δε λέει ξεκάθαρα ότι το Key είναι σε μια μόνο θέση.

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


j<--1
pos<--0
οσο j<=n και Pos=0 επανέλαβε 
    Αν Α[j]=key τότε
        pos<--j
    Τέλος_Αν
j<--j+1
Τέλος επανάληψης

Αν pos=0 τότε Εμφάνισε 'Δε βρέθηκε το key'
αλλιώς Εμφάνισε 'Βρέθηκε το key στη θέση',Pos


τι λετε;

Laertis

Νικολακάκης Γιώργος
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής
http://users.sch.gr/gnikola

P.Tsiotakis

Σωστό, απλά με τον αλγόριθμο αναδεικνύεται η χρήση των λογικών μεταβλητών ως διακοπτών στους αλγορίθμους.
Χρησιμοποιούνται και σε έναν αλγόριθμο οι λογικές μεταβλητές !!

Νίκος Αδαμόπουλος

Κι εγώ ψηφίζω υπέρ των λογικών μεταβλητών χωρίς να θεωρώ λάθος τη λύση:

Παράθεση από: tina28 στις 05 Φεβ 2009, 02:17:40 ΜΜ
j<--1
pos<--0
οσο j<=n και Pos=0 επανέλαβε 
    Αν Α[j]=key τότε
        pos<--j
    Τέλος_Αν
j<--j+1
Τέλος επανάληψης

Αν pos=0 τότε Εμφάνισε 'Δε βρέθηκε το key'
αλλιώς Εμφάνισε 'Βρέθηκε το key στη θέση',Pos

Γενικότερα, η δικιά μου άποψη επί του θέματος:
http://dide.ilei.sch.gr/keplinet/education/aepp_search.php

agelos

Καλημέρα σας.
Προσωπικά αν διόρθωνα στις πανελλήνιες δεν θα έκοβα μονάδες για την αναζήτηση με ΓΙΑ διότι δεν μας ενδιαφέρει,σύμφωνα με το υπουργείο,η αποδοτικότητα του αλγορίθμου.Όμως στην τάξη,αν κάποιος μαθητής την κάνει με για,του κόβω μονάδες.Διότι αφού έχει διδαχθεί η αναζήτηση με συγκεκριμένο τρόπο και ο μαθητής την κάνει με άλλον σημαίνει είτε ότι δεν έχει διαβάσει και απλά του κόβει,είτε ότι κάνει εξυπνάδες.Και οι δύο περιπτώσεις έχουν μεγάλη πιθανότητα να του στοιχίσουν στις πανελλήνιες και γι αυτό του κόβω κανα δυό μονάδες.

evry

Καταρχήν όσον αφορά την απόδοση δεν υπάρχει μεγάλη διαφορά, οι αλγόριθμοι έχουν την ίδια πολυπλοκότητα, απλά ο ένας έχει καλύτερη μέση πολυπλοκότητα. Άρα από θέμα απόδοσης δεν τίθεται κανένα θέμα.

Τώρα αν κατάλαβα καλά από αυτά που λες αν σε έναν μαθητή του "κόβει" εσύ τον "κόβεις" έτσι?

Παράθεση από: agelos στις 13 Φεβ 2009, 11:37:23 ΠΜ
Καλημέρα σας.
Προσωπικά αν διόρθωνα στις πανελλήνιες δεν θα έκοβα μονάδες για την αναζήτηση με ΓΙΑ διότι δεν μας ενδιαφέρει,σύμφωνα με το υπουργείο,η αποδοτικότητα του αλγορίθμου.Όμως στην τάξη,αν κάποιος μαθητής την κάνει με για,του κόβω μονάδες.Διότι αφού έχει διδαχθεί η αναζήτηση με συγκεκριμένο τρόπο και ο μαθητής την κάνει με άλλον σημαίνει είτε ότι δεν έχει διαβάσει και απλά του κόβει,είτε ότι κάνει εξυπνάδες.Και οι δύο περιπτώσεις έχουν μεγάλη πιθανότητα να του στοιχίσουν στις πανελλήνιες και γι αυτό του κόβω κανα δυό μονάδες.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Νίκος Αδαμόπουλος

#27
Μετά από μια μικρή περιήγηση στα διάφορα θέματα του forum πιστεύω πως στην ίδια κατηγορία προβληματισμού με το "Σειριακή Αναζήτηση με τη δομή Για...από...μέχρι" υπάγεται και το:

- Περιττές συνθήκες και βαθμολόγηση (αναφέρεται στην Εντολή ΑΝ) (https://alkisg.mysch.gr/steki/index.php?topic=1199.msg7936#msg7936)

- Εγώ θα πρόσθετα και το (δεν ξέρω, έχει ξανασυζητηθεί; ) :

max <-A[1]
Για ι από 1 μέχρι 20
   Αν Α[ι]>max τότε max <- Α[ι]
Τέλος_επανάληψης

Θα κόβατε επειδή ξεκινάει από 1 και όχι από 2;

- Ή ακόμα και το:

max <-A[1]
Για i από 2 μέχρι 20
   Αν Α[ι]>=max τότε max <- Α[ι]
Τέλος_επανάληψης

Θα κόβατε επειδή έχει και το = στη συνθήκη;

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

evry

Η λύση που πρότεινε η μαθήτρια σου είναι κατά τη γνώμη μου καλύτερη από αυτή που χρησιμοποιούμε λογική μεταβλητή, αφού με το pos όπως πολύ σωστά σου είπε η λογική μεταβλητή δεν έχει λόγο ύπαρξης.
Επίσης η μαθήτρια σου χρησιμοποιεί λογική μεταβλητή. Είναι το pos το οποίο μπορούμε να το θεωρούμε αληθές όταν είναι pos<>0 και Ψευδές όταν είναι 0.
  Ο σκοπός δεν είναι να χρησιμοποιούμε λογικές μεταβλητές αλλά να δείξουμε στα παιδιά τη φιλοσοφία της μεταβλητής - φρουρού ή σημαίας. Για αυτό δεν χρειάζεται απαραίτητα η λογική μεταβλητή, μια ακέραια μεταβλητή αρκεί.
  Πάντως σχετικά με το γεγονός ότι χρησιμοποιούν στον ίδιο αλγόριθμο και την pos και την done η προσωπική μου γνώμη είναι ότι απλά αντέγραψαν τον αλγόριθμο από κάποιο ξένο βιβλίο και βαρέθηκαν ακόμα και να αλλάξουν τα ονόματα των μεταβλητών.

Παράθεση από: tina28 στις 05 Φεβ 2009, 02:17:40 ΜΜ
Μου φαίνεται μια χαρά,εξάλλου ο συγκεκριμένος αλγόριθμος είναι πιο γενικός μια και αν δεν διευκρινίζεται ότι το Key είναι σε μια μόνο θέση(όπως συνήθως), ο άλλος είναι λάθος.Εγώ έχω βάλει τα παιδιά να γράψουν δίπλα στο βιβλίο και αυτή την περίπτωση και τους έχω πει να την εφαρμόζουν όταν δε λέει ξεκάθαρα ότι το Key είναι σε μια μόνο θέση.

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


j<--1
pos<--0
οσο j<=n και Pos=0 επανέλαβε 
    Αν Α[j]=key τότε
        pos<--j
    Τέλος_Αν
j<--j+1
Τέλος επανάληψης

Αν pos=0 τότε Εμφάνισε 'Δε βρέθηκε το key'
αλλιώς Εμφάνισε 'Βρέθηκε το key στη θέση',Pos


τι λετε;
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

evry

Σε κάτι τέτοιο σίγουρα δεν κόβεις στις πανελλήνιες. Σηκώνει φυσικά κάποια κουβέντα αλλά σίγουρα δε μπορείς να κόψεις.
Επίσης θα διαφωνήσω με το γεγονός ότι τα θέματα αυτά εμπίπτουν στην ίδια κατηγορία. Σε αυτές τις περιπτώσεις θα πρέπει να εξετάζουμε 2 πράγματα
1) Ο αλγόριθμος που δίνεται είναι χειρότερος από αυτόν που ζητάμε? για παράδειγμα δε μπορεί να σου ζητάνε μέγιστο και να ταξινομείς όλον τον πίνακα, ούτε να σου ζητάνε συγχώνευση και να ενώνεις τους 2 πίνακες σε έναν και να τους ταξινομείς (φυσικά θα σου εξηγούν αναλυτικά τον αλγόριθμο)
2) Το "λάθος" του μαθητή δείχνει κάποια παρανόησή του σε κάποια βασική έννοια? Αυτό θα μπορούσαμε να το πούμε για έναν μαθητή που χρησιμοποιεί περιττές συνθήκες σε μια Αλλιώς_Αν

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

Η δουλειά μας λοιπόν σαν βαθμολογητές δεν είναι να μοιράζουμε τυποποιημένα τις μονάδες και να κάνουμε λογαριασμούς σαν μπακάληδες αλλά να προσπαθήσουμε να μπούμε στο πνεύμα του κάθε γραπτού και αν κόψουμε να είμαστε σίγουροι ότι πρόκειται για παρανόηση του μαθητή και όχι για κάποιο λάθος που δικαιολογείται από το άγχος και τη βιασύνη του.

Τώρα στο παράδειγμα που δίνεις όταν σαρώνεις πίνακα, το λάθος είναι μάλλον ανώδυνο αλλά για να δούμε και την περίπτωση που δεν έχουμε πίνακα.

Διάβασε α
max <- α
Για i από 1 μέχρι 20
   Διάβασε α
   Αν α>=max τότε max <- α
Τέλος_επανάληψης

Εδώ ο μαθητής διαβάζει έναν παραπάνω, οπότε κάτι πρέπει να του κόψεις

Στο παρακάτω πιστεύω θα διαφωνούσαν πολλοί αν θα έκοβαν.
Εγώ φυσικά θα έκοβα >:D, αφού λειτουργώ πάντα κατά του μαθητή

Για i από 1 μέχρι 20
   Αν i=1 Τότε
       max <- A[1]
   Αλλιώς
      Αν Α[ι]>=max τότε max <- Α[ι]
   Τέλος_Αν
Τέλος_επανάληψης
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr