Ερωτήσεις στα υποπρογράμματα

Ξεκίνησε από landreou, 28 Ιουν 2013, 11:34:13 ΠΜ

« προηγούμενο - επόμενο »

landreou

Γεια σας φίλου του ΣτΠ .

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

Κάποιες ερωτήσεις θα κάνω (συγνωμη αν είναι γελοίες)

[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]

                            ΤΕΛΟΣ_ΑΝ
     
                    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

       
      ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
Αυτό είναι σωστό ή πρέπει

  • να βάλω και τους δύο βρόχους στη διαδικασία ή ( τι θα αλλάξει με τις παραμέτρους; )
  • κανένα  βρόχο παραμόνο το ΑΝ..ΤΟΤΕ ( τί θα αλάξει με τις παραμέτρους ; )

    ΕΙΜΑΙ ΠΡΑΓΜΑΤΙΚΑ ΠΟΛΥ ΜΠΕΡΔΕΜΕΝΟΣ ΜΕ ΤΟ ΤΙ ΒΑΖΟΥΜΕ  ΣΤΑ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΓΕΝΙΚΑ ΤΟΣΟ ΣΑΝ ΚΥΡΙΩΣ ΣΩΜ ΑΛΛΑ ΚΑΙ ΣΑΝ ΠΑΡΑΜΕΤΡΟΥΣ.

    Ευχαριστώ εκ προοιμίου.





petrosp13

Γενικά, ένα υποπρόγραμμα συνήθως δεν διαβάζει, ούτε εμφανίζει στην οθόνη, εκτός αν ορίζεται ρητά στην εκφώνηση
Η φράση "δέχεται" αναφέρεται σε παραμέτρους που θα δέχεται. Αυτό ισχύει σε Διαδικασίες και Συναρτήσεις
Αν το αποτέλεσμα είναι ένα, μπορεί να υλοποιηθεί με Συνάρτηση η οποία "κουβαλάει" η ίδια το αποτέλεσμα
Σε Διαδικασία, όσα και να είναι τα αποτελέσματα, είναι παράμετροι
Οι μεταβλητές παντού δηλώνονται τοπικά και όλες, δηλαδή οι μεταβλητές του προγράμματος δηλώνονται μόνο εκεί και των υποπρογραμμάτων, μόνο σε αυτά

Για την δήλωση, ακολουθείς τον γενικό κανόνα ότι δηλώνεις μεταβλητή μόνο εκεί που την βλέπεις
Άρα, στο παράδειγμα 4 που έδωσες, τα i,j δεν δηλώνονται στο πρόγραμμα

Στο παράδειγμα 5 υπάρχουν κάποια λάθη. Ορίζεις υποπρόγραμμα με μια παράμετρο και το καλείς με δυο.
Εφόσον εμφανίζεις τα αθρίσματα κατά γραμμές στην διαδικασία, δεν υπάρχει λόγος ο πίνακας να είναι παράμετρος ώστε να επιστρέφεται στο πρόγραμμα, εκτός αν θέλεις αυτό να γίνεται, αλλά σε αυτή την περίπτωση, θα αλλάξεις την λίστα παραμέτρων της διαδικασίας ώστε να περιέχει και τον πίνακα με τα αθροίσματα


Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

landreou

#2
ΕΧΩ ΓΡΑΨΕΙ ΚΑΙ ΑΛΛΕΣ ΠΑΡΑΤΗΡΗΣΕΙΣ ΣΤΟ ΠΑΡΑΠΑΝΩ PΟST ΑΠΛΑ ΕΙΝΑΙ ΠΑΡΑΛΕΙΨΗ ΜΟΥ ΠΟΥ ΔΕΝ ΕΒΑΛΑ ΚΑΙ ΤΟΝ ΔΕΥΤΕΡΟ ΠΙΝΑΚΑ ΛΟΓΩ ΤΟΥ COPY PASTE.
Μεχρι εκει που παρατήρησες δεν κατάλαβα αυτό που λες: "Εφόσον εμφανίζεις τα αθρίσματα κατά γραμμές στην διαδικασία, δεν υπάρχει λόγος ο πίνακας να είναι παράμετρος ώστε να επιστρέφεται στο πρόγραμμα"

ΔΗΛΑΔΗ ΔΕΝ ΠΡΕΠΕΙ ΝΑ "ΠΑΡΟΥΜΕ" ΜΕΣΑ ΣΤΟ ΥΠΟΠΡΟΓΡΑΜΜΑ ΤΟΝ ΠΙΝΑΚΑ ; (ΚΑΙ ΠΩΣ ΘΑ ΓΙΝΟΥΝ ΟΙ ΑΠΑΡΑΙΤΗΤΟΙ ΥΠΟΛΟΓΙΣΜΟΙ;)