Αποστολέας Θέμα: Λάθος (περιττός έλεγχος) στη δυαδική αναζήτηση στις ΟΔΗΓΙΕΣ ΜΕΛΕΤΗΣ  (Αναγνώστηκε 1125 φορές)

din_os

  • Θαμώνας
  • ***
  • Μηνύματα: 28
Στις ΟΔΗΓΙΕΣ ΜΕΛΕΤΗΣ στην σελίδα 75, 76 παρουσιάζεται η δυαδική αναζήτηση διαφοροποιημένη από τις Οδηγίες Διδασκαλίας. Πιο συγκεκριμένα περιέχει μια επιπλέον ΑΝ:

Κώδικας: [Επιλογή]
ΑΝ μέση >=1 ΚΑΙ μέση <= 100 ΤΟΤΕ
μετά από μια μικρή έρευνα θεωρώ ότι η ΑΝ είναι περιττή. Πιστεύω ότι ο προγραμματιστής ήθελε να σιγουρευτεί για την περίπτωση που θα πάρει μηδέν η μεταβλητή μέση (αυτό συμβαίνει όταν για παράδειγμα όταν ψάχνουμε το -3 σε πίνακα θετικών αριθμών) όμως δεν υπάρχει κίνδυνος γιατί στην μοναδική περίπτωση που το τέλος γίνει μηδέν (τέλος = 0, αρχή = 1), θα ισχύει τελος < αρχή όπου και η όσο θα έχει τερματιστεί πριν δημιουργήσει την επόμενη μέση.

Εκτός αν κάνω λάθος το υπουργείο οφείλει να στείλει διευκρίνηση.
« Τελευταία τροποποίηση: 17 Ιαν 2020, 10:48:23 πμ από din_os »

Καρκαμάνης Γεώργιος

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 1119
Το πρόβλημα είναι ότι έχουμε 5  βιβλια για το μάθημα ΠΛΗΡΟΦΟΡΙΚΗ Γ ΛΥΚΕΙΟΥ όπου πολλές φορές το ίδιο γνωστικό αντικείμενο να παρουσιάζεται γραμμένο με διαφορετικό τρόπο σε διάφορα βιβλία από διαφορετικούς συγγραφείς. Αυτό έχει ως αποτέλεσμα να γράφονται τα ίδια πράγματα με άλλη οπτική γωνία....

din_os

  • Θαμώνας
  • ***
  • Μηνύματα: 28
Αύριο πρέπει να πώ στους μαθητές αν θα πρέπει να αγνοήσουν αυτή την εντολή η όχι και ανησυχώ μήπως δεν κατάλαβα εγώ κάτι καλά.

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

Σκέφτομαι να τους πώ "με επιφύλαξη" η εντολή αυτή είναι περιττή.

Μέχρι τώρα νομίζω ο μόνος τρόπος για να αποτύχει η αναζήτηση χωρίς την εντολή αυτή είναι τα αρχή τέλος να είναι αρνητικά ( ; )

gthal

  • Ομάδα διαγωνισμάτων 2017
  • *
  • Μηνύματα: 917
Μπορείς να παραθέσεις τον αλγόριθμο, γιατί δε βρίσκω αυτό που λες;
Φιλικά,
Γιώργος Θαλασσινός

Λαμπράκης Μανώλης

  • Ομάδα διαγωνισμάτων 2017
  • *
  • Μηνύματα: 795
Γιώργο νομίζω είναι στη φετινή έκδοση, μήωπς κοιτάς την περσινή ??? έχουν κάπιοες διαφορές σε κάποιους κώδικες ... εγώ νομίζω δεν ελέγχει κάτι αυτή η δομή επιλογής, το όσο κάνιε μια χαρά τη δουλειά  >:D :laugh:

din_os

  • Θαμώνας
  • ***
  • Μηνύματα: 28
Μπορείς να παραθέσεις τον αλγόριθμο, γιατί δε βρίσκω αυτό που λες;

