Αποστολέας Θέμα: SOS απορια στις συναρτησεις  (Αναγνώστηκε 6007 φορές)

tatiana

  • Νέος
  • *
  • Μηνύματα: 2
SOS απορια στις συναρτησεις
« στις: 18 Απρ 2008, 04:09:04 μμ »
γεια σε όλους! Είμαι νέο μέλος , είμαι φυσικός αλλά εδώ και κάμποσα χρόνια διδάσκω ανεφ (απο το 2002). Μεχρι τωρα ,στα τρεξιματα των ασκήσεων με υποπρογραμματα , στο τέλος του κάθε υποπρογραμματος , για  τις διαδικασίες εκανα αντιστοιχηση στις τυπικες με τις πραγματικές παραμετρους για  τις συναρτήσεις απλώς επέστρεφα την τιμή της συναρτησης χωρις να αλλαζω τις παραμετρους . Είναι λαθος αυτο ή οχι; Σας ρωτάω γιατί σε κάποιο βιβλίο είδα μια λυμμένη ασκηση που στο τελος της συνάρτησης αλλαζαν και οι τιμές των πραματικών παραμέτρων γιατί είχαν μεταβληθεί οι τιμές των τυπικών μεσα στη συναρτηση. SOS !! πρέπει να το ξεκαθαρίσω για να μην λέω βλακείες και στους μαθητες. Ισως καποιοι απο σας με περισσότερες γνωσεις μου λύσετε την απορια μου ! Ευχαριστω.

petrosp13

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 2224
Απ: SOS απορια στις συναρτησεις
« Απάντηση #1 στις: 18 Απρ 2008, 04:25:43 μμ »
Μόνο οι διαδικασίες επιστρέφουν τις τιμές των παραμέτρων
Οι συναρτήσεις επιστρέφουν την τιμή της συνάρτησης και τίποτα άλλο
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

tatiana

  • Νέος
  • *
  • Μηνύματα: 2
Απ: SOS απορια στις συναρτησεις
« Απάντηση #2 στις: 18 Απρ 2008, 06:02:50 μμ »
Ευχαριστώ Πέτρο :)

MichaelP

  • Θαμώνας
  • ***
  • Μηνύματα: 34
  • ...Εγώ τους τα μαθαίνω χωρίς Απο...Έως ....
Απ: SOS απορια στις συναρτησεις
« Απάντηση #3 στις: 15 Φεβ 2009, 09:02:18 πμ »
Να συνεχίσω λίγο το θέμα, με μια δική μου απορία.

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

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


Παναγιώτης Τσιωτάκης

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 3219
  • I love you 3000
    • Panagiotis Tsiotakis
Απ: SOS απορια στις συναρτησεις
« Απάντηση #4 στις: 15 Φεβ 2009, 12:38:42 μμ »
@tatiana θα ήθελα να μάθω σε ποιο βοήθημα αναφέρεσαι.. έστω και με προσωπικό μήνυμα.

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

Τα υποπρογράμματα θέλουν προσοχή, έχουν τα δικά τους λεπτά σημεία...

ntzios kostas

  • Καθηγητής Πληροφορικής
  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 599
    • Ανάπτυξη Εφαρμογών
Απ: SOS απορια στις συναρτησεις
« Απάντηση #5 στις: 15 Φεβ 2009, 03:57:04 μμ »
Παναγιώτη πιο άμεση απάντηση δεν έχω δει. Θα μου πεις κάλιο αργά παρά ποτέ. :) :)
Το μάθημα Ανάπτυξη Εφαρμογών δεν έχει σαν στόχο την εκμάθηση κάποιου συγκεκριμένου προγραμματιστικού περιβάλλοντος ούτε την καλλιέργεια προγραμματιστικών δεξιοτήτων από τη μεριά των μαθητών. Δεν αποσκοπεί στη λεπτομερειακή εξέταση της δομής, του ρεπερτορίου και των συντακτικων κανόνων κάποιας γλώσσας...

Παναγιώτης Τσιωτάκης

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 3219
  • I love you 3000
    • Panagiotis Tsiotakis
Απ: SOS απορια στις συναρτησεις
« Απάντηση #6 στις: 15 Φεβ 2009, 04:43:45 μμ »
όντως, μίλησα μόνο με το Μιχάλη.
Ελπίζω η Τατιάνα, να δει το mail της και να μου λύσει την απορία...

EleniK

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 708
Απ: SOS απορια στις συναρτησεις
« Απάντηση #7 στις: 16 Φεβ 2009, 01:32:41 πμ »
Μιχάλη η συνάρτηση δεν μπορεί να έχει επιστροφή πίνακα, παρά μόνο η διαδικασία.
Τατιάνα θα συμφωνήσω με τον Παναγιώτη, ότι η συνάρτηση επιστρέφει μία τιμή και δεν αλλάζει τις τιμές των παραμέτρων.
Ελένη Κοκκίνου
Καθηγήτρια Πληροφορικής, ΠΕ19

maria.k.

  • Θαμώνας
  • ***
  • Μηνύματα: 34
Απ: SOS απορια στις συναρτησεις
« Απάντηση #8 στις: 22 Φεβ 2009, 09:57:14 μμ »
Εγώ νομίζω ότι μπορείς να περάσεις στη συνάρτηση μόνο το όνομα του πίνακα σάν έναν δείκτη στον ήδη κατασκευασμένο πίνακα του κυρίου προγράμματος. Στη συνέχεια η συνάρτηση μπορεί να επεξεργαστεί τα δεδομένα του πίνακα χωρίς όμως αυτά να αντιγραφούν στη δικιά της μνήμη και στη συνέχεια να επιστρέψει μόνο το όνομα του πίνακα (δείκτης στον αλλαγμένο πλέον πίνακα)... Εξάλλου κάπως έτσι δεν έιναι και στην C?

