Δευτέρα 22 Ιουνίου 2009

Θέμα 3ον (και ίδιο αλλά και λίγο αλλαγμένο)

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


(α) Θέμα 3ον, όπως δόθηκε

Σε μια διαδρομή τρένου υπάρχουν 20 σταθμοί (σε αυτούς περιλαμβάνονται η αφετηρία και ο τερματικός σταθμός). Το τρένο σταματά σε όλους τους σταθμούς. Σε κάθε σταθμό επιβιβάζονται και αποβιβάζονται επιβάτες. Οι πρώτοι επιβάτες επιβιβάζονται στην αφετηρία και στον τερματικό σταθμό αποβιβάζονται όλοι οι επιβάτες.
Να κατασκευάσετε αλγόριθμο, ο οποίος να διαχειρίζεται την κίνηση των επιβατών. Συγκεκριμένα :
Α. Να ζητάει από τον χρήστη τον αριθμό των ατόμων που επιβιβάστηκαν σε κάθε σταθμό, εκτός από τον τερματικό, και να τον εισάγει σε πίνακα ΕΠΙΒ[19]. (Μονάδες 2)
Β. Να εισάγει σε πίνακα ΑΠΟΒ[19] τον αριθμό των ατόμων που αποβιβάστηκαν σε κάθε σταθμό, εκτός από τον τερματικό, ως εξής : Για την αφετηρία να εισάγει την τιμή μηδέν (0) και για τους υπόλοιπους σταθμούς να ζητάει από τον χρήστη τον αριθμό των ατόμων που αποβιβάστηκαν. (Μονάδες 4)
Γ. Να δημιουργεί πίνακα ΑΕ[19], στον οποίο να καταχωρίζει τον αριθμό των επιβατών που βρίσκονται στο τρένο, μετά από κάθε αναχώρησή του. (Μονάδες 7)
Δ. Να βρίσκει και να εμφανίζει τον σταθμό από τον οποίο το τρένο αναχωρεί με τον μεγαλύτερο αριθμό επιβατών. (Να θεωρήσετε ότι από κάθε σταθμό το τρένο αναχωρεί με διαφορετικό αριθμό επιβατών). (Μονάδες 7)

Ενδεικτική λύση με διαχωρισμό σε ερωτήματα όπως δόθηκαν στην εκφώνηση :

Αλγόριθμος Θέμα3
// ΕΠΙΒ[19], ΑΠΟΒ[19] //

! Α επιβιβαζόμενοι
Για σταθμός από 1 μέχρι 19
__Διάβασε ΕΠΙΒ[σταθμός]
Τέλος_επανάληψης

! Β αποβιβαζόμενοι
ΑΠΟΒ[1] <– 0
Για σταθμός από 2 μέχρι 19
__Διάβασε ΑΠΟΒ[σταθμός]
Τέλος_επανάληψης

! Γ παραμένοντες στο τρένο
Πλήθος <– 0
Για σταθμός από 1 μέχρι 19
__Πλήθος <– Πλήθος + ΕΠΙΒ[σταθμός] – ΑΠΟΒ[σταθμός]
__ΑΕ[σταθμός] <– Πλήθος
Τέλος_επανάληψης

! Δ σταθμός μεγίστου πλήθους
ΣταθμόςΜΠλήθους <– 1
ΜέγιστοΠλήθος <– ΑΕ[1]
Για σταθμός από 2 μέχρι 19
__Αν ΑΕ[σταθμός] > ΜέγιστοΠλήθος τότε
____ΣταθμόςΜΠλήθους <– σταθμός
____ΜέγιστοΠλήθος <– ΑΕ[σταθμός]
__Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε ‘Σταθμός ‘,ΣταθμόςΜΠλήθους,’ με πλήθος ‘,ΜέγιστοΠλήθος

// ΣταθμόςΜΠλήθους //
Τέλος Θέμα3

Άλλη ενδεικτική λύση χωρίς διαχωρισμό σε ερωτήματα, δίνει την σωστή απάντηση αλλά δυσκολεύει τους διορθωτές :

Αλγόριθμος Θέμα3_σύντομος
// ΕΠΙΒ[19], ΑΠΟΒ[19] //
Για σταθμός από 1 μέχρι 19
__Αν σταθμός = 1 τότε
____Διάβασε ΕΠΙΒ[1]
____ΑΠΟΒ[1] <– 0
____ΑΕ[1] <– ΕΠΙΒ[1]
____ΣταθμόςΜΠλήθους <– 1
____ΜέγιστοΠλήθος <– ΑΕ[1]
__Αλλιώς
____Διάβασε ΕΠΙΒ[σταθμός], ΑΠΟΒ[σταθμός]
____ΑΕ[σταθμός] <– ΑΕ[σταθμός–1]+ΕΠΙΒ[σταθμός]-ΑΠΟΒ[σταθμός]
____Αν ΑΕ[σταθμός] > ΜέγιστοΠλήθος τότε
______ΣταθμόςΜΠλήθους <– σταθμός
______ΜέγιστοΠλήθος <– ΑΕ[σταθμός]
____Τέλος_αν
__Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε ‘Σταθμός ‘,ΣταθμόςΜΠλήθους,’ με πλήθος ‘,ΜέγιστοΠλήθος

