Αποστολέας Θέμα: Ασκηση με Υπερβαση μεγέθους πίνακα  (Αναγνώστηκε 2485 φορές)

olga_ath

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 64
Ασκηση με Υπερβαση μεγέθους πίνακα
« στις: 03 Μάι 2010, 07:05:11 μμ »
Καλησπέρα

Στην τελική ευθεία των πανελληνίων θα θέλα να ζητήσω από τους πιο πεπειραμένους συναδέλφους να υποδείξουν κπ άσκηση/θέμα το οποίο θα εξετάζει την υπέρβαση του μεγέθους κάποιου πίνακα.


Ευχαριστώ προκαταβολικά

Ολγα
Doubt everyone and first of all yourself

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

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2795
  • Πύργος Ηλείας
Απ: Ασκηση με Υπερβαση μεγέθους πίνακα
« Απάντηση #1 στις: 03 Μάι 2010, 07:08:06 μμ »
Δηλαδή, τι ακριβώς θέλεις να εξετάζει;  ???

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3284
  • to Iterate is human to Recurse divine
Απ: Ασκηση με Υπερβαση μεγέθους πίνακα
« Απάντηση #2 στις: 03 Μάι 2010, 08:14:58 μμ »
Εννοείς κάτι τέτοιο;

Ένας μαθητής έγραψε τον παρακάτω αλγόριθμο για να ελέγξει πόσα στοιχεία έχουν τη μέγιστη τιμή
σε έναν ταξινομημένο πίνακα α[Ν] σε φθίνουσα σειρά.
Ποιο αλγοριθμικό κριτήριο δεν πληρούν οι παρακάτω εντολές και γιατί?
Τροποποιήστε τις έτσι ώστε να ικανοποιούνται όλα τα κριτήρια


Δεδομένα // α, Ν //
θέση <- 1
Όσο α[θέση]=α[1] και θέση <= Ν Επανάλαβε
   θέση <- θέση + 1
Τέλος_Επανάληψης
Εμφάνισε  θέση-1

What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

pgrontas

  • Ομάδα διαγωνισμάτων 2016
  • *
  • Μηνύματα: 1370
  • There are always possibilities...
Απ: Ασκηση με Υπερβαση μεγέθους πίνακα
« Απάντηση #3 στις: 03 Μάι 2010, 08:42:25 μμ »
Η προσπέλαση της θέσης Ν+1 ενός πίνακα Ν θέσεων είναι συντακτικό λάθος. Σ ή Λ.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

sstergou

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 983
  • Program or be Programmed
    • pseudoglossa.gr
Απ: Ασκηση με Υπερβαση μεγέθους πίνακα
« Απάντηση #4 στις: 03 Μάι 2010, 08:58:59 μμ »
Νομίζω είναι ένα ξεκάθαρο λογικό λάθος.
Στάθης Στέργου - sstergouATgmailDOTcom - http://www.pseudoglossa.gr

manpap

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 126
  • Είμαι χαζομπαμπάς...
Απ: Ασκηση με Υπερβαση μεγέθους πίνακα
« Απάντηση #5 στις: 03 Μάι 2010, 11:08:16 μμ »
Το παράδειγμα του Ευριπίδη είναι πολύ καλό για να δείξεις αυτό που θες, αν και λίγο δύσκολο γιατί υπερβαίνει τον πίνακα σε μία μόνο περίπτωση που τα στοιχεία του πίνακα είναι όλα ίδια.
Για την απάντησή του:
Προφανώς είναι λογικό λάθος (θα εντοπιστεί κατά την εκτέλεση και όχι κατά τη μεταγλώττιση).
Το κριτήριο που παραβιάζεται είναι η καθοριστικότητα (δεν έχει οριστεί αναφορά σε στοιχείο εκτός πίνακα).

Αν θες κάτι πιο απλό:
Δίνεται ...
Για ι απο 1 μεχρι Ν
 Αν α[ι-1]+α[ι+1]=α[ι] τοτε
  γραψε α[ι-1], α[ι], α[ι+1]
 τελοσ_αν
τελοσ_επαναληψης

Γενικά τονίζω στους μαθητές μετά την ολοκλήρωση μιας άσκησης να ελέγχουν τους δείκτες που χρησιμοποιούν να ανήκουν στο [1,Ν] και να τροποποιούν τα όρια της επανάληψης ή να βάζουν αν μέσα...
Συντηρώ το μυαλό μου ακοίμητο, λαγαρό, ανήλεο. Το αμολώ να παλεύει ακατάλυτα. Άλλο αργαστήρι να κάνω το σκοτάδι φως δεν έχω.
Ν. Καζαντζάκης

