Αποστολέας Θέμα: Ερωτήσεις  (Αναγνώστηκε 1432 φορές)

denia_k

  • Βετεράνος
  • ****
  • Μηνύματα: 84
Ερωτήσεις
« στις: 07 Μαρ 2013, 02:13:56 μμ »
Γεια σας και πάλι!

1) Στις λύσεις του βιβλίου του Κοψίνη είδα ότι το γράψε "E_τριγώνου" είναι λογικό λάθος, ενώ το διάβασε "E_τριγώνου" είναι συντακτικό λάθος. Αυτό είναι σίγουρα σωστό;

2) Όσον αφορά την αναζήτηση, το σχολικό στη σελίδα 64 αναφέρει ότι αν κάποιο στοιχείο εμφανίζεται στον πίνακα περισσότερο από μία φορές, τότε ο αλγόριθμος πρέπει να τροποποιηθεί κατά το εξής: η μεταβλητή done είναι περιττή και η αναζήτηση συνεχίζεται μέχρι το τέλος του πίνακα ελέγχοντας με τη συνθήκη i<=n. Ο αλγόριθμος που μπορεί να εφαρμοστεί όμως στην περίπτωση αυτή (μη μοναδικά στοιχεία),  χρησιμοποιεί τη δομή επανάληψης Για αλλά και τη μεταβλητή done. Είναι δηλαδή ως εξής:

Αλγόριθμος Σειρ_αναζ
Δεδομένα //Α,Ν//
Διάβασε x
done<-- ψευδής
Για i από 1 μέχρι Ν
    Αν Α=x τότε
        Εμφάνισε i
        done<-- αληθής
    Τέλος_αν
Τέλος_επανάληψης
Αν done=ψευδής τότε
        Εμφάνισε "Δε βρέθηκε το στοιχείο", x
Τέλος_αν
Τέλος Σειρ_αναζ

Αν κάποιος μπορεί να με βοηθήσει, τον ευχαριστώ ιδιαίτερα!

nikolasmer

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 567
  • There can be only one...may it be AEPP.
Απ: Ερωτήσεις
« Απάντηση #1 στις: 07 Μαρ 2013, 02:27:37 μμ »
1. Δεν βλέπω κάποιο λάθος ούτε συντακτικό ούτε λογικό όπως το θέτεις. Βέβαια εξαρτάται και από ολόκληρη τη δομή της άσκησης. πχ το όνομα του αλγορίθμου/προγράμματος κλπ.
2. Χρειάζεται η δομή Για , για να σαρώσει ολόκληρο τον πίνακα. Η μεταβλητή done χρειάζεται για να εμφανίσεις κάποιο μήνυμα στη συνέχεια. Για παράδειγμα αν έχεις βρεί ενα στοιχείο ή οχι. Όπως το γράφεις είναι σωστό.
Μερεντίτης Νικόλαος
Πληροφορικός

denia_k

  • Βετεράνος
  • ****
  • Μηνύματα: 84
Απ: Ερωτήσεις
« Απάντηση #2 στις: 07 Μαρ 2013, 02:31:28 μμ »
Ναι αλλά γιατί το βιβλίο λέει ότι η done είναι περιττή;

Όσον αφορά το πρώτο ερώτημα, το ότι υπάρχει λάθος είναι σίγουρο γιατί στην άσκηση έλεγε αντιστοιχίστε .....και είχε λογικά ή συντακτικά λάθη!  :)

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2319
Απ: Ερωτήσεις
« Απάντηση #3 στις: 07 Μαρ 2013, 02:39:05 μμ »
Η κύρια λειτουργία της done είναι να σταματήσει την επανάληψη όταν βρεθεί το ζητούμενο
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

denia_k

  • Βετεράνος
  • ****
  • Μηνύματα: 84
Απ: Ερωτήσεις
« Απάντηση #4 στις: 07 Μαρ 2013, 02:41:25 μμ »
Πέτρο εννοείς δηλαδή ότι ο αλγόριθμος που έγραψα είναι λανθασμένος;;;

P.Tsiotakis

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 3309
  • agent romanoff you miss me?
    • P.Tsiotakis
Απ: Ερωτήσεις
« Απάντηση #5 στις: 07 Μαρ 2013, 06:57:14 μμ »
1) Στις λύσεις του βιβλίου του Κοψίνη είδα ότι το γράψε "E_τριγώνου" είναι λογικό λάθος, ενώ το διάβασε "E_τριγώνου" είναι συντακτικό λάθος. Αυτό είναι σίγουρα σωστό;