// ΣταθμόςΜΠλήθους //
Τέλος Θέμα3_σύντομος



(β) Θέμα 3ον, λίγο αλλαγμένο

Ένα τρένο επιτρέπεται να μεταφέρει ένα μέγιστο όριο επιβατών. Το Όριο_επιβατών δίδεται όταν φεύγει το τρένο από το Αμαξοστάσιο.
Στην πρώτη στάση, στην Αφετηρία, ανεβαίνουν επιβάτες. Το τρένο μετά την Αφετηρία κάνει 18 ενδιάμεσες στάσεις και φτάνει στο Τέρμα. Στις ενδιάμεσες στάσεις πρώτα κατεβαίνουν οι επιβαίνοντες και μετά ανεβαίνουν νέοι επιβάτες. Στο Τέρμα κατεβαίνουν όλοι οι επιβάτες.
Ζητείται αλγόριθμος που να διαχειρίζεται την κίνηση των επιβατών. Θα διαβάζει πόσοι κατέβηκαν (ΑΠΟΒ[19]) και πόσοι ανέβηκαν (ΕΠΙΒ[19]), αλλά θα ελέγχει τις τιμές να είναι πάντοτε επιτρεπτές. Θα παρακολουθεί το πλήθος επιβατών (ΑΕ[19]).
Να εμφανιστεί ο αριθμός της τελευταίας στάσης που αναχώρησε το τρένο με τους περισσότερους επιβάτες, το μέγιστο αυτό πλήθος επιβατών, και το πλήθος επιβατών που κατέβηκαν στο Τέρμα.

Αλγόριθμος Θέμα3_αλλαγμένος
// Όριο_Επιβατών, ΕΠΙΒ[19], ΑΠΟΒ[19] //

! Καθορίζεται το όριο επιβατών στο Αμαξοστάσιο
Αρχή_επανάληψης
__Διάβασε Όριο_επιβατών
Μέχρις_ότου Όριο_επιβατών > 0

! Στην πρώτη στάση μπορεί να γεμίσει από επιβάτες
Αρχή_επανάληψης
__Διάβασε ΕΠΙΒ[1]
Μέχρις_ότου ΕΠΙΒ[1]>=0 και ΕΠΙΒ[1]<=Όριο_επιβατών
ΑΠΟΒ[1] <– 0
ΑΕ[1] <– ΕΠΙΒ[1]
ΣτάσηΜΠλήθους <– 1
ΜέγιστοΠλήθος <– ΑΕ[1]
Για στάση από 2 μέχρι 19

! Σε επόμενη στάση αποβιβάζονται το πολύ όλοι όσοι επιβαίνουν
__Αρχή_επανάληψης
____Διάβασε ΑΠΟΒ[στάση]
__Μέχρις_ότου ΑΠΟΒ[στάση]>=0 και ΑΠΟΒ[στάση]<=ΑΕ[στάση–1]

! Βρίσκουμε πόσοι παρέμειναν μέσα στο όχημα
__ΑΕ[στάση] <– ΑΕ[στάση–1]–ΑΠΟΒ[στάση]

! Μετά επιβιβάζονται σε όσες ελεύθερες θέσεις υπάρχουν, μέχρι το όριο επιβατών __Αρχή_επανάληψης
____Διάβασε ΕΠΙΒ[στάση]
__Μέχρις_ότου ΕΠΙΒ[στάση]>=0 και ΕΠΙΒ[στάση]<=(Όριο_επιβατών–ΑΕ[στάση])

! Βρίσκουμε πόσοι έγιναν οι επιβάτες, πριν ξεκινήσει το όχημα
____ΑΕ[στάση] <– ΑΕ[στάση]+ΕΠΙΒ[στάση]
____Αν ΑΕ[στάση] > ΜέγιστοΠλήθος τότε
______ΣτάσηΜΠλήθους <– στάση
______ΜέγιστοΠλήθος <– ΑΕ[στάση]
____Τέλος_αν
Τέλος_επανάληψης
Εμφάνισε ‘Στάση ‘,ΣτάσηΜΠλήθους,’ με μέγιστο πλήθος ‘,ΜέγιστοΠλήθος
Αν ΑΕ[19]>0 τότε
__Εμφάνισε ‘Στο τέρμα κατεβαίνουν ‘,ΑΕ[19],’ επιβάτες
αλλιώς
__Εμφάνισε ‘Δεν υπάρχουν επιβάτες που κατεβαίνουν στο Τέρμα’
Τέλος_αν

// ΣτάσηΜΠλήθους, ΜέγιστοΠλήθος, ΑΕ[19] //
Τέλος Θέμα3_αλλαγμένος

Σάββατο 30 Μαΐου 2009

Προσπέλαση (από το προσπελάζω)

