Πίνακες διαφορετικών διαστάσεων (διαδικασία)

Ξεκίνησε από kiro, 13 Απρ 2006, 01:41:51 ΠΜ

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

kiro


Είδαμε πως αν έχουμε ένα πρόγραμμα και ζητάει στο κυρίως πρόγραμμα να εισάγει στοιχεία δυο πινάκων μονοδιάστατων 100 στοιχείων ,μπορούμε στο Κ.Π. να καλέσουμε τη διαδικασία

ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (Α)
ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (Β)


ΔΙΑΔΙΚΑΣΙΑ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (Π)
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ Π[100]
ΑΚΕΡΑΙΕΣ ί
ΑΡΧΗ
ΓΙΑ ί ΑΠΟ 1 ΜΕΧΡΙ 100
ΔΙΑΒΑΣΕ Π[ί]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

1)   Μπορούμε με μια διαδικασία να καλέσουμε και τους δυο πίνακες?

               ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (Α,Β)

2)   Στην περίπτωση που μας έδιναν δυο πίνακες 50 και 100 διαστάσεων τι θα κάναμε?

Θα ήταν σωστός ο παρακάτω τρόπος?

ΠΡΟΓΡΑΜΜΑ ….
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: Α[50],Β[100]
ΑΚΕΡΑΙΕΣ: πλήθος
ΑΡΧΗ
πλήθος<- 50
ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (πλήθος ,Α)
πλήθος<-100
ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (πλήθος ,Β)
TΕΛΟΣ_ΠΡΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (πλήθος, Π)   
ΣΤΑΘΕΡΕΣ
   Ν = 5000 
ΜΕΤΑΒΛΗΤΕΣ
       ΠΡΑΓΜΑΤΙΚΕΣ :Π[Ν]
       ΑΚΕΡΑΙΕΣ: ί, πλήθος
        ΑΡΧΗ
         ΓΙΑ ί ΑΠΟ 1 ΜΕΧΡΙ Ν
               ΔΙΑΒΑΣΕ Π[ί]
        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


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




Vangelis

1- Ναι γιατί όχι, δεν υπάρχει περιορισμός πλήθους μεταβλητών. Φυσικά θέλει αλλαγή ο κώδικας της διαδικασίας (ακόμα ένα loop κ.λπ)
2- Δεν νομίζω ότι θα δουλέψει περνάς ένα πίνακα 100 (ή 50)  θέσεων και τον αντιστοιχείς σε έναν με 5000 θέσεις ο οποίος θα επιστρέψει πάλι στον 100 που φυσικά δεν τον χωράει (ασχετα αν μόνο τα 100 πρώτα κελιά του είναι γεμάτα)

xaidi

1) Δεν μπορείς να αλλάζεις τον αριθμό των μεταβλητών όταν καλείς την διαδικασία ενώ την έχει δημιουργήσει με μια παράμετρο. είναι λάθος
δηλαδή ΔΙΑΔΙΚΑΣΙΑ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (Π) και την χρησιμοποιείς ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (Α,Β)


2) ΠΡΟΓΡΑΜΜΑ ….
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: Α[50],Β[100]
ΑΚΕΡΑΙΕΣ: πλήθος
ΑΡΧΗ
πλήθος<- 50
ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (πλήθος ,Α)
πλήθος<-100
ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (πλήθος ,Β)
TΕΛΟΣ_ΠΡΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (πλήθος, Π)   
ΜΕΤΑΒΛΗΤΕΣ
       ΠΡΑΓΜΑΤΙΚΕΣ :Π[100]
       ΑΚΕΡΑΙΕΣ: ί, πλήθος
        ΑΡΧΗ
ΔΙΑΒΑΣΕ πλήθος
         ΓΙΑ ί ΑΠΟ 1 ΜΕΧΡΙ πλήθος
               ΔΙΑΒΑΣΕ Π[ί]
        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
Ευχαριστώ,

S

ΠΡΟΓΡΑΜΜΑ PIN
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: Α[100],Β[100]
ΑΚΕΡΑΙΕΣ: πλήθος
ΑΡΧΗ
πλήθος<- 50
ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (πλήθος ,Α)
πλήθος<-100
ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (πλήθος ,Β)
   ! ... 
TΕΛΟΣ_ΠΡΓΡΑΜΜΑΤΟΣ PIN

ΔΙΑΔΙΚΑΣΙΑ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (πλήθος, Π)   
ΜΕΤΑΒΛΗΤΕΣ
       ΠΡΑΓΜΑΤΙΚΕΣ :Π[100]
       ΑΚΕΡΑΙΕΣ: ί, πλήθος
        ΑΡΧΗ
ΔΙΑΒΑΣΕ πλήθος
         ΓΙΑ ί ΑΠΟ 1 ΜΕΧΡΙ πλήθος
               ΔΙΑΒΑΣΕ Π[ί]
        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

kiro

1) Δηλ αν το κάνω :

ΔΙΑΔΙΚΑΣΙΑ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (Π,K) και την χρησιμοποιείς ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (Α,Β) ειναι σωστό?

2)Το πρόγραμμα που γράψατε xaidi και S είναι σωστό? Δηλ αν έχω δυο διαφορετικούς σε διαστάσεις πίνακες δηλώνω απλά τον μεγαλύτερο και τους καλώ ξεχωριστά?

Απλά μπερδεύτηκα και λίγο με το παρακάτω. Τι λετε?

