ΣΩΣΤΟ - ΛΑΘΟΣ στα υποπρογράμματα

Ξεκίνησε από kpapad13, 12 Μαΐου 2015, 04:31:33 ΜΜ

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

Αθανάσιος Πέρδος

Όταν μιλάμε για πανελλαδικές, σεβαστές οι απόψεις όλων αλλά για μένα οι απαντήσεις πρέπει να δίνονται μόνο με βάση το διδακτικό πακέτο.

Στο Βιβλίο Μαθητή (Έκδοση 2014) γράφει:
"Κάθε διαδικασία ή συνάρτηση μπορεί να καλείται από το κύριο πρόγραμμα ή από άλλη διαδικασία ή συνάρτηση Σε κάθε περίπτωση μετά το τέλος της εκτέλεσης της διαδικασίας ή της συνάρτησης γίνεται επιστροφή ακριβώς μετά το σημείο απ' όπου κλήθηκε." , σελ 179

"Η τεχνική αυτή εφαρμόζεται και γενικότερα, δηλαδή οποτεδήποτε μία διαδικασία ή συνάρτηση καλεί μία διαδικασία ή συνάρτηση. σελ 182

Στο τετράδιο Μαθητή (Έκδοση 2014)
Τι είδους υποπρόγραμμα, διαδικασία ή συνάρτηση πρέπει να χρησιμοποιήσεις για τα παρακάτω: Β) Εισαγωγή ενός δεδομένου. ,σελ 104
Για το συγκεκριμένο ερώτημα το βιβλίο καθηγητή έχει ως απάντηση Συνάρτηση.

Αν κάποιος από τους θεματοδότες βάλει ως ερώτηση Σωστού - Λάθους τη φράση "Μία Διαδιακασία μπορεί να κληθεί από μία Συνάρτηση" εσύ τι θα απαντήσεις; Αυτό είναι το άλλωστε και το θέμα του νήματος.

Εγώ πάντως θα απαντήσω Σωστό.
Και θα απαντήσω σωστό γιατί ο καθηγητής πρέπει να ακολουθεί το διδακτικό πακέτο και τίποτα άλλο. Για να μην χάνουν μονάδες άδικα κάποιοι μαθητές. Δεν μπορεί να τους λέει ότι πιστεύει αυτός  για να το παίζει ξερόλας.

Απο εκεί και πέρα για το πως πιστεύω ότι πρέπει να δουλεύουν οι διαδικασίες και οι συναρτήσεις νομίζω ότι δεν αφορά το συγκεκριμένο νήμα. Και ειλικρινά με κούρασε η συζήτηση. Ας διδαξει ο καθένας ότι τον φωτίσει ο Θεός.

ether

Παράθεση από: evry στις 15 Μαΐου 2015, 06:00:12 ΜΜ
3. Με την εισαγωγή τα πράγματα δεν είναι τόσο ξεκάθαρα. Από τον ορισμό δε φαίνεται ότι απαγορεύεται παρά μόνο από τα συμφραζόμενα, και δεν ξέρω αν μπορούμε να στηριχτούμε σε αυτά. Για παράδειγμα λέει ότι η λίστα παραμέτρων στη διαδικασία μπορεί να είναι κενή. Και ρωτάει κάποιος: γιατί? δεν μπορεί να είναι κενή και στη συνάρτηση? Φαντάζομαι καταλαβαίνουμε όλοι γιατί δεν μπορεί
Εκτός από το γεγονός ότι το βιβλίο για τη συνάρτηση δεν το αναφέρει ρητά όπως για τη διαδικασία, για ποιο άλλο λόγο μια συνάρτηση δε θα μπορούσε να έχει κενή λίστα παραμέτρων, κατά την ίδια έννοια που ένας αλγόριθμος, σύμφωνα με το βιβλίο, μπορεί να έχει καμία είσοδο;

Αθανάσιος Πέρδος

Για μένα το θέμα με το  σωστό λάθος έχει λήξει και νομίζω ότι το έχω αιτιολογήσει πλήρως.

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

Παράθεση από: evry στις 15 Μαΐου 2015, 06:00:12 ΜΜ
Οπότε συνοψίζω τις απόψεις μου ώστε να είμαι ξεκάθαρος και κατανοητός όσο γίνεται
2. Από τον ορισμό της συνάρτησης είναι ξεκάθαρο ότι δεν μπορεί να έχει άλλη έξοδο εκτός από την τιμή που επιστρέφει. Αν καλέσει διαδικασία και αυτη εκτυπώσει στην οθόνη δεδομένα που πήρε από τη συνάρτηση αυτό είναι έξοδος. Δηλαδή Γράψε δεν μπορείς να έχεις μέσα σε συνάρτηση ή σε διαδικασία που καλείται από συνάρτηση (αυτό ας το ονομάσουμε έμμεση έξοδο).

Έμμεση έξοδος. Μάλιστα! Να μια νέα πρόταση!

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