Ξεκινάμε ψάχνοντας ορισμούς στα λεξικά. (Το σύμβολο [<] διαβάζεται [προέρχεται από]).
Το αρχαίο ρήμα [πελάζω] σήμαινε [πλησιάζω].
Η παροιμιακή φράση [όμοιος ομοίω αεί πελάζει] σημαίνει [ο άνθρωπος πάντοτε (επιθυμεί να) συναναστρέφεται ομοίους του].
Το σύνθετο [προσπελάζω] < [προς + πελάζω] σήμαινε [πλησιάζω προς κάτι, προσεγγίζω].
Η πράξη [το πλησίασμα, η προσέγγιση] λέγεται [η προσπέλαση, της προσπέλασης] < αρχαίο [η προσπέλασις, της προσπελάσεως].
Κάποιος, που μπορούμε να τον πλησιάσουμε εύκολα, λέγεται [ο προσπελάσιμος].
Αυτός που πλησιάζει λέγεται [ο πελάτης]. Στην αρχαιότητα [πελάτης] ήταν [αυτός που πλησίαζε για να ζητήσει προστασία], σήμερα [πελάτης] είναι [αυτός που αγοράζει κάτι] ή [αυτός που έχει τακτική παρουσία, που είναι θαμώνας]. Το [σύνολο των πελατών] λέγεται [η πελατεία].

Το αρχαίο ρήμα [ελαύνω] σήμαινε [τρέχω, οδηγώ].
Η πράξη της οδήγησης μιάς μεταλλικής μάζας να περάσει βίαια μέσα από μιά οπή λέγεται [η έλαση, της έλασης] < αρχαίο [η έλασις, της ελάσεως]. Αυτό που παράγεται, ανάλογα με το σχήμα της οπής, είναι το σύρμα ή [το έλασμα].

Το σύνθετο [απελαύνω] < [από + ελαύνω] σήμαινε [διώχνω έξω από τα σύνορα].
Η πράξη, που σημαίνει εξορία < [εξ + όριο > εξορίζω], λέγεται [η απέλαση, της απέλασης] < αρχαίο [η απέλασις, της απελάσεως]. Η εξορία λεγόταν επίσης [η εξέλασις, της εξελάσεως] < [εξ + ελαύνω].
Ο φρουρός στα σύνορα του βυζαντινού κράτους, επιφορτισμένος να απωθεί τους εισερχόμενους ξένους , ονομαζόταν [ο απελάτης, του απελάτου].

Το σύνθετο [διελαύνω] < [δια + ελαύνω] σήμαινε [διέρχομαι έφιππος] ή [οδηγώ κάτι ανάμεσα από δύο εμπόδια] ή [διατρυπώ κάτι].
Η πράξη λέγεται (για μεταλλική κατεργασία) [η διέλαση, της διέλασης] < αρχαίο [η διέλασις, της διελάσεως].

Το σύνθετο [επελαύνω] < [επί + ελαύνω] σήμαινε [εφορμώ (συνήθως με ιππικό), επιτίθεμαι εναντίον κάποιου].
Η πράξη λέγεται [η επέλαση, της επέλασης] < αρχαίο [η επέλασις, της επελάσεως].

Το σύνθετο [παρελαύνω] < [παρά + ελαύνω] σήμαινε [περνώ μαζί με άλλους, όλοι συντεταγμένοι σε φάλαγγες].
Η πράξη λέγεται [η παρέλαση, της παρέλασης] < αρχαίο [η παρέλασις, της παρελάσεως].

Τώρα που τα γνωρίζουμε όλα αυτά, ας διαβάσουμε το Θέμα 1.Α.3 από το σημερινό διαγώνισμα για ΑΕΠΠ : [Όταν γίνεται σειριακή αναζήτηση κάποιου στοιχείου σε έναν μη ταξινομημένο πίνακα και το στοιχείο δεν υπάρχει στον πίνακα, τότε υποχρεωτικά προσπελαύνονται όλα τα στοιχεία του πίνακα].

Παραβλέπω ότι θα έπρεπε να λέμε [σειραϊκή] και όχι [σειριακή], αφού [Συριακή] ήδη σημαίνει [αυτήν από την Συρία]!
Αυτό που είναι οφθαλμοφανές, αλλά κανείς δεν νοιάστηκε να διορθώσει στο κείμενο του διαγωνίσματος, είναι ότι θα έπρεπε η ανύπαρκτη και ακατανόητη λέξη [προσπελαύνονται] να φύγει και η παράγραφος να αντικατασταθεί από την…

[Όταν γίνεται σειριακή αναζήτηση κάποιου στοιχείου σε έναν μη ταξινομημένο πίνακα και το στοιχείο δεν υπάρχει στον πίνακα, τότε η διαδικασία αναζήτησης πρέπει να προσπελάσει υποχρεωτικά όλα τα στοιχεία του πίνακα].

Το ότι ασχολούμαστε εντατικά με την πληροφορική δεν δικαιολογεί την κακοποίηση της γλώσσας μας.

Παρασκευή 22 Μαΐου 2009

Άλλο ένα διαγώνισμα ΑΕΠΠ με απαντήσεις

Σε μια προηγούμενη ανάρτηση είχα δώσει συνδέσμους προς μερικά κείμενά μου σχετικά με πληροφορική. Σήμερα άλλαξα το κείμενο με τα απαντημένα διαγωνίσματα ΑΕΠΠ, το οποίο περιέχει πλέον τέσσερα διαγωνίσματα (τρία πραγματικά - ένα φανταστικό).

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

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

Τετάρτη 13 Μαΐου 2009

Δωρεάν φορητοί Η/Υ στα πρωτάκια

