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

Γενικό Λύκειο => Αλγοριθμική και Προγραμματισμός => Διερμηνευτής της ΓΛΩΣΣΑΣ => Μήνυμα ξεκίνησε από: nikolasmer στις 27 Απρ 2026, 02:31:03 ΜΜ

Τίτλος: Δεν περνάει παράμετρος μέσω σταθεράς;
Αποστολή από: nikolasmer στις 27 Απρ 2026, 02:31:03 ΜΜ
Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ Β2
ΣΤΑΘΕΡΕΣ
  Ν = 100
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Π[Ν, Ν]
ΑΡΧΗ
  ΚΑΛΕΣΕ ΔΙΑΔ(Π, Ν)
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ ΔΙΑΔ(Π, Ν)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Ι, J, Π[Ν, Ν]
ΑΡΧΗ
    .......

Σε αυτόν τον κώδικα γιατί δε δίνει τιμή η πραγματική Ν στην τυπική Ν;
Έχουμε κάποιο συντακτικό λάθος προαφανώς αλλα ποιό και γιατί;

Βγάζει:
Κώδικας [Επιλογή]
Άγνωστο αναγνωριστικό: «Ν»
Τίτλος: Απ: Δεν περνάει παράμετρος μέσω σταθεράς;
Αποστολή από: andreas_p στις 27 Απρ 2026, 05:38:45 ΜΜ
Επειδή το Ν είναι σταθερά ( συμβολική).
Τίτλος: Απ: Δεν περνάει παράμετρος μέσω σταθεράς;
Αποστολή από: nikolasmer στις 27 Απρ 2026, 07:22:18 ΜΜ
Αντρέα κανονικά δεν έπρεπε να το αναγνωρίζει σας λάθος σε συντακτικό επίπεδο.
 Το Ν του κυρίως προγράμματος περνά στο υποπρόγραμμα μόνο ως παράμετρος (με τιμή), όχι ως "σταθερά δήλωσης πίνακα". Νομίζω οτι το συμφωνήσαμε οτι στη διαδικασία αυτό μπορεί να γίνει. 
Τίτλος: Απ: Δεν περνάει παράμετρος μέσω σταθεράς;
Αποστολή από: ssimaiof στις 27 Απρ 2026, 07:45:16 ΜΜ
Μέσα στο υποπρόγραμμα το Ν είναι τυπική παράμετρος δηλαδή ΜΕΤΑΒΛΗΤΗ και πρέπει να δηλωθεί (προφανώς στις ΑΚΕΡΑΙΕΣ) για να είναι ορατή στο υποπρόγραμμα.
Και έτσι όμως (παρότι θα δέχεται σωστά την τιμή) δεν μπορεί να χρησιμοποιηθεί για τη δήλωση μεγέθους πίνακα, ως μεταβλητή που είναι.
Δεν υφίσταται δήλωση τυπικής παραμέτρου ως σταθερά.
Προφανώς το να θέλουμε να περάσουμε το μέγεθος ενός πίνακα σε υποπρόγραμμα, αν και θα ήταν πάρα πολύ χρήσιμο, δεν υποστηρίζεται από τη ΓΛΩΣΣΑ.
Τίτλος: Απ: Δεν περνάει παράμετρος μέσω σταθεράς;
Αποστολή από: nikolasmer στις 27 Απρ 2026, 08:53:30 ΜΜ
Παράθεση από: ssimaiof στις Χθες στις 07:45:16 ΜΜΠροφανώς το να θέλουμε να περάσουμε το μέγεθος ενός πίνακα σε υποπρόγραμμα, αν και θα ήταν πάρα πολύ χρήσιμο, δεν υποστηρίζεται από τη ΓΛΩΣΣΑ.
Σωστά. 
Anyway, πάντως έτσι δουλεύει κανονικά (πρόγραμμα που υπολογίζει το άθροισμα Ν στοιχείων πίνακα Π[10] με Νε[1,10]. 

Κώδικας [Επιλογή]
ΠΡΟΓΡΑΜΜΑ ΤΑΔΕ
ΣΤΑΘΕΡΕΣ
  Ν = 5  ! [1,10]
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Ι
  ΠΡΑΓΜΑΤΙΚΕΣ: Π[10], Σ
ΑΡΧΗ
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
    ΔΙΑΒΑΣΕ Π[Ι] 
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΚΑΛΕΣΕ ΑΘΡ(Π, Ν, Σ) 
  ΓΡΑΨΕ Σ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ ΑΘΡ(Α, Ν, Σ) 
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Ν, i, j
  ΠΡΑΓΜΑΤΙΚΕΣ: Α[10], Σ
ΑΡΧΗ
  Σ <- 0
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
    Σ <- Σ + Α[i] 
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

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