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

Γενικό Λύκειο => Τμηματικός προγραμματισμός => Γ΄ Λυκείου => Διαδικασίες => Μήνυμα ξεκίνησε από: Vangelis στις 05 Απρ 2006, 12:17:56 ΜΜ

Τίτλος: Γέμισμα πίνακα απο υποπρόγραμμα
Αποστολή από: Vangelis στις 05 Απρ 2006, 12:17:56 ΜΜ
Στο site του καλού  συναδέλφου Παναγιώτη απο το οποίο έδωσα ασκήσεις στους μαθητές μου (αναναφέροντας βεβαίως απο που προέρχονται)  είδα μια άσκηση στα υποπρογράμματα που με προβλημάτισε και σας την μεταφέρω

10.1.9. Να γράψετε υποπρόγραμμα που να διαβάζει το πλήθος αλλά και τα στοιχεία ενός μονοδιάστατου πίνακα (μέγιστο πλήθος στοιχείων 1000) με περιεχόμενα ακέραιους αριθμούς

Λύση
ΔΙΑΔΙΚΑΣΙΑ Εισαγωγή_Μον_Πίνακα (Πλήθος_γραμμών, Πίνακας)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ : Πλήθος_γραμμών, Πίνακας[1000], i
ΑΡΧΗ
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Πλήθος_γραμμών
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΓΡΑΨΕ 'Δώσε το ', i, ' στοιχείο'
      ΔΙΑΒΑΣΕ Πίνακας
    ΜΕΧΡΙΣ_ΟΤΟΥ (Πίνακας > 0)
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Η πρώτη παρατήρηση είναι ότι γίνεται έλεγχος έτσι ώστε οι αριθμοί που θα εισαχθούν στον πίνακα να είναι θετικοί πράγμα που δεν αναφέρεται στην εκφώνηση.
Το δεύτερο (και εδώ θέλω τις απόψεις σας) είναι αν έχει κάποιο σκοπό το γέμισμα του πίνακα να γίνεται σε διαδικασία.  Δηλαδή οι τιμές που θα εισάγει η παραπάνω διαδικασία στον πίνακα θα είναι διαθέσιμες στο κύριο πρόγραμμα που θα την καλέσει;
Τη δική μου άποψη είναι οτι δεν θα είναι διαθέσιμες παρα μόνο αν επιστραφεί ο πίνακας.

Βαγγέλης 
Τίτλος: Απ: Γέμισμα πίνακα απο υποπρόγραμμα
Αποστολή από: dozb στις 05 Απρ 2006, 12:50:23 ΜΜ
Με την πρώτη σου παρατήρηση συμφωνώ.
Όσο για το δεύτερο:
Έχουμε πει ότι το διάβασμα τιμών σε μεταβλητές δεν πρέπει να γίνεται σε συνάρτηση, οπότε μάλλον εννοείς να μπει άλλη μια τυπική παράμετρος στη λίστα ορισμάτων η οποία να επιστρέφει τον γεμάτο πίνακα στο κυρίως....!!!!!!!!!!

Αλλά και πάλι, ποιο το νόημα του να δίνεις έναν άδειο, (ή γεματο) πίνακα να (ξανα)γεμίσει σε ένα υποπρόγραμμα χωρίς να επιστρέφει στο κυρίως????

Πιστεύω λοιπόν ότι η συγκεκριμένη "λειτουργία" είναι σωστή, όμως έχω μια τρίτη παρατήρηση:
Εφόσον το πλήθος γραμμών θεωρείται γνωστό (μια που δε διαβάζεται μέσα στη διαδικασία), γιατί δε δηλώνουμε τον πίνακα σαν
Πίνακας[Πλήθος_γραμμών], παρά χρησιμοποιούμε το μέγιστο μέγεθός του????


(Επίσης, αν θες, ρίξε μια ματιά στο θέμα "τοπικές μεταβλητές" να μου πεις τη γνώμη σου...Ευχαριστώ)
Τίτλος: Απ: Γέμισμα πίνακα απο υποπρόγραμμα
Αποστολή από: novulus στις 05 Απρ 2006, 03:33:19 ΜΜ
Προφανώς ο έλεγχος αν εισάγεται θετικός αριθμός δεν πρέπει να υπάρχει. Από την άλλη ο Πίνακας επιστρέφεται στο κυρίως πρόγραμμα αφού είναι τυπική παράμετρος. Οσον σφορά την δήλωσή του, αφού οι πίνακες είναι στατικές δομές δεδομένων το μέγεθός τους πρέπει να δηλώνεται με αριθμό ή σταθερά και όχι με μεταβλητή όπως είναι το Πλήθος_γραμμών.
Τίτλος: Απ: Γέμισμα πίνακα απο υποπρόγραμμα
Αποστολή από: dozb στις 05 Απρ 2006, 04:21:00 ΜΜ
Δυστυχώς ούτε σα σταθερά το δέχεται (το μέγεθος του πίνακα)|, τουλάχιστον η γλωσσομάθεια
Τίτλος: Απ: Γέμισμα πίνακα απο υποπρόγραμμα
Αποστολή από: Επισκέπτης στις 06 Απρ 2006, 04:27:11 ΜΜ


Δεν επιστρέφεται ο πίνακας;

Στη δήλωση του πίνακα στις μεταβλητές της διαδικασίας, πρέπει να δηλωθεί νούμερο (1000) ή σταθερά που να έχει οριστεί στη διαδικασία
Τίτλος: Απ: Γέμισμα πίνακα απο υποπρόγραμμα
Αποστολή από: filippos στις 06 Απρ 2006, 10:01:20 ΜΜ
Παράθεση από: Vangelis στις 05 Απρ 2006, 12:17:56 ΜΜ
Το δεύτερο (και εδώ θέλω τις απόψεις σας) είναι αν έχει κάποιο σκοπό το γέμισμα του πίνακα να γίνεται σε διαδικασία. Δηλαδή οι τιμές που θα εισάγει η παραπάνω διαδικασία στον πίνακα θα είναι διαθέσιμες στο κύριο πρόγραμμα που θα την καλέσει;
Τη δική μου άποψη είναι οτι δεν θα είναι διαθέσιμες παρα μόνο αν επιστραφεί ο πίνακας.

Δε μπορώ να καταλάβω τι σε προβληματίζει Βαγγέλη..

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

Η μεταβίβαση των τιμών των παραμέτρων από - προς τις διαδικασίες γίνεται με copy-in-copy-out, όπως περιγράφεται και στο βιβλίο.  Επομένως οι τιμές που θα διαβαστούν στον πίνακα της διαδικασίας (τυπική παράμετρος) θα αντιγραφούν στον αντίστοιχο πίνακα (πραγματική παράμετρος) του πρόγραμμα που έκανε την κλήση.
Ο μόνος περιορισμός είναι ότοι οι δύο πίνακες (πραγματικός - τυπικός) θα πρέπει να είναι του ίδιου τύπου και μεγέθους
Τίτλος: Απ: Γέμισμα πίνακα απο υποπρόγραμμα
Αποστολή από: Vangelis στις 06 Απρ 2006, 10:54:15 ΜΜ
Σωστά Φίλιπε επιστρέφουν όλες οι τιμές άρα δεν  υπάρχει προβλημα.

Βαγγέλης