Διάβασα εδώ ότι την ερχόμενη σχολική χρονιά θα δοθούν 120000 υπολογιστές στην Α' Γυμνασίου.

Ενδιαφέρουσα υπόσχεση! Μένει να δούμε την πράξη...


...αργότερα (φθινόπωρο 2009)...
δόθηκαν κουπόνια για αγορά μικρών υπολογιστών (netbooks) με λειτουργικά που χειάζονται αναβάθμιση, με εφαρμογές-office που χρειάζονται αναβάθμιση εντός τριμήνου, με κινδύνους επίθεσης από ιούς για τους οποίους χρειάζονται αντιιικά (δόκιμη λέξη;) προγράμματα, ενίοτε χωρίς σχολικά βοηθήματα.
Οι τιμές στην αγορά έφθασαν εύκολα στο ύψος που κάλυπτε το κουπόνι.

Καμμιά σκέψη για τον φορητό OLPC XO, που σχεδιάστηκε ειδικά για εκπαίδευση παιδιών, που έχει λογισμικό ανοικτό και μεταφρασμένο στην γλώσσα μας, που είναι φθηνότερος, άθραυστος, που ενημερώνεται από το διαδίκτυο για αναβαθμίσεις λογισμικού και για νέα βιβλία και μαθήματα, κλπ κλπ, τι να τα λέμε τώρα...


...πολύ αργότερα (καλοκαίρι 2010)...
μάθαμε ότι θα σταλούν δέκα φορητοί σε κάθε σχολείο και ένας φοριαμός φύλαξης.
Οι υπολογιστές θα μένουν στο σχολείο και θα χρησιμοποιούνται σε μαθήματα κατά περίπτωση.
Με τριάντα μαθητές στην τάξη ή με δέκα υπολογιστές ανά σχολείο, κάτι είναι πολύ στραβό στον προγραμματισμό της σχολικής εκπαίδευσης.

Αν οι υπολογιστές ανήκαν στα παιδιά, θα μπορούσαν να μαθαίνουν όλες τις ώρες που θα είχαν διαθέσιμες!

Αν ένα μηχάνημα το χειρίζονται περισσότεροι χρήστες, χαλάει πολύ πιο γρήγορα. Ρωτήστε τις εταιρείες συντήρησης αν δεν με πιστεύετε!

Τρίτη 5 Μαΐου 2009

Πράξεις σε μέρος ενός Πίνακα

Όταν χρησιμοποιούμε έναν Πίνακα, μπορεί να υποχρεωθούμε να κάνουμε πράξεις με ένα υποσύνολο των στοιχείων του.

Γενικά, ο Πίνακας έχει ένα όνομα, έστω Πιν.
Ορίζουμε έναν δείκτη γρα, που θα μας δείχνει σε ποιά γραμμή του πίνακα είμαστε, και μια μέγιστη τιμή αυτού του δείκτη : γραμαξ.
Ορίζουμε έναν δείκτη στη, που θα μας δείχνει σε ποιά στήλη του πίνακα είμαστε, και μια μέγιστη τιμή αυτού του δείκτη : στημαξ.
Ο πίνακας έχει πλήθος στοιχείων (γραμαξ x στημαξ), και αν είναι τετραγωνικός θα έχουμε γραμαξ=στημαξ.

Το πρόβλημα που δίνουμε σήμερα είναι το εξής : Σε έναν τετραγωνικό πίνακα 20x20 βάζουμε κατά γραμμές τους αριθμούς 1, 2, 3, ..., 400. Ο πίνακας έχει μια διαγώνιο από Πιν[1,1] μέχρι Πιν[20,20]. Θέλουμε να φτιάξουμε ένα πρόγραμμα σε ΓΛΩΣΣΑ που θα τυπώνει τον μέσο αριθμητικό των στοιχείων του πίνακα που βρίσκονται κάτω από την διαγώνιο αυτή, τον μέσο αριθμητικό των στοιχείων που ορίζουν την διαγώνιο, και τον μέσο αριθμητικό των στοιχείων του πίνακα που είναι πάνω από την διαγώνιο.

Για να βάλουμε τις αρχικές τιμές, χρησιμοποιούμε τιμές γραμμο-δείκτη γρα από 1 μέχρι γραμαξ, και τιμές στηλο-δείκτη στη από 1 μέχρι στημαξ. Όταν όμως προχωρήσουμε σε πράξεις σε μέρη του πίνακα, προσέχουμε πολύ στον καθορισμό των ορίων μεταβολής του καθενός δείκτη. Παρακάτω γράφουμε το πρόγραμμα και την απάντηση.
Φτιάξτε το δικό σας πρόγραμμα ως άσκηση, βρείτε τους τρεις μέσους όρους, και μετά συγκρίνετε τα προγράμματα και τις απαντήσεις.

ΠΡΟΓΡΑΜΜΑ μο3
! Βάζουμε ακέραιους αριθμούς (1, 2, 3, ...) σε έναν τετραγωνικό πίνακα κατά γραμμές
! και βρίσκουμε τους μέσους όρους στο αριστερό κάτω τριγωνικό μέρος, στην διαγώνιο,
! και στο δεξιό πάνω τριγωνικό μέρος του πίνακα

