Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Μονοδιάστατοι πίνακες => Γ΄ Λυκείου => Ταξινόμηση => Μήνυμα ξεκίνησε από: EleniK στις 01 Φεβ 2006, 12:02:34 ΜΜ

Τίτλος: Αντιμετάθεσε
Αποστολή από: EleniK στις 01 Φεβ 2006, 12:02:34 ΜΜ
Ήθελα να ρωτήσω τους συναδέλφους, η εντολή αντιμετάθεσε ισχύει για πρόγραμμα (ξέρω ότι ισχύει για αλγόριθμο); Στο 9ο κεφάλαιο όταν αναφέρει άσκηση ταξινόμησης δεν χρησιμοποιεί την αντιμετάθεσε αλλά τις τρεις εντολές στις οποίες αναλύεται. Τι γνώμη έχετε;

Πάντως μέχρι τώρα συνιστούσα στους μαθητές να χρησιμοποιούν τις 3 εντολές, καθότι μπορεί να μπει και σαν ερώτηση θεωρίας 'σε ποιες εντολές αναλύεται η αντιμετάθεσε'.

Εσείς τι προτείνετε;
Τίτλος: Re: Αντιμετάθεσε
Αποστολή από: evry στις 01 Φεβ 2006, 01:23:49 ΜΜ
Στην περίπτωση προγράμματος θα πρέπει να ορίσεις την Αντιμετάθεσε ως υποπρόγραμμα (διαδικασία).
Τίτλος: Re: Αντιμετάθεσε
Αποστολή από: P.Tsiotakis στις 01 Φεβ 2006, 06:42:41 ΜΜ

Η εντολή "Αντιμετάθεσε" ΔΕΝ ισχύει σε πρόγραμμα, μπορεί να χρησιμοποιηθεί μόνο σε ψευδογλώσσα
Τίτλος: Re: Αντιμετάθεσε
Αποστολή από: EleniK στις 02 Φεβ 2006, 01:48:12 ΜΜ
Ευχαριστώ πολύ.
Τίτλος: Απ: Αντιμετάθεσε
Αποστολή από: dafnib4 στις 10 Φεβ 2006, 12:27:40 ΜΜ
Καταρχήν ο τρόπος που τη χρησιμοποιεί στους αλγορίθμους στο κεφάλαιο 3, στο σημείο που περιγράφει τη bubble sort είναι σωστός;

Αντιμετάθεσε j-1, j

Τί σημαίνουν τα παραπάνω;΄Ούτε παρενθέσεις,
ούτε το όνομα του πίνακα, μόνο οι δείκτες, είναι
συνάρτηση, διαδικασία, ακόμη και για τις απαιτήσεις
του αλγορίθμου (που δεν είναι τόσο αυστηρός όσο
η ΓΛΩΣΣΑ) νομίζω ότι είναι λάθος και μπερδεύει τα παιδιά. Τα τελευταία - και με το δίκιο τους- λένε
ότι αφού το λέει το βιβλίο έτσι θα το γράψουν, γιατί
να γράψουν τρεις εντολές, ...... Τα ξέρετε. Πώς να
τους εξηγήσεις επίσης ότι ναι μεν είναι ΟΚ για τους
αλγορίθμους για το ΠΡΟΓΡΑΜΜΑ όμως όχι ;;;;

Τόσα προβλήματα ...... για ποιό λόγο;


Τίτλος: Απ: Αντιμετάθεσε
Αποστολή από: Laertis στις 11 Φεβ 2006, 03:06:33 ΜΜ
Φίλη Dafni,

ή εγώ δεν κατάλαβα καλά ή εσύ έχεις άλλο βιβλίο. Στο 3ο Κεφάλαιο την εντολή αντιμετάθεσης την γράφει ως εξής :

αντιμετάθεσε table[j-1],table[j]

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

Εμένα μια χάρα μου φαίνεται πάντως

Φιλικά
Τίτλος: Απ: Αντιμετάθεσε
Αποστολή από: panosz στις 21 Φεβ 2006, 04:42:48 ΜΜ
Καλησπέρα,
Πρώτα από όλα Συγχαρητήρια στο Δημιουργό, στους Συντονιστές και στους Συμμετέχοντες του forum !!!

Θα ήθελα την γνώμη σας για το παρακάτω

ΠΡΟΓΡΑΜΜΑ ΠΧ_1
ΜΕΤΑΒΛΗΤΕΣ
    ΑΚΕΡΑΙΕΣ: Α[100], ι, j
