Διαδικασία και στοιχεία πινάκων

Ξεκίνησε από pthomop, 15 Απρ 2009, 10:54:34 ΠΜ

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

pthomop

Καλημέρα παιδιά. Ειναι επιτρεπτό να στείλω μεμονωμένα κάποιο στοιχείο του πίνακα σε μια διαδικασία? Για παράδειγμα:

Για i απο 1 μέχρι 10
  Διαβασε Α[Ι]
  Κάλεσε ΔΙΑΔ(Α[i],sum)
Tελος_επαναληψης


Κάνοντας την υπόθεση το στοχείο του πίνακα να προστεθεί με κάποιες άλλες τυπικές μεταβλητές της διαδικασίας και να επιστραφεί το άθροισμά τους.
Συνάδελφος μου είπε οτι κατι τετοιο δεν είναι επιτρεπτό. Εσεις τι λετε ?

sstergou

#1
Μπορείς, μόνο που πρέπει κατά την κλήση της διαδικασίας να στείλεις ένα μόνο στοιχείο και όχι όλο τον πίνακα, δηλαδή στο συγκεκριμένο παράδειγμα :
Κάλεσε Διαδ(α[i], sum)


edit: Απ'ότι είδα αυτό έχεις γράψει κι εσύ, αλλά επειδή δεν το έχεις βάλει ανάμεσα σε περιοχή κώδικα
[code][\code]
το smf νομίζει ότι γράφεις bbcode και έτσι σου έφαγε τις αγκύλες και το i. Το διορθώνω

gpapargi

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

pthomop

Eυχαριστώ για την απάντηση. Περσι στο 3ο  Θέμα μερικά παιδιά χρησιμοποίησαν πίνακα με τα αυτοκίνητα και έστελναν το στοιχείο του πίνακα στην διαδικασία για τον υπολογισμό της χρέωσης.

Καρκαμάνης Γεώργιος

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

NickTG

Δεν ξέρω αν πρέπει να ανοίξω καινούριο θέμα.
Επείδη είναι κάτι αντίστοιχο (και επειδη εκανα και κοπο να το βρω το θεμα :P )..

Αν εχω εναν δισδιάστατο πίνακα μπορώ να στελνω σε διαδικασια καποια γραμμη και αυτη να τη διαχειριζεται σαν μονοδιαστατο?

Εστω ενας πινακας ακεραιων πχ. ΔΙΣΔΙΑΣΤΑΤΟΣ[10,25]
πχ για τη ι-η γραμμη (ισως η  γραμμη να δινεται απο το χρηστη ή οτιδηποτε) μπορω να κανω :
....
ΓΙΑ ι ΑΠΟ 3 ΜΕΧΡΙ 7
  ΚΑΛΕΣΕ ΔΙΑΔ(ΔΙΣΔΙΑΣΤΑΤΟΣ[ι])
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
...
ΔΙΑΔΙΚΑΣΙΑ ΔΙΑΔ(ΜΟΝ_ΠΙΝ)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΜΟΝ_ΠΙΝ[25]
ΑΡΧΗ
 
  ΓΡΑΨΕ "......................."
 
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
...
Φανταζομαι οχι?
Δηλαδη ασχετως με το τι θελω να κανω σε εναν δισδιαστατο μεσω συναρτησης ή διαδικασίας παντα πρεπει να στελνω ολοκληρο τον δισδιαστατο και μετα αναλογα παιζω με γραμμες και στηλες?

Ευχαριστώ..

andreas_p

ΟΧΙ !

ΓΙΑ ι ΑΠΟ 3 ΜΕΧΡΙ 7
  ΚΑΛΕΣΕ ΔΙΑΔ(ΔΙΣΔΙΑΣΤΑΤΟΣ[ι])
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
...
ΔΙΑΔΙΚΑΣΙΑ ΔΙΑΔ(ΜΟΝ_ΠΙΝ)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΜΟΝ_ΠΙΝ[25]
ΑΡΧΗ

  ΓΡΑΨΕ "......................."

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
.
ΝΑΙ.

ΓΙΑ ι ΑΠΟ 3 ΜΕΧΡΙ 7
  ΚΑΛΕΣΕ ΔΙΑΔ(ΔΙΣΔΙΑΣΤΑΤΟΣ, ι)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
...
ΔΙΑΔΙΚΑΣΙΑ ΔΙΑΔ(ΠΙΝ, Γ)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: ΠΙΝ[10,25], Γ
ΑΡΧΗ

  ΓΡΑΨΕ "......................."

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
...

NickTG

Άρα η εκφώνηση του τύπου :

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

Είναι λανθασμένη?

petrosp13

Λανθασμένη δεν είναι αλλά απαιτεί να αντιγράψεις τον δισδιάστατο σε μονοδιάστατο, να καλέσεις το υποπρόγραμμα και να αντιγράψεις τον μονοδιάστατο πίσω στον δισδιάστατο!!
Εκτός αν εννοείς ότι θα ταξινομεί κάθε γραμμή (ή στήλη), οπότε η μόνη αλλαγή είναι ότι θα αντιγράφεις μέσα σε επανάληψη την γραμμή (ή στήλη) σε μονοδιάστατο, θα καλείς το υποπρόγραμμα και θα αντιγράφεις τελικά πίσω τον μονοδιάστατο στην γραμμή (ή στήλη)
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

ripper

Παράθεση από: NickTG στις 10 Απρ 2021, 05:49:19 ΜΜ
Φανταζομαι οχι?
Δηλαδη ασχετως με το τι θελω να κανω σε εναν δισδιαστατο μεσω συναρτησης ή διαδικασίας παντα πρεπει να στελνω ολοκληρο τον δισδιαστατο και μετα αναλογα παιζω με γραμμες και στηλες?

Πρέπει να έχεις ίδιο τύπο παραμέτρων και προφανώς, αν μιλάμε για πίνακες, ίδιες διαστάσεις.
2 ιδέες, έστω πως βρίσκεις και τυπώνεις άθροισμα κάθε γραμμής :

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




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


NickTG

Ευχαριστω πολύ παιδια.
Καταλαβα αρα ειτε η αντιγραφη σε εναν νεο πινακα, ειτε το να στειλω ολοκληρο το δισδιαστατο ειναι αναγκαστικό ..
Αρα η γλωσσα δουλευει με "πραγματικους-αληθινους" πινακες και οχι πινακες που μπορουν να εχουν πινακες για στοιχεια τους

Καρκαμάνης Γεώργιος

Παράθεση από: NickTG στις 14 Απρ 2021, 01:14:19 ΠΜ
Ευχαριστω πολύ παιδια.
Καταλαβα αρα ειτε η αντιγραφη σε εναν νεο πινακα, ειτε το να στειλω ολοκληρο το δισδιαστατο ειναι αναγκαστικό ..
Αρα η γλωσσα δουλευει με "πραγματικους-αληθινους" πινακες και οχι πινακες που μπορουν να εχουν πινακες για στοιχεια τους
Ως προς το κομμάτι της αντιγραφής πίνακα σε γενικές γραμμές ισχύει:
- ένας μονοδιάστατος πίνακας μπορεί να αντιγραφεί σε έναν μονοδιάστατο ή σε μια γραμμή/στήλη ενός δισδιάστατου

- ένας δισδιάστατος πίνακα μπορεί να αντιγραφεί ολόκληρος ή μέρος του σε έναν δισδιάστατο πίνακα

-μια γραμμή/στήλη ενός δισδιάστατου πίνακα μπορεί να αντιγραφεί σε έναν μονοδιάστατο πίνακα

Εκτός από τα παραπάνω υπάρχουν και πιο ειδικές περιπτώσεις μερικής αντιγραφής  οι οποίες δεν χρειάζονται να αναφερθούν

Γενικά καλό είναι να θυμόμαστε το πως λειτουργεί η ΓΛΩΣΣΑ για τις ανάγκες του μαθήματος και όχι ως μια πραγματική γλώσσα προγραμματισμού που σαφώς αντιμετωπίζουν τους πίνακες με άλλη λογική


George Eco

Παράθεση από: Καρκαμάνης Γεώργιος στις 16 Απρ 2021, 10:03:22 ΠΜ

Γενικά καλό είναι να θυμόμαστε το πως λειτουργεί η ΓΛΩΣΣΑ για τις ανάγκες του μαθήματος και όχι ως μια πραγματική γλώσσα προγραμματισμού που σαφώς αντιμετωπίζουν τους πίνακες με άλλη λογική

Νομίζω πως ο κος Καρκαμάνης το έθεσε τέλεια το θέμα. Συμφωνώ 100% μαζί του και δεν έχω να συμπληρώσω κάτι. Πρέπει πάντα να έχουμε κατά νου τα πλαίσια του μαθήματος και τους στόχους του, οι οποίοι άλλωστε εξετάζονται και στις Πανελλήνιες αν μη τι άλλο!

NickTG

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