Γενικό Λύκειο > Τμηματικός προγραμματισμός

Επιστροφή από Διαδικασία

(1/2) > >>

kapapi:
Δίνεται το παρακάτω πρόγραμμα (κύριο πρόγραμμα και υποπρόγραμμα):

1. ΠΡΟΓΡΑΜΜΑ ΠΡΟΓ
2. ΜΕΤΑΒΛΗΤΕΣ
3. ΑΚΕΡΑΙΕΣ: Α, Β
4. ΑΡΧΗ
5.     Α <- 1
6.     Β <- 2
7.     ΚΑΛΕΣΕ ΔΙΑΔ ( Α, Β )
8.     ΓΡΑΨΕ Α, Β
9. ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
10. !
11. ΔΙΑΔΙΚΑΣΙΑ ΔΙΑΔ (αριθ1, αριθ2)
12. ΜΕΤΑΒΛΗΤΕΣ
13. ΑΚΕΡΑΙΕΣ: αριθ1, αριθ2
14. ΑΡΧΗ
15.     αριθ1 <- 10
16.     αριθ2 <- 20
17. ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Ερώτηση_1: Οι τιμές που θα εμφανιστούν στην εντολή 8 - ΓΡΑΨΕ Α, Β - με ποιά εντολή θα τις έχουν πάρει ;
Απάντηση_1: Με την εντολή 17 -ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Ερώτηση_2: Η εντολή 17 είναι δηλωτική ή εκτελεστέα;
Απάντηση_2: ;

Ερώτηση_3: Μπορούν δηλωτικές εντολές να προκαλούν αλλαγή τιμών (ή γενικά μεταβολές) σε μεταβλητές;
Απάντηση_3: ;

kapapi:
Δε βλέπω ζύμωση.
Είναι και οι ημέρες τέτοιες, Κυριακή του Λαζάρου βλέπετε.

itt:
Δεδομένου ότι οι αριθ1, αριθ2 αντιγράφονται στις Α,Β όταν επιστρέφει η συνάρτηση, η αλλαγή θα γίνει στην γραμμή 7.

kapapi:
1. Το υποπρόγραμμα τώρα είναι διαδικασία,
άρα η γραμμή 7 μεταβιβάζει τιμές προς την διαδικασία, δηλαδή λόγω της 7 η παράμετρος αριθ1 θα πάρει την τιμή της Α, δηλαδή 1
και επίσης λόγω της 7, η παράμετρος αριθ2 θα πάρει την τιμή της Β, δηλαδή 2.

2. Η επιστροφή τιμών από την διαδικασία θα γίνει όταν αυτή τελειώσει, δηλαδή λόγω της εντολής 17, η παράμετρος αριθ1 θα επιστρέψει την τιμή της στην Α, δηλαδή 10
και επίσης λόγω της 17, η παράμετρος αριθ2 θα επιστρέψει την τιμή της στην Β, δηλαδή 20.

3. Η επιστροφή από τη διαδικασία δεν θα γίνει στην εντολή 7 αλλά στην επόμενη εντολή δηλαδή στην 8.

ΕΔΩ νομίζω έχουμε και τη βασική διαφορά Διαδικασίας - Συνάρτησης: στη συνάρτηση επιστρέφουμε στην ίδια εντολή για να ολοκληρώσουμε ότι αφήσαμε, ενώ στη διαδικασία επιστρέφουμε στην επόμενη, αφού δεν υπάρχει εκκρεμότητα, διότι η επιστροφή τιμών γίνεται λόγω της:
17. ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

itt:

--- Παράθεση από: kapapi στις 05 Απρ 2015, 11:11:32 μμ ---1. Το υποπρόγραμμα τώρα είναι διαδικασία,
άρα η γραμμή 7 μεταβιβάζει τιμές προς την διαδικασία, δηλαδή λόγω της 7 η παράμετρος αριθ1 θα πάρει την τιμή της Α, δηλαδή 1
και επίσης λόγω της 7, η παράμετρος αριθ2 θα πάρει την τιμή της Β, δηλαδή 2.

2. Η επιστροφή τιμών από την διαδικασία θα γίνει όταν αυτή τελειώσει, δηλαδή λόγω της εντολής 17, η παράμετρος αριθ1 θα επιστρέψει την τιμή της στην Α, δηλαδή 10
και επίσης λόγω της 17, η παράμετρος αριθ2 θα επιστρέψει την τιμή της στην Β, δηλαδή 20.

3. Η επιστροφή από τη διαδικασία δεν θα γίνει στην εντολή 7 αλλά στην επόμενη εντολή δηλαδή στην 8.

ΕΔΩ νομίζω έχουμε και τη βασική διαφορά Διαδικασίας - Συνάρτησης: στη συνάρτηση επιστρέφουμε στην ίδια εντολή για να ολοκληρώσουμε ότι αφήσαμε, ενώ στη διαδικασία επιστρέφουμε στην επόμενη, αφού δεν υπάρχει εκκρεμότητα, διότι η επιστροφή τιμών γίνεται λόγω της:
17. ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

--- Τέλος παράθεσης ---

Η "εντολή" 17 (δεν ξέρω κατα πόσον θεωρείται εντόλη), τo μόνο που κάνει είναι να μεταφέρει την εκτέλεση στο σημείο που ειναι στην κορυφή του stack. Η εκ νέου ανάθεση θα γίνει μετά από αυτό προφανώς και έξω από τη συνάρτηση, οπότε  η αλλαγή των μεταβλητών θα γίνει εκεί που σου πα.

Πλοήγηση

[0] Λίστα μηνυμάτων

[#] Επόμενη σελίδα

Μετάβαση στην πλήρη έκδοση