Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Τμηματικός προγραμματισμός => Γ΄ Λυκείου => Διαδικασίες => Μήνυμα ξεκίνησε από: Neo στις 27 Απρ 2006, 01:46:01 ΜΜ

Τίτλος: Επιστροφή τιμών σε διαδικασία
Αποστολή από: Neo στις 27 Απρ 2006, 01:46:01 ΜΜ
Συνάδελφοι Χριστός Ανέστη και χρόνια πολλά.
:)

Ήθελα τη γνώμη σας στο ακόλουθο ζήτημα :

αν έχω το ακόλουθο τμήμα κυρίως προγράμματος
.
.
.
Κάλεσε Αθροισμα(Α[10,10],2,αποτέλεσμα)
Γράψε αποτέλεσμα
.
.
.
και τη διαδικασία
Διαδικασία Άθροισμα (Α[10,10],χ,αποτέλεσμα)
δηλώσεις
Αρχή
αποτέλεσμα <-- 0
  Για ι απο 1 μεχρι 10

     αποτέλεσμα <-- αποτέλεσμα + a[χ,ι]

τέλος_επανάληψης
Τέλος_διαδικασίας
με το Τέλος_διαδικασίας υπάρχει πρόβλημα κατά τη γνώμη σας; δηλαδή τι θα συμβεί μιας και θα γίνει ¨"επιστροφή" του χ στο 2 ?
Ελπίζω να είμουνα σαφής.
Ζητώ προκαταβολικά συγνώμη αν το έχετε καλύψει αλλά έψαξα αλλά δε το βρήκα.
Περιμένω τα σχόλια σας.
Ευχαριστώ πολύ.

Μανώλης Σταματάκης
Τίτλος: Απ: Επιστροφή τιμών σε διαδικασία
Αποστολή από: andreas_p στις 28 Απρ 2006, 07:38:33 ΠΜ
Καλημέρα Μανώλη και Χρόνια Πολλά.
Το θέμα το έχουμε καλύψει.  Το παρουσιάζω πάλι.
1.  Ο πίνακας στη λίστα των πραγματικών παραμέτρων στο σημείο κλήσης  ΔΕΝ γράφεται Α[10,10] αλλά μόνο Α και δηλώνεται κανονικά στο τμήμα δηλώσεων.
2.  Στη λίστα των πραγματικών παραμέτρων στο σημείο κλήσης , ΔΕΝ μπορώ να έχω σταθερά.

Συνεπώς   το σωστό
κ <- 2
Κάλεσε  Άθροισμα(Α, κ, αποτέλεσμα)

Αληθώς Ανέστη
Τίτλος: Απ: Επιστροφή τιμών σε διαδικασία
Αποστολή από: filippos στις 28 Απρ 2006, 08:21:36 ΠΜ
Στο (1) θα συμφωνήσω απόλυτα με τον Ανδρέα.  Όταν η παράμετρος είναι πίνακας, δηλώνεται απλά το όνομά του τόσο ως πραγματική όσο και ως τυπική παράμετρος.  Ας προσέξουμε όμως το εξής.  Εάν ένα υποπρόγραμμα (συνάρτηση ή διαδικασία) περιμένει ως παράμετρο μία ακέραια τιμή, μπορεί κατά την κλήση να οριστεί ένα στοιχείο πίνακα ακεραίων ως πραγματική παράμετρος. 

π.χ.
ΚΥΡΙΟ ΠΡΟΓΡΑΜΜΑ
...
   ΑΚΕΡΑΙΕΣ: Π[10, 10]
...
   ΚΑΛΕΣΕ Διαδ1(Π[1,7])
...
...
ΔΙΑΔΙΚΑΣΙΑ Διαδ1(Χ)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Χ

Στο 2 η γνώμη μου Ανδρέα είναι ότι κάνεις λάθος.  Τόσο ο διερμηνευτής, όσο και η κοινή λογική συμφωνούν ότι η πραγματική παράμετρος μπορεί να είναι είτε μεταβλητή είτε σταθερά.  Αν είναι μεταβλητή τότε "και δίνει και παίρνει" (στην περίπτωση διαδικασίας).  Αν είναι σταθερά τότε "μόνο δίνει".   Αλλά και το βιβλίο "εννοεί το ίδιο" όταν ταυτίζει (σε λειτουργικό επίπεδο) τις συναρτήσεις που κατασκευάζει ο "προγραμματιστής" με τις "ενσωματωμένες συναρτήσεις της ΓΛΩΣΣΑΣ".  Διαφορετικά θα ήταν λάθος και η έκφραση Ψ<-Τ_Ρ(4) !!  Θα έπρεπε να δωθεί ως:
Χ<- 4
Ψ <- Τ_Ρ(Χ)
που όμως ασφαλώς δεν είναι απαραίτητο.

