Σειριακή Αναζήτηση με "Για" αντι για "Οσο"

Ξεκίνησε από parantop, 04 Απρ 2007, 10:35:16 ΠΜ

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

parantop

Αντί του "κλασσικού" κώδικα:

ι <- 1
Το_βρηκες <- Ψευδές
Οσο ι <= Ν ΚΑΙ Το_βρηκες = Ψευδές επανάλαβε
  Αν Π[ι] = key τοτε
       Θεση <- ι
       Το_βρηκες <- Αληθές
   αλλιώς
       ι <- ι + 1
  Τελος_αν
Τελος_επαναληψης

Αν Το_Βρηκες = Αληθες τοτε
     Τυπωσε Θεση
αλλιώς
     Τυπωσε "Δεν το βρηκα"
Τελος_αν

Μπορούν τα παιδιά να χρησιμοποιήσουν τον κώδικα?

Για ι απο 1 μεχρι Ν
  Αν Π[ι] = key τοτε
       Θεση <- ι
       ι <- Ν+10
  Τελος_αν
Τελος_επαναληψης

Αν ι = Ν+1 τοτε
  Τυπωσε "Δεν το βρηκα"
αλλιώς
  Τυπωσε Θεση
Τελος_αν

Το χρησιμοποιείτε εσείς? Το είχα πει κάποια στιγμή σε κάποια παιδιά και τους άρεσε!

thanos_xg

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

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

Γενικά όπου χρειάζεται να διακόπτεται η επανάληψη πριν συμπληρωθεί το μέγιστο πλήθος επαναλήψεων καλό είναι να χρησιμποιούμε μόνο τις "Όσο" ή "Μέχρις_ότου"
Θανάσης Χ.

parantop

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

Υπάρχει κανείς διορθωτής εδώ, θα ήταν χρήσιμο να ακούσουμε την άποψή του.

andreas_p

Αποδεκτό  αλλά ΟΧΙ  με  ΓΙΑ.

Ι <- 1
Οσο  Ι<= Ν  επανάλαβε
  Αν Π[Ι]= key τοτε
       Θεση <- Ι
       Ι <- Ν+10
   αλλιώς
       Ι <- Ι+1
  Τελος_αν
Τελος_επαναληψης

Αν Ι = Ν+1 τοτε
  Εμφάνισε "Δε βρέθηκε"
αλλιώς
  Εμφάνισε  Θέση
Τελος_αν

!   με το  trick  I <- N+10   που θα μπορούσε να είναι και Ι <- Ν+2
! αποφεύγεις τη χρήση λογικής μεταβλητής.

Ανδρέας

Wizard

Θα μπορούσε να χρησιμοποιηθεί και η θέση

θέση <- 0
Ι <- 1
Οσο  Ι<= Ν και θέση=0 επανάλαβε
  Αν Π[Ι]= key τοτε
       θεση <- Ι
   αλλιώς
       Ι <- Ι+1
  Τελος_αν
Τελος_επαναληψης

Αν θέση=0 τότε
  Εμφάνισε "Δε βρέθηκε"
αλλιώς
  Εμφάνισε θέση
Τέλος_αν

andreas_p

Θα μπορούσε.

Άλλωστε κάθε πρόβλημα δε δέχεται μοναδική λύση - παρουσίαση.
Εκείνο που εξετάζουμε είναι η αλγοριθμική σκέψη και όχι οι τυποποιημένες διαδικασίες.

Ανδρέας

Wizard

Έχεις δίκιο, δεν είχε νόημα το post μου σε σχέση με το θέμα.

Παράθεση από: andreas_p στις 05 Απρ 2007, 10:20:09 ΠΜ
Θα μπορούσε.

Άλλωστε κάθε πρόβλημα δε δέχεται μοναδική λύση - παρουσίαση.
Εκείνο που εξετάζουμε είναι η αλγοριθμική σκέψη και όχι οι τυποποιημένες διαδικασίες.