..........
ΓΙΑ ι ΑΠΟ 2 ΜΕΧΡΙ 100
     ΓΙΑ j ΑΠΟ 100 ΜΕΧΡΙ ι ΜΕ ΒΗΜΑ -1
          ΑΝ Α[j-1] > Α[j] ΤΟΤΕ
               ΚΑΛΕΣΕ ΑΝΤΙΜΕΤΑΘΕΣΗ (Α,j)
                ή
               ΚΑΛΕΣΕ ΑΝΤΙΜΕΤΑΘΕΣΗ_2 (Α[j-1],Α[j])
          ΤΕΛΟΣ_ΑΝ
     ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
............
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ ΑΝΤΙΜΕΤΑΘΕΣΗ (Χ,Υ)
ΜΕΤΑΒΛΗΤΕΣ
     ΑΚΕΡΑΙΕΣ: Χ[100], Υ, Τ
ΑΡΧΗ
Τ <- Χ[Υ-1]
Χ[Υ-1] <- Χ[Υ]
Χ[Υ] <- Τ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ή

ΔΙΑΔΙΚΑΣΙΑ ΑΝΤΙΜΕΤΑΘΕΣΗ_2 (Χ,Υ)
ΜΕΤΑΒΛΗΤΕΣ
     ΑΚΕΡΑΙΕΣ: Χ, Υ, Τ
ΑΡΧΗ
Τ <- Χ
Χ <- Υ
Υ <- Τ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ


Ευχαριστώ προκαταβολικά για τον χρόνο σας
       
Τίτλος: Απ: Αντιμετάθεσε
Αποστολή από: evry στις 21 Φεβ 2006, 05:10:12 ΜΜ
  Και τα δυο είναι σωστά με μια πρώτη ματιά, αλλά η ΑΝΤΙΜΕΤΑΘΕΣΗ_2 είναι καλύτερη για το συγκεκριμένο μάθημα (κατά τη γνώμη μου) για 3 λόγους

1) Έτσι ορίζεται στον αλγόριθμο της ταξινόμησης στο κεφ.3 οπότε δεν υπάρχει τρόπος να μπερδέψουμε τα παιδιά ορίζοντας διαφορετικά την ανταλλαγή
2) Γενικά όποιο βιβλίο προγραμματισμού και να ανοίξεις ο ορισμός της swap είναι ο 2ος
3) Στην περίπτωση της ΑΝΤΙΜΕΤΑΘΕΣΕ περνάμε σαν παράμετρο έναν πίνακα και έναν ακέραιο αριθμό. Δηλαδή δημιουργείται ένα αντίγραφο για ολόκληρο τον πίνακα κάθε φορά που καλείται η αντιμετάθεσε στην ταξινόμηση, δηλαδή στην χειρότερη περίπτωση περίπου Ν2
φορές.

Το 3 είναι ένα καλό επιχείρημα για να πείσουμε οποιοδήποτε "κακόβουλο"-πονηρό μαθητή που θα θέλει να χρησιμοποιήσει την ΑΝΤΙΜΕΤΑΘΕΣΕ_1.
Τίτλος: Απ: Αντιμετάθεσε
Αποστολή από: gpapargi στις 22 Φεβ 2006, 09:23:07 ΠΜ
Επαυξάνω:

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

Ο δεύτερος τρόπος αντιμεταθέτει 2 αριθμούς υπό οποιεσδήποτε συνθήκες. Ο πρώτος τους αντιμεταθέτει μόνο όταν είναι στοιχεία ενός πίνακα 100 θέσεων. Γιατί να το περιορίσουμε τόσο; Η αντιμετάθεση δεν είναι κάτι που συμβαίνει αποκλειστικά σε στοιχεία πίνακα. Συμβαίνει και σε άλλες περιπτώσεις. Έτσι, ο δεύτερος τρόπος μπορεί να χρησιμοποιηθεί για να φτιάξεις βιβλιοθήκη υποπρογραμμάτων ενώ ο πρώτος όχι.

Πέρα από αυτό, στον πρώτο τρόπο, ο χρήστης την ώρα που φτιάχνει το υποπρόγραμμα έχει συνέχεια κατά νου τις λεπτομέρειες του κυρίως προγράμματος. Δε βγάζει από το μυαλό του ότι κάνει δουλειά σε πίνακα. Άσε που πρέπει να έχει κατά νου το ότι ο πίνακας είναι 100 θέσεων και να κάνει ανάλογη δήλωση. Το υποπρόγραμμα δεν είναι ανεξάρτητο από το πρόγραμμα.

Ο πρώτος τρόπος είναι κακός τρόπος. Ο δεύτερος είναι ο ενδεδειγμένος. Ο προγραμματισμός έχει φιλοσοφία μέσα του.