Στις επαναληπτικές 2014 έπεσε αυτό το θέμα.΄
---------------------------------------------------------------------------------------------------------------
Δίνεται το παρακάτω πρόγραμμα:

01       Πρόγραμμα Κλήση_Υποπρογραμμάτων
02       Μεταβλητές
03          Ακέραιες: α, β, γ, π
04       Αρχή
05          Διάβασε α
06          β <- 3
07          γ <- Φ(α,β)
08          α <- α+γ
09          Αν α>20 τότε
10             γ <- Φ(β,α)
11          Αλλιώς
12             γ <- Φ(γ,α)
13          Τέλος_αν
14          π <- 0
15          Όσο γ mod 10=0 επανάλαβε
16             π <- π+1
17             γ <-γ div 10
18          Τέλος_επανάληψης
19          Γράψε γ,π
20       Τέλος_προγράμματος

21       Συνάρτηση Φ(μ, λ): Ακέραια
22       Μεταβλητές
23          Ακέραιες: κ, λ, μ
24       Αρχή
25          κ <- λ+μ
26          Φ <- κ^μ
27       Τέλος_συνάρτησης

Για την παρακολούθηση της εκτέλεσης του προγράμματος με τιμή εισόδου α=2, δίνεται το παρακάτω υπόδειγμα πίνακα τιμών, μερικώς συμπληρωμένο ως εξής:
−    Στη στήλη με τίτλο «αριθμός γραμμής» καταγράφεται ο αριθμός γραμμής της εντολής που εκτελείται.
−    Στη στήλη με τίτλο «έξοδος» καταγράφεται η τιμή εξόδου, εφόσον η εντολή που εκτελείται είναι εντολή εξόδου.
−    Στη στήλη με τίτλο «συνθήκη» καταγράφεται η λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ, εφόσον η εντολή που εκτελείται περιλαμβάνει συνθήκη.
−    Οι υπόλοιπες στήλες του πίνακα αντιστοιχούν στις μεταβλητές του κυρίου προγράμματος.
−    Σε όποια σημεία καλείται υποπρόγραμμα και κατά τη διάρκεια της εκτέλεσής του, ο πίνακας επεκτείνεται με μια στήλη για κάθε μεταβλητή του υποπρογράμματος.

Αριθμός Γραμμής   Έξοδος   Συνθήκη   α   β   γ   π   
05                                                     2            
06                                                         3         
07                                                                      Φ   κ   λ   μ
                                                                                    3   2
25                                                                           5      
26                                                                      25         
07                                                             25      


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

Με βάση αυτά που λες θα έπρεπε στη στήλη Έξοδος στο τέλος να υπάρχει ο αριθμός 25. Γιατί άραγε δεν τον γράψαν οι  θεματοδότες; Το ξέχασαν; Δεν είναι έξοδος της συνάρτησης η τιμή 25;



ολγα

#33
Παράθεση από: aperdos στις 16 Μαΐου 2015, 10:46:39 ΠΜ
Για μένα το θέμα με το  σωστό λάθος έχει λήξει
... μάλλον για τον καθένα από μας έχει λήξει, αλλά καλύτερα ας περιμένουμε την νέα ομάδα εργασίας μήπως και αποφασίσει και τότε πραγματικά θα λήξει.

Παράθεση από: aperdos στις 14 Μαΐου 2015, 11:01:07 ΜΜ
Για το αν τα ελληνικά είναι σαφέστατα ή όχι δώσε σε 10 ανθρώπους άσχετους με το μάθημα να διαβάσουν τις δύο αυτές παραγράφους και ρώτα τους αν είναι σωστή ή λάθος η πρόταση "Μία συνάρτηση μπορεί να καλέσει μία διαδικασία".
Δε θα το δώσω σε άσχετους που δεν ξέρουν τι λέει το βιβλίο πιο πριν και παρακάτω ούτε καταλαβαίνουν τον ορισμό της συνάρτησης και της διαδικασίας. Για να συζητάμε αυτό το Σ-Λ τόσοι άνθρωποι εδώ μέσα και να μη συμφωνούμε, σημαίνει ότι υπάρχει ασάφεια.

Παράθεση από: aperdos στις 14 Μαΐου 2015, 11:01:07 ΜΜ
Όντως γράφει στο word ΔΤ2 το οποίο προφανώς είναι λάθος. Το σωστό είναι ΔΤ1. Και εξηγώ γιατί. Το βιβλίο καθηγητή (έντυπη μορφή 1999) γράφει Διαδικασία. Το βιβλίο καθηγητή (έντυπη μορφή 2004) γράφει Συνάρτηση. Το 2004 είναι το διορθωμένο.

Στο βιβλίο καθηγητή (έντυπη 2004) δεν διορθώθηκε μόνο το <, αλλά άλλαξε και όνομα η μεταβλητή Μεγ σε Μικρ.
Όπως και να χει όταν εκτυπώνεται ένας καινούργιος διορθωμένος οδηγός, ο παλιός παύει να ισχύει.