Ανδρέας

Λάμπρος Μπουκουβάλας

σχετικά με ρώτησαν κι εμένα για το εξής:

πιστεύετε ότι λειτουργεί σωστά το παρακάτω;:

διαβασε κ
για ι από 1 μέχρι 10
διάβασε α[ι]
τέλος_επανάληψης
για ι από 1 μέχρι 10
αν κ=α[ι] τότε
ι <-- 11
τέλος_αν
τέλος_επανάληψης

ο σκοπός μου είναι να "εξομοιώσω" μια έξυπνη σειριακή αναζήτηση του βιβλίου, αλλά με "για"!
με το διάγραμμα όλα φαίνονται να λειτουργούν καλά!

ΠΙΣΤΕΥΩ ΟΤΙ ΔΕΝ ΥΠΑΡΧΕΙ ΚΑΝΕΝΑ ΑΠΟΛΥΤΩΣ ΠΡΟΒΛΗΜΑ!
ΣΥΜΦΩΝΩ ΜΕ ΤΟΝ andreas_p
Λάμπρος Μπουκουβάλας
MSc - MRes

http://blogs.sch.gr/lambrosbouk

Ο Θουκυδίδης  (που τον διαβάζουν οι ξένοι, αλλά όχι εμείς)  έγραφε: «Αταλαίπωρος τοις πολλοίς η ζήτησις της αληθείας, και επί τα ετοίμα μάλλον τρέπονται» (Ι, 20, 3). Οι περισσότεροι δηλαδή αναζητούν αβασάνιστα την αλήθεια και στρέφονται σε ό,τι βρίσκουν έτοιμο. Δεν προβληματίζονται...

Λάμπρος Μπουκουβάλας

στη πράξη δουλεύει μια χαρά!
μου θυμίζει το σχετικό link στο forum για το αν πρέπει τελικά να χρησιμοποιούμε διάβασε-εμφάνισε σε συναρτήσεις...
Λάμπρος Μπουκουβάλας
MSc - MRes

http://blogs.sch.gr/lambrosbouk

Ο Θουκυδίδης  (που τον διαβάζουν οι ξένοι, αλλά όχι εμείς)  έγραφε: «Αταλαίπωρος τοις πολλοίς η ζήτησις της αληθείας, και επί τα ετοίμα μάλλον τρέπονται» (Ι, 20, 3). Οι περισσότεροι δηλαδή αναζητούν αβασάνιστα την αλήθεια και στρέφονται σε ό,τι βρίσκουν έτοιμο. Δεν προβληματίζονται...

P.Tsiotakis

Το συζητάμε ταυτόχρονα και στο:
https://alkisg.mysch.gr/steki/index.php?topic=1206.new#new

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

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


Να κάνω αναζήτηση με Για το καταλαβαίνω, κάνω περιττά βήματα αλλά ΟΚ. Μετά είναι περίεργο να θέλω και να σταματήσω την εκτέλεσή του, ας μην το επέλεγα...

alkisg

Παράθεση από: Τσιωτάκης Παναγιώτης στις 31 Ιαν 2008, 09:51:48 ΜΜ
Ξέρετε αγαπητοί φίλοι, δεκάδες καθηγητές διαβάζουν χωρίς να συμμετέχουν τις συζητήσεις, και πιστεύω οτι προσφέρουμε κακή υπηρεσία και ειδικά σε αυτούς που ξεκινούν τώρα την δραστηριότητά τους στην εκπαίδευση, οδηγώντας τη συζήτηση σε λάθος κατευθύνσεις συνεχώς, σχετικά με την τελική τιμή του μετρητή του Για, τον τερματισμό βρόχου Για και άλλα τέτοια

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

