Καλημέρα σας!
Θα ήθελα να ρωτήσω τη γνώμη σας σχετικά με το παρακάτω:
Η εντολή "ΚΑΛΕΣΕ Διαδ(Α, Α, Β)" σε ένα Πρόγραμμα είναι συντακτικά σωστή; Αν επιστραφούν διαφορετικές τιμές από το υποπρόγραμμα τι τιμή θα έχει η μεταβλητή Α; ::) ::)
Σας ευχαριστώ εκ των προτέρων!!
Δες εδώ:
https://alkisg.mysch.gr/steki/index.php?topic=6099.msg70332#msg70332 (https://alkisg.mysch.gr/steki/index.php?topic=6099.msg70332#msg70332)
και εδώ από το μακρινό 2006 (δεν το πιστεύω ότι είχαμε θίξει αυτό το θέμα και πέρασαν 20 χρόνια!!! )
https://alkisg.mysch.gr/steki/index.php?topic=289.0 (https://alkisg.mysch.gr/steki/index.php?topic=289.0)
Συντακτικά δεν έχεις πρόβλημα. Αν υπάρξει κάποιο θέμα θα είναι σε runtime.
Φυσικά στην Ada αυτό δίνει λάθος σε compile time.
κι ενώ τα χρόνια έχουν περάσει...
Παραθέτω από τις επαναληπτικές του Σεπτέμβρη, φέτος:
Δίνεται η παρακάτω συνάρτηση ΠΡΑΞΗ, και το κύριο πρόγραμμα από όπου καλείται:
ΣΥΝΑΡΤΗΣΗ ΠΡΑΞΗ(x, y): ΠΡΑΓΜΑΤΙΚΗ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: x, y
ΑΡΧΗ
ΑΝ (x >= y) ΤΟΤΕ
x ← x + 3
ΑΛΛΙΩΣ
y ← y - 4
ΤΕΛΟΣ_ΑΝ
ΠΡΑΞΗ ← (x + y) / 2
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
ΠΡΟΓΡΑΜΜΑ ΚΥΡΙΟ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: α, β
ΠΡΑΓΜΑΤΙΚΕΣ: γ
ΑΡΧΗ
ΔΙΑΒΑΣΕ α, β
γ ← ΠΡΑΞΗ(α, β)
ΓΡΑΨΕ γ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
α) Κατασκευάστε διαδικασία Δ_ΠΡΑΞΗ που να επιτελεί την ίδια λειτουργία με τη συνάρτηση.
β) Ξαναγράψτε το κύριο πρόγραμμα, ώστε να επιτελεί την ίδια λειτουργία καλώντας τη διαδικασία Δ_ΠΡΑΞΗ αντί της συνάρτησης ΠΡΑΞΗ
άμα κάποιος κάνει τη διαδικασία έτσι;
ΔΙΑΔΙΚΑΣΙΑ Δ_ΠΡΑΞΗ(x, y, z)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: x, y
ΠΡΑΓΜΑΤΙΚΕΣ: z
ΑΡΧΗ
ΑΝ (x >= y) ΤΟΤΕ
x ← x + 3
ΑΛΛΙΩΣ
y ← y - 4
ΤΕΛΟΣ_ΑΝ
z ← (x + y) / 2
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
και ύστερα πει:
ΚΑΛΕΣΕ Δ_ΠΡΑΞΗ(α+0, β+0, γ)
όλα καλά...ε;
Μπορούμε στην λίστα παραμέτρων σε διαδικασία να έχουμε έκφραση ή σταθερά ,σε αντίθεση με την συνάρτηση ;
Γιατί πρέπει να σκαλίζουμε επικίνδυνες περιοχές;
Αν θα ζητηθεί κάτι τέτοιο που αγγίζει γκρίζες περιοχές, θα το συζητάμε για χρόνια, όπως το Γ Θέμα του 2010