Γιατί "προφανώς"; Εκ του αποτελέσματος; Οι διορθώσεις έγιναν με βάση αυτά που γράφει το word, αν καταλαβαίνω σωστά. Το ερώτημα είναι αν πρέπει να δεχθούμε χωρίς συζήτηση ότι η διόρθωση έγινε σωστά. Είμαστε σίγουροι  για αυτό ή μήπως αντί για διόρθωση προστέθηκε ένα λάθος;  Μήπως ακούει κανείς από την τότε ομάδα εργασίας να μας το επιβεβαιώσει; Συγνώμη που επιμένω σε αυτό. ΄
Μήπως δεν θα κάναμε αυτή τη συζήτηση τώρα, αν η διόρθωση γινόταν σύμφωνα με το word, δηλαδή συνάρτηση αντί διαδικασίας για την ΔΤ2 Β):

Να γράψεις υποπρογράμματα που υλοποιούν τα παρακάτω:

Α) ...
Β) Να δέχεται δύο αριθμούς και να επιστρέφει το μικρότερο από δύο αριθμούς


Αν γινόταν αυτή η διόρθωση στη ΔΤ2 Β, που προφανώς είναι σύμφωνη με τους ορισμούς, δε θα συζητούσαμε τώρα.

Αλήθεια αν γράφαμε εμείς πανελλήνιες, θα επέλεγε κανείς από εμάς διαδικασία για αυτό το θέμα, (παρόλο που έτσι είναι λυμένο στο βιβλίο του καθηγητή); Και αν ναι, νομίζετε ότι θα έπρεπε να πάρουμε όλες τις  μονάδες επειδή έτσι το λέει το βιβλίο του καθηγητή;

Αθανάσιος Πέρδος

#34
Παράθεση από: ολγα στις 17 Μαΐου 2015, 11:20:53 ΜΜ
... μάλλον για τον καθένα από μας έχει λήξει, αλλά καλύτερα ας περιμένουμε την νέα ομάδα εργασίας μήπως και αποφασίσει και τότε πραγματικά θα λήξει.

Με τη διαφορά ότι για μένα έχει λήξει το συγκεκριμένο σωστό - λάθος με βάση τι λέει το σχολικό βιβλίο και όχι με τι φαντάζομαι ότι θέλει να πει.

Παράθεση από: ολγα στις 17 Μαΐου 2015, 11:20:53 ΜΜ
Δε θα το δώσω σε άσχετους που δεν ξέρουν τι λέει το βιβλίο πιο πριν και παρακάτω ούτε καταλαβαίνουν τον ορισμό της συνάρτησης και της διαδικασίας.
Έχουν κρυμμένα μηνύματα μέσα οι δύο παράγραφοι και μόνο λίγοι μπορούν να τα καταλάβουν.

Παράθεση από: ολγα στις 17 Μαΐου 2015, 11:20:53 ΜΜ
Για να συζητάμε αυτό το Σ-Λ τόσοι άνθρωποι εδώ μέσα και να μη συμφωνούμε, σημαίνει ότι υπάρχει ασάφεια.
Ποιοι είναι οι τόσοι άνθρωποι. Γιατί μόνο δύο εγώ βλέπω από αυτούς που συμμετείχαν στη συζήτηση να ερμηνεύουν διαφορετικά.

Παράθεση από: ολγα στις 17 Μαΐου 2015, 11:20:53 ΜΜ
Μήπως δεν θα κάναμε αυτή τη συζήτηση τώρα, αν η διόρθωση γινόταν σύμφωνα με το word, δηλαδή συνάρτηση αντί διαδικασίας για την ΔΤ2 Β):

Να γράψεις υποπρογράμματα που υλοποιούν τα παρακάτω:

Α) ...
Β) Να δέχεται δύο αριθμούς και να επιστρέφει το μικρότερο από δύο αριθμούς


Αν γινόταν αυτή η διόρθωση στη ΔΤ2 Β, που προφανώς είναι σύμφωνη με τους ορισμούς, δε θα συζητούσαμε τώρα.

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

Για αυτό άλλωστε έγινε χαμός το 2007 με το 2ο θέμα. Ζήτησαν να μετατραπεί συνάρτηση σε διαδικασία.

Δίνεται παρακάτω ένα πρόγραμμα με ένα υποπρόγραμμα:

ΠΡΟΓΡΑΜΜΑ Υπολογισμοί
ΜΕΤΑΒΛΗΤΕΣ
   ΠΡΑΓΜΑΤΙΚΕΣ: α, β, γ
ΑΡΧΗ
   ΔΙΑΒΑΣΕ α, β
     γ <- α + Πράξη (α, β)
     ΓΡΑΨΕ γ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
   
ΣΥΝΑΡΤΗΣΗ Πράξη (χ, ψ): ΠΡΑΓΜΑΤΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
   ΠΡΑΓΜΑΤΙΚΕΣ: χ, ψ
