Σειριακή αναζήτηση.

Ξεκίνησε από manosteach, 02 Απρ 2012, 04:55:13 ΜΜ

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

manosteach

Συνάδελφοι έχω μια ερώτηση!
Την σειριακή αναζήτηση δεν είναι πιο σωστό να την διδάσκουμε με την δομή επανάληψης Μέχρις_οτου αντί για την Όσο;
Το σκεπτικό μου είναι το εξής: Λόγω του οτι πρέπει να κάνουμε μία τουλάχιστον σύγκριση θα χρησιμοποιήσουμε την Μέχρις _οτου.
Για να βοηθάω τους μαθητές να επιλέγουν την καλύτερη δομή επανάληψης τους έχω δώσει σαν κριτήριο την διαφορά της Όσο με την Μεχρις_οτου.
Δηλαδή στην Όσο μπορεί να μην εκτελεστούν ούτε μια φορά η εντολές της επανάληψης ενώ στην Μεχρις_ότου   θα εκτελεστούν τουλάχιστον μία φορά.
Δωρεάν online μαθήματα μέσω internet.
http://www.manosteach.com

P.Tsiotakis

δε διαφωνώ μαζί σου,
προσωπικά επιμένω στην Όσο, γιατί αυτήν χρησιμοποιεί το βιβλίο για λόγους ομοιομορφίας...

manosteach

Πως σας φαίνεται αυτός ο αλγόριθμος σειριακής αναζήτησης

ι<--0
Αρχή_Επανάληψης
ι<--ι+1
Μέχρις_οτου ι>Ν ή Α[ι]=τιμή
Αν Α[ι]= τιμή τότε
Γράψε ' Βρέθηκε'
αλλιώς
Γράψε ' Δεν Βρέθηκε '
Τέλος_αν
Δωρεάν online μαθήματα μέσω internet.
http://www.manosteach.com

evry

Έχει πρόβλημα με την καθοριστικότητα αφού
αν δεν υπάρχει στον πίνακα
θα πάει να υπολογίσει το Α(Ν+1) που δεν υπάρχει (δεν έχουμε short-circuit evaluation)
πρέπει να χρησιμοποιήσεις λογική μεταβλητή ή αντί για αυτή
μια μεταβλητή θέση != 0

πάντως ακόμα και να είχαμε short-circuit evaluation, πάλι θα είχε πρόβλημα γιατί έξω από την επανάληψη χρησιμοποιείς την παράσταση Α(i).

Παράθεση από: manosteach στις 03 Απρ 2012, 02:10:49 ΜΜ
Πως σας φαίνεται αυτός ο αλγόριθμος σειριακής αναζήτησης

ι<--0
Αρχή_Επανάληψης
ι<--ι+1
Μέχρις_οτου ι>Ν ή Α[ι]=τιμή
Αν Α[ι]= τιμή τότε
Γράψε ' Βρέθηκε'
αλλιώς
Γράψε ' Δεν Βρέθηκε '
Τέλος_αν
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

P.Tsiotakis

όπως ανέφερε ο συνάδελφος, είναι λάθος
διότι στην περίπτωση που το στοιχείο δεν υπάρχει στον πίνακα ο αλγόριθμος επικαλείται θέση του πίνακα εκτός ορίων (την N+1)
αυτό θα μπορούσε να είναι ένα ωραίο ερώτημα εύρεσης λάθους

Σπύρος Δουκάκης

Ένας αλγόριθμος που έχει γραφεί στο παρελθόν για την αναζήτηση είναι ο ακόλουθος:

Αλγόριθμος Αναζήτηση
Δεδομένα // Π, Ν, Ζ //
i ← 0
Αρχή_επανάληψης
  i ← i + 1
Μέχρις_ότου Π[i] = Ζ ή i = Ν
Αν Π[i] = Ζ τότε
  Εμφάνισε "Υπάρχει", i
αλλιώς
  Εμφάνισε "Δεν υπάρχει"
Τέλος_αν
Τέλος Αναζήτηση


Με την παραπάνω διόρθωση ο αλγόριθμος που έγραψες δεν έχει πρόβλημα.

Παράθεση από: manosteach στις 03 Απρ 2012, 02:10:49 ΜΜ
Πως σας φαίνεται αυτός ο αλγόριθμος σειριακής αναζήτησης

ι<--0
Αρχή_Επανάληψης
ι<--ι+1
Μέχρις_οτου ι>Ν ή Α[ι]=τιμή
Αν Α[ι]= τιμή τότε
Γράψε ' Βρέθηκε'
αλλιώς
Γράψε ' Δεν Βρέθηκε '
Τέλος_αν