Κώδικας: [Επιλογή]
ΔΙΑΒΑΣΕ KEY
αρχ <- 1
τέλος <- 100
δεικτης <- ΨΕΥΔΗΣ
ΟΣΟ αρχ <= τέλος ΚΑΙ δεικτης = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
  μέση <- (αρχ + τέλος) div 2
  ΑΝ μέση >= 1 ΚΑΙ μέση <= 100 ΤΟΤΕ ! <------------ ΠΕΡΙΤΤΗ ΑΝ ;
    ΑΝ KEY < Α[μέση] ΤΟΤΕ
      τέλος <- μέση - 1
    ΑΛΛΙΩΣ_ΑΝ KEY > Α[μέση] ΤΟΤΕ
      αρχ <- μέση + 1
    ΑΛΛΙΩΣ
      δεικτης <- ΑΛΗΘΗΣ
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ δεικτης = ΑΛΗΘΗΣ ΤΟΤΕ
  ΓΡΑΨΕ 'Βρέθηκε στη θέση ', μέση
ΑΛΛΙΩΣ
  ΓΡΑΨΕ 'Δε βρέθηκε'
ΤΕΛΟΣ_ΑΝ
« Τελευταία τροποποίηση: 17 Ιαν 2020, 10:49:52 πμ από din_os »

ApoAntonis

  • Βετεράνος
  • ****
  • Μηνύματα: 86


μετά από μια μικρή έρευνα θεωρώ ότι η ΑΝ είναι περιττή. Πιστεύω ότι ο προγραμματιστής ήθελε να σιγουρευτεί για την περίπτωση που θα πάρει μηδέν η μεταβλητή μέση (αυτό συμβαίνει όταν για παράδειγμα όταν ψάχνουμε το -3 σε πίνακα θετικών αριθμών) όμως δεν υπάρχει κίνδυνος γιατί στην μοναδική περίπτωση που το τέλος γίνει μηδέν (τέλος = 0, αρχή = 1), θα ισχύει τελος < αρχή όπου και η όσο θα έχει τερματιστεί πριν δημιουργήσει την επόμενη μέση.

Εκτός αν κάνω λάθος το υπουργείο οφείλει να στείλει διευκρίνηση.

ναι

Αν μέση=0 <=>
(αρχ+τελος) DIV 2 =0 <=>
αρχ +τέλος <= 1

οπότε αρχ=0 και τέλος=1 (αδύνατο αφού το αρχ μόνο αυξάνεται)
ή
αρχ=1 και τέλος=0 (αδύνατο αφού ο έλεγχος της ΟΣΟ είναι ΗΔΗ ψευδής)


και αν (μέση > 100)

το οποίο επίσης είναι αδύνατο εφόσον η αρχική τιμή είναι 101/2 και συνεχώς το διάστημα μειώνεται
« Τελευταία τροποποίηση: 17 Ιαν 2020, 01:21:50 μμ από ApoAntonis »

gthal

  • Ομάδα διαγωνισμάτων 2017
  • *
  • Μηνύματα: 917
Γιώργο νομίζω είναι στη φετινή έκδοση, μήωπς κοιτάς την περσινή ??? έχουν κάπιοες διαφορές σε κάποιους κώδικες ... εγώ νομίζω δεν ελέγχει κάτι αυτή η δομή επιλογής, το όσο κάνιε μια χαρά τη δουλειά  >:D :laugh:
Όντως κοιτάζω την περσινή ...
Κι εγώ νομίζω ότι είναι περιττή αυτή η συνθήκη
Φιλικά,
Γιώργος Θαλασσινός

Aris_v

  • Οπαδός
  • **
  • Μηνύματα: 11
Η μεταβλητή μέση παίρνει τιμή (αρχ+τέλος) div2.
Με αρχ>=1 και τέλος<=100, η μέση θα ανήκει στο [1,100] οπωσδήποτε.
Άρα η ΑΝ αυτή είναι περιττή.
Παρόλα αυτά, σε περίπτωση που ζητηθεί ο αλγόριθμος δυαδικής αναζήτησης στις πανελλήνιες, είναι περιττό άγχος για τους εξεταζόμενους μαθητές
να μην την γράψουν και να φοβούνται για κόψιμο μονάδων.
Επίσης αν πέσει ο αλγόριθμος δυαδικής αναζήτησης σε συμπλήρωση κενού, θα τη χρειαστούν.
Το σωστό βέβαια είναι στο μέλλον να υπάρξει διόρθωση και να γραφτεί ο αλγόριθμος χωρίς την ύπαρξη αυτής της ΑΝ.