ΑΡΧΗ
   ΑΝ χ >= ψ ΤΟΤΕ
      Πράξη <-  χ – ψ
     ΑΛΛΙΩΣ
      Πράξη <-  χ + ψ
   ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

α. Να ξαναγράψετε το πρόγραμμα ώστε να επιτελεί την ίδια λειτουργία χρησιμοποιώντας διαδικασία αντί της συνάρτησης, την οποία διαδικασία και να κατασκευάσετε. (Μονάδες 7)

Πως τόλμησαν; Να γραφεί διαδικασία ενώ επιστρέφεται μία τιμή; Μάλλον θα είχαν διαβάσει το βιβλίο καθηγητή.


Ελπίζω να μην διορθώνεις γραπτά.
Και εγώ αυτά που γράφω, τα γράφω με ονοματεπώνυμο.

nikolasmer

Κρίμα.
Παράθεση
Για αυτό άλλωστε έγινε χαμός το 2007 με το 2ο θέμα. Ζήτησαν να μετατραπεί συνάρτηση σε διαδικασία.

Δίνεται παρακάτω ένα πρόγραμμα με ένα υποπρόγραμμα:

ΠΡΟΓΡΑΜΜΑ Υπολογισμοί
ΜΕΤΑΒΛΗΤΕΣ
    ΠΡΑΓΜΑΤΙΚΕΣ: α, β, γ
ΑΡΧΗ
    ΔΙΑΒΑΣΕ α, β
     γ <- α + Πράξη (α, β)
     ΓΡΑΨΕ γ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
   
ΣΥΝΑΡΤΗΣΗ Πράξη (χ, ψ): ΠΡΑΓΜΑΤΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
    ΠΡΑΓΜΑΤΙΚΕΣ: χ, ψ
ΑΡΧΗ
    ΑΝ χ >= ψ ΤΟΤΕ
       Πράξη <-  χ – ψ
     ΑΛΛΙΩΣ
       Πράξη <-  χ + ψ
    ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

α. Να ξαναγράψετε το πρόγραμμα ώστε να επιτελεί την ίδια λειτουργία χρησιμοποιώντας διαδικασία αντί της συνάρτησης, την οποία διαδικασία και να κατασκευάσετε. (Μονάδες 7)

Πως τόλμησαν; Να γραφεί διαδικασία ενώ επιστρέφεται μία τιμή; Μάλλον θα είχαν διαβάσει το βιβλίο καθηγητή.


Με την παραπάνω αναφορά  πιστεύω ότι κάηκε ενα πολύ όμορφο θέμα Β. Με τυπική παράμετρο η οποία μέσα στο σώμα της Συνάρτησης να μεταβάλλεται.

Όπου συζητήθηκε με τους μαθητές μου "Εισαγωγή ενός 2 ή και περισσότερων δεδομένων" απάντησα Διαδικασία και τους απέτρεψα να χρησιμοποιήσουν κάτι άλλο. Τώρα ίσως και να ήταν λάθος. Όπου συζητήθηκε "Είσοδος ενός 2 ή τριών δεδομένων" απαντήσαμε Συνάρτηση ή και Διαδικασία.

Εντυπωσιάζομαι με τις αναλύσεις συναδέλφων μέσα στο Στέκι και μου αρέσουν οι ζυμώσεις που γίνονται. Γουστάρω.

Κάτι τελευταίο
" Ο Διερμηνευτής της ΓΛΩΣΣΑΣ είναι ένα ολοκληρωμένο περιβάλλον ανάπτυξης αλγορίθμων σε μορφή ψευδοκώδικα, ειδικά σχεδιασμένο για τη ΓΛΩΣΣΑ προγραμματισμού που διδάσκεται στα πλαίσια του μαθήματος Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον (ΑΕΠΠ) της Γ΄ Γενικού Λυκείου. Είναι εγκεκριμένος από το Παιδαγωγικό Ινστιτούτο ως κατάλληλος για εργαστηριακή χρήση στη Β/θμια εκπαίδευση και έχει διατεθεί σε όλα τα σχολεία μέσω του πακέτου Αλγοριθμική και Προγραμματισμός του ΥΠΕΠΘ."

Αν αμφιβάλλω για κάτι απλά το γράφω στον Διερμηνευτή. Τον εμπιστεύομαι  και πιστεύω ότι είναι σύννομος με το σχολικό.
Τα παραπάνω αποτελούν προσωπικές μου φυσικά απόψεις.
Καλή επιτυχία στα παιδιά με την ελπίδα πως σε κανένα θέμα δεν θα υπάρχει ασάφεια, πως δεν θα υπάρχει πολύ θεωρία  και πως τα θέματα θα εξετάζουν τον αλγοριθμικό τρόπο σκέψης και όχι τον παπαγαλίστικο.
Μερεντίτης Νικόλαος
Πληροφορικός

alkisg