Παράθεση από: ptsiotakis στις Μαρτίου. 01, 2006, 03:46:57 pm
ΔΙΑΔΙΚΑΣΙΑ Ταξινόμηση (Πλήθος, ΠΙΝΑΚΑΣ)
ΣΤΑΘΕΡΕΣ
Ν = 50000 ! μέγιστο πλήθος
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: ΠΙΝΑΚΑΣ[Ν], βοηθ
ΑΚΕΡΑΙΕΣ : Πλήθος, i, j
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Πλήθος
ΓΙΑ j ΑΠΟ Πλήθος ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
ΑΝ (ΠΙΝΑΚΑΣ[j-1] > ΠΙΝΑΚΑΣ[j]) ΤΟΤΕ ! αύξουσα ταξινόμηση
βοηθ <- ΠΙΝΑΚΑΣ[j-1]
ΠΙΝΑΚΑΣ[j-1] <- ΠΙΝΑΚΑΣ[j]
ΠΙΝΑΚΑΣ[j] <- βοηθ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ερώτημα α.
Πλήθος <- 50
ΚΑΛΕΣΕ Ταξινόμηση (Πλήθος, Α)


ερώτημα β.
Πλήθος <- 1000
ΚΑΛΕΣΕ Ταξινόμηση (Πλήθος, Α)

Δεν μπορούμε στην παραπάνω διαδικασία να δώσουμε ως είσοδο πίνακα μεγαλύτερο από 50.000 θέσεις
Ναι, χαραμίζουμε στην πρώτη περίπτωση 49.950 θέσεις και στην δεύτερη 49.000, ε και τι μ' αυτό;

Με εκτίμηση,


xaidi

1) όχι γιατί η διαδικασία επιστρέφει ένα πίνακα πρέπει να αλλάξει και ο κώδικας .

2) δεν καταλαβαίνω τι ενοείς  (εγώ  συμφωνώ με τον Παναγιώτη).
Ευχαριστώ,

kiro

Και γω συμφωνώ με τον Παναγιωτη.. τότε γιατί είναι λάθος η λύση όπως την έστειλα στην αρχή?

ΠΡΟΓΡΑΜΜΑ ….
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: Α[50],Β[100]
ΑΚΕΡΑΙΕΣ: πλήθος
ΑΡΧΗ
πλήθος<- 50
ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (πλήθος ,Α)
πλήθος<-100
ΚΑΛΕΣΕ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (πλήθος ,Β)
TΕΛΟΣ_ΠΡΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ ΕΙΣΑΓΩΓΗ_ΣΤΟΙΧΕΙΩΝ (πλήθος, Π)   
ΣΤΑΘΕΡΕΣ
   Ν = 5000 
ΜΕΤΑΒΛΗΤΕΣ
       ΠΡΑΓΜΑΤΙΚΕΣ :Π[Ν]
       ΑΚΕΡΑΙΕΣ: ί, πλήθος
        ΑΡΧΗ
         ΓΙΑ ί ΑΠΟ 1 ΜΕΧΡΙ Ν
               ΔΙΑΒΑΣΕ Π[ί]
        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

filippos

Ο αριθμός των πραγματικών και των τυπικών παραμέτρων πρέπει να είναι ο ίδιος.

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

Αν μία πραγματική παράμετρος είναι πίνακας 100 πραγματικών αριθμών, η αντίστοιχή της τυπική πρέπει να είναι πίνακας 100 πραγματικών αριθμών.

Δε νοείται η πραγματική παράμετρος να είναι πίνακας 50 στοιχείων και η αντίστοιχή της τυπική να είναι πίνακας 100 στοιχείων.

Ο ορισμός πραγματικών και τυπικών μεταβλητών αλλά και του τρόπου - κανόνων επικοινωνίας καλούντος - καλούμενου στο πλαίσιο της ΓΛΩΣΣΑς (copy-in-copy-out) δεν αφήνει περιθώρεια για αντιστοίχιση πινάκων διαφορετικού μεγέθους.

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

kiro

Δεν μου απανταει ομως κανενας ξεκαθαρα...γινεται με μια διαδικασια να καλεσω δυο πινακες δυο διαφορετικων διαστασεων οπωσ Α[50] και Β[100] και αν γινεται μπορει καποιος να μου γραψει πως γιατι τωρα μπερδευτικα παραπανω...

filippos

Όχι, δεν γίνεται

ο αριθμός των πραγματικών και των τυπικώνπαραμέτρων πρέπει να είναι ίδιος.

Επομένως, εάν το υποπρόγραμμα περιμένει 100 τιμές (πίνακα 100 στοιχείων) το πρόγραμμα πρέπει να του "περάσει" 100 τιμές.  Ούτε 50, ούτε 150.

Αυτά βέβαια στο "εκπαιδευτικό" περιβάλλον της ΓΛΩΣΣΑς και με βάση τον "απλουστευτικό" (για διδακτικούς λόγους) ορισμό των υποπρογραμμάτων όπως αυτός γίνεται στο πλαίσιο του συγκεκριμένου μαθήματος.

manosa

 ;)
Εγώ νομίζω ότι μπορούμε να καλέσουμε μια διαδικασία πχ. SORT(A,N) χρησιμοποιώντας κάθε φορά διαφορετικό αριθμό Ν π.χ
N<-- 100
ΚΑΛΕΣΕ SORT(ΟΝΟΜΑΤΑ,N)
....
Ν<--50
ΚΑΛΕΣΕ SORT(STOIXEIA,N)
γιατί οι παράμετροι και στις 2 περιπτώσεις είναι 2, ο πίνακας και το πλήθος των στοιχείων του. Σε αντίθετη περίπτωση δεν θα είχε νόημα και η δημιουργία υποπρογραμμάτων.
Το ερώτημα είναι ο πίνακας είναι μια παράμετρος ή τόσες παράμετροι όσες και το πλήθος των στοιχείων του;
Εγώ απαντώ μία..