το Διάβασε "Ε_τριγώνου" είναι σαφέστατα συντακτικό, γιατί η σύνταξη της εντολής θέλει μετά το διάβασε μεταβλητή και όχι μήνυμα

το Γράψε "Ε_τριγώνου" μάλλον είναι λογικό (όντως θέλουμε και την παραπάνω κωδικοποίηση για να απαντήσουμε) γιατι δε θα τυπώσει την τιμή της μεταβλητής αλλά μήνυμα. Υποθέτω οτι ήθελε να τυπώσει το περιεχόμενο της μεταβλητής
φυσικά, αν θέλαμε να τυπώσουμε αυτό το μήνυμα δεν υπάρχει κανένα λάθος.
ΑΝ ΥΠΑΡΧΕΙ ΛΑΘΟΣ, τότε είναι λογικό
« Τελευταία τροποποίηση: 08 Μαρ 2013, 03:06:59 μμ από Παναγιώτης Τσιωτάκης »

P.Tsiotakis

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 3309
  • agent romanoff you miss me?
    • P.Tsiotakis
Απ: Ερωτήσεις
« Απάντηση #6 στις: 07 Μαρ 2013, 07:00:11 μμ »
2) Όσον αφορά την αναζήτηση, το σχολικό στη σελίδα 64 αναφέρει ότι αν κάποιο στοιχείο εμφανίζεται στον πίνακα περισσότερο από μία φορές, τότε ο αλγόριθμος πρέπει να τροποποιηθεί κατά το εξής: η μεταβλητή done είναι περιττή και η αναζήτηση συνεχίζεται μέχρι το τέλος του πίνακα ελέγχοντας με τη συνθήκη i<=n. Ο αλγόριθμος που μπορεί να εφαρμοστεί όμως στην περίπτωση αυτή (μη μοναδικά στοιχεία),  χρησιμοποιεί τη δομή επανάληψης Για αλλά και τη μεταβλητή done. Είναι δηλαδή ως εξής:

Αλγόριθμος Σειρ_αναζ
Δεδομένα //Α,Ν//
Διάβασε x
done<-- ψευδής
Για i από 1 μέχρι Ν
    Αν Α=x τότε
        Εμφάνισε i
        done<-- αληθής
    Τέλος_αν
Τέλος_επανάληψης
Αν done=ψευδής τότε
        Εμφάνισε "Δε βρέθηκε το στοιχείο", x
Τέλος_αν
Τέλος Σειρ_αναζ

Δες σειριακή, παραλλαγή1 στο http://ptsiotakis.mysch.gr/old/aepp/aepp_theory3b.htm
στην ουσία το done είναι ο διακόπτης που σπάει το Για. Αν φύγει τότε έχεις δομή Για

nikolasmer

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 567
  • There can be only one...may it be AEPP.
Απ: Ερωτήσεις
« Απάντηση #7 στις: 07 Μαρ 2013, 07:23:13 μμ »
1. Δεν βλέπω κάποιο λάθος ούτε συντακτικό ούτε λογικό όπως το θέτεις. Βέβαια εξαρτάται και από ολόκληρη τη δομή της άσκησης. πχ το όνομα του αλγορίθμου/προγράμματος κλπ.
2. Χρειάζεται η δομή Για , για να σαρώσει ολόκληρο τον πίνακα. Η μεταβλητή done χρειάζεται για να εμφανίσεις κάποιο μήνυμα στη συνέχεια. Για παράδειγμα αν έχεις βρεί ενα στοιχείο ή οχι. Όπως το γράφεις είναι σωστό.

Ούτε καν πρόσεξα το Γράψε και Διάβασε μπροστά από το "Ε_Τριγώνου".
ΑΚΥΡΗ η απάντησή μου.
Ο κύριος Τσιωτάκης έδωσε τη σωστή ερμηνεία.
Μερεντίτης Νικόλαος
Πληροφορικός

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2319
Απ: Ερωτήσεις
« Απάντηση #8 στις: 08 Μαρ 2013, 01:40:31 πμ »
Πέτρο εννοείς δηλαδή ότι ο αλγόριθμος που έγραψα είναι λανθασμένος;;;

Όχι, απλά σου εξήγησα γιατί η μεταβλητή done είναι περιττή όταν θέλουμε να κάνουμε αναζήτηση σε όλες τις θέσεις ενός πίνακα
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

denia_k

  • Βετεράνος
  • ****
  • Μηνύματα: 84
Απ: Ερωτήσεις
« Απάντηση #9 στις: 08 Μαρ 2013, 02:07:59 μμ »
Ευχαριστώ πολύ όλους και ιδιαίτερα τον κύριο Τσιωτάκη!  :)