ΤΥΠΟΣ ΣΥΝΑΡΤΗΣΗ

Ξεκίνησε από parsenopoulou, 11 Μαρ 2021, 11:50:16 ΠΜ

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

parsenopoulou

Συνάδελφοι καλημέρα,

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

Στην πλειοψηφία των λύσεων που έχω δει σε βοηθήματα ή στο διαδίκτυο, η συνάρτηση επιστρέφει λογική τιμή . Θεωρείτε πως είναι λάθος η συνάρτηση να είναι τύπου χαρακτήρα και να επιστρέφει κατευθείαν κατάλληλο μήνυμα;

nikosx

Όχι βέβαια. Θα μπορούσε κάλλιστα να είναι μία συνάρτηση ΧΑΡΑΚΤΗΡΑΣ και να επιστρέφει μία οποιαδήποτε αλφαριθμητική τιμή.
Νίκος Ξένος
Καθηγητής Πληροφορικής
nxenos@sch.gr

George Eco

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

Να σου πω ένα άλλο;
Έστω επιστρέφει ακέραια τιμή, 1 ή 0 ας πούμε αντί για λογική.
Κι έχω πιο κάτω στο κεντρικό πρόγραμμα μια ΑΝ που τσιμπάει τη μεταβλητή που έλαβε το αποτέλεσμα, κι αναλόγως του αν είναι 1 ή 0 πράττει αναλόγως. Σωστό πάλι. Τα παιδιά δεν εξετάζονται στο πόσο βέλτιστος είναι ο αλγόριθμός τους.
Θα πει κανείς, "Ναι αλλά φορτώνεται άδικα ο Η/Υ". Συμφωνώ.
Υπέρ του επιχειρήματος αυτού λοιπόν, η ΔΙΚΗ ΣΟΥ προσέγγισή νομίζω είναι πολύ ωραία.

P.Tsiotakis

Θα μπορούσε να είναι ΠΡΑΓΜΑΤΙΚΗ και να επιστρέφει την τιμή 1.3 αν η παραδοχή της εκφώνησης είναι ΑΛΗΘΗΣ
ή την τιμή 3.1 αν η παραδοχή της εκφώνησης είναι ΨΕΥΔΗΣ, οπότε
το τμήμα προγράμματος που θα την αξιοποιούσε αντίστοιχα θα διαχειριζόταν την επιστραφείσα τιμή.

parsenopoulou

Συνάδελφοι ευχαριστώ πάρα πολύ!!!

bugman

Όταν η άσκηση ζητάει από μια συνάρτηση να επιστρέψει ένα αποτέλεσμα που μπορεί να έχει μια από δυο τιμές, τότε έχουμε επιστροφή τύπου λογικού, δηλαδή τιμές ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ. Αν για ευκολία θέλουμε η επιστροφή να είναι αριθμητική πχ 1 ή 0, τότε δεν μας χάλαει κάτι να το κάνουμε. Στις καλές πρακτικές αναφέρεται ότι μια συνάρτηση καλό είναι να κάνει ένα πράγμα. Η επιστροφή 0 ή 1 αριθμητικού αντί για ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ είναι δυο πράματα μαζί, γιατί πριν να βρούμε αν θέλουμε το 0 ή το 1 έχουμε βρει το ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ.
(Να αναφέρω εδώ ότι σε μεγάλα προγράμματα οι καλές πρακτικές είναι σπάνιο πράγμα, και για λόγους απλοποίησης συνενόνονται συναρτήσεις σε μια αν είναι δυνατόν για να αποφευχθούν ενδιάμεσες κλήσεις συναρτήσεων - Σε ορισμένες γλώσσες ο μεταγλωττιστής αφαιρεί και τη συνάρτηση βάζοντας απευθείας - inline - τον κώδικα της συνάρτησης)

parsenopoulou

Συνάδελφε Bugman ,θεωρείς ότι σε ένα πιθανό θέμα εξετάσεων ένας μαθητής μπορεί να έχανε μονάδες αν η συνάρτηση ήταν τύπου χαρακτήρα; Με την προϋπόθεση φυσικά ότι δεν υπήρχε κάτι δεσμευτικό στην εκφώνηση...

bugman

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


taxata