Συνάδελφοι επειδή έγραψε εδώ πάλι ο mirtilo/arliba/stpdt/fupat κλπ, να επισημάνω ότι πλέον μόλις τον καταλαβαίνουμε θα διαγράφουμε όλα του τα μηνύματα αναδρομικά καθώς και θα απενεργοποιούμε μόνιμα το λογαριασμό του, οπότε μην ασχοληθείτε ποτέ να του απαντήσετε γιατί θα φαίνεται ότι κάνατε παράθεση σε διαγραμμένο μήνυμα, δεν θα βγάζει νόημα η συζήτηση.
Πατήστε απλά το σύνδεσμο για την Αναφορά μηνύματος, γράψτε σαν αιτιολογία "fupat" και μετά αναλαμβάνουμε εμείς.
Όπως είχαμε πει, πλέον τον δεχόμαστε μόνο ως επώνυμο χρήστη και όχι ως ανώνυμο.

gpapargi

Παιδιά το σχολικό βιβλίο δεν είναι ευαγγέλιο. Κάνει και λάθη. Αν διαβάσεις κανείς το σχολικό βιβλίο και προσπαθήσει να απαντήσει τη ΔΤ2 (δηλαδή με τι υποπρόγραμμα ΠΡΕΠΕΙ να διαβάσεις ένα δεδομένο), θα απαντήσει με διαδικασία. Παρόλα αυτά ο βιβλίο καθηγητή λέει συνάρτηση.
Τι πάει να πει αυτό; Ότι είναι συνάρτηση επειδή έτσι το λέει το βιβλίο καθηγητή; Προφανώς κάνει λάθος. Κανένα βιβλίο δεν είναι υπεράνω της λογικής... πόσο μάλλον ένα σχολικό εγχειρίδιο. Όλα κρίνονται. Θα το έγραψαν άτομα που δεν έχουν και μεγάλη επαφή με το μάθημα.  Μπορεί να αντέγραψαν κάτι από παλιά. Η λέξη «πρέπει» είναι που κάνει εμφανές το λάθος. Ανεξάρτητα από το αν επιτρέπεται ή όχι η συνάρτηση για διάβασμα σίγουρα δεν είναι η συνάρτηση υποχρεωτική. Και εμείς είμαστε θετικοί επιστήμονες. Δε βάζουμε τις «γραφές» πάνω από τη λογική. 

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

Όλοι γνωρίζουμε ότι το  διδακτικό πακέτο της ΑΕΠΠ παρουσιάζει αρκετά προβλήματα.  Παρόλο που πέρασαν αρκετά έτη από τα πρώτα πέτρινα χρόνια της ΑΕΠΠ, δυστυχώς οι ασάφειες εξακολουθούν να υπάρχουν και να μας ταλαιπωρούν, καθώς κανείς δεν ενδιαφέρθηκε πραγματικά να ασχοληθεί με τη βελτίωση των διδακτικών βιβλίων. Βέβαια φταίμε και εμείς που της ανακυκλώνουμε συχνά και καταναλώνουμε αρκετό χρόνο στο να αποδείξουμε ορισμένες φορές τα αυτονόητα.

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

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

Σύμφωνα με όλα αυτά που συζητάμε, ένα υποπρόγραμμα μπορεί να καλέσει ένα οποιοδήποτε άλλο υποπρόγραμμα, άρα μια συνάρτηση μπορεί να καλέσει μία διαδικασία. Από τη στιγμή που δεν υπάρχει κάποιος περιορισμός ,τότε ΝΑΙ μια συνάρτηση μπορεί να καλέσει μία διαδικασία η οποία διαβάζει ή  εμφανίζει αποτελέσματα.




δοση 2014)
Τι είδους υποπρόγραμμα, διαδικασία ή συνάρτηση πρέπει να χρησιμοποιήσεις για τα παρακάτω: Β) Εισαγωγή ενός δεδομένου. ,σελ 104
Για το συγκεκριμένο ερώτημα το βιβλίο καθηγητή έχει ως απάντηση Συνάρτηση.

Αν κάποιος από τους θεματοδότες βάλει ως ερώτηση Σωστού - Λάθους τη φράση "Μία Διαδιακασία μπορεί να κληθεί από μία Συνάρτηση" εσύ τι θα απαντήσεις; Αυτό είναι το άλλωστε και το θέμα του νήματος.

Αθανάσιος Πέρδος

Παράθεση από: alkisg στις 18 Μαΐου 2015, 12:43:47 ΜΜ
Συνάδελφοι επειδή έγραψε εδώ πάλι ο mirtilo/arliba/stpdt/fupat κλπ, να επισημάνω ότι πλέον μόλις τον καταλαβαίνουμε θα διαγράφουμε όλα του τα μηνύματα αναδρομικά καθώς και θα απενεργοποιούμε μόνιμα το λογαριασμό του, οπότε μην ασχοληθείτε ποτέ να του απαντήσετε γιατί θα φαίνεται ότι κάνατε παράθεση σε διαγραμμένο μήνυμα, δεν θα βγάζει νόημα η συζήτηση.
Πατήστε απλά το σύνδεσμο για την Αναφορά μηνύματος, γράψτε σαν αιτιολογία "fupat" και μετά αναλαμβάνουμε εμείς.
Όπως είχαμε πει, πλέον τον δεχόμαστε μόνο ως επώνυμο χρήστη και όχι ως ανώνυμο.