ΜΕΤΑΒΛΗΤΕΣ
__ΑΚΕΡΑΙΕΣ: Πιν[20, 20], γρα, γραμαξ, στη, στημαξ, πλήθος, άθροισμα
__ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟαριστερά, ΜΟδιαγώνια, ΜΟδεξιά
ΑΡΧΗ
γραμαξ <- 20
στημαξ <- 20

! τοποθέτηση αρχικών τιμών στον Πίνακα κατά γραμμές

πλήθος <- 0
ΓΙΑ γρα ΑΠΟ 1 ΜΕΧΡΙ γραμαξ
__ΓΙΑ στη ΑΠΟ 1 ΜΕΧΡΙ στημαξ
____πλήθος <- πλήθος + 1
____Πιν[γρα, στη] <- πλήθος
__ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

! εύρεση του μέσου όρου των αριστερών

πλήθος <- 0
άθροισμα <- 0
ΓΙΑ γρα ΑΠΟ 2 ΜΕΧΡΙ γραμαξ
__ΓΙΑ στη ΑΠΟ 1 ΜΕΧΡΙ γρα - 1
____πλήθος <- πλήθος + 1
____άθροισμα <- άθροισμα + Πιν[γρα, στη]
__ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΟαριστερά <- άθροισμα/πλήθος

! εύρεση του μέσου όρου των διαγωνίων

πλήθος <- 0
άθροισμα <- 0
ΓΙΑ γρα ΑΠΟ 1 ΜΕΧΡΙ γραμαξ
__πλήθος <- πλήθος + 1
__άθροισμα <- άθροισμα + Πιν[γρα, γρα]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΟδιαγώνια <- άθροισμα/πλήθος

! εύρεση του μέσου όρου των δεξιών

πλήθος <- 0
άθροισμα <- 0
ΓΙΑ γρα ΑΠΟ 1 ΜΕΧΡΙ γραμαξ - 1
__ΓΙΑ στη ΑΠΟ γρα + 1 ΜΕΧΡΙ στημαξ
____πλήθος <- πλήθος + 1
____άθροισμα <- άθροισμα + Πιν[γρα, στη]
__ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΟδεξιά <- άθροισμα/πλήθος

! εκτύπωση των τριών μέσων όρων

ΓΡΑΨΕ 'Μέσοι όροι : Αριστερών=', ΜΟαριστερά, ', Διαγωνίων=', ΜΟδιαγώνια, ' και Δεξιών=', ΜΟδεξιά
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Όταν εκτελεστεί το πρόγραμμα αυτό, δίνει απάντηση :

Μέσοι όροι : Αριστερών=267.00, Διαγωνίων=200.50 και Δεξιών=134.00

Παρασκευή 17 Απριλίου 2009

Αριθμοί Φιμπονάτσι

Ας θυμηθούμε πώς ονομάζει η γραμματική τις λέξεις {πρώτος, δεύτερος, τρίτος, ...}. Λέγονται τακτικά αριθμητικά. Δίνουν την τάξη (την θέση του σε μια σειρά) του ουσιαστικού.

Λοιπόν, σήμερα θα γράψουμε ένα απλό πρόγραμμα (σε ΓΛΩΣΣΑ) που θα υπολογίζει έναν αριθμό Φιμπονάτσι όταν του δίνουμε την τάξη του. Οι αριθμοί Φιμπονάτσι είναι μια σειρά από αριθμούς που δημιουργούνται ως εξής:

Ο πρώτος (τάξη=1) ορίζεται ίσος με 0, δηλαδή f(1)=0.
Ο δεύτερος (τάξη=2) ορίζεται ίσος με 1, δηλαδή f(2)=1.
Κάθε άλλος επόμενος (τάξη=k, κ>2) ισούται με το άθροισμα των δύο προηγουμένων του, f(k)=f(k-1)+f(k-2) .
Από τον τρόπο σχηματισμού των όρων της, η σειρά ονομάζεται αναδρομική.
Οι αρχικοί αριθμοί της σειράς είναι : 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, κλπ.

Αν ψάξετε στο διαδίκτυο για Fibonacci, (το όνομα του Ιταλού μαθηματικού που τους περιέγραψε Λεονάρντο της Πίζας), θα εκπλαγείτε από τον πλούτο των ευρημάτων στην φύση, σχετικών με τους αριθμούς αυτούς.
Θα τους βρείτε στους στήμονες των λουλουδιών, στις έλικες των κουκουναριών, στις γεννήσεις των κουνελιών, (δείτε, από περιέργεια, αυτή την σελίδα εδώ).

Καθαρά μαθηματικές έννοιες επίσης υπάρχουν άφθονες, όπως ότι δύο διαδοχικοί αριθμοί Φιμπονάτσι έχουν λόγο που προσεγγίζει την χρυσή τομή (f(k-1)/f(k)=0.618 ή f(k+1)/f(k)=1.618), όσο μεγαλύτερη είναι η τάξη k.