Νομίζω η κουβέντα ξεκινά από λανθασμένη υπόθεση λόγω ασάφειας (βλ κεφ 1) στην εκφώνηση του προβλήματος και εξηγώ. Όταν τίθεται ένα πρόβλημα πρέπει να λαμβάνουμε υπόψη το πλαίσιο στο οποίο κινείται αυτός που πρέπει να το επιλύσει. Ο τμηματικός προγραμματισμός προβλέπει την ανεξαρτησία των υποπρογραμμάτων (βλ κεφ 10). Εάν υποθέσουμε πχ ότι εντάσσεται το παραπάνω πρόβλημα  σε ένα ευρύτερο όπου πχ κάποιος άλλος θα χρησιμοποιήσει τη συνάρτηση που φτιάχνουμε για να μετρήσει πχ ή να εμφανίσει τους άρτιους (θετικούς μόνο βάση του πλαισίου που κινούμαστε) ακεραίους ενός πίνακα πρέπει να μπορεί να το κάνει χωρίς να ξέρει την εσωτερική δομή της συνάρτησής μας. Πρέπει όμως να γνωρίζει τη διεπαφή της (πλήθος παραμέτρων, τύπος και τι επιστρέφει). Έτσι και τα σύγχρονα περιβάλλοντα όταν ανοίγουμε παρένθεση σε μία συνάρτηση ή πατάμε .dot σε ένα αντικείμενο εμφανίζεται μόνο το πλήθος των παραμέτρων ή και των μεθόδων και μία μικρή ή μεγάλη βοήθεια.
Τελειώνοντας συμφωνώ και διαφωνώ με όλους. Το αρχικό πρόβλημα έχει νόημα μόνο ως προς την εσωτερική δομή (Αν Χ mod 2 =0) και όχι ως προς τη διεπαφή η οποία δεν ορίζεται από το θεματοδότη. Σε επίπεδο δε εξετάσεων νομίζω είναι ελλιπές και μη ορθά διατυπωμένο (δυστυχώς ή ευτυχώς είναι μια άλλη κουβέντα) αφού οι μαθητές οδηγούνται βηματικά στην επίλυση των προβλημάτων ακολουθώντας υποχρεωτικά βήματα Δ1, Δ2, Δ3, Δ4 κλπ διατυπωμένα συνήθως με σαφήνεια σε στενό πλαίσιο χωρίς πολλούς βαθμούς ελευθερίας (σε σημείο όπου να λέμε πχ και στους μαθητές μας 'μην κάνεις επιπλέον υποπρογράμματα εάν δε στο ζητούν ακόμα και αν θεωρείς ότι θα σε βοηθήσουν') ή ακόμα χειρότερα προκαθορισμένους αλγόριθμους να συμπληρώσουν τα κενά. Ίσως φθάσουμε κάποια στιγμή το επίπεδο του συνόλου των μαθητών μας σε τέτοιο σημείο ώστε να βάζουμε ένα θέμα 5 ή 10 γραμμών που θέτει ένα γενικό πρόβλημα και λέμε λύστε το και αυτοί να μπορούν να επιλέξουν  με ποιο τρόπο θα το λύσουν και εύχομαι τότε και εμείς να έχουμε τη διαύγεια να μπορούμε χωρίς να τους αδικήσουμε να βαθμολογούμε αξιοκρατικά την πληθώρα των διαφορετικών λύσεων που θα λαμβάνουμε
Τάσος_Χατζηπαπαδόπουλος
Κύριε δεν έχω internet
http://users.sch.gr/chatzipap/

George Eco

Παράθεση από: parsenopoulou στις 11 Μαρ 2021, 08:33:35 ΜΜ
Συνάδελφε Bugman ,θεωρείς ότι σε ένα πιθανό θέμα εξετάσεων ένας μαθητής μπορεί να έχανε μονάδες αν η συνάρτηση ήταν τύπου χαρακτήρα; Με την προϋπόθεση φυσικά ότι δεν υπήρχε κάτι δεσμευτικό στην εκφώνηση...

ΌΧΙ!

Στις Εξετάσεις όμως νομίζω πως πέφτουν συνήθως πιο ρητές εκφωνήσεις.

parsenopoulou

Παράθεση από: George Eco στις 12 Μαρ 2021, 01:32:40 ΠΜ
ΌΧΙ!

Στις Εξετάσεις όμως νομίζω πως πέφτουν συνήθως πιο ρητές εκφωνήσεις.

Aυτό ελπίζω και εγώ! Σε σαφείς εκφωνήσεις για το καλό των μαθητών!

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

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

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