Έξοδος από την ''Οσο'' σε αναζήτηση...

Ξεκίνησε από nbasd, 07 Ιαν 2010, 09:40:02 ΜΜ

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

nbasd

Φίλοι γεια σας

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

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

i <--1
Διάβασε χ
Όσο i <= 10 επανάλαβε
    Αν Α[ι]  =  x τότε
    θέση <-- i
    i <-- 12
    αλλιώς
    i <-- i + 1
    Τέλος_Αν
Τέλος_Επανάληψης
Αν  i=12 τότε
εμφάνισε θέση
αλλιώς
εμφάνισε ''Δεν βρέθηκε το στοιχείο''
Τέλος_αν





toufeki

#1
...καλό μου φαίνεται.
Χρησιμοποιείς όμως μια παραπάνω μεταβλητή (θέση).
Βέβαια σήμερα έτσι όπως έχουν γίνει τα πράγματα θα ήταν καλύτερα εαν για να τραφούμε χρειαζόμασταν μνήμη RAM παρά ψωμί.

i <--1
Διάβασε χ
Όσο (i <= 10) &  (Αi  <>  x)
επανάλαβε
    i <-- i + 1
Τέλος_Επανάληψης
Aν (i = 10) & (Ai <> x)
    εμφάνισε ''Δεν βρέθηκε το στοιχείο''
αλλιώς
    Αν i = (10 + 1)
         εμφάνισε ''Δεν βρέθηκε το στοιχείο''
    αλλιώς
         εμφάνισε i
    Τέλος_αν
Τέλος_αν


Σημ: Η τροποποίηση που έκανα έχει να κάνει με την κάλυψη της περίπτωσης που ο μετρητής έχει φτάσει στην τελευταία θέση του πίνακα (10) και δεν βρέθηκε το στοιχείο χ.

nbasd


toufeki

Έτσι όπως μας καταντήσατε, μέχρι και τις ανάσες μας θα πρέπει να μετράμε.
Ευχαριστώ :)

evry

Η λύση είναι καλή, υποθέτω ότι όπου Αi εννοείς
Α[i]
, αλλά ο αλγόριθμος δεν ικανοποιεί το κριτήριο της καθοριστικότητας. Αν το i > 10 τότε ο υπολογισμός της έκφρασης
Α[i]
έχει πρόβλημα αφού ξεπερνάει τα όρια του πίνακα. Νομίζω ότι με ένα παραπάνω Αν είναι εντάξει
Από τη στιγμή που δεν ξέρουμε πως γίνεται η αποτίμηση σύνθετων συνθηκών υποθέτουμε ότι υπολογίζονται όλες ταυτόχρονα.

Πάντως προσωπικά δεν συμφωνώ με αυτή τη λύση. Δεν πιστεύω ότι πρέπει να ενθαρρύνουμε τους μαθητές να σκέφτονται έτσι. Δεν είναι καλό από θέμα διδακτικής να χρησιμοποιούμε την ίδια μεταβλητή με 2 διακριτούς ρόλους, δηλαδή του μετρητή και της τιμής-φρουρού. Δεν κοστίζει τίποτα να χρησιμοποιήσουμε μια ακόμα μεταβλητή. Έχουν περάσει οι εποχές που είχαμε 640 ΚΒ μνήμη.
   Δεν λέω ότι είναι λάθος έτσι? απλά το θεωρώ κακή πρακτική. Να υπενθυμίσω ότι είμαι από τους λίγους εδώ μέσα που πιστεύoυν ότι η αλλαγή του μετρητή μέσα στη Για δεν είναι λάθος.

Παράθεση από: toufeki στις 07 Ιαν 2010, 10:00:03 ΜΜ
i <--1
Διάβασε χ
Όσο (i <= 10) &  (Αi  <>  x)
επανάλαβε
    i <-- i + 1
Τέλος_Επανάληψης
Aν (i >= 10) & (Ai <> x)
    εμφάνισε ''Δεν βρέθηκε το στοιχείο''
αλλιώς
    εμφάνισε i
Τέλος_αν

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

toufeki

Σε πρόλαβα για το πρόβλημα Ευριπίδη.
Όλα είναι ωφέλημα.
Ιδιαίτερα αυτά που μόλις έγραψες.
Δεν χρειάζεται να διαφωνήσω μαζί σου.
Όλα είναι θέμα οπτικής ;)

toufeki

#6
Έχω να προτείνω μια ακόμα καλύτερη λύση η οποία αποφεύγει την περίπτωση εξόδου από τον πίνακα των 10 θέσεων.

i <--0
Διάβασε χ
επανάλαβε
    i <-- i + 1
μέχρι (i = 10) || (Ai = x)
Aν (Ai <> x)
    εμφάνισε ''Δεν βρέθηκε το στοιχείο''
αλλιώς
    εμφάνισε i
Τέλος_αν

Σημ: τροποποίηση ύστερα από την παρατήρηση του ntzios kostas

ntzios kostas

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

toufeki

Έχεις δίκιο kostas, ευχαριστώ για την παρατήρηση.
Η αλήθεια είναι ότι αλλού το είχα το μυαλό μου.
Βλέπεις ήταν και 2 η ώρα το πρωί. >:D
Θα κάνω την τροποποίηση.

dimitrios67

Συναδελφοι, συγχωρεστε με , αλλα θεωρω τη συγκεκριμενη λυση αρκετα λαθος από άποψη διδακτικής.
Αλλα ειναι και κατι άλλο: δεν ειναι κωδικας που θα εγραφε ενας επαγγελματιας προγραμματιστης. Τα παιδια ετσι μαθαινουν "στραβά"....
Σκεφτειτε το κι αυτο: Σε ενα πραγματικό προγραμμα με 100αδες γραμμες, εαν καθε serial search το υλοποιήσουμε έτσι και κανουμε καποιο λάθος, το debugging θα ειναι γολγοθας...
Ναι μεν η αλγοριθμική, αλλά ας "πλησιάζουμε" και τον πραγματικό κοσμο.....Νομιζω οτι ο υπερτονισμος του "δουλευει αρα ειναι οκ!" δεν νομιζω οτι ειναι καλή πρακτική.
Ο σχεδιασμος ενος προγραμματος (και οχι ο "κωδικας" που θα γραψουμε) ειναι πολύ σημαντική ικανοτητα και παραμετρος.