gthal

  • Ομάδα διαγωνισμάτων 2017
  • *
  • Μηνύματα: 917
Επίσης αν πέσει ο αλγόριθμος δυαδικής αναζήτησης σε συμπλήρωση κενού, θα τη χρειαστούν.
Καλό είναι πάντως οι μαθητές να μην παπαγαλίσουν τον αλγόριθμο αλλά να καταλάβουν τη λογική του γιατί μπορεί να δοθεί με πολλές μικρές παραλλαγές (στις οδηγίες διδασκαλίας, πέρυσι-πρόπερσι, ήταν διαφορετικός αν θυμάμαι καλά).
Και βέβαια, αν δοθεί για συμπλήρωση κενού, καλό θα ήταν να μην υπάρχουν τέτοια λάθη και περιττές εντολές γιατί εκεί μπορεί ο μαθητής, ενώ ξέρει και καταλαβαίνει τον αλγόριθμο, να μη μπορεί να φανταστεί τι πρέπει να βάλει ή μπορεί και να βάλει ότι να 'ναι.
πχ αν δοθούν κενά σ' αυτή την άχρηστη ΑΝ:
ΑΝ μέση >= ___ ΚΑΙ  ___ <= 100 ΤΟΤΕ
μόνο κάποιος που έχει παπαγαλίσει θα ξέρει τι "περιμένουμε" να βάλει. Αυτός που δεν έχει παπαγαλίσει (που τον προτιμάμε) ή θα κολλήσει και ενδέχεται να τα αφήσει κενά, ή αν έχει κέφια θα τρολλάρει συμπληρώνοντας πχ το 0 και στα δύο κενά, και δε μπορείς να πεις ότι είναι λάθος.

Αστεία μου φάνηκε πχ μια παραλλαγή που είδα σε ένα ... διαγώνισμα (ίσως το είδαν κι άλλοι  ;) )
Κώδικας: [Επιλογή]
X <-  1
ΑΡΧΗ<-1
ΤΕΛΟΣ<-__(α)__
DONE<-__(β)__
ΟΣΟ (ΑΡΧΗ<=ΤΕΛΟΣ) ΚΑΙ (DONE=ΨΕΥΔΗΣ) ΚΑΙ (X <= __(γ)__)  ΕΠΑΝΑΛΑΒΕ
  Μ <- (ΑΡΧΗ +ΤΕΛΟΣ)DIV2
  ΑΝ Α[Μ]=KEY ΤΟΤΕ
      ….
  ΑΛΛΙΩΣ_ΑΝ   ……..
      ….
  ΑΛΛΙΩΣ
      ….
  ΤΕΛΟΣ_ΑΝ
   __(ζ)__ <- __(η)__ + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

….
Όπου (εκτός ότι χρησιμοποιούνται δεσμευμένες λέξεις ως μεταβλητές!!!) συμμετέχει στη συνθήκη και ένα μυστηριώδες Χ    :D
εντελώς άχρηστο και δε χρησιμοποιείται και πουθενά παρακάτω (θα μπορούσε πχ να μετρά τις επαναλήψεις που έγιναν; αλλά γιατί να συμμετέχει στη συνθήκη)
Νομίζω ότι θα ήταν δείγμα ψυχικής υγείας, αν ένας μαθητής δε μπορούσε να διανοηθεί τι να συμπληρώσει στα αντίστοιχα κενά για την Χ  ;D
Η επίσημη λύση έδινε ότι στο (γ) είναι Χ<=5 !!!???  και στα (ζ) και (η)  Χ <- Χ + 1    οκέιιιιιιι
Αν δηλαδή έβαζα αντίστοιχα χ<=1  και παρακάτω  Χ <- 0 + 1 , πού θα ήμουν λάθος ;
Φιλικά,
Γιώργος Θαλασσινός

epsilonXi

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 146

din_os

  • Θαμώνας
  • ***
  • Μηνύματα: 28
Ευχαριστώ πολύ για την βοήθειά σας, οι μαθητές έχουν καταλάβει ότι είναι περιττή αλλά σίγουρα ήταν ένα επιπλέον άγχος. Συνεχίζουμε και βλέπουμε.

Καλή συνέχεια στον αγώνα φέτος! Ευχαριστώ.