Με ενημέρωσαν ότι το μήνυμα αφορούσε εμένα. Θα ήθελα να απαντήσω για αυτά που έγραψε ως προς το πρόσωπο μου αλλά δέχομαι την πολιτική του forum για την διαγραφή των μηνυμάτων του. 

Αθανάσιος Πέρδος

Παράθεση από: gpapargi στις 18 Μαΐου 2015, 01:37:12 ΜΜ
Παιδιά το σχολικό βιβλίο δεν είναι ευαγγέλιο. Κάνει και λάθη. Αν διαβάσεις κανείς το σχολικό βιβλίο και προσπαθήσει να απαντήσει τη ΔΤ2 (δηλαδή με τι υποπρόγραμμα ΠΡΕΠΕΙ να διαβάσεις ένα δεδομένο), θα απαντήσει με διαδικασία. Παρόλα αυτά ο βιβλίο καθηγητή λέει συνάρτηση.
Τι πάει να πει αυτό; Ότι είναι συνάρτηση επειδή έτσι το λέει το βιβλίο καθηγητή; Προφανώς κάνει λάθος. Κανένα βιβλίο δεν είναι υπεράνω της λογικής... πόσο μάλλον ένα σχολικό εγχειρίδιο. Όλα κρίνονται. Θα το έγραψαν άτομα που δεν έχουν και μεγάλη επαφή με το μάθημα.  Μπορεί να αντέγραψαν κάτι από παλιά. Η λέξη «πρέπει» είναι που κάνει εμφανές το λάθος. Ανεξάρτητα από το αν επιτρέπεται ή όχι η συνάρτηση για διάβασμα σίγουρα δεν είναι η συνάρτηση υποχρεωτική.
Τελικά τι είναι σωστό; Διαδικασία, Συνάρτηση ή και τα δύο;
Ποια είναι ακριβώς τα άτομα που δεν είχαν μεγάλη επαφή με το μάθημα; Οι συγγραφείς;

Παράθεση από: gpapargi στις 18 Μαΐου 2015, 01:37:12 ΜΜ
Και εμείς είμαστε θετικοί επιστήμονες. Δε βάζουμε τις «γραφές» πάνω από τη λογική. 
Εδώ με βρίσκεις σύμφωνο. Το βιβλίο μπορεί να κάνει και λάθη. Το λάθος του βιβλίου που κατάλαβα εγώ μέσα από αυτή τη συζήτηση είναι ότι μιλάει για κλήση διαδικασίας από συνάρτηση ενώ έτσι μπορεί να παρουσιάστει το φαινόμενο της έμμεσης έξοδου όπως ονομάστηκε.

Παράθεση από: evry στις 15 Μαΐου 2015, 06:00:12 ΜΜ
Οπότε συνοψίζω τις απόψεις μου ώστε να είμαι ξεκάθαρος και κατανοητός όσο γίνεται

1. Αν δεχτούμε ότι μπορώ να καλώ διαδικασία μέσα από συνάρτηση η οποία περιέχει Διάβασε/Γράψε είναι σαν να χρησιμοποιώ Διάβασε/Γράψε μέσα στη Συνάρτηση, οπότε πρέπει να δεχτούμε και αυτό
2. Από τον ορισμό της συνάρτησης είναι ξεκάθαρο ότι δεν μπορεί να έχει άλλη έξοδο εκτός από την τιμή που επιστρέφει. Αν καλέσει διαδικασία και αυτη εκτυπώσει στην οθόνη δεδομένα που πήρε από τη συνάρτηση αυτό είναι έξοδος. Δηλαδή Γράψε δεν μπορείς να έχεις μέσα σε συνάρτηση ή σε διαδικασία που καλείται από συνάρτηση (αυτό ας το ονομάσουμε έμμεση έξοδο).

Αναγκάστηκα λοιπόν να ανατρέξω στη βιβλιογραφία. Έμμεση έξοδο δεν βρήκα. Δεν βρήκα όμως και απαγόρευση της κλήσης διαδικασίας από συνάρτηση. Διαδικασίας που διαβάζει ή εκτυπώνει ενώ καλείται από συνάρτηση.
Παραθέτω λοιπόν κώδικα σε fortran, basic και pascal όπου η πρόταση "Μία διαδικασία μπορεί να κληθεί από συνάρτηση" μόνο λάθος δεν προκύπτει. Θυμίζω ότι basic και pascal έχει μέσα το διδακτικό πακέτο.

program steki

   call eisodos(a)
   call eksodos(a)
   
   b = test(a)
   write(*,*) 'b = ', b
 
 end program steki

subroutine eisodos(X)
read(*,*) X
return
end

subroutine eksodos(X)
write (*,*) X
return
end

function test (z)
call eisodos(c)
call eksodos(c)
test = z * c
return
end