Θα μπορούσαμε ίσως να φτιάξουμε ένα Wiki ή κάποια περιοχή εδώ στο φόρουμ, στην οποία θα βάζουμε τα "συμπεράσματα" των συζητήσεων;
Δηλαδή να λέμε στα νέα μέλη "οι συζητήσεις θεωρούνται αναξιόπιστες, μην τις λαμβάνετε υπ'όψη, για να δείτε τα σημεία στα οποία έχει καταλήξει η κοινότητα κοιτάξτε το Wiki";

pgrontas

Παράθεση από: alkisg στις 01 Φεβ 2008, 09:50:36 ΠΜ
Παράθεση από: Τσιωτάκης Παναγιώτης στις 31 Ιαν 2008, 09:51:48 ΜΜ
Ξέρετε αγαπητοί φίλοι, δεκάδες καθηγητές διαβάζουν χωρίς να συμμετέχουν τις συζητήσεις, και πιστεύω οτι προσφέρουμε κακή υπηρεσία και ειδικά σε αυτούς που ξεκινούν τώρα την δραστηριότητά τους στην εκπαίδευση, οδηγώντας τη συζήτηση σε λάθος κατευθύνσεις συνεχώς, σχετικά με την τελική τιμή του μετρητή του Για, τον τερματισμό βρόχου Για και άλλα τέτοια

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

Θα μπορούσαμε ίσως να φτιάξουμε ένα Wiki ή κάποια περιοχή εδώ στο φόρουμ, στην οποία θα βάζουμε τα "συμπεράσματα" των συζητήσεων;
Δηλαδή να λέμε στα νέα μέλη "οι συζητήσεις θεωρούνται αναξιόπιστες, μην τις λαμβάνετε υπ'όψη, για να δείτε τα σημεία στα οποία έχει καταλήξει η κοινότητα κοιτάξτε το Wiki";

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

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


Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

Λάμπρος Μπουκουβάλας

Παναγιώτη Τσιωτάκη, με εντυπωσιάζει το ύφος σου... Πρόκειται για συνάδελφο, που ζήτησε από τους μαθητές του να φτιάξουν μια έξυπνη σειριακή, αλλά με για και όχι με όσο και χωρίς λογική μεταβλητή. Πώς αλλιώς θα το έλυνες? Κι εγώ την όσο θα χρησιμοποιούσα, διαθέτω την κατάλληλη εμπειρία. Και μόλις τους είπε τα παραπάνω, τους απαγόρευσε να αλλάξουν βίαια το μετρητή. Αργότερα, όταν είδε ότι δε λυνόταν, το πήρε πίσω, λέγοντας το κορυφαίο παραμύθι: "ναι, σε κάποιες γλώσσες προγραμματισμού υποστηρίζεται αυτό, αλλά όχι στη δική μας"!... Τί λες γι' αυτά?
Λάμπρος Μπουκουβάλας
MSc - MRes

http://blogs.sch.gr/lambrosbouk

Ο Θουκυδίδης  (που τον διαβάζουν οι ξένοι, αλλά όχι εμείς)  έγραφε: «Αταλαίπωρος τοις πολλοίς η ζήτησις της αληθείας, και επί τα ετοίμα μάλλον τρέπονται» (Ι, 20, 3). Οι περισσότεροι δηλαδή αναζητούν αβασάνιστα την αλήθεια και στρέφονται σε ό,τι βρίσκουν έτοιμο. Δεν προβληματίζονται...

sstergou

ΠαράθεσηΘα μπορούσαμε ίσως να φτιάξουμε ένα Wiki ή κάποια περιοχή εδώ στο φόρουμ, στην οποία θα βάζουμε τα "συμπεράσματα" των συζητήσεων;

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

Χάρης Τσιαΐρης

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

Το ότι υπάρχει σε κάποιες γλώσσες προγραμματισμού δεν το κάνει αυτόματα αποδεκτό για
ΑΥΤΟ ΤΟ ΜΑΘΗΜΑ !!!

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

Χάρης Τσιαΐρης