Εδώ θέλουμε μόνο να γράψουμε το πρόγραμμα που θα διαβάζει το k (δεχόμαστε μόνο k>2) και θα γράφει το f(k).
Επειδή δεν γνωρίζουμε την τάξη k που θα μας δοθεί, και επειδή δεν χρειάζεται να αποθηκεύσουμε όλη την σειρά αλλά μπορούμε από δύο διαδοχικούς όρους να βρίσκουμε τον επόμενο, δεν πρέπει να χρησιμοποιήσουμε την δομή του Πίνακα για αποθήκευση (των ενδιάμεσων) αποτελεσμάτων. Αρκεί η χρήση τριών μεταβλητών για τους όρους. Θα βάλουμε στην μεταβλητή fa έναν όρο της σειράς, θα βάλουμε στην μεταβλητή fb τον επόμενο όρο, και στην fc θα βάλουμε το άθροισμα των δύο προηγουμένων.

Αρχικοποιούμε fa=0, fb=1.
Μας δίνουν την τάξη k του όρου που θα βρούμε. Ελέγχουμε να είναι k>2.

Ξεκινάμε μια επαναληπτική διεργασία.
Βρίσκουμε τον τρίτο όρο f(3), (ή όρο τρίτης τάξης) : fc=fa+fb=0+1=1, άρα f(3)=1.
Βάζουμε τώρα στην μεταβλητή fa αυτό που περιέχει η μεταβλητή fb, και μετά
βάζουμε στην μεταβλητή fb αυτό που περιέχει η μεταβλητή fc, (περιέχουν δηλαδή το fa=1, και το fb=1),
και είμαστε έτοιμοι να υπολογίσουμε τον τέταρτο όρο f(4), (ή όρο τέταρτης τάξης) : fc=fa+fb=1+1=2, άρα f(4)=2.

Συνεχίζοντας με παρόμοιο τρόπο βάζουμε στην fa το 1 (της fb), στην fb το 2 (της fc) για να υπολογίσουμε τον πέμπτο όρο f(5), (ή όρο πέμπτης τάξης) : fc=fa+fb=1+2=3, άρα f(5)=3.

Σταματούμε όταν έχουμε υπολογίσει τον όρο f(k), της k τάξης που μας δόθηκε αρχικά.

ΠΡΟΓΡΑΜΜΑ arfi
ΜΕΤΑΒΛΗΤΕΣ
__ΑΚΕΡΑΙΕΣ: fa, fb, fc, i, k
ΑΡΧΗ
fa <- 0
fb <- 1
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
__ΓΡΑΨΕ 'Δώσε ακέραιο μεγαλύτερο του 2'
__ΔΙΑΒΑΣΕ k
ΜΕΧΡΙΣ_ΟΤΟΥ k > 2
ΓΙΑ i ΑΠΟ 3 ΜΕΧΡΙ k
__fc <- fa + fb
__fa <- fb
__fb <- fc
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Αριθμός Φιμπονάτσι τάξης ', k, ' είναι ο ', fc
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

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

Τρίτη 24 Φεβρουαρίου 2009

Ένας φορητός για κάθε παιδί, OLPC

Παιδιά χρησιμοποιούν υπολογιστές XO. 
Έχουν γραφτεί πολλά για το έργο OLPC (One Laptop Per Child), που δίνει έναν ειδικό υπολογιστή δωρεάν σε κάθε μικρό μαθητή. Έχει ήδη εφαρμοστεί σε μερικές χώρες και το κόστος καλύπτεται από τις κυβερνήσεις. Το κόστος ενός υπολογιστή επιδιώχθηκε να είναι μικρό (μικρότερο από 200 δολάρια) και στην αρχή θεωρήθηκε ότι ήταν αδύνατο να κατασκευαστεί τόσο φθηνό μηχάνημα, αλλά όταν το μηχάνημα κατασκευάστηκε με ένα σωρό πλεονεκτήματα πρωτοποριακής οθόνης, δικού του λειτουργικού συστήματος, ευέλικτης διασύνδεσης, ενεργειακής αυτονομίας κλπ, το έργο δέχτηκε την επίθεση των μεγάλων της αγοράς. (Στην δική μας χώρα δεν μοίρασαν αυτόν τον ειδικό υπολογιστή αλλά έδωσαν χρηματικά κουπόνια για να αγοράσουν οι μαθητές ένα netbook από τα διάφορα της αγοράς. Ξαφνικά όλοι οι υπολογιστές κόστιζαν τόσο ώστε να μπορούν να αγοραστούν με το κουπόνι, αλλά δεν είχαν τίποτε ειδικό για παιδιά μέσα τους, λειτουργικό ή εφαρμογές μάθησης, οπότε τα μικρά βγήκαν στο διαδίκτυο με όλα τα δυσάρεστα αλλά όχι απρόσμενα επακόλουθα). Αν ψάξετε για OLPC στο διαδίκτυο, θα βρείτε πάμπολλες αναφορές.

Αντέχει καλά ακόμη. Το στηρίζουν πολλοί εθελοντές σε κάθε χώρα, που μεταφράζουν το λογισμικό στην δική τους γλώσσα, κάνουν επιδείξεις με νέες εφαρμογές και προτείνουν βελτιώσεις. (Αν με ρωτάτε, το στηρίζω ως ιδέα, αλλά βοήθησα λίγο στην μετάφραση, όχι όσο θα ήθελα, για οικογενειακούς λόγους υγείας). Παρακάτω αναδημοσιεύω ένα κείμενο που έστειλε ο Θεόδωρος Καρούνος (από τους υπευθύνους της Ελληνικής Ομάδας Υποστήριξης) σχετικά με τις πέντε αρχές του OLPC.