Εποκένως η απάντηση στο δεύτερο ερώτημα του Μανώλη είναι ότι Επιστροφή τιμών γίνεται μόνο στις πραγματικές παραμέτρους για τις οποίες έχουν δωθεί μεταβlhτές.  Μόνον αυτές μpoρούν να θεωρηθούν παράμετροι εξόδου.  Αν η πραγματική παράμετρος είναι σταθερή τιμή, τότε αποτελεί αποκλειστικά και μόνο είσοδο για το υποπρόγραμμα οπότε δεν τίθεται θέμα επιστροφής τιμής
Τίτλος: Απ: Επιστροφή τιμών σε διαδικασία
Αποστολή από: lsourtzo στις 28 Απρ 2006, 10:31:43 ΠΜ
Εγώ πάλι δεν θα συμφωνήσω με τον filipo …
Στο σχολικό βιβλίο στην σελίδα 217 έχει το παρακάτω παράδειγμα …

Α<- 5
Β<- 7
ΚΑΛΕΣΕ ΠΡΑΞΕΙΣ ( A, B, Διαφ1, Αθρ1 )

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

Αν και πιστεύω σφόδρα, ότι είναι ακόμα ένα κακογραμμένο σημείο στο βιβλίο που αφήνει πολλά περιθώρια παρερμηνειών !!
Τίτλος: Απ: Επιστροφή τιμών σε διαδικασία
Αποστολή από: alkisg στις 28 Απρ 2006, 12:32:13 ΜΜ
Σχετικά θέματα:
https://alkisg.mysch.gr/steki/index.php?topic=289.0 (https://alkisg.mysch.gr/steki/index.php?topic=289.0)
https://alkisg.mysch.gr/steki/index.php?topic=308.0 (https://alkisg.mysch.gr/steki/index.php?topic=308.0)

Υπάρχει και το παράδειγμα της σελίδας 106 του τετραδίου μαθητή στο οποίο χρησιμοποιούνται σταθερές αλλά και εκφράσεις (το Ν-1 στην κλήση της Μετακίνησε) :

Κώδικας (ΓΛΩΣΣΑ) [Επιλογή]
ΠΡΟΓΡΑΜΜΑ ΠύργοιΤουΑνόι
ΣΤΑΘΕΡΕΣ
  Στύλος1 = 'Α'
  Στύλος2 = 'Β'
  Στύλος3 = 'Γ'
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Ν
ΑΡΧΗ
  ΓΡΑΨΕ 'Δώσε τον αριθμό των δίσκων:  '
  ΔΙΑΒΑΣΕ Ν
  ΚΑΛΕΣΕ Μετακίνησε(Ν, Στύλος1, Στύλος2, Στύλος3)
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Μετακίνησε(Ν, ΣτύλοςΑ, ΣτύλοςΒ, ΣτύλοςΓ)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Ν
  ΧΑΡΑΚΤΗΡΕΣ: ΣτύλοςΑ, ΣτύλοςΒ, ΣτύλοςΓ
ΑΡΧΗ
  ΑΝ Ν = 1 ΤΟΤΕ
    ΓΡΑΨΕ 'Μετακίνησε από τον ', ΣτύλοςΑ, ' στον ', ΣτύλοςΓ
  ΑΛΛΙΩΣ
    ΚΑΛΕΣΕ Μετακίνησε(Ν - 1, ΣτύλοςΑ, ΣτύλοςΓ, ΣτύλοςΒ)
    ΓΡΑΨΕ 'Μετακίνησε από τον ', ΣτύλοςΑ, ' στον ', ΣτύλοςΓ
    ΚΑΛΕΣΕ Μετακίνησε(Ν - 1, ΣτύλοςΒ, ΣτύλοςΑ, ΣτύλοςΓ)
  ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
