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

Γενικό Λύκειο => Γ΄ Λυκείου => Τμηματικός προγραμματισμός => Μήνυμα ξεκίνησε από: tatiana στις 18 Απρ 2008, 04:09:04 μμ

Τίτλος: SOS απορια στις συναρτησεις
Αποστολή από: tatiana στις 18 Απρ 2008, 04:09:04 μμ
γεια σε όλους! Είμαι νέο μέλος , είμαι φυσικός αλλά εδώ και κάμποσα χρόνια διδάσκω ανεφ (απο το 2002). Μεχρι τωρα ,στα τρεξιματα των ασκήσεων με υποπρογραμματα , στο τέλος του κάθε υποπρογραμματος , για  τις διαδικασίες εκανα αντιστοιχηση στις τυπικες με τις πραγματικές παραμετρους για  τις συναρτήσεις απλώς επέστρεφα την τιμή της συναρτησης χωρις να αλλαζω τις παραμετρους . Είναι λαθος αυτο ή οχι; Σας ρωτάω γιατί σε κάποιο βιβλίο είδα μια λυμμένη ασκηση που στο τελος της συνάρτησης αλλαζαν και οι τιμές των πραματικών παραμέτρων γιατί είχαν μεταβληθεί οι τιμές των τυπικών μεσα στη συναρτηση. SOS !! πρέπει να το ξεκαθαρίσω για να μην λέω βλακείες και στους μαθητες. Ισως καποιοι απο σας με περισσότερες γνωσεις μου λύσετε την απορια μου ! Ευχαριστω.
Τίτλος: Απ: SOS απορια στις συναρτησεις
Αποστολή από: petrosp13 στις 18 Απρ 2008, 04:25:43 μμ
Μόνο οι διαδικασίες επιστρέφουν τις τιμές των παραμέτρων
Οι συναρτήσεις επιστρέφουν την τιμή της συνάρτησης και τίποτα άλλο
Τίτλος: Απ: SOS απορια στις συναρτησεις
Αποστολή από: tatiana στις 18 Απρ 2008, 06:02:50 μμ
Ευχαριστώ Πέτρο :)
Τίτλος: Απ: SOS απορια στις συναρτησεις
Αποστολή από: MichaelP στις 15 Φεβ 2009, 09:02:18 πμ
Να συνεχίσω λίγο το θέμα, με μια δική μου απορία.

Είναι δυνατό να καλέσουμε συνάρτηση, με όρισμα ένα πίνακα, να εκτελέσουμε μια πράξη στον εν'λόγω πίνακα και να επιστρέψουμε τον πίνακα αυτό στο αρχικό πρόγραμμα;
Η γνώμη μου είναι πως κάτι τέτοιο δεν γίνεται καθώς οι συναρτήσεις δεν επιστρέφουν ορίσματα, παρά μόνο την τιμή τους η οποία μεταφέρεται με το όνομά τους. Άρα δεν μπορεί να επιστραφεί πίνακας πάρα μόνο, το πολύ ένα, στοιχείο του πίνακα στο αρχικό πρόγραμμα.

Παρακαλώ επιβεβαιώστε.

Τίτλος: Απ: SOS απορια στις συναρτησεις
Αποστολή από: P.Tsiotakis στις 15 Φεβ 2009, 12:38:42 μμ
@tatiana θα ήθελα να μάθω σε ποιο βοήθημα αναφέρεσαι.. έστω και με προσωπικό μήνυμα.

Οι τιμές των τυπικών παραμέτρων μπορούν να μεταβάλλονται ενός των συναρτήσεων (φυσικά ακόμα και αν είναι πίνακες), ωστόσο με το τέλος της συνάρτησης ΔΕΝ ενημερώνονται οι αντίστοιχες πραγματικές παράμετροι.
Η συνάρτηση επιστρέφει ΜΟΝΟ μια τιμή, αυτή που εκχωρείται στο όνομά της εντός του τμήματος εντολών της...

Τα υποπρογράμματα θέλουν προσοχή, έχουν τα δικά τους λεπτά σημεία...
Τίτλος: Απ: SOS απορια στις συναρτησεις
Αποστολή από: ntzios kostas στις 15 Φεβ 2009, 03:57:04 μμ
Παναγιώτη πιο άμεση απάντηση δεν έχω δει. Θα μου πεις κάλιο αργά παρά ποτέ. :) :)
Τίτλος: Απ: SOS απορια στις συναρτησεις
Αποστολή από: P.Tsiotakis στις 15 Φεβ 2009, 04:43:45 μμ
όντως, μίλησα μόνο με το Μιχάλη.
Ελπίζω η Τατιάνα, να δει το mail της και να μου λύσει την απορία...
Τίτλος: Απ: SOS απορια στις συναρτησεις
Αποστολή από: EleniK στις 16 Φεβ 2009, 01:32:41 πμ
Μιχάλη η συνάρτηση δεν μπορεί να έχει επιστροφή πίνακα, παρά μόνο η διαδικασία.
Τατιάνα θα συμφωνήσω με τον Παναγιώτη, ότι η συνάρτηση επιστρέφει μία τιμή και δεν αλλάζει τις τιμές των παραμέτρων.
Τίτλος: Απ: SOS απορια στις συναρτησεις
Αποστολή από: maria.k. στις 22 Φεβ 2009, 09:57:14 μμ
Εγώ νομίζω ότι μπορείς να περάσεις στη συνάρτηση μόνο το όνομα του πίνακα σάν έναν δείκτη στον ήδη κατασκευασμένο πίνακα του κυρίου προγράμματος. Στη συνέχεια η συνάρτηση μπορεί να επεξεργαστεί τα δεδομένα του πίνακα χωρίς όμως αυτά να αντιγραφούν στη δικιά της μνήμη και στη συνέχεια να επιστρέψει μόνο το όνομα του πίνακα (δείκτης στον αλλαγμένο πλέον πίνακα)... Εξάλλου κάπως έτσι δεν έιναι και στην C?
Τίτλος: Απ: SOS απορια στις συναρτησεις
Αποστολή από: andreas_p στις 22 Φεβ 2009, 10:22:56 μμ
και στη συνέχεια να επιστρέψει μόνο το όνομα του πίνακα