toufeki

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

evry

  Καλό είναι κάθε μεταβλητή στό πρόγραμμα να έχει έναν συγκεκριμένο ρόλο, όπως π.χ. μετρητής, αθροιστής, μεταβλητή-σημαία κλπ. Έτσι είναι πιο εύκολο να εξηγήσεις στους μαθητές σου κάποια πράγματα και να ξεκινήσουν και αυτοί να τα χρησιμοποιούν. Εάν αρχίσεις να συγχέεις τους ρόλους των μεταβλητών θα προκληθεί σύγχυση στους μαθητές. Όπως είπα και προηγουμένως ο συγκεκριμένος τρόπος δεν είναι λάθος, είναι όμως κακή πρακτική και είναι καλό να αποφεύγεται. Αν δώσεις κάτι τέτοιο στους μαθητές και μετά αρχίσουν οι ερωτήσεις
"Γιατί δεν μπορούμε να κάνουμε και το ίδιο στη Για, αφού οι 2 δομές είναι ισοδύναμες για συγκεκριμένο αριθμό επαναλήψεων?"
"Γιατί να χρησιμοποιώ τον τρόπο του βιβλίου αφού αυτός έχει λιγότερο γράψιμο, λιγότερες μεταβλητές και άρα μπορώ να τον μάθω πιο εύκολα απέξω?"

  Όταν δείχνουμε ένα νέο "κόλπο" στους μαθητές μας θα πρέπει να μπορούμε (όσο είναι δυνατό) να προβλέψουμε και τις συνέπειες. Δηλαδή αν αύριο ένας μαθητής το γράψει αυτό στις εξετάσεις, ή με αφορμή αυτό πάει και αλλάξει και τον μετρητή της Για και κάποιος βαθμολογητής του κόψει εμείς τι θα του πούμε?
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

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

Παράθεση από: nbasd στις 07 Ιαν 2010, 09:40:02 ΜΜ
Φίλοι γεια σας

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

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

i <--1
Διάβασε χ
Όσο i <= 10 επανάλαβε
    Αν Α[ι]  =  x τότε
    θέση <-- i
    i <-- 12
    αλλιώς
    i <-- i + 1
    Τέλος_Αν
Τέλος_Επανάληψης
Αν  i=12 τότε
εμφάνισε θέση
αλλιώς
εμφάνισε ''Δεν βρέθηκε το στοιχείο''
Τέλος_αν

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

gthal

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

Εγώ παρουσίασα πρώτα έναν αλγόριθμο χωρίς λογική μεταβλητή, για να "εξασφαλίσω" όσους "φρικάρουν" με αυτές.
Δεδομένου ότι χρειαζόμαστε μια μεταβλητή θ για τη θέση του ζητούμενου, εξετάζουμε την τιμή της και όταν αλλάξει (από 0) διακόπτουμε:
θ<--0
ι<--1
Οσο ι<=Ν και θ=0 επανάλαβε
   Αν Α[ι]=χ τότε
      θ<-- ι
   τέλος_αν
   ι <-- ι+1
τέλος_επανάληψης
Αν θ>0 τότε
  εμφάνισε 'βρέθηκε στη θέση', θ
Αλλιώς
  εμφάνισε 'δεν βρέθηκε'
τέλος_αν

Στη συνέχεια παρουσίασα τον αλγόριθμο του βιβλίου, που είναι κάπως έτσι (αν δεν απατώμαι):
βρέθηκε<--ψευδής
θ<--0
ι<--1
Οσο ι<=Ν και βρέθηκε=ψευδής επανάλαβε
   Αν Α[ι]=χ τότε
      θ<-- ι
      βρέθηκε<--αληθής
   τέλος_αν
   ι <-- ι+1
τέλος_επανάληψης
Αν βρέθηκε=αληθής τότε
  εμφάνισε 'βρέθηκε στη θέση', θ
Αλλιώς
  εμφάνισε 'δεν βρέθηκε'
τέλος_αν

Σ' αυτό το σημείο οι ίδιοι οι μαθητές παρατήρησαν ότι η χρήση και της θ και της βρέθηκε είναι πλεοναστική.
Είπα ότι ναι, αρκεί να σταματήσουμε το ι όταν βρεθεί το στοιχείο , και έτσι φτιάξαμε τον -κατά τη γνώμη μας- πιο "κομψό" αλγόριθμο:
βρέθηκε<--ψευδής
ι<--1
Οσο ι<=Ν και βρέθηκε=ψευδής επανάλαβε
   Αν Α[ι]=χ τότε
      βρέθηκε<--αληθής
   αλλιώς
      ι <-- ι+1
   τέλος_αν
τέλος_επανάληψης
Αν βρέθηκε=αληθής τότε
  εμφάνισε 'βρέθηκε στη θέση', ι
Αλλιώς
  εμφάνισε 'δεν βρέθηκε'
τέλος_αν

Ποια είναι η γνώμη σας για τους 3 αυτούς αλγόριθμους;
Φιλικά,
Γιώργος Θαλασσινός

andreas_p

Και οι 3 είναι σωστοί.
Απλά στους αλγορ. 1,2 θα μπορούσες να αποφύγεις την περιττή αύξηση του ι .

toufeki

Συμφωνώ σε γενικές γραμμές και με τον Ευριπίδη και με τον συνάδελφο Δημήτρη (dimitrios67).
Συμφωνώ διότι μέσα στα περιορισμένα χρονικά-χωρικά περιθώρια διδασκαλίας ενός πανελλαδικώς εξεταζομένου μαθήματος δεν υπάρχουν πολλά περιθώρια πλουραλισμού (παιδαγωγικά και διδακτικά απαράδεκτο).
Έχω να επισημάνω επιπροσθέτως τα παρακάτω:
1. Εξεταστέα ύλη: http://www.aepp.edu.gr/index.php?module=Content&func=view&pid=6
2. Η δομή αναζήτησης βρίσκεται στο κεφ. 3. (3.6) το οποίο είναι μέσα στην ύλη.
3. Τα κριτήρια αξιολόγησης προγράμματος βρίσκονται στο κεφ. 14. 14.1.1 Απλότητα - τυπικότητα. το οποίο είναι εκτός ύλης.
4. Η ανάλυση αλγορίθμων στο κεφ.5 είναι εκτός ύλης.

