Γεια σας φίλου του ΣτΠ .
Παρατηρώ ότι έχω δυσκολίες στις ασκήσεις που ζητάνε τη χρήση υποπρογραμμάτων . Δεν μπορω να καταλάβω ποιες παραμέτρους να βάλω και εκει κολάει το συτημα γενικά.
Κάποιες ερωτήσεις θα κάνω (συγνωμη αν είναι γελοίες)
[1] Αν μας λένε "φτιάξτε υπορπόγραμμα που να δέχεται ...." , εννοούν ότι τις μεταβλητές που θα πούν μετα το "δέχεται " θα τις βάζουμε σαν πραγματικές παραμέτρους ΕΝΤΟΣ ΠΑΡΕΝΘΕΣΗΣ ΜΕΤΑ ΤΟ ΟΝΟΜΑ ΥΠΟΠΡΟΓΡΑΜΜΑΤΟΣ ;
[2] Αυτές πρέπει να τις δηλώνουμε και μέσα στο Υποπρόγραμμα ;
[3] Αν μας λένε "φτιάξτε υπορπόγραμμα που να διαβάζει ....." ή αν μας λένε "φτιάξτε υπορπόγραμμα που να τυπώνει ......" εννοεί το ίδιο με τα παραπάνω, ή κάτι που πρέπει να κάνουμε τοπικά μέσα στο υποπρόγραμμα ; Οι μεταβλητες που θα χρησιμοποιηθούν στις περιπτωσεις αυτές είναι και αυτες εντος της λίστας παραμέτρων του υποπρογράματος;
[4] Αν θέλουμε να γεμίσουμε ένα δισδιάστατο πίνακα και λέμε :
ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : i,j,ΠΙΝΑΚΑΣ[[10,20] !
( Εδω οι i,j μήπως πρέπει να δηλωθούν μόνο στη διαδικασία) ΑΡΧΗ
ΚΑΛΕΣΕ ΓΕΜΙΣΜΑ(ΠΙΝΑΚΑΣ)
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΔΙΑΔΙΚΑΣΙΑ ΓΕΜΙΣΜΑ(Π)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : ι,j Π[10,20]
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 20
ΔΙΑΒΑΣΕ Π[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
Το παραπάνω είναι σωστό ;
Γενικά υπάρχει μεθοδολογία αν εμπλέκουμε την κλήση υποπρογράμματος εντος βρόχων επανάληψης;
[5] ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ1
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : ΠΙΝΑΚΑΣ[[10,20] ΑΘΡΟΙΣΜΑ_ΑΝΑ_ΓΡΑΜΜΗ[10]
ΑΡΧΗ
ΚΑΛΕΣΕ ΥΠΟΛΟΓΙΣΜΟΙ(ΠΙΝΑΚΑΣ,ΑΘΡΟΙΣΜΑ_ΑΝΑ_ΓΡΑΜΜΗ)
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΔΙΑΔΙΚΑΣΙΑ ΥΠΟΛΟΓΙΣΜΟΙ(Π,A)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : ι,j Π[10,20],Α[10]
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10
Α[ι] <- 0
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 20
Α[ι] <- Α[ι] + Π[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Α[ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
Αυτό είναι σωστό ; (Εντός της διαδικασίας δεν έχω παραμέτρους επιστροφής -θεωρώ ότι η διαδικασία δέχεται τους δύο πίνακες- γι αυτό και ρωτάω για την ορθότητα αυτών που γράφω) .
[5] ΠΡΟΓΡΑΜΜΑ ΘΕΜΑ3
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : i,ΠΙΝΑΚΑΣ[[10,20] , maximum
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10
ΚΑΛΕΣΕ ΥΠΟΛΟΓΙΣΜΟΣ_ΜΕΓΙΣΤΟΥ_ΑΝΑ_ΓΡΑΜΜΗ(i,ΠΙΝΑΚΑΣ,maximum)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΔΙΑΔΙΚΑΣΙΑ ΥΠΟΛΟΓΙΣΜΟΣ_ΜΕΓΙΣΤΟΥ_ΑΝΑ_ΓΡΑΜΜΗ(i,Π,max)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ : ι,j Π[10,20],max
ΑΡΧΗ
max <- Π[i,1]
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 20
AN Π[i,j] > max ΤΟΤΕ
max <- Π[i,j]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
Αυτό είναι σωστό ή πρέπει
- να βάλω και τους δύο βρόχους στη διαδικασία ή ( τι θα αλλάξει με τις παραμέτρους; )
- κανένα βρόχο παραμόνο το ΑΝ..ΤΟΤΕ ( τί θα αλάξει με τις παραμέτρους ; )
ΕΙΜΑΙ ΠΡΑΓΜΑΤΙΚΑ ΠΟΛΥ ΜΠΕΡΔΕΜΕΝΟΣ ΜΕ ΤΟ ΤΙ ΒΑΖΟΥΜΕ ΣΤΑ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΓΕΝΙΚΑ ΤΟΣΟ ΣΑΝ ΚΥΡΙΩΣ ΣΩΜ ΑΛΛΑ ΚΑΙ ΣΑΝ ΠΑΡΑΜΕΤΡΟΥΣ.
Ευχαριστώ εκ προοιμίου.
Γενικά, ένα υποπρόγραμμα συνήθως δεν διαβάζει, ούτε εμφανίζει στην οθόνη, εκτός αν ορίζεται ρητά στην εκφώνηση
Η φράση "δέχεται" αναφέρεται σε παραμέτρους που θα δέχεται. Αυτό ισχύει σε Διαδικασίες και Συναρτήσεις
Αν το αποτέλεσμα είναι ένα, μπορεί να υλοποιηθεί με Συνάρτηση η οποία "κουβαλάει" η ίδια το αποτέλεσμα
Σε Διαδικασία, όσα και να είναι τα αποτελέσματα, είναι παράμετροι
Οι μεταβλητές παντού δηλώνονται τοπικά και όλες, δηλαδή οι μεταβλητές του προγράμματος δηλώνονται μόνο εκεί και των υποπρογραμμάτων, μόνο σε αυτά
Για την δήλωση, ακολουθείς τον γενικό κανόνα ότι δηλώνεις μεταβλητή μόνο εκεί που την βλέπεις
Άρα, στο παράδειγμα 4 που έδωσες, τα i,j δεν δηλώνονται στο πρόγραμμα
Στο παράδειγμα 5 υπάρχουν κάποια λάθη. Ορίζεις υποπρόγραμμα με μια παράμετρο και το καλείς με δυο.
Εφόσον εμφανίζεις τα αθρίσματα κατά γραμμές στην διαδικασία, δεν υπάρχει λόγος ο πίνακας να είναι παράμετρος ώστε να επιστρέφεται στο πρόγραμμα, εκτός αν θέλεις αυτό να γίνεται, αλλά σε αυτή την περίπτωση, θα αλλάξεις την λίστα παραμέτρων της διαδικασίας ώστε να περιέχει και τον πίνακα με τα αθροίσματα