gthal

  • Ομάδα διαγωνισμάτων 2017
  • *
  • Μηνύματα: 914
Απ: Ασκηση με Υπερβαση μεγέθους πίνακα
« Απάντηση #6 στις: 04 Μάι 2010, 11:05:38 πμ »
Η προσπέλαση της θέσης Ν+1 ενός πίνακα Ν θέσεων είναι συντακτικό λάθος. Σ ή Λ.
χμμ έξυπνη ερώτηση ...
Κι εγώ πιστεύω ότι είναι λογικό λάθος...
Φιλικά,
Γιώργος Θαλασσινός

meteo_xampos

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 182
Απ: Ασκηση με Υπερβαση μεγέθους πίνακα
« Απάντηση #7 στις: 04 Μάι 2010, 12:01:26 μμ »
Μια παρόμοια άσκηση που έχει ο Παναγιώτης ο Τσιωτάκης στο βιβλίο του (νομίζω στο κεφάλαιο 46 με τη σειριακή αναζήτηση)...
Δόθηκε σε ένα μαθητή το εξής πρόβλημα: ‘Να γράψετε αλγόριθμο ο οποίος θα ψάχνει ένα όνομα,  που δίνεται σαν είσοδος από το πληκτρολόγιο, σε ένα πίνακα αλφαριθμητικών 5 θέσεων, και να εκτυπώνει κατάλληλο μήνυμα, ανάλογα με το αν βρέθηκε ή όχι’.

Αλγόριθμος Αναζήτηση
Δεδομένα //ΠΙΝ//
Διάβασε ον
ι <- 1
Όσο (ΠΙΝ[ι] <> ον) ΚΑΙ (ι<=5) επανάλαβε
   ι <- ι+1
Τέλος_επανάληψης
Αν (ι<=5) τότε
   Εμφάνισε ‘Δεν υπάρχει το όνομα που δώσατε προς αναζήτηση’
Αλλιώς
   Εμφάνισε ‘Υπάρχει το όνομα που δώσατε προς αναζήτηση’
Τέλος_Αν

Είναι σωστός ο παραπάνω αλγόριθμος;

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3284
  • to Iterate is human to Recurse divine
Απ: Ασκηση με Υπερβαση μεγέθους πίνακα
« Απάντηση #8 στις: 04 Μάι 2010, 12:07:23 μμ »
Θα προτιμούσα το παρακάτω με το σκεπτικό ότι φαίνεται καλύτερα
που είναι το πρόβλημα. Αυτό απευθύνεται σε περισσότερους μαθητές.
Το παράδειγμα από το βιβλίο του Παναγιώτη (που είναι αντίστοιχο με το παράδειγμα που έδωσα και εγώ λίγο παραπάνω) αναφέρονται στο λεπτό σημείο του ελέγχου του τελευταίου στοιχείου που πολλοί μαθητές μπορεί να μην το παρατηρήσουν

Αλγόριθμος Αναζήτηση
Δεδομένα //ΠΙΝ//
Διάβασε ον
ι <- 1
ΔενΒρέθηκε <- Αληθής
Όσο  ΔενΒρέθηκε επανάλαβε
        ΔενΒρέθηκε <- (Πιν[ι] <> ον)
         ι <- ι+1
Τέλος_επανάληψης

Αν Βρέθηκε τότε
   Εμφάνισε ‘Δεν υπάρχει το όνομα που δώσατε προς αναζήτηση’
Αλλιώς
   Εμφάνισε ‘Υπάρχει το όνομα που δώσατε προς αναζήτηση’
Τέλος_Αν

What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

olga_ath

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 64
Απ: Ασκηση με Υπερβαση μεγέθους πίνακα
« Απάντηση #9 στις: 04 Μάι 2010, 01:15:52 μμ »
Αγαπητοί συνάδελφοι δεν ξέρω πως να σας ευχαριστήσω για τις άμεσες και πλήρεις απαντήσεις  :D .
Αυτό ακριβώς έψαχνα. Θα δώσω ολες τις ασκήσεις στους μαθητές δίνοντας ιδιαίτερη έμφαση στις ασκήσεις ανάπτυξης .
Πιστευετε ότι βοηθάει τους μαθητές ο παρακάτω παραλληλισμός : Η προσπέλαση της θέσης Ν+1 ενός πίνακα Ν θέσεων είναι λογικό λάθος με την ίδια λογική που η χρήση αναφοράς σε μεταβλητή που δεν έχει αρχικοποιηθεί ειναι επίσης λογικό λάθος και παραβιάζει το κριτήριο της καθοριστικότητας.

 ::) Με αφορμή αυτό μπορούμε να γενικευσουμε και να πούμε ότι τα λογικά λάθη παραβιάζουν την καθοριστικότητα ?