Τίτλος: Απ: Επιστροφή τιμών σε διαδικασία
Αποστολή από: lsourtzo στις 28 Απρ 2006, 12:36:27 ΜΜ
Όσο αναφορά την χρήση σταθεράς σαν παράμετρο δεν υπάρχει διαφωνία …
Όσο αναφορά την απευθείας χρήση αριθμητικής τιμής έχω τις ενστάσεις μου !!
Τίτλος: Απ: Επιστροφή τιμών σε διαδικασία
Αποστολή από: alkisg στις 28 Απρ 2006, 12:39:28 ΜΜ
Το Ν-1 που είναι έκφραση (σαν να λέμε μπορούμε να βάλουμε οτιδήποτε) δεν καλύπτει και την περίπτωση αριθμητικής τιμής;
Τίτλος: Απ: Επιστροφή τιμών σε διαδικασία
Αποστολή από: lsourtzo στις 28 Απρ 2006, 12:57:20 ΜΜ
Κοίτα … έτσι όπως το θέτεις …
Γενικά δεν θεωρώ ότι είναι το ίδιο η έκφραση και η αριθμητική τιμή !!!

Παρόλα αυτά συμφωνώ ότι σύμφωνα με την άποψη πάνω στην οποία στήριξα το ότι δεν μπορεί να πάρει αριθμό για παράμετρο, θα έπρεπε να υποστηρίξω το ίδιο και για την αριθμητική έκφραση…

Οπότε, σύμφωνα με το παράδειγμα σου, δέχομαι ότι μπορούμε να βάλουμε και απευθείας αριθμητικές τιμές …

Κρατάω τις επιφυλάξεις μου όμος για το πώς σε μία γλώσσα προγραμματισμού θα μπορούσε να διατυπωθεί κάτι τέτοιο στο κάλεσμα μίας διαδικασίας !!

Σε συναρτήσεις γίνετε … είναι δεδομένο …
Αλλά σε διαδικασία … δεν μπορώ να σκεφτώ κάποια γλώσσα που να το δέχεται …
Μήπως κάποιος που να έχει ασχοληθεί με Pascal ποιο πρόσφατα από ότι εγώ μπορεί να βοηθήσει στην απορεία μας ??
Τίτλος: Απ: Επιστροφή τιμών σε διαδικασία
Αποστολή από: alkisg στις 28 Απρ 2006, 01:00:55 ΜΜ
Στην Pascal δε γίνεται, η Basic όμως μοιάζει πολύ με τη ΓΛΩΣΣΑ, επιτρέπει και
call Diadikasia(x)
οπότε το x περνιέται αυτόματα με αναφορά αλλά και
call Diadikasia(3)
οπότε φυσικά το 3 περνιέται αυτόματα με τιμή.

Εγώ νομίζω ότι το κύριο ερώτημα είναι αν θεωρούμε το παράδειγμα με τους πύργους του Ανόι αντιπροσωπευτικό, ή αν θεωρούμε ότι υπάρχει λάθος στο συγκεκριμένο παράδειγμα!
Τίτλος: Απ: Επιστροφή τιμών σε διαδικασία
Αποστολή από: lsourtzo στις 28 Απρ 2006, 01:05:31 ΜΜ
Εγώ καλύφθηκα …
Έτσι και αλλιώς με βάση το παράδειγμα που έδωσες, είπαμε ότι φαίνετε να γίνεται … αν και δεν θα το συνιστούσα στους μαθητές μου.

Παντός νομίζω ότι η φιλοσοφία της ΓΛΩΣΣΑ είναι πιο κοντά στην Pascal από την Basic.
Τίτλος: Απ: Επιστροφή τιμών σε διαδικασία
Αποστολή από: Neo στις 28 Απρ 2006, 01:27:53 ΜΜ
Σας ευχαριστώ όλους να είστε καλά,
καλύφθηκα πλήρως, συγνώμη βρε παιδιά αλλά δεν είχα βρεί την αρχική κάλυψη του θέματος.


Τίτλος: Απ: Επιστροφή τιμών σε διαδικασία
Αποστολή από: ΠΤ στις 08 Ιουν 2006, 08:38:08 ΠΜ
Kαι στην Pascal και στην Basic επιτρέπεται το πέρασμα σταθερής τιμής. Μην ψάχνουμε στην ΓΛΩΣΣΑ για αυστηρούς συντακτικούς κανόνες. Δεν είναι μιά πλήρης γλώσσα προγραμματισμού. Έτσι αν ένας κανόνας ισχύει στις 'μητέρες' γλώσσες νομίζω ότι πρέπει να είναι αποδεκτός και για τη ΓΛΩΣΣΑ μας.