andreas_p

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 1015
Απ: SOS απορια στις συναρτησεις
« Απάντηση #9 στις: 22 Φεβ 2009, 10:22:56 μμ »
και στη συνέχεια να επιστρέψει μόνο το όνομα του πίνακα

....

δλδ να επιστρέψει ΠΟΛΛΕΣ τιμές.   Αυτό ΜΟΝΟ στη διαδικασία.

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3167
  • to Iterate is human to Recurse divine
Απ: SOS απορια στις συναρτησεις
« Απάντηση #10 στις: 22 Φεβ 2009, 11:29:03 μμ »
Εγώ νομίζω ότι μπορείς να περάσεις στη συνάρτηση μόνο το όνομα του πίνακα σάν έναν δείκτη στον ήδη κατασκευασμένο πίνακα του κυρίου προγράμματος.
Το θέμα είναι τι λέει το βιβλίο και ο τρόπος μεταβίβασης παραμέτρων που έχει δεν επιτρέπει κάτι τέτοιο.

What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Παναγιώτης Τσιωτάκης

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 3219
  • I love you 3000
    • Panagiotis Tsiotakis
Απ: SOS απορια στις συναρτησεις
« Απάντηση #11 στις: 23 Φεβ 2009, 11:52:52 πμ »
Μαρία, με όλο το σεβασμό πρόσεξε μήπως μπερδέψεις τους μαθητές.
Αν είσαι μαθήτρια, θα έχεις όλο το χρόνο του χρόνου να δουλέψεις με τη C, λίγο υπομονή λοιπόν...

gpapargi

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2452
  • I 'm not young enough to know everything
Απ: SOS απορια στις συναρτησεις
« Απάντηση #12 στις: 23 Φεβ 2009, 12:33:55 μμ »
Η μεταβίβαση παραμέτρων δεν γίνεται όπως στη C. Και γενικά δεν σωστό να θεωρούμε ότι στη ΓΛΩΣΣΑ ισχύει κάτι επειδή ισχύει σε κάποια αληθινή γλώσσα. Οι πραγματικές γλώσσες δεν είναι σημείο αναφοράς.
Για το πως γίνεται η μεταβίβαση παραμέτρων διάβασε προσεκτικά το βιβλίο και για ότι δεν καταλάβεις ρώτα... αλλά μην κοιτάς τι γίνεται στις γνωστές γλώσσες προγραμματισμού.  Είναι γνωστή παγίδα  :)

maria.k.

  • Θαμώνας
  • ***
  • Μηνύματα: 34
Απ: SOS απορια στις συναρτησεις
« Απάντηση #13 στις: 23 Φεβ 2009, 02:45:54 μμ »
Δεν είμαι μαθήτρια, έχω τελειώσει ΑΕΙ πληροφορικής και είναι πρώτη χρονιά που διδάσκω το μάθημα, απλά θεωρώ ότι το βιβλίο έχει πολλές ασάφειες και προσπαθεί πολλές φορές να εξηγήσει κάτι που ισχύει σε γλώσσες προγραμματισμού με έναν πολύ θεωρητικό τροπο που από μόνο του μπερδεύει τα παιδιά...
Ίσως πολλές φορές μπερδεύει και εμένα...

xpanta

  • Οπαδός
  • **
  • Μηνύματα: 13
Απ: SOS απορια στις συναρτησεις
« Απάντηση #14 στις: 23 Μάρ 2009, 07:45:11 μμ »
Επειδή το θέμα έχει κάποια σημαντικότητα να πω πως απο ότι κατάλαβα οι συναρτήσεις δεν επιτρέφουν πίνακες. Και άρα τα υποπρογράμματα τύπου (ταξινόμηση) θα πρέπει να γίνονται αποκλειστικά με διαδικασίες.

κάνω λαθος;

evry

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 3167
  • to Iterate is human to Recurse divine
Απ: SOS απορια στις συναρτησεις
« Απάντηση #15 στις: 23 Μάρ 2009, 10:41:23 μμ »

 Επειδή ο πίνακας δεν αντιμετωπίζεται σαν μια ενιαία οντότητα, π.χ. σαν ένα αντικείμενο ή έναν δείκτη (αν και μπορούμε κάλλιστα να τον περνάμε σαν παράμετρο) καλό θα ήταν να αποφεύγουμε κάτι τέτοιο. Ο ορισμός της συνάρτησης είναι ότι επιστρέφει μια ακριβώς τιμή, οπότε δεν μπορεί να επιστρέφει πίνακα από τη στιγμή που ο πίνακας είναι ένα σύνολο από τιμές.
 Άσε που δεν υπάρχει και σχετικό παράδειγμα στο βιβλίο.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

Καρκαμάνης Γεώργιος

  • Ομάδα διαγωνισμάτων 2010
  • *
  • Μηνύματα: 1094
Απ: SOS απορια στις συναρτησεις
« Απάντηση #16 στις: 25 Μάρ 2009, 11:35:09 μμ »
Παράθεση
Εγώ νομίζω ότι μπορείς να περάσεις στη συνάρτηση μόνο το όνομα του πίνακα σάν έναν δείκτη στον ήδη κατασκευασμένο πίνακα του κυρίου προγράμματος. Στη συνέχεια η συνάρτηση μπορεί να επεξεργαστεί τα δεδομένα του πίνακα χωρίς όμως αυτά να αντιγραφούν στη δικιά της μνήμη και στη συνέχεια να επιστρέψει μόνο το όνομα του πίνακα (δείκτης στον αλλαγμένο πλέον πίνακα)... Εξάλλου κάπως έτσι δεν έιναι και στην C?

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