OLPC: Οι πέντε αρχές 

1. Ιδιοκτησία παιδιών  Το OLPC έχει δημιουργήσει το lap-top XO έτσι ώστε να είναι πολύ χαμηλού κόστους, γερό, ισχυρό, όμορφο και φιλικό. Έχει σχεδιαστεί ρητά για τα παιδιά των πρώτων τάξεων του Δημοτικού, το πρώτο στο είδος του. Η ιδιοκτησία του XO είναι βασικό δικαίωμα του παιδιού και συνδέεται με νέα καθήκοντα και ευθύνες, όπως η προστασία, η φροντίδα και το μοίρασμα αυτού του πολύτιμου εξοπλισμού.  Ένα lap-top μπορεί να μετατραπεί σε κινητό σχολείο: ένα φορητό περιβάλλον εκμάθησης και διδασκαλίας. Ένα συνδεδεμένο lap-top είναι περισσότερο από ένα εργαλείο. Είναι ένα νέο ανθρώπινο περιβάλλον ψηφιακού είδους. Ένα βασικό σημείο του OLPC είναι η ελεύθερη χρήση του lap-top στο σπίτι, όπου το παιδί (και η οικογένεια) θα αυξήσουν σημαντικά το χρόνο της πρακτικής εκπαίδευσης, η οποία είναι κανονικά διαθέσιμη στο τυποποιημένο εργαστήριο υπολογιστών στο σχολείο.  Φορώ το XO μου όπως το ζευγάρι παπούτσια μου.

2. Μικρές ηλικίες  Το XO έχει σχεδιαστεί για παιδιά ηλικίας 6 έως 12 ετών -καλύπτοντας τα έτη του Δημοτικού σχολείου- αλλά τίποτα δεν αποκλείει τη χρήση του νωρίτερα ή αργότερα στη ζωή του παιδιού. Τα παιδιά δεν χρειάζεται να ξέρουν να γράφουν ή να διαβάζουν προκειμένου να παίξουν με το XO και ξέρουμε ότι το παιχνίδι είναι η βάση της ανθρώπινης εκμάθησης. Επιπλέον, αυτές οι ψηφιακές δραστηριότητες θα βοηθήσουν στην απόκτηση δεξιοτήτων σύνταξης, γραφής και ανάγνωσης.  Κάθε χρόνο μια νέα ομάδα παιδιών θα ενσωματωθεί στο πρόγραμμα. Ανάλογα, η αξιολόγηση του προγράμματος OLPC θα πρέπει να είναι εγγενής σε κάθε ομάδα και κάθε μαθητής θα κρατήσει ένα μεμονωμένο χαρτοφυλάκιο με το ίχνος της πορείας εκμάθησής του στις διάφορες δραστηριότητές του στο σχολείο. Ειδικότερα, τα μικρά παιδιά με ειδικές ανάγκες εκμάθησης ή αισθητήριες μπορούν να χρησιμοποιήσουν τον υπολογιστή ως πρόσθετο για να διαβάζουν, να γράφουν, να υπολογίζουν και να επικοινωνούν.  Έχω καλά παπούτσια XO για έναν μεγάλο περίπατο.

3. Ενσωμάτωση  Η δέσμευση του OLPC αφορά τη στοιχειώδη εκπαίδευση στις αναπτυσσόμενες χώρες. Προκειμένου να επιτευχθεί αυτός ο στόχος πρέπει να φθάσουμε σε μία «ψηφιακή ενσωμάτωση» σε έναν δεδομένο πληθυσμό. Το βασικό σημείο είναι να επιλεχτεί η καλύτερη κλίμακα σε κάθε περίσταση. Μπορεί να είναι ολόκληρη χώρα, μια περιοχή, ένας δήμος ή ένα χωριό, όπου κάθε παιδί θα είναι κύριο ενός lap-top. Όπως με τον εμβολιασμό, η «ψηφιακή ενσωμάτωση» υπονοεί τη συνεχή επέμβαση στις διαδοχικές ομάδες στις κατάλληλες ηλικίες.  Ολόκληρη η κοινότητα θα γίνει υπεύθυνη του προγράμματος OLPC και τα παιδιά θα λάβουν την υποστήριξη πολλών οργανισμών, ατόμων και ομάδων αυτής της κοινότητας. Λόγω της συνδεσιμότητας, η οποία είναι έμφυτη στο OLPC, αυτές οι διαφορετικές κοινότητες θα μεγαλώσουν μαζί και θα επεκταθούν σε πολλές κατευθύνσεις, στο χρόνο και στο χώρο. Θα γίνουν στιβαρές και γερές, επειδή είναι ενσωματωμένες, χωρίς κενά ή ασυνέχειες.  Μια υγιής εκπαίδευση είναι ένας εμβολιασμός, φθάνει σε όλους και τους προστατεύει από την άγνοια και την αδιαλλαξία.