Ευχαριστώ και πάλι





Doubt everyone and first of all yourself

sstergou

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 983
  • Program or be Programmed
    • pseudoglossa.gr
Απ: Ασκηση με Υπερβαση μεγέθους πίνακα
« Απάντηση #10 στις: 04 Μάι 2010, 01:21:58 μμ »
Η γενίκευση αυτή δεν ισχύει.

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

Για παράδειγμα ένας μετρητής μπορεί να αρχικοποιηθεί από 2 αντί για 0.
Αυτό το λάθος είναι λογικό αλλά η εντολή αρχικοποίησης δεν παραβιάζει κανένα κριτήριο.
Στάθης Στέργου - sstergouATgmailDOTcom - http://www.pseudoglossa.gr

sstergou

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 983
  • Program or be Programmed
    • pseudoglossa.gr
Απ: Ασκηση με Υπερβαση μεγέθους πίνακα
« Απάντηση #11 στις: 04 Μάι 2010, 01:28:44 μμ »
Για να πω την αμαρτία μου δεν είμαι σίγουρος ακόμη και για το αν η προσπέλαση στοιχείων εκτός ορίων είναι καλό παράδειγμα για την καθοριστικότητα.

Σε πολλές γλώσσες η προσπέλαση τέτοιων στοιχείων δεν οδηγεί σε απαραίτητα σε κάποιο μήνυμα λάθους. Αυτό που συμβαίνει είναι ότι αντί για κάποια χρήσιμη τιμή αναφέρεσαι σε "σκουπίδια". Ο τρόπος με τον οποίο αναφερόμαστε σε στοιχεία πίνακα (ακόμη και πέρα των ορίων) είναι καθορισμένος. Εάν υπήρχε πρόβλημα καθοριστικότητας όπως στην περίπτωση της διαίρεσης τότε ο Η/Υ δεν θα είχε κανένα περιθώριο από το να αναφέρει το λάθος.
Στάθης Στέργου - sstergouATgmailDOTcom - http://www.pseudoglossa.gr

pgrontas

  • Ομάδα διαγωνισμάτων 2016
  • *
  • Μηνύματα: 1370
  • There are always possibilities...
Απ: Ασκηση με Υπερβαση μεγέθους πίνακα
« Απάντηση #12 στις: 04 Μάι 2010, 01:41:53 μμ »
Πάντως εγώ στην πρόταση που έκανα δεν το συσχέτισα με καθοριστικότητα. Συμφωνώ με το Στάθη στο ότι δεν είναι δόκιμη η γενίκευση των λογικών λαθών προς την κατεύθυνση της καθοριστικότητας.
Αυτό που θεωρώ πολύ ενδιαφέρον πάντως είναι ότι και οι ίδιες οι γλώσσες προγραμματισμού εξελίσσονται.
Για παράδειγμα, σε αρκετές σύγχρονες γλώσσες οι αριθμητικές τιμές αρχικοποιούνται στο μηδέν είτε το θες είτε όχι, ενώ το περιβάλλον εκτέλεσης δεν επιτρέπει την προσπέλαση έξω από τα όρια του πίνακα (ακριβώς για να μην προσπελάσεις σκουπίδια, που κάποιος μπορεί να τα εκμεταλλευτεί για να σου περάσει ιό).
Κάποιες συμπεριφορές δηλαδή που εμείς λέμε ότι παραβιάζουν την καθοριστικότητα έχουν επιλυθεί ή πιο απλά ήταν αιτία για bugs  αυτόματα από το περιβάλλον εκτέλεσης. Σε κάνει να σκέφτεσαι ποια είναι τα όρια του ανθρώπινου εκτελεστή - ιδεατής μηχανής μιας ψευδογλώσσας...
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

Βρακόπουλος Αθανάσιος Λ.

  • Θαμώνας
  • ***
  • Μηνύματα: 35
Απ: Ασκηση με Υπερβαση μεγέθους πίνακα
« Απάντηση #13 στις: 05 Μάι 2010, 07:06:20 μμ »
Αλγόριθμος Αναζήτηση
Δεδομένα //ΠΙΝ//
Διάβασε ον
ι <- 1
Όσο (ΠΙΝ[ι] <> ον) ΚΑΙ (ι<5) επανάλαβε
   ι <- ι+1
Τέλος_επανάληψης
Αν ΠΙΝ[ι] <> ον τότε
   Εμφάνισε ‘Δεν υπάρχει το όνομα που δώσατε προς αναζήτηση’
Αλλιώς
   Εμφάνισε ‘Υπάρχει το όνομα που δώσατε προς αναζήτηση’
Τέλος_Αν