DECLARE SUB eisodos (x)
DECLARE SUB eksodos (x)
DECLARE FUNCTION steki (x)

Cls
Print "hello"
Call eisodos(a)
Call eksodos(a)
Print steki(a)


End

Sub eisodos(x)
INPUT x

End Sub

Sub eksodos(x)
Print x
End Sub

Function steki(x)
Call eisodos(c)
Call eksodos(c)
steki = x * c
End Function
 

program test;
var
a, c: integer;

procedure eisodos(var x: integer);
begin
readln(x);
end;

procedure eksodos(var x: integer);
begin
writeln(x);
end;

function steki(x: integer) : integer;
var
b: integer;
begin
eisodos(b);
eksodos(b);
steki := x * b
end;

begin
eisodos(a);
eksodos(a);
c:= steki(a);
writeln(c);
end.


Λοιπόν θα δούμε κάποια βιβλιογραφία όπου στηρίζεται η άποψη "Μία διαδικασία δεν μπορεί να κληθεί από μία συνάρτηση"; Ή μήπως όχι;

gpapargi

Παράθεση από: aperdos στις 19 Μαΐου 2015, 01:28:29 ΠΜ
Τελικά τι είναι σωστό; Διαδικασία, Συνάρτηση ή και τα δύο;
Ποια είναι ακριβώς τα άτομα που δεν είχαν μεγάλη επαφή με το μάθημα; Οι συγγραφείς;

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

bugman

Μια σκέψη μόνο...
H ΓΛΩΣΣΑ από όσο ξέρω περνάει κατά αναφορά παραμέτρους στις διαδικασίες και κατά τιμή παραμέτρους στις συναρτήσεις. Αυτό σημαίνει ότι και οι δυο τύποι υποπρογραμμάτων, τόσο η διαδικασία όσο και η συνάρτηση επιστρέφουν αλλαγμένες τιμές. Αν λοιπόν μας ζητήσουν μέσω διαδικασίας να γυρίσουμε την μεγαλύτερη τιμή από δυο μεταβλητές τότε το πιο απλό πράγμα είναι να καλέσουμε μια διαδικασία με τρεις παραμέτρους όπου η τρίτη θα είναι το αποτέλεσμα.

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


evry

Αυτό που είπα ήταν "αυτό ας το ονομάσουμε έμμεση έξοδο."
Εσύ από αυτό τι καταλαβαίνεις? ότι υπάρχει στη βιβλιογραφία? Δεν είναι προφανές ότι είναι μια δική μου επινόηση της στιγμής για να εξηγήσω τις σκέψεις μου και όχι κάποιος δόκιμος όρος?
Παράθεση από: aperdos στις 19 Μαΐου 2015, 01:28:29 ΠΜ
Αναγκάστηκα λοιπόν να ανατρέξω στη βιβλιογραφία. Έμμεση έξοδο δεν βρήκα.
Όταν χρησιμοποίησα τη λέξη "καλοπροαίρετα" προηγουμένως το έκανα για αυτόν ακριβώς το λόγο. Διότι το να διαστρεβλώνεις αυτά που λέει ο άλλος δείχνει απλά ότι δεν θέλεις να κάνεις διάλογο, αλλά να συμφωνήσουμε όλοι πόσο δίκιο έχεις.
Το ίδιο έκανες και προηγουμένως όπου με παρουσίασες να λέω σε μήνυμά μου που "ανακαλύψες" το 2007, διαφορετικά πράγματα από ότι λέω τώρα. Όταν σου υπέδειξα το λάθος σου δεν είχες καν την ευθιξία να ζητήσεις συγγνώμη, αν φυσικά το έκανες κατά λάθος.
https://alkisg.mysch.gr/steki/index.php?topic=6223.msg72178#msg72178
και για αυτό σου έγραφα
Παράθεση
Μα και το 2007 η διαδικασία έλεγα ότι είναι το σωστό!!! :-\ Από που έβγαλες το συμπέρασμα ότι έλεγα το αντίθετο?  :-\
Απλά για κάποιο λόγο δεν διάβασες όλη τη συζήτηση  :-\
Καλό λοιπόν θα ήταν να διαβάσεις όλο το thread ώστε να καταλάβεις ακριβώς τι έλεγα.

Έκανες ότι δεν κατάλαβες τι εννοώ με την έμμεση έξοδο και στη συνέχεια διαστρεβλώνεις πάλι αυτά που λέω αναφέροντας
Παράθεση από: aperdos
Λοιπόν θα δούμε κάποια βιβλιογραφία όπου στηρίζεται η άποψη "Μία διαδικασία δεν μπορεί να κληθεί από μία συνάρτηση"; Ή μήπως όχι;
Ενώ εγώ είπα ότι μια διαδικασία δεν μπορεί να κληθεί από συνάρτηση αν περιέχει εντολές εισόδου εξόδου γιατί τότε θα είναι το ίδιο με το να έχει μέσα στη συνάρτηση Διάβασε/Γράψε.