Ρωτώ λοιπόν τα εξής:
1. Πως και πότε διδάχτηκε ο μαθητής την απλότητα και τυπικότητα στον προγραμματισμό. (σύμφωνα με την ύλη πάντα, διότι κάποιοι καθηγητές έχουν προνοήσει και το διδάξανε στα παιδιά, οι υπόλοιποι όμως που δεν το διδάξανε έπραξαν σωστά ή λανθασμένα;).
2. Με ποιο δικαιολογητικό ο βαθμολογητής θα κόψει βαθμούς σε κάποιον μαθητή που θα γράψει ένα "κόλπο"(που δουλεύει) στις εξετάσεις; (αφού το κεφ 14 είναι εκτός ύλης).
3. Υπάρχει δυνατότητα για ολοκληρωμένη διδακτική προσέγγιση στο αντικείμενο του προγραμματισμού όταν η ύλη τεμαχίζεται όπως κάποτε οι Άγγλοι-Γάλλοι κλπ τεμάχισαν την Αφρική και οι καημένοι Αφρικανοί ακόμα σκοτώνονται μεταξύ τους.

Σημ: Δεκτές όλων των τύπων οι βολές. Μόνο προειδοποιείστε με για να φορέσω κανένα κράνος. >:D


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

Και εμένα δεν μου αρέσει η χρήση του i έξω από το βρόχο για να δείχνει τη θέση του στοιχείου. Αυτό το έκανε και o toufeki και ο gthal (στην 3η λύση)... Ίσα ίσα που δεν μου φαίνεται κομψό κάτι τέτοιο...  Συμφωνώ με τον Ευριπίδη ότι η κάθε μεταβλητή πρέπει να χρησιμοποιείται για έναν μόνο σκοπό. Τόσο από διδακτικής άποψης όσο και από προγραμματιστικής!

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

Από προγραμματιστικής άποψης, τι πιστεύετε ότι είναι πιο σημαντικό; Να γλυτώσουμε κάποια λίγα bytes από τη μείωση των μεταβλητών, ή να δημιουργηθεί το πρόγραμμα σε λιγότερο χρόνο, να είναι πιο σταθερό, να μπορεί να τροποποιείται/επεκτείνεται πιο εύκολα, να περιέχει επαναχρησιμοποιήσιμο κώδικα, κλπ. Η μείωση μιας μεταβλητής δεν συνεπάγεται ούτε πιο γρήγορα εκτελέσιμο πρόγραμμα, ούτε μείωση της πολυπλοκότητας...

Ας μην βλέπουμε τον αλγόριθμο αποσπασματικά αλλά ας τον φανταζόμαστε ενταγμένο σε έναν πολύ μεγαλύτερο αλγόριθμο. Όλα τα "πραγματικά" προγράμματα αποτελούνται από χιλιάδες γραμμές κώδικα, που μπορεί να έχουν γραφτεί από περισσότερους του ενός προγραμματιστές!  Π.χ. για την σειριακή αναζήτηση, μπορεί η θέση στην οποία βρέθηκε το στοιχείο να χρειαστεί και μετά από καμιά 500-αριά γραμμές κώδικα. Είναι σχεδόν σίγουρο ότι ο προγραμματιστής και έχει ξεχαστεί και θα έχει ξαναχρησιμοποιήσει το i ως μετρητή και κάπου αλλού. Άρα η θέση θα έχει πλέον χαθεί. Όπως είπε και ο dimitrios67 αυτό σίγουρα θα κάνει πιο πολύπλοκα τα πράγματα στο debugging. Για ποιο λόγο να μη χρησιμοποιήσουμε μία ξεχωριστή μεταβλητή; Με αυτόν τον τρόπο ο κώδικας θα είναι περισσότερο μεταφέρσιμος. Ή θα μπορεί να χωριστεί πιο εύκολα σε υποπρογράμματα.

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

Αν έχει γίνει ήδη προεργασία με λογικές μεταβλητές κατά τη διδασκαλία των επαναληπτικών δομών (π.χ. https://alkisg.mysch.gr/steki/index.php?topic=2373.0), τότε δεν θα "φρικάρουν" με αυτές. Εγώ για να εισάγω τον αλγόριθμο της σειριακής αναζήτησης περνάω από τα παρακάτω βήματα σε συνεργασία με τους μαθητές:

Αρχικά με Για:

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


Όμως αν βρεθεί γιατί να κάνει στη συνέχεια περιττούς ελέγχους; Άρα πρέπει να εγκαταλείψουμε την Για: Μετατροπή σε Όσο που ξέρουν ήδη να την κάνουν:

βρέθηκε <- ψευδής
ι<- 1
Όσο ι<= Ν επανάλαβε
   Αν Α[ι]=χ τότε
      θ<- ι
      βρέθηκε <- αληθής
  Τέλος_αν
  ι<- ι+1
Τέλος_επανάληψης


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

βρέθηκε <- ψευδής
ι<- 1
Όσο ι<= Ν και βρέθηκε=ψευδής επανάλαβε
   Αν Α[ι]=χ τότε
      θ<- ι
      βρέθηκε <- αληθής
  Τέλος_αν
  ι<- ι+1
Τέλος_επανάληψης


Για όλες τις περιπτώσεις το παρακάτω νομίζω ότι είναι μια χαρά:

Αν βρέθηκε=αληθής τότε
  εμφάνισε 'βρέθηκε στη θέση', θ
αλλιώς
  εμφάνισε 'δεν βρέθηκε'
τέλος_αν


Τους θυμίζω και το εναλλακτικό (  ;)  ):

βρέθηκε <- ψευδής
ι<- 1
Όσο ι<= Ν και όχι βρέθηκε επανάλαβε
   Αν Α[ι]=χ τότε
      θ<- ι
      βρέθηκε <- αληθής
  Τέλος_αν
  ι<- ι+1
Τέλος_επανάληψης

