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

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

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

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 τελείως έξω από την ΑΝ
:)

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

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