Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Θεωρία => Μήνυμα ξεκίνησε από: manosteach στις 02 Απρ 2012, 04:55:13 μμ

Τίτλος: Σειριακή αναζήτηση.
Αποστολή από: manosteach στις 02 Απρ 2012, 04:55:13 μμ
Συνάδελφοι έχω μια ερώτηση!
Την σειριακή αναζήτηση δεν είναι πιο σωστό να την διδάσκουμε με την δομή επανάληψης Μέχρις_οτου αντί για την Όσο;
Το σκεπτικό μου είναι το εξής: Λόγω του οτι πρέπει να κάνουμε μία τουλάχιστον σύγκριση θα χρησιμοποιήσουμε την Μέχρις _οτου.
Για να βοηθάω τους μαθητές να επιλέγουν την καλύτερη δομή επανάληψης τους έχω δώσει σαν κριτήριο την διαφορά της Όσο με την Μεχρις_οτου.
Δηλαδή στην Όσο μπορεί να μην εκτελεστούν ούτε μια φορά η εντολές της επανάληψης ενώ στην Μεχρις_ότου   θα εκτελεστούν τουλάχιστον μία φορά.
Τίτλος: Απ: Σειριακή αναζήτηση.
Αποστολή από: P.Tsiotakis στις 02 Απρ 2012, 06:10:20 μμ
δε διαφωνώ μαζί σου,
προσωπικά επιμένω στην Όσο, γιατί αυτήν χρησιμοποιεί το βιβλίο για λόγους ομοιομορφίας...
Τίτλος: Απ: Σειριακή αναζήτηση.
Αποστολή από: manosteach στις 03 Απρ 2012, 02:10:49 μμ
Πως σας φαίνεται αυτός ο αλγόριθμος σειριακής αναζήτησης

ι<--0
Αρχή_Επανάληψης
ι<--ι+1
Μέχρις_οτου ι>Ν ή Α[ι]=τιμή
Αν Α[ι]= τιμή τότε
Γράψε ' Βρέθηκε'
αλλιώς
Γράψε ' Δεν Βρέθηκε '
Τέλος_αν
Τίτλος: Απ: Σειριακή αναζήτηση.
Αποστολή από: evry στις 03 Απρ 2012, 02:19:04 μμ
Έχει πρόβλημα με την καθοριστικότητα αφού
αν δεν υπάρχει στον πίνακα
θα πάει να υπολογίσει το Α(Ν+1) που δεν υπάρχει (δεν έχουμε short-circuit evaluation)
πρέπει να χρησιμοποιήσεις λογική μεταβλητή ή αντί για αυτή
μια μεταβλητή θέση != 0

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

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

ι<--0
Αρχή_Επανάληψης
ι<--ι+1
Μέχρις_οτου ι>Ν ή Α[ι]=τιμή
Αν Α[ι]= τιμή τότε
Γράψε ' Βρέθηκε'
αλλιώς
Γράψε ' Δεν Βρέθηκε '
Τέλος_αν
Τίτλος: Απ: Σειριακή αναζήτηση.
Αποστολή από: P.Tsiotakis στις 03 Απρ 2012, 02:28:57 μμ
όπως ανέφερε ο συνάδελφος, είναι λάθος
διότι στην περίπτωση που το στοιχείο δεν υπάρχει στον πίνακα ο αλγόριθμος επικαλείται θέση του πίνακα εκτός ορίων (την N+1)
αυτό θα μπορούσε να είναι ένα ωραίο ερώτημα εύρεσης λάθους
Τίτλος: Απ: Σειριακή αναζήτηση.
Αποστολή από: Σπύρος Δουκάκης στις 03 Απρ 2012, 02:47:25 μμ
Ένας αλγόριθμος που έχει γραφεί στο παρελθόν για την αναζήτηση είναι ο ακόλουθος:

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

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

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

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