Αν βρέθηκε τότε
  εμφάνισε 'βρέθηκε στη θέση', θ
αλλιώς
  εμφάνισε 'δεν βρέθηκε'
τέλος_αν

... (το έχουμε ξανακουβεντιάσει αυτό: https://alkisg.mysch.gr/steki/index.php?topic=2476.0) χωρίς όμως να επιμένω αφού και το βιβλίο δεν ασχολείται. Τους λέω μάλιστα καλύτερα να μην το χρησιμοποιήσουν και έχουμε ατυχήματα!

Το ότι το ι αυξάνει κατά ένα (για andreas_p) στο τέλος παρόλο που βρέθηκε, το λέμε με τα παιδιά, δεν δα και κακό (περισσότερο κακό είναι το Αλλιώς!), μου φαίνεται όμως καλύτερο αφού έτσι θυμίζει περισσότερο την Για. Σε αυτό αν θυμάμαι καλά o evry είχε αναφερθεί παλιότερα και το είχε χαρακτηρίσει καταραμένο, πράγμα στο οποίο συμφωνώ.

Επίσης το ότι το θ δεν παίρνει αρχική τιμή το 0 δεν είναι κακό αν όντως χρησιμοποιηθεί η μεταβλητή Βρέθηκε για τον έλεγχο στο τέλος. Τα λέμε όλα αυτά, ένα ποσοστό των μαθητών τα καταλαβαίνει όλα, και κλείνουμε λέγοντας "ΟΚ παιδιά ο αλγόριθμος είναι αυτός που έχει και το βιβλίο και πρέπει να τον ξέρετε!!!    8) "

toufeki

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

Το ξαναλέω. Δεν πρόκειται να πείσω τους μαθητές ότι η λύση που προτάθηκε είναι η ιδανικότερη γιατί πολύ απλά δεν είναι και δεν είναι για τους λόγους που λέτε και εσείς. 
Το Θέμα δεν είναι τι συμφωνούμε μεταξύ μας(που δε γίνεται να διαφωνούμε σ'αυτά γιατί πολύ απλά είναι αντικειμενικά στοιχεία της επιστήμης της Πληροφορικής-βέβαια παλαιότερα δεν ήταν[πχ χρήση goto]).
Το θέμα είναι ποια είναι η ύλη που διδάσκεται ο μαθητής σύμφωνα με τους φωστήρες του υπουργείου.

Ως αναφορά τώρα στη διδακτική , εκτός από τον πλουραλισμό υπάρχουν και τα αντιπαραδείγματα, υπάρχει και η δια θεματικότητα:
1. Μέσα από τις παραπάνω 2 δομές που πρότεινα η μία χρησιμοποιεί "όσο" και η άλλη "μέχρι".
2. Καταλαβαίνει μέσα από αυτήν τη δομή την ανικανότητα του υπουργείου να τον διδάξει σωστά(Μελέτη περίπτωσης: Όπως έγινε και στην περίπτωση που περιέγραψε ο gthal αν κάποιος μαθητής προτείνει μια λύση που λειτουργεί αλλά δεν ικανοποιεί κάποια από τα κριτήρια της αξιολόγησης προγράμματος ο καθηγητής δεν θα πρέπει να αφιερώσει διδακτική ώρα για να του το εξηγήσει; Στην περίπτωση όμως αυτή δεν διδάσκει θέμα εκτός ύλης; Εάν κάποιος άλλος μαθητής διακόψει τον καθηγητή του και του πεί ότι αυτά που μας λές είναι εκτός ύλης τότε ο καθηγητής πως πρέπει να το διαχειριστεί;)

Ακούγονται πεζά όλα αυτά αλλά πεζή είναι και η πραγματικότητα στο ελληνικό εκπαιδευτικό σύστημα με όλα αυτά τα παράλογα που συμβαίνουν.

gthal

Ευχαριστώ για τις απαντήσεις - με ενδιαφέρουν απόψεις από διδακτικής/παιδαγωγικής σκοπιάς. Είναι σωστοί - εντάξει. Γίνονται και καλύτεροι - Ναι. Όμως ποιες χρησιμοποιείτε εσείς? όλες ? μία από αυτές ? κάποια άλλη ?
Ποια συν/πλην βρίσκετε σε κάθε μια ?

Ο κ. Αδαμόπουλος είναι πολύ μέσα στο πνεύμα της ερώτησης και στα δύο posts !!  :) Ευχαριστώ ιδιαίτερα !
Στο δεύτερο post βρίσκω την προσέγγιση πολύ κοντινή στη διαισθητική αντίληψη των μαθητών - ότι πρέπει δηλαδή για την παρουσίαση της τελικής μορφής της σειριακής (θα δυσκολευόμουν βέβαια να δικαιολογήσω γιατί χρησιμοποιώ την βρέθηκε όταν αναζητώ με Για - επιμένω ότι πλεονάζει)

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

βρέθηκε<--ψευδής
θ<--1
Οσο θ<=Ν και βρέθηκε=ψευδής επανάλαβε
   Αν Α[θ]=χ τότε
      βρέθηκε<--αληθής
   αλλιώς
      θ <-- θ+1
   τέλος_αν
τέλος_επανάληψης
Αν βρέθηκε=αληθής τότε
  εμφάνισε 'βρέθηκε στη θέση', θ
Αλλιώς
  εμφάνισε 'δεν βρέθηκε'
τέλος_αν

χε χε, αστειεύομαι, αλλά μάλλον τώρα δεν κινδυνεύει τόσο, έτσι δεν είναι ;
Προσπαθώ να πω πάντως ότι ναι, κάθε μεταβλητή να έχει το ρόλο της, όμως δεν παραβιάζεται ο ρόλος του ι εδώ. Και το ι θέση είναι : η εκάστοτε θέση στον πίνακα. Όπου έμεινε, εκεί είναι το ζητούμενο στοιχείο.

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

Φιλικά,
Γιώργος Θαλασσινός

gthal

Α, ξέχασα:
1)  τι έχει χαρακτηρίσει καταραμένο ο evry και γιατί   ?
2)  θυμίζω ότι την εναλλακτική "Αν βρέθηκε τότε" τη λατρεύω   :)
Φιλικά,
Γιώργος Θαλασσινός

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

