Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Μονοδιάστατοι πίνακες => Γ΄ Λυκείου => Εισαγωγή στοιχείων, εμφάνιση και υπολογισμοί => Μήνυμα ξεκίνησε από: kiro στις 18 Ιαν 2006, 02:39:54 ΜΜ

Τίτλος: pinakes
Αποστολή από: kiro στις 18 Ιαν 2006, 02:39:54 ΜΜ

Γεια σας!

Θα ήθελα να ρωτήσω κάτι σχετικά με τους πίνακες. Σε ένα βοήθημα που έχω οποιαδήποτε άσκηση τη λύνει χρησιμοποιώντας για κάθε εντολή ξεχωριστή δομή επανάληψης.
Π.χ.
Να γραφεί ο αλγορι9μοος που διαβάζει έναν πίνακα 100 θέσεων και στη συνέχεια να εμφανίζεται το διπλάσιο του. Σαν λύση δίνει την παρακάτω

Αλγοριθμος Διπλασια_τιμη

Για ι από 1 μέχρι 100
      Εμφανισε ‘Δωσε το στοιχειο’, ι
      Διαβασε Π[ι]
Τελος_επαναληψης
Για ι από 1 μέχρι 100
      Εμφανισε ‘Το’, ι, ΄στοιχειο τοθ πινακα εινια’
      Εμφανισε 2*Π[ι]
Τελος_επαναληψης
Τελος Διπλασια_τιμη

Η στην περίπτωση να διαβάζει έναν πίνακα 1000 θέσεων και στη συνέχεια να υπολογίζει το άθροισμα των στοιχείων τον κάνει πάλι με δυο επαναλήψεις

Αλγοριθμος Αθροισμα
Για ι από 1 μέχρι 1000
      Εμφανισε ‘Δωσε το στοιχειο’, ι
      Διαβασε Π[ι]
Τελος_επαναληψης
Αθρποσμα<- 0
Για ι από 1 μέχρι 1000
      Αθρποσμα<- Αθρποσμα + Π[ι]
Τελος_επαναληψης
Τελος Αθροισμα

Δεν είναι περιττές οι δυο επαναλήψεις κα9ε φορά? Θα ήταν λάθος αν την λύναμε ως

Αλγοριθμος Διπλασια_τιμη
Για ι από 1 μέχρι 100
      Εμφανισε &#8216;Δωσε το στοιχειο&#8217;, ι
      Διαβασε Π[ι]
      Εμφανισε 2*Π[ι]
Τελος_επαναληψης
Τελος Διπλασια_τιμη

Και αντίστοιχα την άλλη

Αλγοριθμος Αθροισμα
Αθρποσμα<- 0
Για ι από 1 μέχρι 1000
      Εμφανισε &#8216;Δωσε το στοιχειο&#8217;, ι
      Διαβασε Π[ι]
      Αθρποσμα<- Αθρποσμα + Π[ι]
Τελος_επαναληψης
Τελος Αθροισμα

Τίτλος: Re: pinakes
Αποστολή από: P.Tsiotakis στις 18 Ιαν 2006, 03:22:58 ΜΜ
Αγαπητή Όλγα,

ο λόγος που γίνεται αυτό είναι απλός. Θέλουμε να ανεξαρτητοποιήσουμε τα δυο ερωτήματα. Ειδικά στις πρώτες ασκήσεις που λύνουμε με τους μαθητές πρέπει να ξεχωρίσουν στο μυαλό τους την είσοδο των πινάκων και την επεξεργασία τους. Μην λησμονείς οτι η είσοδος των πινάκων θα μπορούσε να πραγματοποιηθεί και με την εντολή Δεδομένα, οπότε θα παρέμενε η επεξεργασία...
Έτσι άλλωστε, λειτουργεί και το θέμα 4 των πανελλαδικών. Εγώ μάλιστα, αποτρέπω τους μαθητές μου από τη χρήση του δεύτερου τρόπου που προτείνεις (και είναι σωστός) για τους λόγους που προανέφερα.

Με εκτίμηση,
Τίτλος: Re: pinakes
Αποστολή από: EleniK στις 19 Ιαν 2006, 10:56:43 ΜΜ
Όλγα θα συμφωνήσω και εγώ με τον Παναγιώτη. Ο λόγος που διδάσκεις/υλοποιείς αρχικά τους αλγορίθμους σύμφωνα με τον πρώτο τρόπο είναι επειδή παιδαγωγικά είναι καλύτερος, διότι ξεχωρίζει τις μεθοδολογίες. Κάτι απαραίτητα για τους μαθητές, ειδικά για τους πιο αδύναμους.  Όταν αποκτήσουν μια κάποια εμπειρία τότε μπορείς να παρουσιάσεις και εναλλακτικούς τρόπους. Φυσικά αυτό ισχύει όχι μόνο για πίνακες.
Τίτλος: Re: pinakes
Αποστολή από: viper στις 30 Ιαν 2006, 03:17:12 ΜΜ
Θα συμφωνήσω εν μέρη με τις παραπάνω παρατηρήσεις και αυτό μέχρι του σημείου που πρέπει οι μαθητές να γεχωρίσουν και να καταλάβουν τις ανεξάρτητες λειτουργίες που αναφέρει η ερώτηση. Όμως από το σημείο της εξικείωσης των μαθητών με τους πίνακες και μέτά μπορούμε να τους δείξουμε ότι με το διάβασμα των στοιχείων του πίνακα μπορούμε να κάνουμε ταυτόχρονα και άλλες επεξεργασίες. Όπως για παράδειγμα διάβασμα στοιχείων και άθροισμα. Νομίζω ότι πρέπει να κατευθύνουμε τη σκέψη στο σωστό στο "μικρό" και στο γρήγορα εκτελέσιμο πρόγραμμα, όσο αυτό είναι δυνατό
Τίτλος: Re: pinakes
Αποστολή από: Φίλιππος στις 31 Ιαν 2006, 05:42:02 ΜΜ
Το "μικρό και γρήγορο" δεν είναι πάντα απαραίτητα το "σωστό" στη συγγραφή επαγγελματικών προγραμμάτων.  

Το readability, το reusability και άλλα σχετικά έχουν (και πρέπει να έχουν) μεγαλύτερη σημασία μεσο-μακροπρόθεσμα.  Το hardware είναι πλέον φθηνό οπότε προτιμάτε το καλογραμμένο πρόγραμμα έστω και αν είναι λίγο πιό αργό.

Η "μανία του μικρού και του γρήγορου" οδήγησε σε μεγάλο βαθμό στο πολυσυζητημένο software crisis που πρωτοάρχισε να συζητιέται στις αρχές του '80.  Πλέον είναι κοινή αντίληψη ότι προέχει η σωστή μοντελοποίηση του προβλήματος, η σωστή επιλογή δομών, η σωστή επιλογή ονομάτων κ.ο.κ.

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

Όμοιο προσανατολισμό θα πρέπει να έχουμε από τα πρώτα στάδια της "προετοιμασίας στην αλγοριθμική" και στους νέους (εκκολαπτόμενους ίσως) προγραμματιστές, τους μαθητές μας.