4. Σύνδεση  Το XO έχει σχεδιαστεί για να παρέχει το καλύτερα διαθέσιμο ασύρματο δίκτυο. Τα lap-top συνδέονται το ένα με το άλλο, ακόμα και όταν είναι κλειστά. Εάν ένα lap-top συνδέεται με το Διαδίκτυο, τα άλλα θα συνδεθούν επίσης σε αυτό. Τα παιδιά στη γειτονιά είναι έτσι μόνιμα συνδεδεμένα με συνομιλία, διαμοιρασμό πληροφοριών στο Διαδίκτυο, συλλογή τηλεδιασκέψεων, δημιουργία κοινής μουσικής, κοινή έκδοση κειμένων, ανάγνωση Διαδικτυακών βιβλίων και απολαμβάνουν τη χρήση των συνεργάσιμων Διαδικτυακών παιχνιδιών.  Η μπαταρία του lap-top μπορεί να λειτουργήσει για πολλές ώρες και μπορεί να φορτιστεί με επιπρόσθετους φορτιστές στο σχολείο ή με μηχανική και ηλιακή ενέργεια. Η μοναδική οθόνη του XO επιτρέπει τη χρήση του lap-top σε συνθήκες πλήρους ηλιοφάνειας, επιτρέποντας στο χρήστη για να απασχοληθεί και έξω από την τάξη ή το σπίτι, στις υπαίθριες περιοχές, καθώς επίσης και σε οποιαδήποτε άλλη δημόσια περιοχή.  Η συνδεσιμότητα θα βρίσκεται παντού, τόσο όσο και η επίσημη ή άτυπη εκμάθηση του περιβάλλοντος. Προτείνουμε ένα νέο είδος σχολείου, ένα «επεκτάσιμο σχολείο» που μεγαλώνει καλά και πέρα από τους τοίχους της τάξης. Και το τελευταίο αλλά όχι και ασήμαντο, αυτή η συνδεσιμότητα εξασφαλίζει έναν διάλογο μεταξύ των γενεών, των εθνών και των πολιτισμών. Κάθε γλώσσα θα χρησιμοποιηθεί στο δίκτυο OLPC.  Όταν περπατάμε μαζί είμαστε μαζί.

5. Ελεύθερο και ανοιχτού κώδικα  Το παιδί που έχει ένα XO δεν είναι μόνο παθητικός καταναλωτής της γνώσης, αλλά ενεργός συμμετέχων σε μια κοινότητα μάθησης. Καθώς τα παιδιά μεγαλώνουν και ακολουθούν τις νέες ιδέες, το λογισμικό, το περιεχόμενο, τους πόρους, και τα εργαλεία, πρέπει να είναι σε θέση να μεγαλώσουν μαζί τους. Η σφαιρική φύση του OLPC απαιτεί το μεγάλωμα αυτό να γίνεται τοπικά, σε μεγάλο ποσοστό από τα ίδια τα παιδιά. Κάθε παιδί με ένα XO μπορεί ενδυναμώσει την μάθηση κάθε άλλου παιδιού. Διδάσκουν ο ένας τον άλλον, μοιράζονται τις ιδέες και μέσω της κοινωνικής φύσης της συσκευής, υποστηρίζουν ο ένας την διανοητική ανάπτυξη του άλλου. Τα παιδιά είναι μαθητές και δάσκαλοι.  Δεν υπάρχει καμία εξωτερική εξάρτηση που να είναι σε θέση να μετατρέψει το λογισμικό στη γλώσσα των παιδιών, να επιδιορθώσει το λογισμικό για να απομακρύνει τα τρωτά σημεία του, και να μετατρέψει το λογισμικό ώστε να ανταποκριθεί στις ανάγκες τους. Ούτε υπάρχει οποιοσδήποτε περιορισμός όσον αφορά την αναδιανομή. Το OLPC δεν μπορεί να ξέρει και δεν πρέπει να ελέγξει πώς τα εργαλεία που δημιουργούμε θα επαναχρησιμοποιηθούν για άλλους σκοπούς στο μέλλον.  Ένας κόσμος λογισμικού υψηλού επιπέδου και περιεχομένου (και ανοιχτός και ιδιόκτητος) είναι απαραίτητος για να κάνει αυτό το πρόγραμμα να επιτύχει. Τα παιδιά πρέπει να είναι σε θέση να επιλέξουν από όλο αυτό. Στο πλαίσιο της μάθησης όπου η γνώση πρέπει να ιδιοποιηθεί προκειμένου να χρησιμοποιηθεί, το πιο σωστό για τη γνώση είναι να είναι ελεύθερη. Περαιτέρω, κάθε παιδί έχει κάτι με το οποίο μπορεί να συμβάλει. Χρειαζόμαστε ένα ελεύθερο και ανοικτό πλαίσιο που να υποστηρίζει και να ενθαρρύνει την πολύ βασική ανάγκη του ανθρώπου να εκφραστεί.  Δώστε μου ένα ελεύθερο και ανοικτό περιβάλλον και θα μάθω και θα διδάξω χαρά.

- The Five OLPC Principles  ... http://www.ellak.gr/index.php?option=com_openwiki&Itemid=103&id=olpc:five_principles
- Πριν εκτυπώσετε αυτό το μήνυμα, σκεφθείτε το περιβάλλον! Ένα χαρτί λιγότερο! - http://karounos.gr/blog/