Παράθεση από: gthal στις 09 Ιαν 2010, 06:55:05 ΜΜ
Ο κ. Αδαμόπουλος...

Καλύτερα Νίκος για να αισθάνομαι πιο όμορφα!


Παράθεση από: gthal στις 09 Ιαν 2010, 06:55:05 ΜΜ
(θα δυσκολευόμουν βέβαια να δικαιολογήσω γιατί χρησιμοποιώ την βρέθηκε όταν αναζητώ με Για - επιμένω ότι πλεονάζει)

Γιατί μας αρέσουν οι λογικές μεταβλητές! Και είναι πιο κοντά στην ανθρώπινη σκέψη! Είχα αναφέρει ένα παιχνίδι με τους μαθητές στο https://alkisg.mysch.gr/steki/index.php?topic=2373.0
Ε λοιπόν σε ένα παρόμοιο παιχνίδι για τη σειριακή αναζήτηση, αν το αναζητούμενο στοιχείο τελικά δεν υπάρχει, οι μαθητές θα θυμούνται ότι "δεν βρέθηκε" (ή "όχι βρέθηκε" ή "βρέθηκε=ψευδής") και όχι ότι "θ=0" (!!!)


Παράθεση από: gthal στις 09 Ιαν 2010, 07:02:11 ΜΜ
Α, ξέχασα:
1)  τι έχει χαρακτηρίσει καταραμένο ο evry και γιατί   ?
2)  θυμίζω ότι την εναλλακτική "Αν βρέθηκε τότε" τη λατρεύω   :)

Χμμ... Για να θυμηθώ κι εγώ: Google: [Στέκι πληροφορικών evry αλλιώς καταραμένο]. ΟΚ, νάτο:
https://alkisg.mysch.gr/steki/index.php?topic=2473.msg20281#msg20281

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

Παράθεση από: toufeki στις 09 Ιαν 2010, 04:47:09 ΜΜ
Με ποιο δικαιολογητικό ο βαθμολογητής θα κόψει βαθμούς σε κάποιον μαθητή που θα γράψει ένα "κόλπο"(που δουλεύει) στις εξετάσεις;

Παναγιώτη δεν νομίζω να είπε κανείς σε αυτό το topic ότι θα κόψει μονάδες από ένα τέτοιο κόλπο ή αν ένας μαθητής παρουσιάσει άλλη λύση από την αναμενόμενη. Αν δεις στα διάφορα topics, έχουν γίνει ακόμα και συζητήσεις για το όντως πρέπει να κοπούν μονάδες σε περίπτωση που ο μαθητής κάνει αναζήτηση απλά με χρήση της Για, σε περιπτώσεις που η εκφώνηση δεν ορίζει σαφώς ότι δεν πρέπει να γίνουν περιττοί έλεγχοι... Οι όποιες ενστάσεις έχουν να κάνουν με την σκοπιμότητα μιας τέτοιας διδακτικής προσέγγισης του αλγορίθμου... αλλά και πάλι μην στενοχωριέσαι! Όλοι μας το ψάχνουμε το θέμα. Κανείς δεν είναι (ή δεν θα έπρεπε να είναι) απόλυτος ότι ντε και καλά είναι σωστός...

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

Παράθεση από: gthal στις 09 Ιαν 2010, 06:55:05 ΜΜ
Αν λεγόταν αλλιώς όμως...

βρέθηκε<--ψευδής
θ<--1
Οσο θ<=Ν και βρέθηκε=ψευδής επανάλαβε
   Αν Α[θ]=χ τότε
      βρέθηκε<--αληθής
   αλλιώς
      θ <-- θ+1
   τέλος_αν
τέλος_επανάληψης
Αν βρέθηκε=αληθής τότε
  εμφάνισε 'βρέθηκε στη θέση', θ
Αλλιώς
  εμφάνισε 'δεν βρέθηκε'
τέλος_αν

χε χε, αστειεύομαι, αλλά μάλλον τώρα δεν κινδυνεύει τόσο, έτσι δεν είναι ;
Προσπαθώ να πω πάντως ότι ναι, κάθε μεταβλητή να έχει το ρόλο της, όμως δεν παραβιάζεται ο ρόλος του ι εδώ. Και το ι θέση είναι : η εκάστοτε θέση στον πίνακα. Όπου έμεινε, εκεί είναι το ζητούμενο στοιχείο.


Σίγουρα έχεις κάνει και το εξής (εύρεση max και θέσης αυτού στον πίνακα - αρκεί ο max να είναι μοναδικός):

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

(ή με παρόμοιο τρόπο)

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

gthal

Εντάξει λοιπόν Νίκο  ;)
ΠαράθεσηΕίχα αναφέρει ένα παιχνίδι με τους μαθητές στο https://alkisg.mysch.gr/steki/index.php?topic=2373.0
Ναι, το είχα διαβάσει αυτό κάποια στιγμή και πρέπει να σου πω ότι από τότε το χρησιμοποιώ κι εγώ, και νομίζω μ' αυτό κερδίζω πολύ χρόνο ακόμα και με τους πιο "αργούς" μαθητές !
Αλλά και εκεί θα με ενοχλούσε κάποιος και να τους μετράει και να χρησιμοποιεί τη λογική μεταβλητή - πλεονασμός. Μου αρέσει να καταλαβαίνουν πότε έχουν αρκετά "εφόδια" και να μην κουβαλάνε περιττό "βάρος" από ανασφάλεια ή άγνοια. Γιαυτό και η στήριξη
ΠαράθεσηΓιατί μας αρέσουν οι λογικές μεταβλητές! Και είναι πιο κοντά στην ανθρώπινη σκέψη!
με καλύπτει αρκετά. Αν ξέρουμε ότι  το θ φτάνει αλλά έτσι μας αρέσει καλύτερα, οκ.

ΠαράθεσηΧμμ... Για να θυμηθώ κι εγώ: Google: [Στέκι πληροφορικών evry αλλιώς καταραμένο]. ΟΚ, νάτο:
Εντυπωσιακό! Κι επίσης εντυπωσιακό ότι το τελευταίο σχόλιό σου εκεί είναι "όποιος ψάχνει βρίσκει" :)
(καλά, είναι γεγονός ότι δεν ξέρω να ψάχνω :(  ...
γιαυτό και ρωτάω περί αναζήτησης   ;)  )
Φιλικά,
Γιώργος Θαλασσινός