....

δλδ να επιστρέψει ΠΟΛΛΕΣ τιμές.   Αυτό ΜΟΝΟ στη διαδικασία.
Τίτλος: Απ: SOS απορια στις συναρτησεις
Αποστολή από: evry στις 22 Φεβ 2009, 11:29:03 μμ
Εγώ νομίζω ότι μπορείς να περάσεις στη συνάρτηση μόνο το όνομα του πίνακα σάν έναν δείκτη στον ήδη κατασκευασμένο πίνακα του κυρίου προγράμματος.
Το θέμα είναι τι λέει το βιβλίο και ο τρόπος μεταβίβασης παραμέτρων που έχει δεν επιτρέπει κάτι τέτοιο.

Τίτλος: Απ: SOS απορια στις συναρτησεις
Αποστολή από: P.Tsiotakis στις 23 Φεβ 2009, 11:52:52 πμ
Μαρία, με όλο το σεβασμό πρόσεξε μήπως μπερδέψεις τους μαθητές.
Αν είσαι μαθήτρια, θα έχεις όλο το χρόνο του χρόνου να δουλέψεις με τη C, λίγο υπομονή λοιπόν...
Τίτλος: Απ: SOS απορια στις συναρτησεις
Αποστολή από: gpapargi στις 23 Φεβ 2009, 12:33:55 μμ
Η μεταβίβαση παραμέτρων δεν γίνεται όπως στη C. Και γενικά δεν σωστό να θεωρούμε ότι στη ΓΛΩΣΣΑ ισχύει κάτι επειδή ισχύει σε κάποια αληθινή γλώσσα. Οι πραγματικές γλώσσες δεν είναι σημείο αναφοράς.
Για το πως γίνεται η μεταβίβαση παραμέτρων διάβασε προσεκτικά το βιβλίο και για ότι δεν καταλάβεις ρώτα... αλλά μην κοιτάς τι γίνεται στις γνωστές γλώσσες προγραμματισμού.  Είναι γνωστή παγίδα  :)
Τίτλος: Απ: SOS απορια στις συναρτησεις
Αποστολή από: maria.k. στις 23 Φεβ 2009, 02:45:54 μμ
Δεν είμαι μαθήτρια, έχω τελειώσει ΑΕΙ πληροφορικής και είναι πρώτη χρονιά που διδάσκω το μάθημα, απλά θεωρώ ότι το βιβλίο έχει πολλές ασάφειες και προσπαθεί πολλές φορές να εξηγήσει κάτι που ισχύει σε γλώσσες προγραμματισμού με έναν πολύ θεωρητικό τροπο που από μόνο του μπερδεύει τα παιδιά...
Ίσως πολλές φορές μπερδεύει και εμένα...
Τίτλος: Απ: SOS απορια στις συναρτησεις
Αποστολή από: xpanta στις 23 Μαρ 2009, 07:45:11 μμ
Επειδή το θέμα έχει κάποια σημαντικότητα να πω πως απο ότι κατάλαβα οι συναρτήσεις δεν επιτρέφουν πίνακες. Και άρα τα υποπρογράμματα τύπου (ταξινόμηση) θα πρέπει να γίνονται αποκλειστικά με διαδικασίες.

κάνω λαθος;
Τίτλος: Απ: SOS απορια στις συναρτησεις
Αποστολή από: evry στις 23 Μαρ 2009, 10:41:23 μμ

 Επειδή ο πίνακας δεν αντιμετωπίζεται σαν μια ενιαία οντότητα, π.χ. σαν ένα αντικείμενο ή έναν δείκτη (αν και μπορούμε κάλλιστα να τον περνάμε σαν παράμετρο) καλό θα ήταν να αποφεύγουμε κάτι τέτοιο. Ο ορισμός της συνάρτησης είναι ότι επιστρέφει μια ακριβώς τιμή, οπότε δεν μπορεί να επιστρέφει πίνακα από τη στιγμή που ο πίνακας είναι ένα σύνολο από τιμές.
 Άσε που δεν υπάρχει και σχετικό παράδειγμα στο βιβλίο.
Τίτλος: Απ: SOS απορια στις συναρτησεις
Αποστολή από: Καρκαμάνης Γεώργιος στις 25 Μαρ 2009, 11:35:09 μμ
Παράθεση
Εγώ νομίζω ότι μπορείς να περάσεις στη συνάρτηση μόνο το όνομα του πίνακα σάν έναν δείκτη στον ήδη κατασκευασμένο πίνακα του κυρίου προγράμματος. Στη συνέχεια η συνάρτηση μπορεί να επεξεργαστεί τα δεδομένα του πίνακα χωρίς όμως αυτά να αντιγραφούν στη δικιά της μνήμη και στη συνέχεια να επιστρέψει μόνο το όνομα του πίνακα (δείκτης στον αλλαγμένο πλέον πίνακα)... Εξάλλου κάπως έτσι δεν έιναι και στην C?

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