Μέχρι τώρα είχα (κακώς προφανώς) την εντύπωση ότι σε μια συνάρτηση σε οποιοδήποτε σημείο είναι γραμμένο το όνομα της μέσα στο σώμα της κάνει επιστροφή (το εξηγούσα σαν return). Διαπίστωσα από το διερμηνευτή ότι η συνάρτηση κάνει επιστροφή όταν δει το τελος_συνάρτησης. πχ. στο παρακάτω κομμάτι κώδικα θεωρώ οτι θα έπρεπε να γυρίσει την τιμή 2 ενώ στο διερμηνευτή βλέπω ότι γυρίζει το 3. Θα ήθελα τη βοήθειας σας παρακαλώ
ΠΡΟΓΡΑΜΜΑ υποπρογράμματα_τεστ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: τ1, τ2, ret
ΑΡΧΗ
ΓΡΑΨΕ 'Δώστε 2 ακέραιους αριθμούς'
τ1<-- 2
τ2 <-- 3
ret <- - Synar(τ1, τ2)
ΓΡΑΨΕ ret
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΣΥΝΑΡΤΗΣΗ Synar (α1, α2): ΑΚΕΡΑΙΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: α1, α2
ΑΡΧΗ
Synar <- - α1
Synar <- - α2
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
Θεωρώ ότι είναι πιο απλό να διδάσκουμε ότι επιστρέφει την τιμή της Συνάρτησης όταν αυτή ολοκληρώνεται
Η Συνάρτηση επιστρέφει τη τελευταία τιμή που της έθεσες.
Καλή πρακτική είναι αν πρέπει να αλλάζει στη πορεία η τιμή να βάζεις μια μεταβλητή που πριν το τέλος θα δώσει μια φορά τη τιμή της στη συνάρτηση. Αυτό είναι κι αρκετά safe να γίνει κατανοητό.
Ωστόσο αν κάποιος ψαγμένος μαθητής σε ρωτήσει, με το ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ, επιστρέφεται η τελευταία τιμή που θέσαμε εις το όνομά της.
Χρήσιμο είναι και το:
Παράθεση"Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Στην
πραγματικότητα κάθε υποπρόγραμμα ενεργοποιείται με την είσοδο
σε αυτό που γίνεται πάντοτε από την αρχή του, εκτελεί ορισμένες
ενέργειες, και απενεργοποιείται με την έξοδο από αυτό που γίνεται
πάντοτε από το τέλος του."
(Σχολικό, σελ. 173)