evry

Ο τρόπος που προτιμώ είναι ο παρακάτω, στον οποίο η μεταβλητή θέση παίζει διττό ρόλο αλλά στην περίπτωση αυτή δεν θεωρώ ότι είναι κακό από διδακτικής άποψης. Μου αρέσει αυτός ο τρόπος γιατί μπορώ πολύ πιο εύκολα να οδηγήσω έναν μαθητή εκεί, παρά στην έκδοση με τη λογική μεταβλητή
θέση<--0
ι<--1
Οσο ι<=Ν και θέση=0 επανάλαβε
   Αν Α[ι]=χ τότε
        θέση=ι
   τέλος_αν
   ι <-- ι + 1
τέλος_επανάληψης
Αν θέση>0 τότε
  εμφάνισε 'βρέθηκε στη θέση', θέση
Αλλιώς
  εμφάνισε 'δεν βρέθηκε'
τέλος_αν

φυσικά ακόμα καλύτερα προτιμώ το παρακάτω αλλά.....

for (i=0; i<N && A[i]!=key; i++) ;

για λόγους συντομίας
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

gthal

Είμαι συνέχεια ένα post πίσω ... ουφ !
ΠαράθεσηΑν χρησιμοποιήσουμε το i για να σαρώσουμε τον πίνακα και το θ για να μας δείχνει τη θέση, τότε γιατί στη σειριακή αναζήτηση να χρησιμοποιήσουμε άλλες μεταβλητές για τον ίδιο σκοπό
Ναι, δεν το υποστηρίζω - για πλάκα το έγραψα έτσι.
Θέλω να καταλαβαίνουν ότι το ι μας δείχνει και τη θέση.

Όπως πχ στο διαχωρισμό, όπου κάθε πίνακας έχει το δείκτη του (ας πούμε ότι j είναι ο δείκτης στον πίν. Β)
Αν ρωτήσεις "και πόσα στοιχεία πέρασαν στον Πίνακα Β;"  πολλοί μαθητές θα βάλουν έναν μετρητή για να τα μετρήσουν.  Θέλω οπωσδήποτε να καταλάβουν ότι αυτό είναι περιττό γιατί ο j άμεσα ή έμμεσα (ανάλογα με την υλοποίηση) θα τους δώσει και το πλήθος των στοιχείων.

ή ας πούμε, σε συμμετρίες, ότι δε χρειάζονται άλλον δείκτη διότι το συμμετρικό του i είναι το N+1-i (ότι μας αρκεί το i γιατί υπάρχει άμεση εξάρτηση)

ΥΓ.
Παράθεση
Αλλιώς
   i <- i + 1
θα συμπέρανα ότι ο μαθητής απλά αντιγράφει τον αλγόριθμο του βιβλίου και δεν έχει καταλάβει πως δουλεύει (πιθανότατα)
Α, ώστε το βιβλίο την κάνει με την αλλιώς ... ε, εκεί και αν είναι περιττό το position  !!!
Φιλικά,
Γιώργος Θαλασσινός

gthal

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

με το δεύτερο κώδικα συμφωνώ, κι εγώ το προτιμώ, γιαυτό και προτιμούμε άλλες γλώσσες (πλην της ΓΛΩΣΣΑΣ)  υποθέτω  ;)
Φιλικά,
Γιώργος Θαλασσινός

toufeki

#28
Ευριπίδη θα ήθελα να ρωτήσω για τον πίνακα στοιχείων στον 2ο κώδικα:
Ο πίνακας έχει Ν θέσεις ή Ν+1(0,1,2...,Ν);

Σημ: ΟΚ το ; (semicolon) ;)

evry

 Ν θέσεις από 0-->Ν-1

@gthal
Για πες καμιά τέτοια ερώτηση θεωρίας για να καταλάβω τι εννοείς
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

gthal

Δε θυμάμαι πού το είχα συναντήσει. Μπορεί από διαγώνισμα συναδέλφου στο web, ή θέμα πανελληνίων (αν ήταν, οι παλιότεροι θα το θυμάστε) ή βιβλίο.

Ποιος ο ρόλος της λογικής μεταβλητής στης σειριακή αναζήτηση;

ή σε Σ-Λ
Στη σειριακή αναζήτηση χρησιμοποιείται μια λογική μεταβλητή για να διακοπεί ο βρόχος όταν βρεθεί το στοιχείο

τα οποία με έχουν κάνει επίσης να αναρωτιέμαι αν "σειριακή αναζήτηση" θα λέω μόνο αυτή με την όσο
και τότε αυτή με τη Για, που τη χρησιμοποιούμε για να βρούμε όλα τα στοιχεία που ισούνται με το ζητούμενο πώς θα τη λέω? δεν είναι σειριακή αυτή ?
Φιλικά,
Γιώργος Θαλασσινός

ntzios kostas

Πιστεύω ότι πρέπει να λες και τις δύο. Δεν ξέρω τι ερώτηση πάνω στην σειριακή αναζήτηση μπορεί να πέσει, αλλά πρέπει να είσαι καλυμμένος.

Και εγώ όταν διδάσκω την σειριακή αναζήτηση τη διδάσκω ξεκινώντας από την Για χρησιμοποιώντας την λογική μεταβλητή.

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


Στη συνέχεια την δομή την μετατρέπουμε σε όσο και στη συνθήκη βάζουμε και τη βρέθηκε = ψευδής, ώστε να τερατίζει όταν το στοιχείο βρεθεί:

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


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

dimitrios67

Τελικά ο Νικος ο Αδαμόπουλος συμφωνει περισσότερο μαζί μου....πιστεψτε με ομως συναδελφοι, σε ενα μεγαλο project με χιλιαδες γραμμες κώδικα και δεκαδες προγραμματιστες, ο προγραμματισμος ειναι ευκολη δουλεια, αυτο που ειναι δυσκολο ειναι το software engineering. Εκει εαν γινει ενα λαθος, τοτε πολυ δυσκολα διορθωνεται, αλλα και κοστιζει πολύ περισσοτερο από ενα λαθος στον κώδικα.
Επιμενω πως πρεπει να διδασκουμε αυτο που ειναι "programmaticaly" correct. Αλλωστε ετσι ειμαστε και πιο συνεπεις στο σκοπό του μαθηματος που ειναι η οργανωμενη σκεψη, και οχι απλά ενα προγραμμα που απλά "τρεχει"....
καλή χρονιά....

gpapargi

Γιώργο (Θαλασσινέ) δυστυχώς τα περισσότερα ΣΛ που βλέπω γύρω μου είναι απαράδεκτα. Σε καμία περίπτωση δεν πρέπει να θεωρούμε ότι οι απαντήσεις που τα συνοδεύουν αποτελούν σημείο αναφοράς για τη θεωρία.
Σειριακή αναζήτηση είναι η αναζήτηση που ψάχνει τα στοιχεία με τη σειρά και έρχεται σε αντίθεση πχ με τη δυαδική αναζήτηση που χρησιμοποιεί την υπάρχουσα ταξινόμηση. Οτιδήποτε παίρνει σβάρνα τα στοιχεία και τα ψάχνει με τη σειρά είναι σειριακό.
Το αν θα γίνει με λογική μεταβλητή ή με ακέραια που αλλάζει από 0 σε 1 ή με Για αντί για Όσο κλπ αφορά την υλοποίηση και όχι τον αλγόριθμο. 

Τέτοια ΣΛ πρέπει απλώς να τα αγνοούμε και όχι με βάση αυτά να αλλάζουμε τις απόψεις μας.

gthal

Στηριζόμαστε δηλαδή από το βιβλίο, ότι η σειριακή δεν υλοποιείται απαραίτητα με λογική μεταβλητή ή/και την Όσο ;
(τώρα που το ξανακοιτάζω, νομίζω πως ναι)
Φιλικά,
Γιώργος Θαλασσινός

gpapargi

Κοίτα, δε με ενδιαφέρει το βιβλίο τι λέει. Με ενδιαφέρει το πως έχουν τα πράγματα. Είναι πάγια θέση μου ότι το βιβλίο το διαβάζουμε εμείς οι καθηγητές για να δούμε ποια είναι η ύλης μας έτσι ώστε να την πούμε με δικά μας λόγια στους μαθητές. Δε μαθαίνουμε πληροφορική από το σχολικό βιβλίο.
Η σειριακή αναζήτηση λέγεται και ακολουθιακή (sequential) γιατί τα ελέγχει ένα ένα με τη σειρά (ακολουθιακά). Λέγεται και γραμμική (linear) γιατί έχει πολυπλοκότητα ν δηλαδή γραμμική (λόγω του ότι η f(x)=x έχει γραφική παράσταση μια ευθεία γραμμή). Από τη στιγμή που αυτή είναι η βασική της ιδέα, είτε βάλεις λογική μεταβλητή, είτε υλοποίησεις το flag με ακέραιο, είτε το κάνεις με Για, είτε με Όσο, είτε με μέχρις ότου σειριακή είναι γιατί πάλι με τη σειρά τα παίρνει (σε αντίθεση με τη δυαδική).

gthal

Φίλε Γιώργο,
σε νιώθω λίγο αγανακτισμένο γιαυτό αισθάνομαι την ανάγκη να διευκρινίσω ότι δεν διαβάζω το βιβλίο για να μάθω πληροφορική ούτε αλλάζω τις απόψεις/γνώσεις μου επειδή κάπου είδα κάτι διαφορετικό.
Πιστεύω ότι φαίνεται και από τον τρόπο που ρωτάω, ότι συμφωνώ μαζί σου πως "Οτιδήποτε παίρνει σβάρνα τα στοιχεία και τα ψάχνει με τη σειρά είναι σειριακό"

"Τότε γιατί ρωτάς; Γιατί σε ενδιαφέρει τόσο τι γράφει και τι στηρίζει το βιβλίο;", θα μου πεις..

Ρωτάω γιατί ο καθηγητής μπορεί να έχει ολόκληρη την εικόνα (αν μπορούμε να το πούμε κι αυτό) αλλά να πρέπει να παρουσιάσει μόνο ένα μικρό παράθυρο στους μαθητές, γιατί αυτό χωράει στην ύλη τους ή στο μυαλό τους.

Όταν στα μαθηματικά, πριν μάθουν τους αρνητικούς, λέμε ότι δεν γίνεται η αφαίρεση αν ο αφαιρετέος είναι μεγαλύτερος από το μειωτέο, λέμε ψέματα, έτσι δεν είναι; Είναι γιατί δεν το ξέρουμε; Γιατί μάθαμε μαθηματικά από τα βιβλία του Δημοτικού;

Μέχρι να διαβασω τη συζήτηση εδώ: https://alkisg.mysch.gr/steki/index.php?topic=2415.0
εγώ έκοβα το κεφάλι μου ότι ουρά και στοίβα είναι δυναμικές. Έτσι το ξέρω, έτσι το έχω στο μυαλό μου. 'Ομως, ικανός αριθμός επιχειρημάτων (μέσα από το βιβλίο) από συναδέλφους με έπεισαν ότι για την ύλη της ΑΕΠΠ οι δομές αυτές είναι στατικές. Έτσι θα τις διδάξω λοιπόν (κι ας είναι αγαπημένα μου πραδείγματα δυναμικών δομών). Θα δώσω στιγμαία και τη μεγλύτερη εικόνα (περί δυναμικής υλοποίησης) αλλά θα τους πω ότι "εσείς θα το μάθετε όπως το λέει το βιβλίο".

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

Ελπίζω να με καταλαβαίνεις...

ΥΓ.  Όσο για το ερώτημά μου, έχει πλέον απαντηθεί. Αυτά που υποστηρίζεις κι εσύ κι εγώ, δεν διαφωνούν με το βιβλίο, το οποίο εμένα (που θέλω να μένω κοντά στις γραμμές του) με ανακουφίζει   :angel:
Φιλικά,
Γιώργος Θαλασσινός

gpapargi

Γιώργο η αγανάκτηση δεν είναι μαζί σου... προφανώς. Ούτε πιστεύω ότι μαθαίνει κανείς πληροφορική από το βιβλίο.
Απλά η νοοτροπία να αντιμετωπίζουμε το βιβλίο σαν ευαγγέλιο, αν και αναμενόμενη λόγω εξετάσεων, με ενοχλεί αφάνταστα. Με κάνει να αισθάνομαι ότι δεν είμαι ούτε επιστήμονας, ούτε δάσκαλος και θα ήθελα πολύ να είμαι και τα 2. Με κάνει να πιστεύω ότι δε γίνεται ταυτόχρονα να διδάσκεις σοβαρά και ταυτόχρονα να προετοιμάζεις για τις εξετάσεις. Δεν μπορώ να μην αγανακτώ με αυτή την αίσθηση. Αν δεις τη θέση μου και στο link που έστειλες για τις δομές, πάλι την ίδια στάση τηρώ. Και κάθε φορά που ακούω «η στοίβα είναι στατική» με πιάνει απελπισία. Πετάμε στα σκουπίδια ότι μάθαμε. Πετάω τις ώρες που έφαγα για να κάνω τη στοίβα μια στατική (με πίνακα) και μια δυναμική (με δείκτες) μόνο και μόνο επειδή κάποιος ερμηνεύει «κάπως» ένα σχολικό βιβλίο. Αν ρωτήσεις τους ίδιους τους συγγραφείς θα σου πουν αυτό που λέω. Εμείς τα γράφουμε τα βιβλία αφού πρώτα δούμε ποιο είναι το σωστό. Δεν ορίζεται ως σωστό αυτό που λέει το βιβλίο.  Άμα θέλουμε αλλάζουμε τα βιβλία και γράφουμε άλλα.

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

ΥΓ
Στο γιο μου που είναι πρωτάκι, για τους αρνητικούς του λέω το εξής: «αν η θερμοκρασία είναι 2 βαθμοί και κατέβει κατά 3 πόση θα γίνει;» Και απαντάει «1 κάτω από το μηδέν». Θέλω να πω πως το ότι δεν με ενδιαφέρει τι λέει το βιβλίο αλλά πως έχουν τα πράγματα, είναι για μένα τρόπος ζωής. Θα χάσουμε λίγο σε τυποποίηση αλλά θα κερδίσουμε σε βάθος κατανόησης.

Vangelis

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

gthal

Παράθεση από: gpapargi στις 12 Ιαν 2010, 03:35:13 ΜΜ
Με κάνει να πιστεύω ότι δε γίνεται ταυτόχρονα να διδάσκεις σοβαρά και ταυτόχρονα να προετοιμάζεις για τις εξετάσεις.
Δε θα μπορούσα να συμφωνώ περισσότερο.
Το ίδιο και με τον @Vangelis
Φιλικά,
Γιώργος Θαλασσινός

manpap

Ο 1ος μου αρέσει καλύτερα από τους άλλους δυο και προκύπτει αβίαστα με την παρακάτω λογική:
1: εύκολη αναζήτηση αν υπάρχει το χ στον πίνακα:
θέση<-0
Για ι απο 1 μεχρι Ν
Αν Α[ι]=χ τοτε
  θεση<-ι
τελος_αν
Τελος_Επαναληψης

2: επειδή θέλω να σταματήσω μόλις το βρω, τότε
α) Για σε Όσο με το ίδιο Αν, άρα
θέση<-0
ι<-1
Όσο ι<=Ν επαναλαβε
Αν Α[ι]=χ τοτε
  θεση<-ι
τελος_αν
ι<-ι+1
Τελος_Επαναληψης

β) προσθήκη στο Όσο 2ης συνθήκης τερματισμού
θέση<-0
ι<-1
Όσο ι<=Ν και θεση=0 επαναλαβε
Αν Α[ι]=χ τοτε
  θεση<-ι
τελος_αν
ι<-ι+1
Τελος_Επαναληψης

Όταν φτάσεις στην τελική λύση βάσει της παραπάνω λογικής, φαίνεται πιο σωστή από αυτή που παρουσιάζει το βιβλίο.
Από την άλλη αν αντιμετωπίζεις το πρόβλημα της αναζήτησης από το μηδέν, τότε η λογική της λύσης του βιβλίου με το ι<-ι+1 στο αλλιως ταιριάζει καλύτερα.
Προφανώς δεν υπάρχει περίπτωση σε άσκηση να θεωρούσαμε λάθος κάποια από αυτές (ούτε καν την 1η λύση που παραθέτω (με Για). Αν μπει θεωρία υποθέτω και πάλι ότι όλες οι λύσεις με το ΟΣΟ είναι αποδεκτές.
Συντηρώ το μυαλό μου ακοίμητο, λαγαρό, ανήλεο. Το αμολώ να παλεύει ακατάλυτα. Άλλο αργαστήρι να κάνω το σκοτάδι φως δεν έχω.
Ν. Καζαντζάκης

gthal

Ευχαριστώ Μανόλη.

Δεν κατάλαβα τι εννοείς εδώ
ΠαράθεσηΑπό την άλλη αν αντιμετωπίζεις το πρόβλημα της αναζήτησης από το μηδέν ...
Φιλικά,
Γιώργος Θαλασσινός

manpap

Συγνώμη για την καθυστέρηση στην απάντηση....
Εννοούσα ότι αν δεις την αναζήτηση από την αρχή χωρίς να έχεις υποψην σου την μεθοδολογία πινάκων και την μετατροοη ΓΙΑ σε ΟΣΟ, ταιριάζει καλύτερα η λογική
Αν χ = Α[ι] τοτε
το βρηκαμε κλπ
ΑΛΛΙΩΣ
πήγαινε στο επόμενο στοιχείο (ι<-ι+1)
ΤΕΛΟΣ_ΑΝ

πάντως εγώ όπως είπα προτιμώ το  ι<- ι+1 τελείως έξω από την ΑΝ
:)

ΥΓ. Ήταν που ήταν καθυστερημένη η τοποθέτησή μου στο θέμα .... ??? την έκανα και την ασάφειά μου. (έχω συνηθίσει από το βιβλίο ;)  )

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