Όσο για τη βιβλιογραφία που ζητάς υπάρχουν άπειρα παραδείγματα αυτών που λέμε pure functions, συναρτήσεις χωρίς παρενέργειες (side effects)
Υπάρχουν γλώσσες προγραμματισμού στις οποίες ορίζονται pure functions και στις οποίες σε κάποιες περιπτώσεις σου απαγορεύεται όχι μόνο να έχεις εντολές I/O αλλά και οποιαδήποτε άλλη έξοδο, είτε αυτή αφορά αρχεία, ακόμα και global μεταβλητές στη μνήμη. Για παράδειγμα αυτό συμβαίνει στην Ada 95 (με την δήλωση pragma Pure) στην High Performance Fortran (PURE) και στη VHDL-93 (pure).
Το ίδιο συμβαίνει και στις const functions της C όπου δεν επιτρέπονται καθόλου side effects. (Προσοχή!! Δεν εννοώ τις γνωστές συναρτήσεις const αλλά αυτές στις οποίες ορίζεις το const σαν attribute, όπως διαφαίνεται από τις παρακάτω αναφορές)
Υπάρχει και pure attribute αλλά το const είναι πιο ισχυρό με την έννοια ότι δεν σου επιτρέπει όχι να πειράξεις αλλά ούτε καν να διαβάσεις global μεταβλητές.
Δες εδώ
http://stackoverflow.com/questions/2798188/pure-const-function-attributes-in-different-compilers
http://www.unixwiz.net/techtips/gnu-c-attributes.html#const
http://www.nongnu.org/c-prog-book/online/x1019.html

Νομίζω ότι ένα καλό παράδειγμα για το τι είναι Pure functional γλώσσα είναι η Haskell.
http://en.wikipedia.org/wiki/Haskell_%28programming_language%29
Εχω ασχοληθεί πολύ λίγο αλλά έχω την εντύπωση ότι είναι πολύ πιο pure από άλλες συναρτησιακές γλώσσες. Αν κάνω λάθος ας με διορθώσει κάποιος που έχει ασχοληθεί περισσότερο. Ένα καλό paper που εξηγεί την ιδέα των Pure functions για τη Haskell είναι το παρακάτω:
http://www.cs.indiana.edu/~sabry/papers/purelyFunctional.ps

Τα ξαναλέω λοιπόν όσο πιο απλά μπορώ
Δεν είπα ότι δεν μπορείς να καλέσεις διαδικασία μέσα από συνάρτηση με την έννοια ότι απαγορεύεται και είναι λάθος. Είπα ότι αν δεχτούμε πως μπορούμε να καλέσουμε διαδικασία η οποία μέσα έχει διάβασε/γράψε μέσα από συνάρτηση είναι το ίδιο σαν να επιτρέπουμε διάβασε/γράψε μέσα σε συνάρτηση.

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

Κατά τη γνώμη μου το πιο λογικό σενάριο προσπαθώντας να αποκρυπτογραφήσουμε το κακογραμμένο κεφάλαιο 10 είναι ότι η κλήση διαδικασίας μέσα από συνάρτηση ή το Διάβασε/Γράψε μέσα σε συνάρτηση είναι κακή πρακτική αλλά όχι λάθος από το οποίο μπορούν να κοπούν μονάδες. Είναι κακή πρακτική όπως η αλλαγή του μετρητή της Για μέσα στην επανάληψη. Δεν είναι λάθος αλλά ας πούμε ότι είναι πολύ κακό. Αυτή είναι η απόψή μου και τα επιχειρήματά μου αναφέρονται στα προηγούμενα μηνύματά μου.
Διαβάζοντας το βιβλίο συνολικά και όχι αποσπασματικά νομίζω πως προκύπτει αυτό το σκεπτικό. Ότι δηλαδή δεν μπορούμε να έχουμε Γράψε/Διάβασε μέσα σε συνάρτηση. Δηλαδή όπως είχα πει και προηγουμένως οι συναρτήσεις του βιβλίου μπορούν να θεωρηθούν ως pure functions δίχως sideeffects.
Οι pure functions είναι πολύ σημαντικές σε πολλές πολύ κρίσμες εφαρμογές στις οποίες θέλουμε τα τμήματα κώδικα να είναι όσο πιο ανεξάρτητα γίνεται π.χ.αν λόγω concurrent programming δεν θέλουμε να έχουν πρόσβαση σε κοινόχρηστους πόρους.


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

evry

Παράθεση από: Καρκαμάνης Γεώργιος στις 18 Μαΐου 2015, 03:24:22 ΜΜ
Από τη στιγμή που δεν υπάρχει κάποιος περιορισμός ,τότε ΝΑΙ μια συνάρτηση μπορεί να καλέσει μία διαδικασία η οποία διαβάζει ή  εμφανίζει αποτελέσματα.
άρα μπορούμε μέσα σε Συνάρτηση να έχουμε Διάβασε / Γράψε κατά τη γνώμη σου?
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr