ΠΕΡΑΣΜΑ ΠΙΝΑΚΑ ΣΕ ΔΙΑΔΙΚΑΣΙΑ?

Ξεκίνησε από mbathas, 19 Απρ 2004, 01:40:31 ΜΜ

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

mbathas

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

ΠΡΟΓΡΑΜΜΑ  ΠΙΝΑΚΑΣ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:I
ΠΡΑΓΜΑΤΙΚΕΣ: Α[100]
AΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
      ΓΡΑΨΕ'ΔΩΣΕ ΤΟ:',I,'ο ΣΤΟΙΧΕΙΟ ΤΟΥ ΠΙΝΑΚΑ'
     ΔΙΑΒΑΣΕ  Α
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΚΑΛΕΣΕ ΕΜΦΑΝΙΣΗ(Α)
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ ΕΜΦΑΝΙΣΗ(ΤΑBLE)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:I
ΠΡΑΓΜΑΤΙΚΕΣ: TABLE[100]
AΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
     ΓΡΑΨΕ ΤΑBLE
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Ευχαριστώντας προκαταβολικά για την απάντησή σας παραθέτω και μια μικρή άσκηση που μου άρεσε αρκετά:

Να υλοποιηθεί αλγόριθμος που να υπολογίζει και εμφανίζει όλους τους τέλειους αριθμούς από το 1 έως το 1000.
Σημ. Τέλειος θεωρείται ο αριθμός που το άθροισμα των διαιρετών του ισούται με το διπλάσιο του αριθμού.
Μιχάλης Μπάθας
Μηχανικός Η/Υ Συστημάτων
Καθηγητής Πληροφορικής

pfan

#1
Μιχάλη δεν θα συμφωνούσα απόλυτα μαζί σου ότι δεν υπάρχει κάτι αντίστοιχο στο βιβλίο. Σωστά έχεις γράψει το παράδειγμα γιατί στην σελ 100 από το τετράδιο μαθητή στο παράδειγμα 1 μεταβιβάζει τον πίνακα μόνο με το όνομά του.
Εδώ θα πρέπει όμως να τονίσουμε ότι όταν μεταφέρεις πίνακα μαζί με το πλήθος των στοιχείων θα πρέπει μέσα στο υποπρόγραμμα να κάνεις πρόληψη ώστε να μην ξεπεράσεις τα όρια του πίνακα.
Παράδειγμα:

ΠΡΟΓΡΑΜΜΑ  ΠΙΝΑΚΑΣ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:I,Ν
ΠΡΑΓΜΑΤΙΚΕΣ: Α[100]
AΡΧΗ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
  ΔΙΑΒΑΣΕ Ν
ΜΕΧΡΙΣ_ΟΤΟΥ Ν>0 ΚΑΙ Ν<=100
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
     ΓΡΑΨΕ 'ΔΩΣΕ ΤΟ: ',I,'ο ΣΤΟΙΧΕΙΟ ΤΟΥ ΠΙΝΑΚΑ'
     ΔΙΑΒΑΣΕ  Α
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΚΑΛΕΣΕ ΕΜΦΑΝΙΣΗ(Α,Ν)
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
 
ΔΙΑΔΙΚΑΣΙΑ ΕΜΦΑΝΙΣΗ(ΤΑBLE,Π)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:I,Π
ΠΡΑΓΜΑΤΙΚΕΣ: TABLE[100]
AΡΧΗ
ΑΝ Π<=100 ΤΟΤΕ
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Π
     ΓΡΑΨΕ ΤΑBLE
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Να παραθέσω και μια αντίστοιχη άσκηση:
Να γράψετε υποπρόγραμμα που να δέχεται ένα πίνακα (μέχρι 250 θέσεις) και το πλήθος των στοιχείων του. Το υποπρόγραμμα θα πρέπει να επιστρέφει το μεγαλύτερο στοιχείο του πίνακα καθώς και την τελευταία θέση στην οποία υπάρχει το μέγιστο. Μέσα στο υποπρόγραμμα να γίνει έλεγχος ώστε αν δεχτεί πλήθος στοιχείων για τον πίνακα πάνω από 250 να επιστρέφει τιμή - 1 στην μεταβλητή που θα περιέχει την θέση και στην μεταβλητή που θα περιέχει το μέγιστο.
Ένα άλλο όμως πρόβλημα που μπορεί να προκύψει είναι όταν έχεις να μεταβιβάσεις πίνακα με διαφορετικό πλήθος στοιχείων που έχει δηλωθεί στις μεταβλητές. Τότε τι θα συμβεί?

Πύρζα Φανή
Καθηγήτρια Πληροφορικής

P.Tsiotakis

#2

Αγαπητέ Μιχάλη,

Όπως και η Φανή επισήμανε υπάρχει παράδειγμα για την περίπτωση χρήσης πινάκων ως παραμέτρων. Στα πλαίσια αυτά κινούνται Μιχάλη και οι ασκήσεις στον δικτυακό μου κόμβο, για τις οποίες με χαρά περιμένω σχόλια, παρατηρήσεις και διορθώσεις

Έτσι, κι αλλιώς για ένα χρόνο ακόμα θα υπάρχει "στον αέρα", μετά πάμε στη σύνταξη, λέω να κάνω σεμινάρια χημείας και να αλλάξω κλάδο

Φανή τι ακριβώς εννοείς με το "... Ένα άλλο όμως πρόβλημα που μπορεί να προκύψει είναι όταν έχεις να μεταβιβάσεις πίνακα με διαφορετικό πλήθος στοιχείων που έχει δηλωθεί στις μεταβλητές. Τότε τι θα συμβεί? ..."

Με εκτίμηση,

pfan

Παναγιώτη το πρόβλημα που έχω αν και νομίζω πως δεν είναι πρόβλημα των μαθητών είναι τι θα γίνει αν έχω το παρακάτω πρόγραμμα:
ΠΡΟΓΡΑΜΜΑ  ΠΙΝΑΚΑΣ
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:I
ΠΡΑΓΜΑΤΙΚΕΣ: Α[50]
AΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50
 ΓΡΑΨΕ'ΔΩΣΕ ΤΟ: ',I,'ο ΣΤΟΙΧΕΙΟ ΤΟΥ ΠΙΝΑΚΑ'
     ΔΙΑΒΑΣΕ  Α
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΚΑΛΕΣΕ ΕΜΦΑΝΙΣΗ(Α)
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
 
ΔΙΑΔΙΚΑΣΙΑ ΕΜΦΑΝΙΣΗ(ΤΑBLE)
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:I
ΠΡΑΓΜΑΤΙΚΕΣ: TABLE[100]
AΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
     ΓΡΑΨΕ ΤΑBLE
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 
Και καλά ο Πίνακας Α είναι 50 θέσεων αν όμως ο Α ήταν 150 θέσεων. Γενικά πιστεύω ότι δεν πρέπει να απασχολήσει κάτι τέτοιο τους μαθητές. Βέβαια καλό είναι να πούμε ότι όταν γράφουμε μια διαδικασία ή συνάρτηση πρέπει ο δημιουργός της να προνοεί για τυχών λάθη στις παραμέτρους που μπορεί να προέρχονται από το κύριο πρόγραμμα (το οποίο μπορεί να το έχει δημιουργήσει κάποιος άλλος) και να επιστρέφει τιμές error.

Όσο αναφορά το μάθημα (χωρίς να θέλω να αυτοαναιρεθώ) θα ήθελα να ρωτήσω πόσο χρήσιμο είναι ένα μάθημα προγραμματισμού σε ένα Λύκειο που στόχο έχει την γενική παιδεία πρώτα και μετά τις κατευθύνσεις. Πόσο πιο «πλούσιος» είναι ένας μαθητής που μαθαίνει το ΑΕΠΠ; Δηλαδή οι διαδικασίες και οι συναρτήσεις θα του δώσουν πραγματικά εφόδια; Πάντως τα παιδιά από την θετική που περνούν σε σχολές πληροφορικής απλώς δυσκολεύονται στο πρώτο εξάμηνο να μάθουν προγραμματισμό. Ε και ?? Λες και δεν θα τα καταφέρουν. Εξάλλου τα παιδιά της τεχνολογικής σε κάποια τμήματα (και πολυτεχνικά) δυσκολεύονται στην Χημεία. Το μόνο που θεωρώ θετικό είναι ότι ένα τέτοιο μάθημα κάτω από άλλες συνθήκες θα μπορούσε να βοηθήσει στην αναλυτική και συνθετική σκέψη του μαθητή.
Πύρζα Φανή
Καθηγήτρια Πληροφορικής

xaidi

#4
τα μαθήματα που έχω αναλάβει έχουν να κάνουν πάντα με προγραμματισμό, είτε σε τριτοβάθμια σχολεία είτε σε ιεκ είτε σε μέση εκπαίδευση. δεν έχω πείρα βέβαια σε δημόσιο σχολείο. όταν προτομάθαινα προγραμματισμό -όπως όλοι φαντάζομαι- "ζορίστηκα" και ειδικά με τις δομές λίστες κλπ. θεωρώ ότι πέραν της λογικής του προγραμματισμού έμαθα να σκέφτομαι (το ίδιο και με τα μαθηματικά αρχικά). θα μπορούσα να πω πολλά για το μάθημα και τα καλά του ...όμως θα σταθώ μόνο σε ένα που αναφέρεις μια και ρώτησες και απάντησες ταυτόχρονα. "ένα τέτοιο μάθημα  θα μπορούσε να βοηθήσει στην αναλυτική και συνθετική σκέψη του μαθητή"  :juggle:
βέβαια αν έχεις διάθεση το συζητάμε! ???
Ευχαριστώ,

Γιάννης Θεοδωρίδης

Καλημέρα σε όλους. Δύο παρατηρήσεις:
1) Πολλά από τα χαρακτηριστικά που υποστηρίζει η γλώσσα δεν ξέρουμε ακριβώς πως υλοποιούνται. Αν πάρουμε παράδειγμα από τις αντίστοιχες υλοποιήσεις σε γλώσσες προγραμματισμού, τότε οδηγούμαστε σίγουρα σε κάποια συμπεράσματα, τα οποία μάλλον είναι διαφορετικά μεταξύ τους ανάλογα με την περίπτωση. Άλλη υλοποίηση έχουμε στην C++ για το πέρασμα πινάκων και άλλη στην Pascal. Ώστόσο πιστεύω πως θα πρέπει να διατηρούμε τα μεγέθη ίδια όταν περνάμε πίνακες ως παραμέτρους. Άλλωστε δεν βλέπω το φυσικό νόημα του να αλλάζουμε πρόβλεψη για το μέγεθος του πίνακα μέσα στο υποπρόγραμμα, από τη στιγμή που πρόκειται για τον ίδιο πίνακα και τα ίδια στοιχεία όσο αφορά στη λογική του προβλήματος.
2) Είναι μάλλον από τα αρνητικά στοιχεία του μαθήματος ότι δεν προμηθεύει το υπουργείο κάποιο επίσημο μεταγλωτιστή, παρά τα όποια πρακτικά προβλήματα παρουσιάζει το εγχείρημα. Σίγουρα θα ήταν τουλάχιστον μια κοινή αναφορά για όλους.