Top Banner
1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ∆ΩΝ στην ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΤΕΥΘΥΝΣΗ: ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΑΣ & ΕΠΙΚΟΙΝΩΝΙΩΝ ΣΤΗΝ ΕΚΠΑΙ∆ΕΥΣΗ ΜΑΥΡΙ∆Η ΚΑΤΕΡΙΝΑ ΠΟΛΙΤΟΥ ΜΑΡΘΑ «Ανάπτυξη πολυμεσικών διαδραστικών εκπαιδευτικών εφαρμογών στην πλατφόρμα Squeak e-toys» Επιβλέπων: ΘΡΑΣΥΒΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ ΤΣΙΑΤΣΟΣ Λέκτορας ΘΕΣΣΑΛΟΝΙΚΗ, 2008
85

Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

Jul 08, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

1

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΡΟΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ∆ΩΝ στην ΠΛΗΡΟΦΟΡΙΚΗ

ΚΑΤΕΥΘΥΝΣΗ: ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΑΣ & ΕΠΙΚΟΙΝΩΝΙΩΝ ΣΤΗΝ ΕΚΠΑΙ∆ΕΥΣΗ

ΜΑΥΡΙ∆Η ΚΑΤΕΡΙΝΑ ΠΟΛΙΤΟΥ ΜΑΡΘΑ

«Ανάπτυξη πολυµεσικών διαδραστικών εκπαιδευτικών εφαρµογών στην πλατφόρµα Squeak e-toys»

Επιβλέπων:

ΘΡΑΣΥΒΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ ΤΣΙΑΤΣΟΣ Λέκτορας

ΘΕΣΣΑΛΟΝΙΚΗ, 2008

Page 2: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

2

ΠΕΡΙΕΧΟΜΕΝΑ

Περιεχόµενα ...................................................................................................................2 Πρόλογος .......................................................................................................................6 Περίληψη .......................................................................................................................7 1.Ελεύθερο και Ανοικτο λογισµικό.....................................................................................8

1.1 Γενικά...................................................................................................................8 1.2 Ελευθερο Λογισµικό ...............................................................................................8

1.3 Ανοικτό Λογισµικό............................................................................................13 1.4 Ελεύθερο Λογισµικό/ Λογισµικό Ανοιχτού κώδικα στην Ελλάδα ΕΛΛΑΚ .................13 1.5 Πλεονεκτήµατα του Ελεύθερου/Ανοικτού Λογισµικού ..........................................14 1.6 Για ποιο λόγο συµµετέχουν οι προγραµµατιστές σε προγράµµατα Ελεύθερου /Ανοικτού Λογισµικού ............................................................................................15 1.7 Το Ελεύθερο / Ανοικτό Λογισµικό στην Εκπαίδευση ............................................15

2.Olpc ..........................................................................................................................17 2.1 Τι είναι το OLPC και ποιος ο σκοπός του ............................................................17 2.2 Υλικό και λογισµικό του OLPC XO ......................................................................18 2.3 Το OLPC στην Ελλάδα ......................................................................................19 2.4 Εφαρµογές του OLPC.......................................................................................20

3.Smalltalk ...................................................................................................................21 3.1 Εισαγωγή ........................................................................................................21 3.2 Τι είναι, δοµή του συστήµατος Smalltalk............................................................21 3.3 Χαρακτηριστικά της Smalltalk ...........................................................................22 3.3.1 Το περιβάλλον της Smalltalk ..........................................................................22 3.3.2 Το συντακτικό της Smalltalk ..........................................................................26 3.3.2.1 Literals......................................................................................................26 3.3.2.2 Μεταβλητές ...............................................................................................27 3.3.2.3 Ψευδοµεταβλητές ......................................................................................27 3.3.2.4 Μηνύµατα .................................................................................................27 3.3.2.5 Κανόνες ανάλυσης (parsing rules)................................................................28 3.3.2.6 Αναθέσεις ..................................................................................................29 3.4 Παραδείγµατα σε Smalltalk ...............................................................................30

4.Squeak-etoys .............................................................................................................31 4.1 Τι είναι το Squeak............................................................................................31 4.2 Τα χαρακτηριστικά του Squeak .........................................................................31 4.3 Τι είναι το Squeak Etoys ...................................................................................33 4.4 Χαρακτηριστικά του Etoys ................................................................................33

5.Εφαρµογές στην ∆ευτεροΒαθµια Εκπαιδευση ................................................................36 5.1 Εισαγωγή ........................................................................................................36 5.2 Στοίβα ............................................................................................................36 5.2.1Περιγραφή αρχικής οθόνης .............................................................................37 5.2.2 Πώς λειτουργεί η εφαρµογή ...........................................................................37 5.2.2.1 Αρχικοποίηση.............................................................................................37 5.2.2.2 Ώθηση ......................................................................................................38 5.2.2.3 Απώθηση...................................................................................................39 5.2.3 Πώς αναπτύχθηκε η εφαρµογή.......................................................................39 5.2.3.1 Είδη αντικειµένων που χρησιµοποιήθηκαν.....................................................39 5.2.3.2 Button arxikopoihsh ...................................................................................39 5.2.3.3 Button wthhsh stoixeiou .............................................................................40 5.2.3.4.Button apwthhsh stoixeiou..........................................................................42 5.3 Ουρά ..............................................................................................................44 5.3.1 Περιγραφή αρχικής οθόνης ............................................................................44 5.3.2 Πώς λειτουργεί η εφαρµογή ...........................................................................45 5.3.2.1 Αρχικοποίηση.............................................................................................45 5.3.2.2 Εισαγωγή ..................................................................................................45

Page 3: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

3

5.3.2.3 Εξαγωγή στοιχείου .....................................................................................45 5.3.3 Πώς αναπτύχθηκε η εφαρµογή.......................................................................46 5.3.3.1 Είδη αντικειµένων που χρησιµοποιήθηκαν.....................................................46 5.3.3.2 Button arxikopoihsh ...................................................................................46 5.3.3.3 Button eisagwgh stoixeiou ..........................................................................48 5.4 Μεταγλώττιση και σύνδεση προγράµµατος.........................................................50 5.4.1 Περιγραφή αρχικής οθόνης ............................................................................50 5.4.2 Πώς λειτουργεί η εφαρµογή ...........................................................................51 5.4.2.1 Αρχικοποίηση.............................................................................................51 5.4.2.2 Έλεγχος ....................................................................................................51 5.4.2.3 Σωστή απάντηση........................................................................................51 5.4.3 Πώς αναπτύχθηκε η εφαρµογή.......................................................................51 5.4.3.1 Είδη αντικειµένων που χρησιµοποιήθηκαν.....................................................51 5.4.3.2 Button arxikopoihsh ...................................................................................52 5.4.3.3 Button elegxos...........................................................................................53 5.4.3.4 Button swsth apanthsh ...............................................................................54 5.5 Το πρόβληµα του ταχυδροµικού διανοµέα..........................................................54 5.5.1 Περιγραφή αρχικής οθόνης ............................................................................55 5.5.2 Πώς λειτουργεί η εφαρµογή ...........................................................................55 5.5.2.1 Αρχικοποίηση.............................................................................................55 5.5.2.2 Επίσκεψη...................................................................................................56 5.5.3 Πώς αναπτύχθηκε η εφαρµογή.......................................................................56 5.5.3.1 Είδη αντικειµένων που χρησιµοποιήθηκαν.....................................................56 5.5.3.2 Button arxikopoihsh ...................................................................................57 5.5.3.3 Button episkepsh .......................................................................................58 5.6 Ταξινόµηση Φυσσαλίδας...................................................................................61 5.6.1 Περιγραφή αρχικής οθόνης ............................................................................61 5.6.2 Πώς λειτουργεί η εφαρµογή ...........................................................................62 5.6.2.1 Εκκίνηση ...................................................................................................62 5.6.2.2 Αρχικοποίηση.............................................................................................62 5.6.2.3 Επόµενο Βήµα ...........................................................................................62 5.6.2.4 Σύγκριση ...................................................................................................63 5.6.2.5 Αντιµετάθεση.............................................................................................63 5.6.3 Πώς αναπτύχθηκε η εφαρµογή.......................................................................65 5.6.3 Πώς αναπτύχθηκε η εφαρµογή.......................................................................66 5.6.3.1 Είδη αντικειµένων που χρησιµοποιήθηκαν.....................................................66 5.6.3.2 Button ekkinhsh .........................................................................................66 5.6.3.4 Button arxikopoihsh ...................................................................................66 5.6.3.5 Button “epomeno vhma”, “sugrish”, “antimetathesh”.....................................67 5.6.3.6 Button “epomeno vhma”.............................................................................67 5.6.3.7 Button “sugrish”........................................................................................68 5.6.3.8 Button “antimetathesh” .............................................................................68 5.7 ∆ιάγραµµα ροής προγράµµατος(∆ΡΠ) ................................................................69 5.7.1 Περιγραφή αρχικής οθόνης ............................................................................69 5.7.2 Πώς λειτουργεί η εφαρµογή ...........................................................................70 5.7.3 Πώς αναπτύχθηκε η εφαρµογή.......................................................................71 5.7.3.1 Είδη αντικειµένων που χρησιµοποιήθηκαν.....................................................71 5.7.3.2 Button start ...............................................................................................72 5.7.3.3 Button back ...............................................................................................73 5.8 Πίνακας ..........................................................................................................73 5.8 Πίνακας ..........................................................................................................74 5.8.1 Περιγραφή αρχικής οθόνης ............................................................................74 5.8.2 Πώς λειτουργεί η εφαρµογή ...........................................................................75 5.8.3 Πώς αναπτύχθηκε η εφαρµογή.......................................................................77 5.8.3.1 Είδη αντικειµένων που χρησιµοποιήθηκαν.....................................................77 5.8.3.2 Button reset ..............................................................................................78 5.8.3.3.Button start ...............................................................................................79

Page 4: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

4

5.8.3.4 Button grammes και Button sthles ...............................................................80 6.Συµπεράσµατα ...........................................................................................................82 7.Αναφορές ..................................................................................................................83

7.1 Βιβλιογραφία ...................................................................................................83 7.2 ∆ικτυακές Πηγές ..............................................................................................84

Page 5: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

5

Page 6: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

6

ΠΡΟΛΟΓΟΣ

Θα θέλαµε να ευχαριστήσουµε τον λέκτορα του τµήµατος Θρασύβουλο Κ. Τσιάτσο για το χρόνο, τις γνώσεις και την καθοδήγηση που µας προσέφερε για την εκπόνηση αυτής της εργασίας . Επιπλέον θα θέλαµε να τον ευχαριστήσουµε για την επιλογή της πλατφόρµας Squeak e-toys, που είναι ένα περιβάλλον προγραµµατισµού πολύ διαφορετικό από αυτά που είχαµε συναντήσει ως προπτυχιακοί φοιτητές και µε αυτήν την επιλογή µας έδωσε τη δυνατότητα να διευρύνουµε τους ορίζοντές µας, να γίνουµε κοινωνοί των ιδεών του ελεύθερου λογισµικού καθώς και να αναπτύξουµε µεγαλύτερο ενδιαφέρον για την προσπάθεια του OLPC.

Page 7: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

7

ΠΕΡΙΛΗΨΗ

Η παρούσα εργασία ασχολείται µε την ανάπτυξη πολυµεσικών διαδραστικών εκπαιδευτικών εφαρµογών στην πλατφόρµα ανοικτού λογισµικού Squeak e-toys. Αρχικά παρουσιάζεται το Ελεύθερο Λογισµικό το οποίο σαν ιδέα ξεκίνησε το 1984 από τον Richard M. Stallman, όταν κοινοποίησε το πρόγραµµα GNU. Στη συνέχεια παρατίθενται οι κατηγορίες του Ελεύθερου Λογισµικού, ο σκοπός του ιδρύµατος Ελεύθερου Λογισµικού και ο ορισµός του Ελεύθερου Λογισµικού. Έπειτα αναφέρουµε τις κατηγορίες Ελεύθερου και µη Ελεύθερου Λογισµικού καθώς επίσης τον ρόλο και τις αρχές του Ευρωπαικού Ιδρύµατος Ελεύθερου Λογισµικού. Μετά από την εκτεταµένη αναφορά στο ελεύθερο λογισµικό γίνεται µια συνοπτική παρουσίαση του Ανοικτού Λογισµικού και του ορισµού του.

Υπάρχει ένας εθελοντικός οργανισµός µε σκοπό να καταγράψει και να βοηθήσει τις ενέργειες εξελληνισµού και υποστήριξης του ελεύθερου / ανοιχτού λογισµικού στην Ελλάδα, ο ΕΛΛΑΚ (Ελεύθερο Λογισµικό/Λογισµικό Ανοικτού Κώδικα). Οι κοινότητες Ελεύθερου Λογισµικού / Λογισµικού Ανοιχτού Κώδικα (Free / Libre Open Source Software - FLOSS) διερευνώνται από το Flosscom project σαν µαθησιακά περιβάλλοντα.

Επίσης παρουσιάζονται τα πλεονεκτήµατα του Ελεύθερου/Ανοικτού Λογισµικού και οι λόγοι για τους οποίους οι προγραµµατιστές συµµετέχουν σε προγράµµατα Ελεύθερου/Ανοικτού Λογισµικού. Τέλος επισηµαίνεται ο ρόλος του Ελεύθερου/Ανοικτού Λογισµικού στην εκπαίδευση.

Κατόπιν γίνεται παρουσίαση του µη κερδοσκοπικού οργανισµού OLPC (One Laptop Per Child), που έχει ως αντικείµενο τη δηµιουργία ενός φθηνού µαθητικού υπολογιστή, του OLPC XO. Αυτός ο υπολογιστής προορίζεται για τους µαθητές των αναπτυσσόµενων χωρών, µε σκοπό να χρησιµοποιηθεί ως εργαλείο µάθησης ενισχύοντας τη διαδικασία της µάθησης. Το λειτουργικό του OLPC XO είναι το Sugar, το οποίο βασίζεται στο Red Hat Linux. Στο µαθητικό υπολογιστή υποστηρίζεται ποικιλία εφαρµογών όπως π.χ. διαδικτυακές εφαρµογές, πολυµέσα, εκπαιδευτικές εφαρµογές κ.ά. Στην Ελλάδα γίνεται µια εθελοντική προσπάθεια για την ελληνοποίηση του OLPC και τη διανοµή του στα ελληνικά σχολεία.

Το περιβάλλον Squeak Etoys έχει εγκατασταθεί στο λειτουργικό σύστηµα του OLPC και είναι ιδιαίτερα εύχρηστο. Είναι βασισµένο σε Smalltalk, η οποία είναι µια αντικειµενοστρεφής γλώσσα µε τα δικά της ιδιαίτερα χαρακτηριστικά σε σχέση µε τις υπόλοιπες γλώσσες προγραµµατισµού. Το Etoys είναι ένα αντικειµενοστρεφές εκπαιδευτικό περιβάλλον όπου ο χρήστης προγραµµατίζει τα αντικείµενα µε οπτικό προγραµµατισµό ή µε κώδικα.

Στο πλαίσιο αυτής της εργασίας οι εκπαιδευτικές εφαρµογές που αναπτύχθηκαν στην πλατφόρµα Squeak Etoys για το OLPC είναι οι εξής: στοίβα, ουρά, µεταγλώττιση και σύνδεση προγράµµατος, πρόβληµα του ταχυδρόµου, αλγόριθµος φυσσαλίδας, διάγραµµα ροής προγράµµατος, πίνακας.

Page 8: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

8

1.ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ ΛΟΓΙΣΜΙΚΟ

1.1 Γενικά Το Ελεύθερο Λογισµικό, σύµφωνα µε την επίσηµη σελίδα του FSF (Free Software

Foundation) http://www.fsf.org/, είναι το λογισµικό που δίνει στο χρήστη τη δυνατότητα να το χρησιµοποιήσει, να το µελετήσει και να το τροποποιήσει. Το χαρακτηρίζουµε ως ελεύθερο λογισµικό διότι ο χρήστης είναι «ελεύθερος». Η επιλογή των εφαρµογών Ελεύθερου Λογισµικού όµως στην πραγµατικότητα είναι µια επιλογή µε πολιτικές και ηθικές προεκτάσεις, καθώς πρόκειται για προάσπιση του δικαιώµατος στη µάθηση και στην ελεύθερη διακίνηση της γνώσης.

Ο όρος «Λογισµικό Ανοικτού Κώδικα» χρησιµοποιείται από µερικούς ανθρώπους ώστε να αναφερθούν λίγο πολύ στην ίδια κατηγορία µε το Ελεύθερο Λογισµικό. Παρόλα αυτά, οι δυό κατηγορίες διαφέρουν: όσοι στηρίζουν το «Λογισµικό ανοικτού κώδικα» δέχονται κάποιες άδειες οι οποίες θεωρούνται πολύ περιοριστικές από τους οπαδούς του Ελεύθερου Λογισµικού και υπάρχουν άδειες του Ελεύθερου Λογισµικού τις οποίες δεν έχουν δεχτεί. Παρόλα αυτά, οι διαφορές είναι µικρές, σχεδόν όλο το Ελεύθερο λογισµικό είναι ανοιχτού κώδικα και σχεδόν όλο το λογισµικό ανοιχτού κώδικα είναι ελεύθερο.

1.2 Ελευθερο Λογισµικό Το Ελεύθερο Λογισµικό έχει οδηγήσει στη δηµιουργία µιας κοινωνίας η οποία

µαθαίνει µε ενεργό τρόπο. Ταυτόχρονα η διακίνηση της γνώσης στα µέλη της γίνεται µε τέτοιο τρόπο ώστε η γνώση να αποτελεί ενεργό συστατικό της διαδικασίας της µάθησης το οποίο τα µέλη επαναχρησιµοποιούν, επεκτείνουν και βελτιώνουν χωρίς κάποιος να τους το επιβάλει.

Βέβαια, πολλοί χρήστες επιλέγουν εφαρµογές Ιδιόκτητου Λογισµικού και αυτό έχει ως επακόλουθο να µην µπορούν να επωφεληθούν των προνοµίων του Ελεύθερου Λογισµικού. Στις εφαρµογές αυτές δεν είναι δυνατό ο χρήστης να καταλάβει πώς λειτουργεί η εφαρµογή και επιπλέον όχι µόνο δεν επιτρέπεται η αντιγραφή και η αναδιανοµή των εφαρµογών αλλά προστατεύεται από τη νοµοθεσία και διώκεται ποινικώς. Ενδεχοµένως µέσω των εφαρµογών αυτών οι εταιρείες που τις παράγουν, να τις χρησιµοποιούν για να καταγράψουν τις συνήθειες των χρηστών τους. Καθώς όµως τείνουµε να χρησιµοποιούµε τον υπολογιστή όλο και περισσότερο στην προσωπική αλλά και επαγγελµατική µας ζωή, το λογισµικό αυτό πολύ πιθανό να αποτελέσει κίνδυνο στην διασφάλιση µιας ελεύθερης κοινωνίας η οποία θα σέβεται τα ευαίσθητα προσωπικά δεδοµένα των µελών της.

Η ιδέα για το Ελεύθερο Λογισµικό ξεκίνησε το 1984 από τον Richard M. Stallman, όταν κοινοποίησε το πρόγραµµα GNU, που σηµαίνει «GNU δεν είναι Unix», σκοπός αυτής της εφαρµογής ήταν να δηµιουργήσει ένα λειτουργικό σύστηµα που θα µπορούσε να αντικαταστήσει αυτό του Unix, ένα λειτουργικό σύστηµα που θα σεβόταν τα δικαιώµατα των δηµιουργών του. Έτσι το 1985 ο Richard M. Stallman ξεκίνησε το Ίδρυµα Ελεύθερου Λογισµικού, ένα ίδρυµα µη κυβερνητικό µε εκπαιδευτικό και υποστηρικτικό σκοπό εξ’ ονόµατος των χρηστών υπολογιστή ανά τον κόσµο.

Αυτή τη στιγµή υπάρχουν πολλές εκδόσεις του λειτουργικού συστήµατος GNU οι οποίες χρησιµοποιούν τον πυρήνα Linux. Εφαρµογές Ελεύθερου Λογισµικού είναι διαθέσιµες για σχεδόν κάθε είδους εργασία ξεκινώντας από ένα ολοκληρωµένο λειτουργικό σύστηµα όπως αυτό του GNU και συνεχίζοντας µε πάνω από 5.000 εφαρµογές και εργαλεία τα οποία καταγράφονται στη λίστα εφαρµογών Ελεύθερου Λογισµικού του Ιδρύµατος Ελεύθερου Λογισµικού «FSF/UNESCO». Εκατοµύρια άνθρωποι σε όλο τον κόσµο,µέχρι και κυβερνήσεις κρατών, χρησιµοποιούν πλέον εφαρµογές ελεύθερου λογισµικού στους υπολογιστές τους.

Υπάρχει µια πληθώρα κατηγοριών στις οποίες υφίσταται το Ελεύθερο Λογισµικό. Οι κατηγορίες αυτές είναι ο ήχος, η επιχείρηση και η πραγωγικότητα, οι Βάσεις ∆εδοµένων, η εκπαίδευση, οι εφαρµογές ηλεκτρονικού ταχυδροµείου, τα παιχνίδια, τα γραφικά, ο ελεύθερος χρόνο, οι διεπαφές, οι εφαρµογές διαδικτύου, η επικοινωνία «ζωντανά», ο εντοπισµός “Localization” . Ακόµα η έννοια του Ελεύθερου Λογισµικού επεκτείνεται σε τοµείς όπως τα

Page 9: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

9

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

O ορισµός του Ελεύθερου έχει συνταχθεί από το Ίδρυµα Ελεύθερου Λογισµικού και καταδεικνύει τι πρέπει να ισχύει σε µια εφαρµογή λογισµικού έτσι ώστε αυτή να µπορεί να χαρακτηριστεί ως εφαρµογή Ελεύθερου Λογισµικού.

Σύµφωνα µε τον ορισµό προκειµένου ένα πρόγραµµα λογισµικού να χαρακτηρισθεί ως Ελεύθερο Λογισµικό πρέπει να ισχύουν ορισµένες συνθήκες.

Το Ελεύθερο Λογισµικό είναι θέµα «Ελευθερίας» του χρήστη και όχι κόστους . Έχει να κάνει µε την ελευθερία του χρήστη να τρέξει, να αντιγράψει, να διανέµει, να µελετήσει, να αλλάξει και να βελτιώσει το λογισµικό. Πιο συγκεκριµένα, αναφέρεται σε τεσσάρων ειδών ελευθερίες, όσον αφορά τους χρήστες του λογισµικού. «Ελευθερία 0» Η ελευθερία του να εκτελέσει το πρόγραµµα, για οποιοδήποτε σκοπό. «Ελευθερία 1» Η ελευθερία του να µελετήσει πως λειτουργεί το πρόγραµµα και να το προσαρµόσει στις ανάγκες του. Η πρόσβαση στον πηγαίο κώδικα είναι προυπόθεση για να εκτελεστεί η παραπάνω ενέργεια. «Ελευθερία 2» Η ελευθερία στην αναδιανοµή αντιγράφων έτσι ώστε να µπορεί να βοηθήσει τους άλλους. «Ελευθερία 3» Η ελευθερία να βελτιώσει το πρόγραµµα και να κοινοποιήσει τις βελτιώσεις στο ευρύ κοινό, έτσι ώστε να επωφεληθεί ολόκληρη η κοινότητα από αυτές.Η πρόσβαση στον πηγαίο κώδικα είναι προυπόθεση για να εκτελεστεί η παραπάνω ενέργεια.

Ένα πρόγραµµα θεωρείται Ελεύθερο Λογισµικό αν οι χρήστες έχουν όλα τα αναφερόµενα είδη Ελευθερίας. Για αυτό το λόγο πρέπει οι χρήστες Ελεύθερου Λογισµικού να είναι ελεύθεροι να αναδιανέµουν αντίγραφα, είτε µε είτε χωρίς τροποποιήσεις, είτε δωρεάν είτε χρεώνοντας κάποιο ποσό για την αναδιανοµή, σε οποιονδήποτε οπουδήποτε. Το να είσαι ελεύθερος να κάνεις αυτά τα πράγµατα σηµαίνει (εκτός των άλλων) ότι δε χρειάζεται να ζητήσεις εξουσιοδότηση ή να πληρώσεις για την απόκτησή της.

Επιπλέον θα πρέπει o χρηστής να είναι ελεύθερος να κάνει τροποποιήσεις και να τις χρησιµοποιήσει για ιδιωτική χρήση στη δική του δουλειά ή για διασκέδαση, χωρίς καν να χρειαστεί να αναφέρει ότι υπάρχουν οι τροποποιήσεις που έκανε. Αν δηµοσιεύσει τις αλλαγές του, δεν είναι υποχρεωµένος να ενηµερώσει κάποιον συγκεκριµένα, ή να τις δηµοσιεύεσει µε κάποιο συγκεκριµένο τρόπο.

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

Η ελεύθερη αναδιανοµή αντιγράφων της εφαρµογής πρέπει να περιλαµβάνει τόσο δυαδικές όσο και εκτελέσιµες εκδόσεις της εφαρµογής, όπως επίσης τον πηγαίο κώδικα, τόσο για τροποποιηµένες όσο και για µη τροποποιηµένες εφαρµογές. (Η διανοµή του προγράµµατος σε εκτελέσιµη µορφή είναι απαραίτητη για εγκατεστηµένα λειτουργικά συστήµατα ελεύθερου λογισµικού). ∆εν υπάρχει πρόβληµα αν ένα πρόγραµµα δεν µπορεί να παραχθεί σε δυαδική ή σε εκτελέσιµη µορφή ( καθώς δεν υποστηρίζουν όλες οι γλώσσες προγραµµατισµού αυτά τα χαρακτηριστικά), αλλά σε περίπτωση που ένας χρήστης βρει ένα τρόπο να παράγει αυτές τις µορφές είναι ελεύθερος να τις αναδιανέµει.

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

Για να έχουν ισχύ όλες αυτές οι «Ελευθερίες» πρέπει να είναι αµετάκλητες, όταν όλα γίνονται σωστά. Σε αντίθετη περίπτωση, όταν δηλαδή χωρίς κάποιο προφανή λόγο ο προγραµµατιστής της εφαρµογής ανακαλέσει την άδεια ελεύθερης χρήσης του, δεν µιλάµε πλεόν για ελεύθερο λογισµικό.

Υπάρχουν όµως κάποιοι κανόνες όσον αφορά τον τρόπο µε τον οποίο γίνεται η διανοµή του ελεύθερου λογισµικού που θα µπορούσαν να έχουν λόγο ύπαρξης µε την προυπόθεση βέβαια ότι δεν έρχονται σε αντίθεση µε τις τέσσερις βασικές «Ελευθερίες» που περιγράψαµε πιο πάνω. Για παράδειγµα, το «copyleft» που είναι η άδεια αντιγραφής, σύµφωνα µε την οποία δεν µπορεί κάποιος κατά την αναδιανοµή εφαρµογών Ελεύθερου

Page 10: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

10

Λογισµικού να επιβάλει περιορισµούς που καταστρατηγούν τις τέσσερις βασικές «Ελευθερίες» σε άλλους χρήστες. Αυτός ο κανόνας δεν έρχεται σε αντίθεση µε τις βασικές «Ελευθερίες» αλλά τις προασπίζεται.

Μπορεί κάποιος να πληρώσει για να αποκτήσει κάποια αντίγραφα Ελεύθερου Λογισµικού ή να το αποκτήσει εντελώς δωρεάν. Όµως ανεξάρτητα µε τον τρόπο που απέκτησε κάποιος το Ελεύθερο λογισµικό, έχει πάντα το δικαίωµα να αντιγράψει και να αλλάξει το λογισµικό, ακόµα και να πουλήσει τα αντίγραφα.

«Ελεύθερο λογισµικό» δε σηµαίνει «µη εµπορικό». Το Ελεύθερο λογισµικό πρέπει να είναι διαθέσιµο για χρήση, ανάπτυξη εφαρµογών λογισµικού και διανοµή µε εµπορικό σκοπό. Η ανάπτυξη εφαρµογών Ελεύθερου λογισµικού για εµπορικό σκοπό δεν είναι κάτι το καινούργιο στις ηµέρες µας και µάλιστα τέτοιου είδους λογισµικό είναι πολύ σηµαντικό να υπάρχει.

Ακόµη είναι επιτρεπτοί κανόνες για τη διαδικασία πακεταρίσµατος µιας νέας έκδοσης µε αλλαγές, αν δεν έρχονται σε σύγκρουση µε το δικαίωµα για ελεύθερη διανοµή νέων εκδόσεων µε αλλαγές. Επιπλέον κανόνες του τύπου «αν το πρόγραµµα λογισµικού είναι διαθέσιµο µε τον τάδε τρόπο, θα έπρεπε να είναι διαθέσιµο και µε το δείνα τρόπο» θα µπορούσαν να υπάρξουν, εκπληρώνοντας την ίδια προυπόθεση. (Να σηµειωθεί ότι ακόµη και ένας κανόνας αυτής της µορφής σου δίνει το δικαίωµα να επιλέξεις αν θα δηµοσιοποιήσεις το πρόγραµµα λογισµικού ή όχι). Επίσης είναι αποδεκτή από την άδεια του Ελεύθερου Λογισµικού η απαίτηση, ότι σε περίπτωση που κάποιος έχει διανέµει µια νέα έκδοση και ο προγραµµατιστής της προηγούµενης έκδοσης ζητήσει ένα αντίγραφο της νέας έκδοσης, θα έπρεπε να του αποσταλεί ένα αντίγραφο ή θα έπρεπε να του γνωστοποιηθούν οι αλλαγές που έλαβαν χώρα.

Στο πρόγραµµα GNU, χρησιµοποιείται η άδεια αντιγραφής “copyleft” για να προασπίσει τα βασικά δικαιώµατα και νοµικά για όλους. Όµως υπάρχει και Ελεύθερο Λογισµικό χωρίς την άδεια αντιγραφής “copyleft”, αλλά είναι καλύτερο να γίνεται εφαρµογή της άδειας αντιγραφής “copyleft” για πολλούς σηµαντικούς λόγους. Υπάρχουν λίστες λογισµικού οι οποίες κατηγοριοποιούν το λογισµικό σύµφωνα µε το πόσο «Ελεύθερο» είναι, ή κατά πόσο έχει άδεια αντιγραφής “copyleft” και σύµφωνα µε άλλα κριτήρια. Μια τέτοια λίστα, Εικόνα 1, είναι αυτή η οποία περιλαµβάνει τα εξής: Ελεύθερο Λογισµικό, Λογισµικό Ανοικτού Κώδικα, Λογισµικό κοινής ιδιοκτησίας / κτήµατος (Public Domain Software), Κατοχυρωµένο λογισµικό (copylefted software), Μη κατοχυρωµένο Ελεύθερο Λογισµικό (Non copylefted free software), Λογισµικό επικαλυµµένο από τη Γενική ∆ηµόσια Άδεια Χρήσης GNU (GPL-covered software), Μη Ελεύθερο λογισµικό (Non-free software), Ηµι Ελεύθερο λογισµικό (Semi-free software), Ιδιόκτητο λογισµικό (Proprietary software), ∆ωρεάν λογισµικό (Freeware software), Μοιρασµένο λογισµικό (Shareware software), Ιδιωτικό λογισµικό (Private software), Εµπορικό λογισµικό (Commercial software).

Page 11: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

11

Εικόνα 1: Οι κατηγορίες του Ελεύθερου Λογισµικού

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

Οι περισσότερες άδειες Ελεύθερου Λογισµικού βασίζονται στα πνευµατικά δικαιώµατα “copyright”, και υπάρχουν περιορισµοί για το είδος των απαιτήσεων που µπορούν να επιβληθούν έτσι. Αν µια άδεια τύπου “copyright” σέβεται τα δικαιώµατα που προσφέρει το Ελεύθερο Λογισµικό, τα προβλήµατα που µπορεί να προκύψουν είναι ως ένα βαθµό προβλέψιµα . Όµως, κάποιες άδειες για Ελεύθερο Λογισµικό βασίζονται σε συµβόλαια, και τα συµβόλαια είναι πιθανό να επιβάλλουν πολλά είδη πιθανών περιορισµών. Αυτό σηµαίνει ότι τέτοιου είδους άδειες µπορούν να επιβάλουν περιορισµούς µε πολλούς τρόπους καταλύοντας µε αυτό τον τρόπο τα δικαιώµατα που προσφέρει το Ελεύθερο Λογισµικό, καθώς κάθε τέτοια άδεια είναι απαράδεκτα περιοριστική και ανελεύθερη.

Όταν µιλάµε για Ελεύθερο Λογισµικό, είναι καλύτερο να αποφεύγουµε να χρησιµοποιούµε όρους όπως «δωρεάν» και άλλους παρόµοιους χαρακτηρισµούς, γιατί αφήνεται να εννοηθεί ότι το θέµα είναι το κόστος και όχι τα δικαιώµατα που προσφέρει στους χρήστες. Υπάρχουν και κάποιοι άλλοι χαρακτηρισµοί όπως «πειρατικό» λογισµικό και άλλοι παρόµοιοι τους οποίους καλό θα ήταν επίσης να αποφεύγουν να χρησιµοποιούν οι χρήστες. Τέλος, κριτήρια όπως αυτά που χρησιµοποιήθηκαν για τον ορισµό του Ελεύθερου Λογισµικού απαιτούν προσεκτική σκέψη για την ερµηνεία τους. Για να αποφασιστεί κατά πόσο µια άδεια κατατάσσεται ως άδεια Ελεύθερου Λογισµικού, κρίνεται µε βάση το κατά πόσο πληρεί το πνεύµα και την πληρότητα των κριτηρίων .

Το Ευρωπαϊκό Ίδρυµα Ελεύθερου Λογισµικού (FSFE) είναι µία µη-κερδοσκοπική και (σε ορισµένες χώρες) µία κοινωφελής µη-κυβερνητική οργάνωση αφιερωµένη στο Ελεύθερο Λογισµικό. Η πρόσβαση στο λογισµικό καθορίζει ποιος µπορεί να συµµετέχει σε µία ψηφιακή κοινωνία. Συνεπώς, η ελευθερία χρήσης, αντιγραφής, τροποποίησης και επανέκδοσης λογισµικού -- όπως περιγράφεται στον Ορισµό του Ελεύθερου Λογισµικού -- επιτρέπει την ισότιµη συµµετοχή στην εποχή της πληροφορίας. Το όραµα του Ελεύθερου Λογισµικού είναι µία σταθερή βάση για την ελευθερία σε έναν ψηφιακό κόσµο και σε οικονοµικό και σε κοινωνικο-ηθικό πλαίσιο. Το Ελεύθερο Λογισµικό είναι ένας σηµαντικός ακρογωνιαίος λίθος για ελευθερία, δηµοκρατία, ανθρώπινα δικαιώµατα και ανάπτυξη σε µία ψηφιακή κοινωνία.

Page 12: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

12

Το FSFE είναι αφιερωµένο στην υποστήριξη όλων των θεµάτων του Ελεύθερου Λογισµικού. Κεντρικά ζητήµατα για το FSFE είναι να ευαισθητοποιεί για τα θέµατα αυτά, να υπερασπίζει το Ελεύθερο Λογισµικό πολιτικά και νοµικά, και να αποδίδει στους ανθρώπους Ελευθερία υποστηρίζοντας την ανάπτυξη του Ελεύθερου Λογισµικού. Για αυτούς τους λόγους, το FSFE ιδρύθηκε το 2001 ως ο Ευρωπαϊκός οµοθυγατρικός οργανισµός του Ιδρύµατος Ελεύθερου Λογισµικού που έχει έδρα τη Βοστώνη, MA, USA. Και οι δύο είναι οικονοµικά, νοµικά και προσωπικά ανεξάρτητοι µεταξύ τους ως κόµβοι του διεθνούς δικτύου του Ιδρύµατος Ελεύθερου Λογισµικού.

Το δεύτερο όραµα που ενσωµατώνει το FSFE είναι αυτό µιας ενωµένης Ευρώπης στο πνεύµα της συνεργασίας διασχίζοντας τα πολιτιστικά σύνορα. Βρισκόµαστε σε ένα πεδίο το οποίο καθορίζεται κατά κύριο λόγο από µεγάλες πολυεθνικές εταιρίες. Αυτές έχουν την τάση να δραστηριοποιούνται µε ένα υψηλό βαθµό ολοκλήρωσης, συντονισµού και συνέπειας µεταξύ κρατών σε Ευρωπαϊκή και διεθνή κλίµακα, που τις επιτρέπει να επεκτείνουν τα συµφέροντά τους µέσα από τακτικές ''διαίρει και βασίλευε''. Ως ένας οργανισµός βασισµένος στον Ευρωπαϊκό πολιτισµό και ιστορία, ακολουθεί θεµελιώδεις αρχές όπως η δηµοκρατία, η πολυµέρεια, η συνεργασία, ο διάλογος και η διαφάνεια. Εν ολίγοις, λειτουργεί µε µία δικτυακή, βασισµένη σε οµάδες δοµή η οποία είναι ανοικτή για οποιονδήποτε µοιράζεται την κοινή αντίληψη του FSFE και προθυµοποιείται να συµµετάσχει.

Το Ευρωπαϊκό Ίδρυµα Ελεύθερου Λογισµικού προωθεί ενεργά τη χρήση του Ελεύθερου Λογισµικού σε σχολεία και πανεπιστήµια. Το Ελεύθερο Λογισµικό είναι παιδαγωγικά και τεχνολογικά ανώτερο των ιδιοκτησιακών συστηµάτων. Αλλά το πιο σηµαντικό, το βασικό του πνεύµα ανάµιξης της ελευθερίας και συνεργασίας είναι το ίδιο πνεύµα που διέπει την εκπαίδευση σε ένα δηµοκρατικό περιβάλλον.

Σύµφωνα µε τον Jean Peyratout, ο FSFE υιοθετεί την άποψη ότι είτε τους αρέσει είτε όχι, οι δάσκαλοι ωθούν τους γονείς των µαθητών να αγοράζουν ιδιοκτησιακό λογισµικό αν αυτοί το χρησιµοποιούν στο σχολείο. Με αυτή την πρακτική, συµβάλλουν σε µία επιλογή µε βάση το χρήµα αν και το Ελεύθερο Λογισµικό που χρησιµοποιείται στο σχολείο µπορεί να µεταφερθεί στο σπίτι! Το Ελεύθερο Λογισµικό είναι δηµοκρατικό λογισµικό: ''Liberté'': ελευθερία να χρησιµοποιείται, να αντιγράφεται, να µετατρέπεται, να διανέµεται, µε ελεύθερη πρόσβαση στον πηγαίο κώδικα. ''Égalité'': ισοτιµία µεταξύ των χρηστών, ανεξαρτήτως των σχολικών ή οικογενειακών µέσων: µε το Ελεύθερο Λογισµικό, ένα µικρό µε χαµηλή χρηµατοδότηση σχολείο έχει την ίδια επιλογή µε ένα πιο εύπορο ή αναγνωρισµένου κύρους. ''Fraternité'': αδελφότητα, συνεργασία και αµοιβαία βοήθεια µεταξύ προγραµµατιστών και χρηστών, µεταξύ σχολείου και οικογένειας.

Όπου απαιτείται, είναι απαραίτητο να δίνονται στους σπουδαστές πραγµατικές προγραµµατιστικές δεξιότητες, όχι µόνο ''οδηγίες χρήσης'' του ιδιοκτησιακού λογισµικού. Συνεπώς, πρέπει να έχουν χωρίς περιορισµούς πρόσβαση στον πηγαίο κώδικα, να τον µετατρέπουν ή να τον προσαρµόζουν στις δικές τους ανάγκες, και έτσι να βελτιώνουν τις εφαρµογές που χρησιµοποιούν ή αναπτύσσουν.

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

Το σχολείο πρέπει να µείνει µακριά από τον καταναλωτισµό. Οι σχολικές ανάγκες και τα µέσα που απαιτούν, πρέπει να µείνουν σε απόσταση από τη µόδα ή τις διαφηµίσεις της βιοµηχανίας λογισµικού. Το Ελεύθερο Λογισµικό παρέχει αυξηµένη διάρκεια ζωής στο υλικό καθώς επιτρέπει µακροβιότερη χρήση του παλιού (και φτηνού) εξοπλισµού, και πιο συγκεκριµένα, ως τερµατικά ή υπολογιστές ''πελάτες''. Το Ελεύθερο Λογισµικό επιτρέπει αυξηµένη διάρκεια ζωής στο λογισµικό καθώς δεν υπάρχει ανάγκη να αγοραστούν οι πιο πρόσφατες εκδόσεις λογισµικού για να αποκτηθεί η επακόλουθη βελτίωση. Οι αναβαθµίσεις µπορούν να γίνουν αµέσως (έτσι δεν υπάρχει εξάρτηση από την καλή θέληση του εκδότη) και να µοιραστούν µε άλλους χρήστες από όλο τον κόσµο. Η γνώση είναι παγκόσµια, το Ελεύθερο Λογισµικό επίσης.

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

Page 13: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

13

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

1.3 Ανοικτό Λογισµικό Ανοικτό λογισµικό δε σηµαίνει µόνο πρόσβαση στον πηγαίο κώδικα. Οι όροι διανοµής του

Ανοικτού Λογισµικού πρέπει να υπακούουν στα ακόλουθα κριτήρια. 1. Ελεύθερη αναδιανοµή 2. Πηγαίος κώδικας 3. Παραγόµενες εργασίες 4. Ακεραιότητα του συγγραφέα του Πηγαίου Κώδικα 5. Όχι διακρίσεις σε ανθρώπους ή σε οµάδες ανθρώπων 6. Όχι διακρίσεις όσον αφορά τοµείς µεγάλης ζήτησης 7. ∆ιανοµή της άδειας 8. Η άδεια δεν πρέπει να είναι ειδική για ένα προϊόν 9. Η άδεια δεν πρέπει να περιορίζει εφαρµογές άλλου λογισµικού 10. Η άδεια πρέπει να είναι τεχνολογικά ουδέτερη

1.4 Ελεύθερο Λογισµικό/ Λογισµικό Ανοιχτού κώδικα στην Ελλάδα ΕΛΛΑΚ

Το http://www.ellak.gr/ είναι µια εθελοντική προσπάθεια µε σκοπό να καταγράψει και να βοηθήσει τις ενέργειες εξελληνισµού και υποστήριξης του ελεύθερου / ανοιχτού λογισµικού στην Ελλάδα. Ο σχεδιασµός και η φιλοσοφία του δικτυακού τόπου είναι τέτοια έτσι ώστε να επιτρέπει και να προτρέπει την συνδροµή όλων ανεξαιρέτως των µελών του για την επικαιροποίηση και ενηµέρωσή του. Πιο αναλυτικά ο δικτυακός αυτός τόπος προσφέρει τα εξής: Wiki (Γνωσιακή Βάση) µε ελεύθερη πρόσβαση για προσθήκες / τροποποιήσεις, Forum, Νέα, Σύνδεσµοι, Αρχείο, Επικοινωνία, Αναζήτηση, News Feeds, Συχνές Ερωτήσεις, Ιστολόγια, Καταχώρηση άρθρου, Γλωσσάρι, Open Source Λίστα, Κατάλογος EΛ /ΛΑΚ, Κατάλογος Εταιρειών.

Ο δικτυακός τόπος http://www.open-source.gr/ είναι µία πρωτοβουλία του Ε∆ΕΤ που ως σκοπό έχει την προώθηση και επέκταση της χρήσης του Ελεύθερου Λογισµικού/Λογισµικού ανοικτού κώδικα στην Ελλάδα. Οι βασικότεροι στόχοι του ΕΛ/ΛΑΚ είναι:

• Η παραγωγή καλύτερης ποιότητας λογισµικού . • Η συλλογική βελτίωση της τεχνογνωσίας µε τη διάθεση του πηγαίου κώδικα προς

µελέτη. • Η ανεξαρτησία του χρήστη από τις εταιρείες παραγωγής λογισµικού, καθώς η κατοχή

του πηγαίου κώδικα διευκολύνει τη µετάβαση από µία µορφή διατήρησης δεδοµένων σε µία άλλη.

Για την επίτευξη του σκοπού αυτού προβάλλονται πρωτοβουλίες σχετικές µε το ΕΛ/ΛΑΚ και παράλληλα αναλαµβάνονται καινούριες και γίνεται προσπάθεια για την ενηµέρωση όσων ενδιαφέρονται, µε νέα από την Ελλάδα και τον κόσµο, εκδηλώσεις και πληροφορίες σχετικά µε το ΕΛ/ΛΑΚ.

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

Page 14: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

14

Το ∆ιαδίκτυο αποτελεί τη βασική πρόσβαση στο διαθέσιµο Ελεύθερο Λογισµικό / Λογισµικό Ανοικτού Κώδικα. Η σχέση τους, εξ αρχής, υπήρξε στενή και αµφίδροµη. Η εξάπλωση του ΕΛ/ΛΑΚ έχει στηριχθεί στην ευρεία χρήση του ∆ιαδικτύου και η διαδικασία ανάπτυξης του ∆ιαδικτύου βασίζεται, κατά κύριο λόγο, στο ΕΛ/ΛΑΚ. Το Λογισµικό Ανοιχτού Κώδικα, µε συνεχείς βελτιώσεις και αυξηµένη πλέον φιλικότητα προς το χρήστη, κερδίζει διαρκώς νέους φίλους παγκοσµίως. Στην εκπαίδευση, στη δηµόσια διοίκηση και στις επιχειρήσεις, ενδιαφέρονται, ενηµερώνονται και αποκτούν ένα ιδιαίτερα ελκυστικό εργαλείο, αξιόπιστο, σταθερό στη λειτουργία και απαλλαγµένο από σηµαντικά κόστη, απόκτησης και αναβαθµίσεων.

1.5 Πλεονεκτήµατα του Ελεύθερου/Ανοικτού Λογισµικού Σύµφωνα µε τον David A.Wheeler, στη δηµοσίευσή του “Why Open Source Software

/ Free Software ( OSS/FS) ? Look at the Numbers!”, οι εφαρµογές Ελεύθερου / Ανοικτού Λογισµικού θα µπορούσαν σε πολλές περιπτώσεις να επιλεγούν ως µια εξίσου καλή ή ακόµη και καλύτερη λύση σε σχέση µε τις άλλες εφαρµογές. Αυτή η άποψη δεν βασίζεται σε προσωπικά κριτήρια του συγγραφέα αλλά σε ποσοτικά κριτήρια και έρευνες που έχουν γίνει και ο συγγραφέας τονίζει ότι υπάρχουν τοµείς εφαρµογών όπου το Ελεύθερο/Ανοικτό Λογισµικό είναι εξίσου καλό ή και καλύτερο από το «ιδιόκτητο» Λογισµικό, όµως αυτό δεν ισχύει παντού και φυσικά και υπάρχει και ιδιόκτητο Λογισµικό που υπερτερεί σε κάποιους άλλους τοµείς . Σύµφωνα λοιπόν µε αυτές τις έρευνες και µετρήσεις το Ελεύθερο/Ανοικτό Λογισµικό παρουσιάζει τα εξής πλεονεκτήµατα:

1) Μερίδιο Αγοράς Σύµφωνα µε πολλούς, ένα προϊόν έχει πετύχει µόνο αν έχει σηµαντικό µερίδιο αγοράς.

Βέβαια στα προϊόντα µε µεγάλο µερίδιο αγοράς δηµιουργούνται επιπλέον εφαρµογές, οι εκπαιδευµένοι χρήστες είναι πολλοί και αποκτούν δύναµη που µειώνει την αγωνία του αύριο. Κάποιοι συγγραφείς υποστηρίζουν ότι οι εφαρµογές Ελεύθερου/ Ανοικτού Λογισµικού και το GNU/Linux δεν έχουν µεγάλο µερίδιο αγοράς . Όµως αυτές οι απόψεις ανήκουν στο παρελθόν καθώς είναι προφανές ότι οι εφαρµογές Ελεύθερου/ Ανοικτού Λογισµικού έχουν σηµαντικό µερίδιο αγοράς σε πολλές αγορές.

2) Αξιοπιστία Σύµφωνα µε ποσοτικά δεδοµένα οι «ώριµες» εφαρµογές Ελεύθερου/ Ανοικτού Λογισµικού είναι συχνά πιο αξιόπιστες.

3) Επιδόσεις Η σύγκριση των επιδόσεων του λειτουργικού συστήµατος GNU/Linux µε το λειτουργικό σύστηµα Microsoft Windows σε ισοδύναµα υλισµικά συστήµατα έχει µεγάλη ιστορία από αµφιλεγόµενους ισχυρισµούς και διαφορετικά αποτελέσµατα που βασίζονται σε διαφορετικές παραδοχές . Το Ελεύθερο/ Ανοικτό Λογισµικό έχει αποδείξει ότι είναι συχνά ανταγωνιστικό και σε πολλές περιπτώσεις υπερτερεί.

4) Επεκτασιµότητα Το Ελεύθερο/Ανοικτό λογισµικό GNU/ Linux και NetBSD υποστηρίζουν τη µεγαλύτερη λίστα από πλατφόρµες υλισµικού και απόδοσης σε σχέση µε κάθε άλλο λειτουργικό σύστηµα. Η ανάπτυξη των διεργασιών στο Ελεύθερο/ Ανοικτό Λογισµικό µπορεί να ρυθµιστεί µε τέτοιο τρόπο έτσι ώστε να είναι εφικτή η ανάπτυξη µεγάλων συστηµάτων λογισµικού.

5) Ασφάλεια Η ποσοτική µέτρηση της ασφάλειας είναι πολύ δύσκολη. Όµως, έχουν γίνει κάποιες προσπάθειες που επιδεικνύουν ότι το Ελεύθερου/ Ανοικτό Λογισµικό είναι συχνά ανώτερο από το ιδιόκτητο Λογισµικό, τουλάχιστον σε ορισµένες περιπτώσεις. Τα αποτελέσµατα αυτά βγήκαν µετά από σύγκριση Ελεύθερου/ Ανοικτού Λογισµικού µε το λειτουργικό σύστηµα Microsoft Windows.

6)Συνολικό κόστος ιδιοκτησίας Το συνολικό κόστος ιδιοκτησίας αποτελεί ένα σηµαντικό κριτήριο. ∆εν έχει νόηµα ένα προϊόν που αρχικά κοστίζει λίγο ενώ στην πορεία καταλήγει να κοστίζει πολύ περισσότερο. Όµως, το συνολικό κόστος ιδιοκτησίας είναι πολύ ευαίσθητο στο σύνολο των υποθέσεων που γίνονται.Το Ελεύθερο/ Ανοικτό Λογισµικό παρουσιάζει πολλά σηµαντικά πλεονεκτήµατα κόστους σε πολλές κατηγορίες µε αποτέλεσµα σε πολλές περιπτώσεις να εµφανίζει το µικρότερο συνολικό κόστος ιδιοκτησίας.

Page 15: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

15

Επιπλέον το Ελεύθερο/ Ανοικτό Λογισµικό εµφανίζει και κάποια χαρακτηριστικά τα οποία είναι µη µετρήσιµα, αν και σύµφωνα µε τον συγγραφέα όλα τα χαρακτηριστικά µπορούν να µετρηθούν ποσοτικά και για πολλούς ίσως αυτά που θα παρουσιαστούν πιο κάτω είναι και τα πιο σηµαντικά. Αυτά τα χαρακτηριστικά είναι τα εξής:

1) Η Ελευθερία από τον έλεγχο κάποιου άλλου (ο οποίος είναι συνήθως µια και µοναδική πηγή ).Το Ελεύθερο/ Ανοικτό Λογισµικό προστατεύει τους χρήστες του από τους κινδύνους και τα µειονεκτήµατα του γεγονότος οι λύσεις που προσφέρει το λογισµικό να προέρχονται από µια και µόνο πηγή. 2) Προστασία από κόστος διαχείρισης και των κίνδυνο επιβολής κυρώσεων για

χρήση λογισµικού χωρίς τις απαραίτητες άδειες Το Ελεύθερο/ Ανοικτό Λογισµικό προστατεύει τους χρήστες του από θέµατα επιβολής ποινικών κυρώσεων για χρήση λογισµικού χωρίς την κατάλληλη άδεια χρήσης καθώς και από το δυσβάσταχτο κόστος διαχείρισης των νέων εκδόσεων ή των απαραίτητων αναβαθµίσεων. 3) Ευελιξία. Το Ελεύθερο/ Ανοικτό Λογισµικό παρουσιάζει µεγαλύτερη ευελιξία καθώς µπορεί να τροποποιηθεί έτσι ώστε να ανταποκρίνεται στις ανάγκες των χρηστών. Βέβαια µε αυτόν τον τρόπο είναι πιθανό να δηµιουργηθούν πολλές µη συµβατές εκδόσεις ενός προϊόντος. Όµως το γεγονός αυτό δεν παρουσιάζει κάπιο λόγο ανησυχίας. 4) Κοινωνικά / ηθικά θέµατα Πολλοί πιστεύουν ότι υπάρχουν πολλά κοινωνικά και ηθικά ζητήµατα που επιτάσσουν τη χρήση του Ελεύθερου / Ανοικτού Λογισµικού. Το Ίδρυµα Ελεύθερου Λογισµικού περιγράφει αυτά τα θέµατα εκτενώς. 5) Καινοτοµία Είναι προφανές ότι το Ελεύθερο/ Ανοικτό Λογισµικό ενθαρρύνει την Καινοτοµία.

1.6 Για ποιο λόγο συµµετέχουν οι προγραµµατιστές σε προγράµµατα Ελεύθερου /Ανοικτού Λογισµικού

Σύµφωνα µε τη δηµοσίευση “Free/ Open Source Software Development: Recent Research Results and Emerging Opportunities, Walt Scacchi”, οι λόγοι για τους οποίους οι προγραµµατιστές συµµετέχουν πικοίλουν. Κάποιες φορές το κάνουν για διασκέδαση, άλλοτε για προσωπική ικανοποίηση, ενίοτε για να εξασκήσουν και να βελτιώσουν τα τεχνικά προσόντα τους ή να γίνουν πιο ανταγωνιστικοί υπό αυτές τις ειδικές συνθήκες που δεν τους προσφέρονται στο περιβάλλον εργασίας τους. Όµως οι άνθρωποι που συµµετέχουν και συνεισφέρουν σε προγράµµατα Ελεύθερου /Ανοικτού Λογισµικού τείνουν να παρουσιάζουν και να εκτιµούν τις παρακάτω ικανότητες: το να δηµιουργείς φήµη και να κερδίζεις την εµπιστοσύνη των άλλων, τη δηµιουργικότητα, το να διευρύνεις τις γνώσεις σου µέσω ολοένα και πιο απαιτητικών τεχνικών ρόλων, όπως επίσης το να δίνεις αλλά και να είσαι γενναιόδωρος µε το χρόνο, την ειδίκευση και τον πηγαίο κώδικα κάποιου άλλου.

1.7 Το Ελεύθερο / Ανοικτό Λογισµικό στην Εκπαίδευση Η δηµοσίευση των Keith J. O’ Hara and Jennifer S. Kay µε τίτλο “Open Source

Software and Computer Science Education”, επικεντρώνεται κυρίως στη χρήση του Λειτουργικού Συστήµατος Linux και σε εργαλεία που λειτουργούν σε πλατφόρµα του Linux, για να υποστηρίξει ότι το το Ελεύθερο / Ανοικτό Λογισµικό αποτελεί µια βιώσιµη τεχνολογικά λύση για την εκπαίδευση στον τοµέα της Επιστήµης των Υπολογιστών/ της Πληροφορικής που προσφέρει πολλά πλεονεκτήµατα. Κόστος αδειών Σύµφωνα µε τους συγγραφείς του άρθρου, το κόστος για την αγορά των αδειών χρήσης του του Ελεύθερου / Ανοικτού Λογισµικού από τα σχολεία είναι µηδενικό, ενώ χρησιµοποιώντας αυτό το Λογισµικό στα εργαστήρια τους, δίνουν τη δυνατότητα στους εκπαιδευόµενους να χρησιµοποιήσουν αυτό το λογισµικό για δραστηριότητες πέραν των συνηθισµένων. Η οµάδα Open Source Now, υπό την αιγίδα της εταιρείας Red Hat, έχει ως στόχο να προωθήσει τη χρήση του Ελεύθερου / Ανοικτού Λογισµικού σττην εκπαίδευση και την κυβερνητική πολιτική. Στο πλαίσιο αυτής της προσπάθειας παρέχεται στους εκπαιδευτικούς µια εισαγωγή στο

Page 16: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

16

Ελεύθερο / Ανοικτό Λογισµικό, λίστα συζήτησης, και υπερσυνδέσµους σε πολλούς άλλους δικτυακούς τόπους Ελεύθερου / Ανοικτού Λογισµικού. Ανάπτυξη λογισµικού που µπορεί να χρησιµοποιηθεί από µια ∆ιεθνή κοινότητα Με τη χρήση του Ελεύθερου / Ανοικτού Λογισµικού τόσο από τους εκπαιδευτικούς όσο και από τους εκπαιδευόµενους, είναι εφικτό οι εφαρµογές που αναπτύσσονται να χρησιµοποιηθούν και να βελτιωθούν από µια διεθνή κοινότητα. Το γεγονός αυτό όχι µόνο εξοπλίζει τους εκπαιδευόµενους µε ένα εργαστήριο διαστάσεων πέρα του συνηθισµένου καθώς περιλαµβάνει προγραµµατιστές ανά τον κόσµο, αλλά τους παρέχει ευρύ υποστηρικτό υλικό και τους εισάγει στην εµπειρία του να εργάζεσαι σε προγράµµατα λογισµικού πολύ µεγάλης εµβέλειας σε επίπεδο συνεργασίας και ανάπτυξης. Ανάπτυξη Λογισµικού µέσω συνεργασίας και καταµερισµού εργασίας Η ανάπτυξη Ελεύθερου / Ανοικτού Λογισµικού είναι προϊόν συνεργασίας και καταµερισµού εργασίας. Αυτού του είδους η ανάπτυξη Λογισµικού έχει αποδειχτεί αποτελεσµατική όσον αφορά την εκπαιδευτική της υπόσταση και επιτυγχάνεται µε τη χρήση συνεργατικών εργαλείων που βασίζονται στο ∆ιαδίκτυο όπως οι ιστοσελίδες, οι λίστες ηλεκτρονικού ταχυδροµείου και άλλα παρόµοια εργαλεία . Αυτά τα συνεργατικά εργαλεία που βασίζονται στο διαδίκτυο είναι τα ίδια εργαλεία που συντελούν στην ανάπτυξη Ελεύθερου / Ανοικτού Λογισµικού. Αλληλεπίδραση µε µεγάλες και αληθινές βάσεις κώδικα Λογισµικού. Με την έκθεση των εκπαιδευοµένων σε συνθήκες ανάπτυξης µεγάλης κλίµακας λογισµικού που απαιτούν συνεργασία και καταµερισµό της εργασίας τους ταυτόχρονα τους εκθέτουµε σε µια διαδικασία αλληλεπίδρασης µε µεγάλες και αληθινές βάσεις µε κώδικα λογισµικού. Η χρήση του GNU/Linux ως µάθηµα. Το σύστηµα GNU/Linux, που είναι Ελεύθερου / Ανοικτού Λογισµικού, χρησιµοποιείται ευρέως ως εκπαιδευτική τεχνολογία σε επίπεδο πανεπιστηµιακό για να διδάχτουν έννοιες όπως αυτές των δικτύων, των βάσεων δεδοµένων ή η διαχείριση συστήµατος. Οι φοιτητές που ενθαρύνονται να αναπτύξουν προγράµµατα βασισµένα σε Ελεύθερο/Ανοικτό κώδικα, µπορούν να αναπτύξουν πιο ενδιαφέροντα και συναρπαστικά συστήµατα από ότι ίσως θα είχαν αναπτύξει αν ξεκινούσαν από την αρχή. ∆ηµιουργία ποιοτικού κώδικα για επαναχρησιµοποίηση. Επιπλέον, προκειµένου να τα καταφέρουν έρχονται αντιµέτωποι µε µια µεγάλη βάση κώδικα που συνοδεύεται από την αντίστοιχη τεκµηρίωση. Αν ο κώδικας είναι καλά γραµµένος και εξίσου καλά τεκµηριωµένος, αποτελεί ένα πολύ καλό παράδειγµα προς µίµηση για το πόσο πολύ συνεισφέρει η σωστή προετοιµασία και συγγραφή του κώδικα. Σε αντίθετη περίπτωση, όταν δηλαδή ο κώδικας είναι κακογραµµένος ή όχι καλά τεκµηριωµένος, οι φοιτητές κατανοούν µέσω του αντιπαραδείγµατος την αξία της σωστής δουλειάς, έτσι ώστε όταν αυτοί κληθούν να γράψουν και να τεκµηριώσουν κώδικα να είναι προσεκτικοί και επιµελείς. Επαληθευσιµότητα Το γεγονός ότι ο κώδικας είναι διαθέσιµος και ανοικτός σε όλους, είναι δυνατόν να επιτυχθεί ένας υψηλός βαθµός επαλήθευσης . Όπως γίνεται µε την αναζήτηση σε πρακτικά συνεδρίων ή σε περιοδικά για παρόµοιες περιλήψεις µε τη δική µας ιδέα έτσι ακριβώς µπορούµε να ψάξουµε στην κοινότητα ανοικτού κώδικα.

Page 17: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

17

2.OLPC

2.1 Τι είναι το OLPC και ποιος ο σκοπός του Το OLPC(One Laptop Per Child) είναι ένας διεθνής µη κερδοσκοπικός οργανισµός που

ιδρύθηκε από τον καθηγητή Νικόλα Νεγκροπόντε, ιδρυτή του Media Lab του MIT, ο οποίος είναι και πρόεδρος του µη κερδοσκοπικού οργανισµού One Laptop Per Child, σε µια προσπάθεια να δοθεί στα παιδιά των αναπτυσσόµενων χωρών η ευκαιρία στην εκπαίδευση. Ο τρόπος µε τον οποίο θα επιτευχθεί η προσπάθεια αυτή, είναι µε τη δηµιουργία ενός φθηνού φορητού υπολογιστή ο οποίος θα αποτελέσει για κάθε παιδί στον κόσµο, το µέσο για την πρόσβαση στη γνώση και τις σύγχρονες µορφές εκπαίδευσης.

Το έργο αυτό απέκτησε πολλούς υποστηρικτές ανά τον κόσµο, από ανθρώπους της ακαδηµαϊκής κοινότητας, της βιοµηχανίας, της τέχνης, των επιχειρήσεων και της κοινότητας ανοιχτού λογισµικού, οι οποίοι καταβάλλοντας προσωπική προσπάθεια κατάφεραν να το αναπτύξουν και να το κάνουν γνωστό σε όλο τον κόσµο. Έτσι αυτή τη στιγµή σε πολλές χώρες άνθρωποι που εργάζονται πάνω στο OLPC, αναπτύσσουν εφαρµογές διευρύνοντας τις δυνατότητές του. Ο υπολογιστής έχει διανεµηθεί σε αρκετές αναπτυσσόµενες χώρες, παρέχοντας στα παιδιά τη δυνατότητα να εξερευνήσουν, να πειραµατιστούν, να εκφραστούν και να µάθουν µε ευχάριστο τρόπο.

Στον αναπτυσσόµενο κόσµο αρκετά εκατοµµύρια παιδιά είναι ανεπαρκώς µορφωµένα είτε δε λαµβάνουν καθόλου εκπαίδευση. Ένα στα τρία παιδιά δεν ολοκληρώνει την πέµπτη τάξη. Οι κυβερνήσεις των εν λόγω χωρών δεν έχουν τη δυνατότητα να δαπανήσουν χρήµατα για την εκπαίδευση των µαθητών τους. Εξαιτίας της συγκεκριµένης κατάστασης ιδρύθηκε ο µη κερδοσκοπικός οργανισµός One Laptop Per Child, ο οποίος θα αποτελέσει για τα παιδιά του τρίτου κόσµου τη «διέξοδό τους προς τη µόρφωση».

Ο σκοπός που προσπαθεί να επιτύχει ο οργανισµός OLPC είναι να µπορούν όλα τα παιδιά του αναπτυσσοµένου κόσµου να χειρίζονται αποτελεσµατικά τον προσωπικό τους φορητό υπολογιστή, να δικτυωθούν µε τον υπόλοιπο κόσµο και έτσι τόσο τα ίδια όσο και οι οικογένειές τους και οι κοινότητές τους να µάθουν και να µάθουν για την ίδια τη διαδικασία της µάθησης. Όµως δεν αρκεί απλά η παράδοση του φορητού υπολογιστή (OLPC XO) στους µαθητές και η χρήση του κατά βούληση. Θα πρέπει και ο δάσκαλος να συµµετέχει ως καθοδηγητής στην προσπάθεια ένταξης του OLPC στην εκπαιδευτική κοινότητα. Στην Εικόνα 2 φαίνεται ο φθηνός µαθητικός υπολογιστής OLPC XO ή αλλιώς ο υπολογιστής των 100 δολλαρίων.

Εικόνα 2: Ο φθηνός µαθητικός υπολογιστής OLPC XO

Page 18: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

18

2.2 Υλικό και λογισµικό του OLPC XO Όπως προαναφέρθηκε το OLPC XO είναι ένα εργαλείο µάθησης το οποίο

δηµιουργήθηκε αποκλειστικά για τα παιδιά που ζουν στις αναπτυσσόµενες χώρες. Αυτό το εργαλείο είναι ένας µικρός φορητός υπολογιστής και όπως κάθε υπολογιστής αποτελείται από το υλικό του και το λογισµικό του. Οι εφαρµογές που περιλαµβάνονται σε αυτόν επιτρέπουν στα παιδιά να φτάσουν σε οποιοδήποτε επίπεδο διάδρασης µε τον υπολογιστή επιθυµούν, από την απλή εκµάθηση εννοιών και τη δικτύωση µε άλλους ίδιους υπολογιστές, µέχρι τον προγραµµατισµό εφαρµογών που εκτελούνται στον ίδιο τον υπολογιστή. O σχεδιασµός του υλικού και του λογισµικού του υπολογιστή είναι τέτοιος ούτως ώστε να αποτελεί ένα ευχάριστο αλλά και εύχρηστο περιβάλλον µάθησης.

Ο κυριότερος σκοπός της ανάπτυξης του OLPC XO είναι να καλλιεργήσει στα παιδιά τις έννοιες της κοινότητας και της συνεργασίας. Χρησιµοποιώντας αυτούς τους υπολογιστές, οι οποίοι µπορούν να συνδεθούν µεταξύ τους αποτελώντας ένα δίκτυο, τα παιδιά µπορούν να εργαστούν και να παίξουν όλα µαζί και µέσα από αυτή τη διαδικασία να µάθουν, να δηµιουργήσουν και να επικοινωνήσουν. Για το λόγο αυτό η διεπαφή χρήστη του υπολογιστή είναι σχεδιασµένη µε τέτοιο τρόπο ούτως ώστε να ‘αγκαλιάζει’ την έννοια της δικτύωσης, µε άλλα λόγια να µπορούν τα παιδιά µέσα από αυτή τη διεπαφή να κατανοήσουν καλύτερα τη σηµασία ενός δικτύου υπολογιστών και συνεπώς του δικτύου που δηµιουργούν συνδεόµενοι οι δικοί τους υπολογιστές.

Το λογισµικό που χρησιµοποιείται στον υπολογιστή είναι ελεύθερο και ανοικτού κώδικα λογισµικό. Η ελευθερία όσον αφορά το λογισµικό δίνει στα παιδιά την ευκαιρία να χρησιµοποιήσουν τους υπολογιστές τους σύµφωνα µε τους δικούς τους όρους. Αυτό σηµαίνει ότι τόσο τα παιδιά όσο και οι δάσκαλοί τους, έχουν το δικαίωµα και την ελευθερία να αναδιαµορφώσουν, να επανεφεύρουν και να ξαναεφαρµόσουν το λογισµικό των υπολογιστών τους. Φυσικά δεν αναµένεται από τα παιδιά να γίνουν προγραµµατιστές ούτε τίθεται κάποιο ανώτατο όριο σε αυτούς που επιθυµούν να τροποποιήσουν τη λειτουργία των υπολογιστών και των εφαρµογών τους.

Στους προσωπικούς υπολογιστές που χρησιµοποιούµε σήµερα η διεπαφή χρήστη είναι µια απλή προσοµοίωση του κλασικού γραφείου, δηλαδή περιλαµβάνει εικονίδια που αντιπροσωπεύουν αντίστοιχες λειτουργίες. Στην περίπτωση του OLPC XO η διεπαφή είναι πολύ κοντά στην έννοια της ήδη υπάρχουσας διεπαφής του προσωπικού υπολογιστή αλλά περισσότερο προσανατολισµένη στο στόχο που εξυπηρετεί το OLPC: τη µάθηση. Μέσω της διεπαφής του OLPC XO τα παιδιά µπορούν να δουν οπτικοποιηµένο τον κόσµο των συµµαθητών τους και των δασκάλων τους ως συνεργάτες, δίνοντας έµφαση στις διασυνδέσεις µέσα στην κοινότητα µεταξύ αυτών των ανθρώπων και των δραστηριοτήτων τους.

Το OLPC XO είναι ένα εργαλείο µάθησης, συνεργατικότητας, συµµετοχής, ανάπτυξης και εξοικείωσης µε τις νέες τεχνολογίες. ∆εν πρόκειται για ένα παιχνίδι αλλά για ένα εργαλείο βελτίωσης της εκπαιδευτικής διαδικασίας. Ο υπολογιστής αυτός επειδή προορίζεται για παιδιά είναι σχεδιασµένος µε προδιαγραφές που τον καθιστούν φιλικό προς αυτά και πάνω από όλα ασφαλή. Είναι µικρός σε µέγεθος, ελαφρύς, είναι κατασκευασµένος από πλαστικό, χωρίς γωνίες, χωρίς επικίνδυνες ουσίες και υψηλές τάσεις. ∆εν είναι δηλαδή επικίνδυνος για την υγεία των παιδιών.

Το OLPC XO έχει οθόνη υψηλής ανάλυσης, προσφέρει δικτύωση, συνεργατικές εφαρµογές και ένα περιβάλλον συνεργασίας. Έχει χαµηλή κατανάλωση ενέργειας και µεγάλη αυτονοµία στη χρήση ελεύθερου λογισµικού. Επίσης παρέχει ένα υποσύστηµα επεξεργασίας σηµάτων. Τα OLPC XOs συνδέονται σε δίκτυα πλέγµατος (mesh networks) και καθένα από αυτά είναι ένα σηµείο πλέγµατος (mesh point). Μπορούν να συνδέονται µεταξύ τους αυτόνοµα ή κάτω από ένα σχολικό εξυπηρέτη (School Server), στην ουσία µια πύλη πλέγµατος (mesh portal) η οποία επεκτείνει την συνδεσιµότητα και τους διαµοιραζόµενους πόρους. Οι κεραίες ‘αυτιά’ του OLPC XO µπορούν να αντιληφθούν άλλα γειτονικά OLPC XO και να συνδεθούν µεταξύ τους δηµιουργώντας ένα στιγµιαίο δίκτυο πλέγµατος για διαµοιρασµό και συνεργασία, Εικόνα 3. Αυτό είναι πολύ σηµαντικό γιατί τα OLPC XOs θα µοιραστούν και σε µέρη όπου δεν υπάρχει υποδοµή τηλεπικοινωνιών.

Page 19: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

19

Το λειτουργικό σύστηµα που είναι εγκατεστηµένο στο OLPC XO ως επίσηµο λειτουργικό του, είναι το Sugar το οποίο βασίζεται πάνω στο Red Hat Linux. Τα προγράµµατα που υποστηρίζονται σε αυτό το λειτουργικό σύστηµα είναι λίγα αλλά επαρκή για υποτυπώδεις σχολικές δραστηριότητες. Τα προγράµµατα αυτά είναι σχετικά µε: δηµιουργία µέσων (media authoring), συνοµιλία (chat), φυλλοµέτρηση (browsing), επεξεργασία λέξεων (word processing), διάβασµα rss (rss reading), δραστηριότητες κάµερας (camera activities), παιχνίδια µνήµης (memory games), µουσικές δραστηριότητες (musical activities).

Εικόνα 3: Ο τρόπος δικτύωσης των OLPC XO

2.3 Το OLPC στην Ελλάδα Αξίζει να αναφερθεί ότι τα τελευταία χρόνια έχει δηµιουργηθεί ενδιαφέρον και στην

Ελλάδα για το OLPC. Σε µια προσπάθεια να βοηθηθεί η ελληνοποίηση του µαθητικού υπολογιστή και η ένταξή του στην ελληνική εκπαιδευτική κοινότητα, το πανεπιστήµιο Πατρών και το Ερευνητικό Ακαδηµαικό Ινστιτούτο Τεχνολογίας Υπολογιστών δηµιούργησαν µια εθελοντική οµάδα, η οποία εργάζεται πάνω σε αυτό το αντικείµενο. Η οµάδα αυτή ασχολείται µε διάφορες παραµέτρους για την ελληνοποίηση του OLPC καθώς και µε τη µελέτη προτάσεων για περαιτέρω προσαρµογή του στην ελληνική εκπαιδευτική κοινότητα. Αρχικά ασχολήθηκαν µε τον έλεγχο του υλικού των αρχικών πλακετών του OLPC και των δυνατοτήτων τους. Ακόµα ερεύνησαν τις ικανότητές του να τρέξει διάφορες διανοµές Linux αλλά και την υποστήριξη των διαφόρων τµηµάτων από τον πυρήνα του λειτουργικού. Επίσης ασχολούνται µε την ανάπτυξη εφαρµογών για το Squeak eToys, σύστηµα µάθησης του OLPC, εφαρµογές που θα υποστηρίζονται από το περιβάλλον Sugar, Activity Sharing και Moodle. Επιπροσθέτως έχουν αναπτύξει και ορισµένες εκπαιδευτικές εφαρµογές αντλώντας παραδείγµατα από την ύλη µαθηµάτων του ελληνικού σχολείου. Υπάρχουν όµως και άλλες οµάδες και κοινότητες µέσω του διαδικτύου που ασχολούνται µε την ελληνοποίηση του OLPC, αλλά και µε την ανάπτυξη εφαρµογών για αυτό.

Η ελληνοποίηση του OLPC είναι ίσως η σηµαντικότερη εργασία που πρέπει να γίνει ούτως ώστε το OLPC XO να γίνει µέρος της ελληνικής εκπαιδευτικής διαδικασίας και να προσφέρει τα οφέλη του. Στόχος είναι η πλήρης ελληνοποίηση του περιβάλλοντος του OLPC καθώς και όλων των εφαρµογών που τρέχουν πάνω σε αυτό. Η ελληνοποίηση περιλαµβάνει την υποστήριξη της ελληνικής γλώσσας και την µετάφραση των συµβολοσειρών από τα αγγλικά.

Page 20: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

20

2.4 Εφαρµογές του OLPC Το Activity Sharing είναι µια από τις σηµαντικότερες λειτουργίες του OLPC. Είναι ένα

µέσο εκπαίδευσης το οποίο ακολουθεί τις αρχές του εποικοδοµισµού. Αφορά τον διαµοιρασµό δραστηριοτήτων µεταξύ των χρηστών και επιτρέπει την αλληλεπίδραση µεταξύ τους. Οι δραστηριότητες υποστηρίζουν συνοµιλία (chat), ήχο (audio), διαµοιρασµό περιεχοµένου (content sharing), καταλόγους φίλων (buddy lists), κτλ. Υποστηρίζονται οι εξής δυνατότητες: α) ∆ιαµοιρασµός µιας δραστηριότητας β) Συµµετοχή σε δραστηριότητα γ) ∆ιακοπή µιας ∆ραστηριότητας δ) Συνέχιση µιας ∆ραστηριότητας Ακολουθεί µια λίστα µε υπάρχουσες ή αναπτυσσόµενες δραστηριότητες:

• Read – PDF Viewer • Write - Βασική εφαρµογή επεξεργασίας κειµένου µε επιπρόσθετα βασικά εργαλεία

όπως εισαγωγή εικόνας, δηµιουργία πινάκων κτλ. • Browse – Internet Browser για το Sugar. • Chat – Chat δραστηριότητα για το Sugar. • Draw – Πρόγραµµα ζωγραφικής • Photograph – ∆ραστηριότητα φωτογραφίας. • DJ • BlockParty – Παιχνίδι Tetris • TamTam – Σουίτα από τέσσερις δραστηριότητες που σχετίζονται µε µουσική και ήχο. • Memorize - Παιχνίδι Μνήµης • Develop – ∆ραστηριότητα για τη δηµιουργία άλλων δραστηριοτήτων στο Sugar • Etoys – Είναι ένα πολυµεσικό περιβάλλον δηµιουργίας για πολλά είδη αντικειµένων

που δηµιουργούνται από τους τελικούς χρήστες το οποίο τρέχει σε πολλές πλατφόρµες

• Calculate - Αριθµοµηχανή

Page 21: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

21

3.SMALLTALK

3.1 Εισαγωγή Ο λόγος για τον οποίο αναφερόµαστε στην περιγραφή της γλώσσας Smalltalk είναι το γεγονός ότι η γλώσσα αυτή αποτελεί τη βάση για την ανάπτυξη του περιβάλλοντος µάθησης Squeak Etoys, το οποίο έχει δηµιουργηθεί για να εκτελείται στο µαθητικό υπολογιστή OLPC XO και όχι µόνο. Μπορεί δηλαδή να εγκατασταθεί και να λειτουργήσει σε οποιοδήποτε λειτουργικό σύστηµα. Το Squeak Etoys περιγράφεται αναλυτικά στο επόµενο κεφάλαιο.

3.2 Τι είναι, δοµή του συστήµατος Smalltalk H Smalltalk είναι µια καθαρά αντικειµενοστρεφής γλώσσα προγραµµατισµού, απλή,

µικρή και οµοιόµορφη. Όµως δεν είναι απλώς µια γλώσσα προγραµµατισµού όπως όλες οι άλλες, αλλά είναι κάτι παραπάνω από αυτό. Με τον όρο Smalltalk δεν αναφερόµαστε µόνο στη γλώσσα προγραµµατισµού Smalltalk, αναφερόµαστε και σε ένα περιβάλλον ανάπτυξης και σε µια βιβλιοθήκη κλάσεων. Οι τρεις αυτές αναφορές είναι αρκετά διακριτές αλλά ταυτόχρονα αλληλοεξαρτώµενες. Έτσι λέγοντας Smalltalk πρέπει να εννοείται το εξής:

Smalltalk = Γλώσσα + Βιβλιοθήκη κλάσεων + Περιβάλλον ανάπτυξης

Κάθε έκδοση της Smalltalk περιέχει αυτά τα τρία µέρη ωστόσο υπάρχουν διαφοροποιήσεις σχετικά µε το περιβάλλον ανάπτυξης, ενώ η γλώσσα και η βιβλιοθήκη των κλάσεων είναι σχεδόν ίδιες, όπως αριγράφεται παρακάτω:

Αντικειµενοστρεφής γλώσσα προγραµµατισµού: Συγκριτικά µε τις συµβατικές

γλώσσες προγραµµατισµού όπως τη C ή την Pascal, η Smalltalk έχει ένα ασυνήθιστο συντακτικό. Τα πάντα στη Smalltalk αναπαρίστανται από αντικείµενα και δεν υφίσταται η έννοια του τύπου δεδοµένων, δηλαδή όταν δηλώνουµε µια µεταβλητή δεν χρειάζεται δηλώσουµε και τον τύπο των δεδοµένων που πρόκειται να αποθηκευθούν σε αυτήν. Οι συµβατικοί τύποι δεδοµένων που συναντώνται στις άλλες γλώσσες, όπως π.χ. ακέραιος, λογικός, κινητής υποδιαστολής, χαρακτήρα, συµβολοσειρά, πίνακας, αναπαρίστανται από τα αντικείµενα. Επίσης αντικείµενα χρησιµοποιούνται και για την αναπαράσταση στοιχείων οθόνης, όπως µενού και παράθυρα, ακόµα και για την αναπαράσταση του ίδιου του µεταγλωττιστή. Έτσι η Smalltalk περιγράφεται σαν µια οµοιόµορφη αντικειµενοστρεφής γλώσσα. Οι κανόνες του συντακτικού της Smalltalk είναι απλοί και συνεπείς και το ίδιο το συντακτικό καθιστά τη γλώσσα αρκετά ισχυρή.

Βιβλιοθήκη κλάσεων: Η βιβλιοθήκη κλάσεων είναι ο πυρήνας του συστήµατος της Smalltalk. Παρέχει εκατοντάδες επαναχρησιµοποιήσιµες κλάσεις οι οποίες µπορούν να χρησιµοποιηθούν σε κάθε πρόγραµµα που γράφεται, συνεπώς ελαχιστοποιείται η προσπάθεια που απαιτείται για τη δηµιουργία νέων εφαρµογών. Ο πηγαίος κώδικας των κλάσεων και των µεθόδων είναι διαθέσιµος στους χρήστες, οι οποίοι µπορούν επίσης να δηµιουργήσουν νέες κλάσεις και µε αυτό τον τρόπο να επεκτείνουν τη βιβλιοθήκη.

Η βιβλιοθήκη των κλάσεων περιλαµβάνει: • Ποικίλες υποκλάσεις της κλάσης Number, όπως τις Integer, Float, Fraction. • Ποικίλες δοµές δεδοµένων, όπως τις Set, Bag, Array, OrderedCollection,

SortedCollection, Dictionary. • Κλάσεις που αναπαριστούν κείµενο, φόντο, χρώµα κ.ό.κ. • Γεωµετρικές αναπαραστάσεις όπως Point, Rectangle, Circle, Polygon κ.ό.κ. • Κλάσεις που βοηθούν στον έλεγχο του χρονισµού όπως οι Process και Semaphore. Περιβάλλον ανάπτυξης. Ο πηγαίος κώδικας των κλάσεων της βιβλιοθήκης καθίσταται

ορατός µέσα από το περιβάλλον ανάπτυξης της Smalltalk. Αυτό αποτελείται από φυλλοµετρητές (browsers), επιθεωρητές (inspectors), αποσφαλµατωτές (debuggers), γεννήτριες διεπαφών χρήστη (user-interface generators) και από άλλα εργαλεία που είναι ενσωµατωµένα σε αυτό. Αυτά τα εργαλεία δίνουν µια καθαρή άποψη για το πώς λειτουργεί το σύστηµα αρκεί βέβαια να γνωρίζει κάποιος πώς να τα χρησιµοποιεί. Το περιβάλλον ανάπτυξης

Page 22: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

22

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

Ο κώδικας του περιβάλλοντος ανάπτυξης είναι και αυτός µέρος της βιβλιοθήκης των κλάσεων. Όπως προαναφέρθηκε ο πηγαίος κώδικας της βιβλιοθήκης αλλά και ο πηγαίος κώδικας του περιβάλλοντος ανάπτυξης είναι διαθέσιµοι στους προγραµµατιστές. Αυτό έχει δυο πλεονεκτήµατα. Πρώτον αποτελεί ένα τέλειο παράδειγµα για το πώς θα δηµιουργηθεί µια εφαρµογή σε Smalltalk και δεύτερον εάν σε κάποιον δεν αρέσει ο τρόπος µε τον οποίο λειτουργεί το περιβάλλον ανάπτυξης µπορεί να το αλλάξει.

3.3 Χαρακτηριστικά της Smalltalk

3.3.1 Το περιβάλλον της Smalltalk Στο περιβάλλον της Smalltalk µπορούµε να γράφουµε µικρά κοµµάτια κώδικα και να

τα εκτελούµε κατευθείαν χωρίς να περιµένουµε να γίνει πρώτα η µεταγλώττιση και έπειτα η σύνδεση όπως συµβαίνει σε άλλα προγραµµατιστικά περιβάλλοντα. Εφόσον έχουµε γράψει µερικές γραµµές κώδικα µπορούµε να τον επιλέξουµε, να κάνουµε αποδοχή(accept) αυτού και ύστερα να τον εκτελέσουµε(run). Κατά τη διαδικασία της αποδοχής γίνεται ο έλεγχος των συντακτικών λαθών και η µεταγλώττιση του κώδικα. Όλα αυτά γίνονται στο ίδιο παράθυρο που συντάσσουµε το πρόγραµµα και δε χρειάζεται να το αφήσουµε και να ανοίξουµε κάποιο άλλο παράθυρο. Με αυτόν τον τρόπο µπορούµε κάθε φορά να γράφουµε και να ελέγχουµε µικρά κοµµάτια κώδικα χωρίς να χρειάζεται να γράφουµε πολλές γραµµές κώδικα. Ως συµπέρασµα των παραπάνω, η Smalltalk είναι µια διερµηνευόµενη γλώσσα και ο κώδικας µεταγλωττίζεται αυξητικά κατά τη διάρκεια της ανάπτυξης.

Όπως προαναφέρθηκε η Smalltalk αποτελεί ένα διαφορετικό περιβάλλον ανάπτυξης από τα συνηθισµένα. Αυτό ισχύει διότι όταν γράφουµε κώδικα σε Smalltalk αυτός δεν εκτελείται στον τοπικό(host) υπολογιστή που χρησιµοποιούµε, ούτε ακόµα και όταν έχει υποστεί µεταγλώττιση, αλλά αντιθέτως εκτελείται σε µια Εικονική Μηχανή (Virtual Machine, VM) η οποία µε τη σειρά της εκτελείται στον τοπικό υπολογιστή, Εικόνα 7. Αυτό µας δίνει τη δυνατότητα να γράψουµε κώδικα σε µια συγκεκριµένη πλατφόρµα και να τον εκτελέσουµε σε µια διαφορετική πλατφόρµα µε εντελώς διαφορετικό υλισµικό και λογισµικό από την προηγούµενη, χωρίς να χρειαστεί ξανά µεταγλώττιση. Ουσιαστικά αυτός ο κώδικας σε Smalltalk εκτελείται πάντα στην ίδια µηχανή: στην Eικονική Mηχανή της Smalltalk.

Η Εικονική Μηχανή λοιπόν βρίσκεται µεταξύ των προγραµµάτων της Smalltalk και του πραγµατικού υπολογιστή και µπορεί να θεωρηθεί σαν ένας εξιδανικευµένος υπολογιστής Smalltalk, στον οποίο τρέχουν µαζί τα εργαλεία ανάπτυξης και τα προγράµµατα της Smalltalk. Η Εικονική Μηχανή δουλεύει σε συνεργασία µε ένα αρχείο που ονοµάζεται Εικονική Εικόνα (Virtual Image, VI) ή πιο απλά εικόνα (image), Εικόνα 4. Η εικόνα µπορεί να θεωρηθεί ως ισοδύναµη της µνήµης της εικονικής µηχανής και σε αυτήν υπάρχουν τα εργαλεία ανάπτυξης, ο κώδικας της βιβλιοθήκης και τα προγράµµατα της Smalltalk. Ουσιαστικά το αρχείο εικόνα είναι µια απεικόνιση της κατάστασης του περιβάλλοντος ανάπτυξης τη χρονική στιγµή που το αποθηκεύσαµε.

Τα προγράµµατα σε Smalltalk µπορούν να µεταφερθούν και να εκτελεστούν σε οποιαδήποτε πλατφόρµα. Αυτό µπορεί να γίνει µόνο αν η κάθε πλατφόρµα διαθέτει την κατάλληλη έκδοση της εικονικής µηχανής σε µορφή εκτελέσιµου αρχείου. Για να µεταφερθεί ένα πρόγραµµα από µια πλατφόρµα σε µια άλλη απλά πρέπει να γίνει αντιγραφή του αρχείου εικόνα. Προκειµένου να επιτευχθεί αυτή η συνέπεια, η εικονική µηχανή εφαρµόζει το δικό της σύνολο βασικών λειτουργιών, συµπεριλαµβανοµένων αριθµητικών, λογικών λειτουργιών και λειτουργιών εισόδου/εξόδου. Αυτές οι λειτουργίες µεταφράζονται σε λειτουργίες που ο υπολογιστής είναι ικανός να εκτελέσει. Αρχικά αυτό γινόταν από ένα διερµηνευτή αλλά τώρα, τουλάχιστον στο VisualWorks (είναι ένα περιβάλλον ανάπτυξης εφαρµογών σε Smalltalk), γίνεται από έναν αυξητικό µεταγλωττιστή ο οποίος παράγει πιο γρήγορα κώδικα.

Page 23: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

23

Εικόνα 4: Το σύστηµα της Smalltalk που τρέχει στον υπολογιστή αποτελείται από µια virtual image και µια virtual machine

Στο σύστηµα της Smalltalk υπάρχουν πολλά διαφορετικά αρχεία στα οποία είναι αποθηκευµένο το ίδιο το σύστηµα αλλά και τα προγράµµατα που φτιάχνουν οι προγραµµατιστές. Η εικονική µηχανή είναι ένα εκτελέσιµο αρχείο. Ο πιο σηµαντικός τύπος αρχείου είναι το αρχείο εικόνα. Αυτό είναι ένα στιγµιότυπο σε δυαδική µορφή όλου του κώδικα και των δεδοµένων στη virtual image σε µια συγκεκριµένη χρονική στιγµή. Τα αρχεία εικόνας είναι αρκετά µεγάλα σε µέγεθος, µερικά megabytes. Το VisualWorks περιλαµβάνει ένα βασικό αρχείο εικόνας που ονοµάζεται visual.im και το οποίο περιέχει ολόκληρη τη βιβλιοθήκη κλάσεων και το περιβάλλον ανάπτυξης.

Όταν ξεκινά το VisualWorks, η εικονική µηχανή φορτώνει το αρχείο εικόνας στη µνήµη του υπολογιστή από όπου και µπορεί να το επεξεργαστεί, Εικόνα 6. Καθώς γίνεται ο προγραµµατισµός η εικόνα στη µνήµη αλλάζει διαρκώς. Η εικόνα µπορεί να αποθηκευτεί σε ένα αρχείο όποτε το επιθυµήσει ο προγραµµατιστής, µε οποιοδήποτε όνοµα στο τέλος του οποίου το σύστηµα θα προσθέσει το .im, Εικόνα 5. Με αυτόν τον τρόπο δηµιουργείται ένα αρχείο εικόνας. Όταν επανεκκινήσουµε το VisualWorks χρησιµοποιώντας ένα από τα αποθηκευµένα αρχεία εικόνας, θα ξαναδηµιουργηθεί ολόκληρη η κατάσταση του περιβάλλοντος τη χρονική στιγµή που αποθηκεύτηκε. Ωστόσο αυτό που δεν αποθηκεύεται στα αρχεία εικόνας είναι ο πηγαίος κώδικας των κλάσεων της βιβλιοθήκης και των προγραµµάτων του προγραµµατιστή. Ο πηγαίος κώδικας των κλάσεων της βιβλιοθήκης αποθηκεύεται στo πηγαίο αρχείο (sources file). Αυτό είναι ένα αρχείο κειµένου που ονοµάζεται visual.sources. Το σύστηµα όταν ξεκινάει δεν φορτώνει ολόκληρο το πηγαίο αρχείο. Αντίθετα πηγαίνει σε αυτό κάθε φορά που ο προγραµµατιστής χρειάζεται να δει τον πηγαίο κώδικα µια συγκεκριµένης µεθόδου. Ο πηγαίος κώδικας δεν είναι χρήσιµος για την εκτέλεση µιας µεθόδου απλά υπάρχει για την εξυπηρέτηση των προγραµµατιστών σε περίπτωση που θελήσουν να τον δουν.

Ο πηγαίος κώδικας των κλάσεων και των µεθόδων που γράφεται από τους προγραµµατιστές δεν αποθηκεύεται στο πηγαίο αρχείο αλλά στο αρχείο αλλαγών (changes file). Αυτό είναι ένα αρχείο κειµένου στο οποίο αποθηκεύεται όλος ο πηγαίος κώδικας από όλες τις αλλαγές και τις προσθήκες που έγιναν στην εικόνα. Υπάρχει ένα αρχείο αλλαγών για

Page 24: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

24

κάθε αρχείο εικόνας, το οποίο συνήθως ονοµάζεται <name>.changes (ή .cha), όπου <name> είναι οποιοδήποτε όνοµα έχει δοθεί στο αρχείο εικόνας. Το πηγαίο αρχείο και το αρχείο αλλαγών κρατούν όλο τον πηγαίο κώδικα της εικόνας. Όπως και στην περίπτωση του πηγαίου αρχείου, έτσι και το αρχείο αλλαγών δε φορτώνεται όταν ξεκινά το VisualWorks. Αντίθετα το σύστηµα πηγαίνει σε αυτό κάθε φορά που χρειάζεται τον πηγαίο κώδικα κάποιας µεθόδου. Το αρχείο αλλαγών γράφεται κάθε φορά που τροποποιείται κάτι στο σύστηµα, σε αντίθεση µε το πηγαίο αρχείο το οποίο δεν γράφεται ποτέ. Αυτό συµβαίνει συνέχεια και όχι µόνο όταν αποθηκεύουµε την εικόνα. Επίσης µια νέα έκδοση µιας µεθόδου δεν εγγράφεται πάνω στην παλιά έκδοση της µεθόδου στο αρχείο αλλαγών, αλλά προστίθεται στο τέλος του αρχείου. Αυτό σηµαίνει ότι το αρχείο αλλαγών φτιάχνει ένα ιστορικό µε τις αλλαγές και τις προσθήκες που έγιναν στο σύστηµα.

Το τελευταίο είδος αρχείου είναι το αρχείο file-in. Μέχρι στιγµής αναφέρθηκε ότι είναι δυνατόν να αποθηκευτεί η δουλειά του προγραµµατιστή αποθηκεύοντας ολόκληρη την εικόνα στο αρχείο εικόνας. Αυτός είναι ένας πολύ βολικός τρόπος να δηµιουργηθεί ένα στιγµιότυπο για ολόκληρη την κατάσταση του συστήµατος, αλλά δεν είναι και τόσο βολικός τρόπος όταν υπάρχει ανάγκη για αποθήκευση µικρότερων κοµµατιών κώδικα τα οποία ίσως να δοθούν σε κάποιον άλλον. Για το λόγο αυτό το VisualWorks παρέχει έναν µηχανισµό file-out, οποίος καταγράφει µόνο τον κώδικα που ζητήθηκε σε ένα ξεχωριστό αρχείο. Το προκύπτον αρχείο µπορεί να αρχειοθετηθεί (filed-in) σε µια άλλη εικόνα. Τα file-ins είναι αρχεία κειµένου τα οποία κρατούν τον πηγαίο κώδικα Smalltalk αν και κανονικά ο προγραµµατιστής δεν µπορεί να τα συντάξει εκτός του συστήµατος VisualWorks. Τα file-ins µπορούν να χρησιµοποιηθούν για να µοιραστεί κώδικας µεταξύ πολλών προγραµµατιστών. Επίσης είναι πολύ σηµαντικά στην περίπτωση που θελήσει κάποιος να ξαναδηµιουργήσει την εικόνα του εάν αυτή έχει αλλοιωθεί.

Εικόνα 5: Θεµελιώδη αρχεία στο VisualWorks

Page 25: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

25

Εικόνα 6: Η virtual image, η virtual machine και οι διάφοροι τύποι αρχείων στη Smalltalk

Εικόνα 7: Η δοµή του συστήµατος VisualWorks

Page 26: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

26

3.3.2 Το συντακτικό της Smalltalk Το συντακτικό της Smalltalk περιγράφει το πώς αλληλεπιδρούν τα αντικείµενα µεταξύ

τους και είναι αρκετά ασυνήθιστο σε σύγκριση µε το συντακτικό άλλων γλωσσών. Ένα αντικείµενο περιγράφεται από µια έκφραση, δηλαδή από µια ακολουθία χαρακτήρων. Οι τύποι των εκφράσεων που επιτρέπονται στη Smalltalk είναι τέσσερις και είναι οι εξής:

• Literals: περιγράφουν σταθερά αντικείµενα όπως αριθµούς, χαρακτήρες, συµβολοσειρές, σύµβολα και πίνακες.

• Ονόµατα µεταβλητών: περιγράφουν προσπελάσιµες µεταβλητές. Η τιµή του ονόµατος µεταβλητής είναι η τρέχουσα τιµή της µεταβλητής µε αυτό το όνοµα.

• Εκφράσεις µηνύµατος: περιγράφουν τα µηνύµατα που στέλνονται στους αποδέκτες. Η τιµή της έκφρασης προσδιορίζεται από τη µέθοδο που επικαλείται.

• Εκφράσεις µπλοκ: περιγράφουν αναβεβληµένες δραστηριότητες. Τα µπλοκ χρησιµοποιούνται συχνά στις δοµές ελέγχου.

3.3.2.1 Literals Η πιο απλή µορφή µιας έκφρασης Smalltalk είναι η «έκφραση literal». Παρακάτω

περιγράφεται η σύνταξη αυτών των σταθερών αντικειµένων. • Αριθµοί

Ένας αριθµός αναπαρίσταται από µια ακολουθία ψηφίων, µε ένα προφανές µοναδιαίο

αρνητικό πρόσηµο στην αρχή και προφανές δεκαδικό σηµείο. ∆εν υπάρχει θετικό πρόσηµο. Μερικά παραδείγµατα:

8 12.7 -0.0007

• Χαρακτήρες Ένας χαρακτήρας είναι ένα ιδιαίτερο γράµµα ενός αλφαβήτου. Αναπαρίστανται από

ένα µονό αλφαριθµητικό όπου προηγείται το σύµβολο ‘$’:

$D $+ $$ $9 $x • Συµβολοσειρές

Μια συµβολοσειρά είναι µια ακολουθία χαρακτήρων η οποία περικλείεται από µονά

εισαγωγικά:

‘test string’ ‘string’

• Σύµβολα

Ένα σύµβολο είναι ένα αντικείµενο το οποίο αναπαριστά µια συµβολοσειρά που χρησιµοποιείται για ένα όνοµα στη Smalltalk. Αναπαρίσταται χρησιµοποιώντας το σύµβολο ‘#’ και περικλείεται προαιρετικά από µονά εισαγωγικά. Τα σύµβολα είναι πάντα µοναδικά:

#initialize #W80 #temp #’3x’ • Literal πίνακες Τα literals περικλείονται από παρενθέσεις των οποίων προηγείται το σύµβολο ‘#’.

Όταν ένας πίνακας εµπεριέχεται σε έναν άλλο πίνακα τότε µπορεί να παραλειφθεί το σύµβολο ‘#’ του εµφωλευµένου πίνακα. Επίσης δεν είναι απαραίτητο όλα τα στοιχεία του πίνακα να είναι ίδιου τύπου:

Page 27: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

27

#(40 41 42) #((1 ‘2’) (‘first’ #second)) #(1 ‘one’ ($5 ‘five’)) • Πίνακες byte

Οι πίνακες byte είναι µια ακολουθία από bytes (ακέραιοι µεταξύ 0 και 255)

περικλειόµενα από αγκύλες όπου προηγείται το σύµβολο ‘#’:

# [1 2 3 0] #[16rFF 0 2r111 2e2]

3.3.2.2 Μεταβλητές Μια µεταβλητή αντιστοιχεί σε ένα αντικείµενο. Το όνοµα της µεταβλητής είναι µια

έκφραση που αναφέρεται σε αυτό το αντικείµενο. Οι µεταβλητές αποτελούνται από γράµµατα και ψηφία και πρέπει να αρχίζουν πάντα µε γράµµα: someObject Integer Smalltalk temp3

3.3.2.3 Ψευδοµεταβλητές Μια ψευδοµεταβλητή αναφέρεται σε ένα αντικείµενο το οποίο δεν µπορεί να αλλάξει.

Παραδείγµατα ψευδοµεταβλητών: nil η τιµή αυτή χρησιµοποιείται όταν καµία άλλη τιµή δεν είναι διαθέσιµη, όπως

στην περίπτωση που µια µεταβλητή δεν έχει αρχικοποιηθεί. Η nil είναι στιγµιότυπο της κλάσης UndefinedObject.

true αναπαριστά την αληθινή συνθήκη. Η true είναι στιγµιότυπο της κλάσης True. false αναπαριστά την ψευδή συνθήκη. Η false είναι στιγµιότυπο της κλάσης False. Οι κλάσεις True και False είναι υποκλάσεις της Boolean.

3.3.2.4 Μηνύµατα Ένα µήνυµα αποτελείται από έναν παραλήπτη (receiver), έναν επιλογέα (selector) και

πιθανόν κάποιες παραµέτρους (arguments). Η βασική µορφή αποστολής ενός µηνύµατος στη Smalltalk είναι:

<παραλήπτης> <µήνυµα>

όπου <παραλήπτης> είναι το όνοµα ενός γνωστού αντικειµένου και όπου <µήνυµα> είναι ένα µοναδιαίο (unary), δυαδικό (binary) ή µήνυµα λέξης κλειδιού (keyword) συµπεριλαµβανοµένων και των παραµέτρων.

• Μοναδιαία (unary) µηνύµατα Τα µοναδιαία µηνύµατα είναι ο πιο απλός τύπος µηνυµάτων στη Smalltalk. Ένα αντικείµενο ακολουθείται από µια απλή λέξη (τον επιλογέα µηνύµατος) χωρίς παραµέτρους. Ο επιλογέας δεν περιέχει άνω και κάτω τελείες. Μερικά παραδείγµατα: 3 negated Window new anArray size theta sin 4 even • ∆υαδικά (binary) µηνύµατα Τα δυαδικά µηνύµατα είναι πιο πολύπλοκα, από τη στιγµή που έχουν µια προκαθορισµένη παράµετρο µαζί τους. Ο επιλογέας είναι ένας ή δύο µη αλφαβητικοί χαρακτήρες εκ των οποίων ο δεύτερος δεν πρέπει να είναι το αρνητικό πρόσηµο. Τα υπάρχοντα δυαδικά µηνύµατα στη Smalltalk είναι τα:

Page 28: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

28

+ - / * = < > ~= <= >= // (διαίρεση ακεραίων) & (λογικό ‘και’) | (λογικό ‘ή’) , (σύνδεση αλφαριθµητικών) Παραδείγµατα: 2 + 3 true & false 3 * 4 100 // 17 index – 1

• Μηνύµατα λέξης κλειδιού (keyword) Τα µηνύµατα λέξης κλειδιού είναι ο πιο πολύπλοκος τύπος µηνυµάτων. Η δοµή ενός τέτοιου µηνύµατος περιέχει µια ή περισσότερες λέξεις κλειδιά καθεµιά µε τις δικές της παραµέτρους. Για παράδειγµα στο µήνυµα: anArray copyFrom: 1 to: 3 τα copyFrom: και to: είναι λέξεις κλειδιά και οι αριθµοί 1 και 3 είναι παράµετροι. Να σηµειωθεί ότι κάθε λέξη κλειδί πρέπει να τελειώνει µε άνω και κάτω τελεία. Ένα µήνυµα δεν θα πρέπει να έχει περισσότερες από 255 λέξεις κλειδιά. Μια παράµετρος µπορεί να είναι µια έκφραση που αναπαριστά οποιοδήποτε αντικείµενο. Άλλα παραδείγµατα: index max: limit anArray at: first put: ‘aardvark’

3.3.2.5 Κανόνες ανάλυσης (parsing rules) Η σειρά της ανάθεσης τιµών σε µια πρόταση στη Smalltalk έχει ως εξής:

1. Στα µοναδιαία µηνύµατα από αριστερά προς τα δεξιά 2. Στα δυαδικά µηνύµατα από αριστερά προς τα δεξιά 3. Στα µηνύµατα λέξης κλειδιού από αριστερά προς τα δεξιά

Οι πολλαπλές εκφράσεις χωρίζονται από τελείες. Αυτοί οι κανόνες είναι αρκετά διαφορετικοί από τους κανόνες πολλών άλλων γλωσσών, όπου η προτεραιότητα εξαρτάται από την κάθε λειτουργία. ∆εν υπάρχει αλγεβρική ιεραρχία. Εντούτοις όπως συµβαίνει και σε πολλές άλλες γλώσσες, µπορούν να χρησιµοποιηθούν παρενθέσεις προκειµένου να αλλαχθεί η προτεραιότητα. Για παράδειγµα: 1.5 tan rounded το µοναδιαίο µήνυµα tan στέλνεται στο αντικείµενο 1.5 και το µοναδιαίο µήνυµα rounded στέλνεται στο αντικείµενο που προκύπτει (από την αποστολή του tan στο 1.5) Παροµοίως για δυαδικά µηνύµατα: a + b * 2 επιστρέφει το αποτέλεσµα «2 φορές το (a+b)». Για να έχουµε το αποτέλεσµα «(2 φορές το b) + a» η έκφραση πρέπει να γραφεί ως εξής: a + (b * 2) Οι παρενθέσεις έχουν επίσης µεγαλύτερη προτεραιότητα και από τα µοναδιαία µηνύµατα.

Page 29: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

29

3.3.2.6 Αναθέσεις Ένα όνοµα µεταβλητής µπορεί να αναφέρεται σε διαφορετικά αντικείµενα σε

διαφορετικές χρονικές στιγµές. Η έκφραση ανάθεσης µπορεί να χρησιµοποιηθεί για να ανατεθεί στο αντικείµενο µια µεταβλητή και έχει την εξής µορφή: <µεταβλητή> := <µήνυµα που στέλνεται> Παραδείγµατα: newIndex := 1 this := that someString := ‘Part Two’ anArray := #(1 2 3 4 5) Οι εκφράσεις ανάθεσης επιστρέφουν τιµές (όπως όλες οι εκφράσεις) και έτσι µπορούν να γίνουν µαζί πολλές αναθέσεις: this := that := theOther

Page 30: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

30

3.4 Παραδείγµατα σε Smalltalk Παρακάτω παρουσιάζονται ορισµένα παραδείγµατα κώδικα σε Smalltalk και γίνεται

σύγκριση των εντολών της Smalltalk µε τις αντίστοιχες εντολές σε C. Το πρώτο παράδειγµα είναι µια δοµή ελέγχου if else έτσι όπως παριστάνεται στη C και δίπλα έτσι όπως παριστάνεται στη Smalltalk:

C Smalltalk if (count < 100) (count < 100) count++; ifTrue: [count := count +1] else printf(“Overflow\n”); ifFalse: [Transcript show: count = 0; ‘Overflow’. Transcript cr. count := 0] Ένα άλλο παράδειγµα δείχνει την εντολή επανάληψης for σε C και Smalltalk:

C Smalltalk

for (n = 1; n <= 10; n = n + 1) (1 to: 10) do: [:n | Transcript show: printf(“%3d”, n); n printString] Η εντολή while: C Smalltalk n = 1; n := 1. while (n <= 10) [n <= 10] whileTrue: printf(“%3d”, n); [Transcript show: n. n++; n := n +1]. do [n := Transcript getNumber. scanf(“%d”, &n); Transcript show: n; cr. printf(“%d\n”, n); n < 1000] whileTrue. while (n < 1000);

Page 31: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

31

4.SQUEAK-ETOYS

4.1 Τι είναι το Squeak Το Squeak είναι ένα προγραµµατιστικό περιβάλλον το οποίο βασίζεται στη Smalltalk

και είναι ανοικτού κώδικα λογισµικό. Είναι ιδιαίτερα φορητό αφού εκτελείται σε εικονική µηχανή και δεν εξειδικεύεται για κάποιο συγκεκριµένο υλισµικό ή λειτουργικό σύστηµα. Αποτελεί ένα εργαλείο για ένα µεγάλο εύρος από έργα που αφορούν εκπαιδευτικές πλατφόρµες, πολυµεσικές εφαρµογές, µέχρι και ανάπτυξη εµπορικών διαδικτυακών εφαρµογών.

Κάθε διάθεση του Squeak περιλαµβάνει υποστήριξη για χρώµατα, ήχο και πρόσβαση στο δίκτυο ανεξαρτήτως πλατφόρµας ενώ παράλληλα περιλαµβάνει ολόκληρο τον κώδικά του. Ο οποιοσδήποτε έχει τη δυνατότητα να εξετάσει τον πηγαίο κώδικα οποιουδήποτε µέρους του συστήµατος ακόµα και την ίδια την εικονική µηχανή, η οποία είναι και αυτή γραµµένη σε Smalltalk. Έτσι µπορεί κάποιος να δει τα πάντα στο σύστηµα, να το κατανοήσει, να το αλλάξει, ακόµα και να το επεκτείνει χωρίς να είναι αναγκαίο να ασχοληθεί µε άλλη γλώσσα πέρα από τη Smalltalk.

4.2 Τα χαρακτηριστικά του Squeak Το Squeak περιέχει ένα µεγάλο αριθµό από χρήσιµα εργαλεία όπως συντάκτες

κειµένου (text editors), φυλλοµετρητές κώδικα (code browsers), έναν αποσφαλµατωτή (debugger), έναν επιθεωρητή αντικειµένων (object inspector), ένα µεταγλωττιστή, γραφικά στοιχεία (widgets) και άλλα πολλά. Επίσης παρέχει προγραµµατιστική πρόσβαση στο διαδικτυακό περιβάλλον του υπολογιστή σε όλα τα επίπεδα, από το πιο υψηλό επίπεδο του περάσµατος αντικειµένων και των πρωτοκόλλων όπως το HTTP/FTP, µέχρι το χαµηλό επίπεδο της επικοινωνίας µε sockets. Ακόµα στο Squeak περιλαµβάνονται χαρακτηριστικά τα οποία του δίνουν την δυνατότητα να έχει πρόσβαση σε υπηρεσίες του διαδικτύου. Τα προγράµµατα αυτά είναι:

• Celeste: πρόγραµµα ανάγνωσης e-mail • Scamper: φυλλοµετρητής • Telnet: βασικός telnet client • IRC: ένας βασικός IRC client • Nebraska: διαµοιραζόµενο morphic(shared morphic world), server and client • Seaside: πρόγραµµα για την ανάπτυξη δυναµικών πολύπλοκων διαδικτυακών

εφαρµογών • KomHttpServer: Ο HTTP Server του Squeak Το Squeak υποστηρίζει µια ποικιλία από ψηφιακές πολυµεσικές εφαρµογές όπως ήχο,

video, γραφικά, σχεδιοκίνηση και διαδραστικές εφαρµογές. Προσφέρει επεξεργασία σε δισδιάστατα γραφικά και τη δυνατότητα δηµιουργίας τρισδιάστατων χώρων.

Σχετικά µε τους τρισδιάστατους χώρους υπάρχει ένα εργαλείο, το λεγόµενο Alice, το οποίο έχει σχεδιαστεί για εκείνους που δεν έχουν την εµπειρία στο να προγραµµατίσουν διαδραστικούς τρισδιάστατους κόσµους. Το Alice έχει ως στόχο όλο και περισσότεροι άνθρωποι να µπορέσουν δηµιουργήσουν τα δικά τους τρισδιάστατα γραφικά µέσα από το Squeak. Για να δηµιουργηθεί ένας διαδραστικός τρισδιάστατος χώρος στο Squeak-Alice πρέπει να δηµιουργηθεί ένα Wonderland (το οποίο είναι ένα βασικό building block του Squeak-Alice και ένας διαδραστικός τρισδιάστατος κόσµος). Αυτό γίνεται γράφοντας Wonderland new και έτσι δηµιουργείται ένας script editor, ένας πίνακας ελέγχου (control panel) και ένα παράθυρο στον τρισδιάστατο κόσµο. Από εκεί και έπειτα µπορεί να ξεκινήσει η δηµιουργία του κόσµου.

Μια συναρπαστική νέα εφαρµογή είναι το τρισδιάστατο συνεργατικό περιβάλλον Croquet. Το Croquet είναι µια προσπάθεια ανάπτυξης ενός νέου λειτουργικού συστήµατος ανοικτού κώδικα, το οποίο οικοδοµείται από κάτω προς τα πάνω, δίνοντας τη δυνατότητα σε οµάδες χρηστών για συνεργασία σε βάθος. Επίσης ενισχύει την επικοινωνία µεταξύ των χρηστών ενεργώντας ως ισάξιο ενός ευρυζωνικού συστήµατος συνδιάσκεψης που είναι χτισµένο στην κορυφή µιας τρισδιάστατης διεπαφής χρήστη και µιας peer-to-peer αρχιτεκτονικής δικτύου.

Page 32: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

32

Όσον αφορά την αλληλεπίδραση, υπάρχει το πρόγραµµα Morphic το οποίο είναι ένα πρόγραµµα διαχείρισης της διεπαφής χρήστη (User Interface, UI) στηριζόµενο στα display trees. Λειτουργεί µε γραφικά αντικείµενα τα αποκαλούµενα Morphs. Είναι µια εναλλακτική προσέγγιση στο παραδοσιακό εργαλείο γραφικών Model View Controller (MVC) το οποίο είναι διαθέσιµο στο Squeak.

Το Squeak έχει εκπληκτικές δυνατότητες σχετικά µε τον ήχο, από το να αναπαράγει αρχεία MIDI µέσω ενός εσωτερικού συνθεσάιζερ ή µέσω ενός εξωτερικού συνθεσάιζερ συµβατού µε το MIDI, µέχρι το να παράγει πολλαπλά όργανα µε πολλαπλές φωνές κάθε φορά. Ακόµα µπορεί να κάνει εγγραφή ήχου και να αναπαράγει µια µεγάλη ποικιλία από αρχεία µε δειγµατοληπτηµένο ήχο όπως αρχεία wav και aiff.

Στο Squeak έχουν αναπτυχθεί πολλές εργασίες πάνω σε διαφορετικούς τοµείς. Στην εκπαίδευση υπάρχει το Etoys το οποίο είναι ένα ισχυρό περιβάλλον βασισµένο σε script προγραµµατισµό, το οποίο χρησιµοποιείται ως βοηθητικό στη µάθηση. Άλλα εκπαιδευτικά περιβάλλοντα είναι τα Small-land, Scratch, ComiKit. Το Scratch είναι ένα προγραµµατιζόµενο εργαλείο, το οποίο δίνει τη δυνατότητα στα παιδιά να δηµιουργήσουν τα δικά τους παιχνίδια, σχεδιοκίνηση και αλληλεπιδραστική τέχνη και να µοιραστούν τις δηµιουργίες τους µεταξύ τους µέσω του διαδικτύου. Βασίζεται στην παράδοση του Logo και του Lego/Logo αλλά χρησιµοποιεί καινούριες υπολογιστικές ιδέες προκειµένου να είναι ευκολότερο για τα παιδιά να ξεκινήσουν µε τον προγραµµατισµό και να επεκτείνουν αυτά που µπορούν να δηµιουργήσουν και να µάθουν. Το ComiKit είναι ένα εργαλείο για παιδιά το οποίο χρησιµοποιεί µια γλώσσα οπτικού προγραµµατισµού βασισµένη σε κόµικς. Με το ComiKit µπορεί κάποιος να δηµιουργήσει διαδραστικά παιχνίδια και ιστορίες µε κινούµενα σχέδια.

Εκτός από εκπαιδευτικές εφαρµογές, έχουν αναπτυχθεί και άλλου είδους εφαρµογές σε Squeak όπως διαδικτυακές εφαρµογές, καινοτόµα µέσα και διεπαφές και πολλές άλλες. Το Seaside είναι ένα πλαίσιο για την ανάπτυξη πολύπλοκων δυναµικών διαδικτυακών εφαρµογών. To Sophie είναι ένα συµβολικής γλώσσας εργαλείο ψηφιακών µέσων, το οποίο συνδυάζει εικόνες, κείµενο, βίντεο και ήχο σε ένα ενιαίο έγγραφο πολυµέσων όπως οι παρουσιάσεις, τα slides και τα σχολιασµένα βίντεο. Το Tweak είναι ένα περιβάλλον δηµιουργίας µέσων για τα παιδιά όλων των ηλικιών, είναι µια ενισχυµένη έκδοση του περιβάλλοντος Etoys. Είναι ένα Morphic που ξαναγίνεται από την αρχή, για να προσθέσει ευελιξία, ισχυρότερες αφαιρέσεις και σαφήνεια του κώδικα. To Monticello είναι ένα σύστηµα πακεταρίσµατος (packaging) για το Squeak. Το SqueakMap είναι ένας παγκόσµιος κατάλογος πακέτων που αναπτύχθηκαν σε Squeak. Το Magma είναι µια εφαρµογή µιας αντικειµενοστρεφούς βάσης δεδοµένων σε Smalltalk.

Page 33: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

33

4.3 Τι είναι το Squeak Etoys Το περιβάλλον Squeak Etoys έχει εγκατασταθεί στο λειτουργικό σύστηµα του OLPC

και είναι ιδιαίτερα εύχρηστο ακόµα και για παιδιά µικρής ηλικίας. Είναι ένα περιβάλλον για εκπαίδευση και τα παιδιά µπορούν εύκολα να το χρησιµοποιήσουν για να αναπτύξουν τις δικές τους εφαρµογές ή για να µάθουν µέσα από έτοιµες εφαρµογές. Το σύστηµα Etoys είναι διαθέσιµο στη Squeak και είναι γραµµένο σε Morphic. Οποιοδήποτε πρόγραµµα είναι γραµµένο σε Squeak µπορεί να τρέξει στο Etoys. Η έκδοση Etoys στη Squeak µπορεί να τρέξει µέσω ενός browser ή αυτόνοµη. Η διεπαφή χρήστη τροποποιείται ελαφρώς ούτως ώστε να γίνει πιο εύκολη, συγκριτικά µε τη διεπαφή του Squeak, για τον αρχάριο χρήστη.

Για τη δηµιουργία του Etoys αποτέλεσαν έµπνευση τα προϋπάρχοντα περιβάλλοντα Logo, PARC-Smalltalk, Hypercard και StarLogo. Η έκδοση του Etoys σχεδιάστηκε αρχικά για παιδιά ηλικίας µεταξύ 9 και 12 χρόνων, αλλά χρησιµοποιήθηκε µε επιτυχία και από παιδιά µικρότερης και µεγαλύτερης ηλικίας. Επίσης γίνεται µια προσπάθεια να δηµιουργηθεί ένα σύστηµα πολλαπλών διεπαφών χρήστη το οποίο θα ανταποκρίνεται αποτελεσµατικά στις ανάγκες των µικρότερων παιδιών, ιδιαιτέρως αυτών που δεν ξέρουν να διαβάζουν ακόµα, αλλά και στις προσδοκίες των µεγαλύτερων παιδιών τα οποία µπορούν να χειριστούν περισσότερες και πιο πολύπλοκες λειτουργίες.

Το Etoys διατίθεται δωρεάν µέσω του διαδικτύου και είναι συµβατό µε όλες τις πλατφόρµες. Επιπλέον είναι ανοικτού κώδικα λογισµικό, δηλαδή ο κώδικάς του είναι διαθέσιµος στον οποιοδήποτε θελήσει να τον δει, να τον τροποποιήσει ή να τον επεκτείνει. ∆ιατίθεται σε αρκετές χώρες και έχει µεταφραστεί σε πολλές γλώσσες όπως Γερµανικά, Γαλλικά, Ισπανικά, Ιαπωνικά κ.ά. Ανάλογο ενδιαφέρον έχει εκδηλωθεί και από εθελοντικές οµάδες στην Ελλάδα, οι οποίες εργάζονται όχι µόνο για τη µετάφραση του Etoys αλλά και γενικότερα για την ελληνοποίηση του OLPC.

4.4 Χαρακτηριστικά του Etoys Η εκπαιδευτική εφαρµογή Etoys βασίζεται στην παιδαγωγική θεωρία του

εποικοδοµισµού (constructivism), που θεωρεί ότι η γνώση δεν µεταδίδεται αλλά είναι προϊόν προσωπικής οικοδόµησης µέσω της αλληλεπίδρασης µε το περιβάλλον. Για το λόγο αυτό το Etoys δίνει τη δυνατότητα στα παιδιά να είναι δηµιουργικά, κατασκευάζοντας διαδραστικές εφαρµογές, µαθησιακά παιχνίδια και καλλιτεχνικές εργασίες, να δηµιουργούν εξοµοιώσεις, να βρίσκουν εύκολα στο διαδίκτυο έτοιµες εφαρµογές, να µοιράζουν τις δικές τους εφαρµογές στο διαδίκτυο ή στους φίλους τους.

Στο Etoys τα πάντα είναι αντικείµενα τα οποία προγραµµατίζονται µέσω των script που διαθέτουν να εκτελούν διάφορες λειτουργίες. Τα αντικείµενα πολυµεσικών εφαρµογών που παρέχονται είναι αρκετά και σε αυτά περιλαµβάνονται εργαλεία ζωγραφικής, δηµιουργία κειµένου, εικόνες (bmp, jpeg, gif, png), σχεδιοκίνηση, βίντεο (mpeg), ήχος (mp3), εγγραφή ήχου, σύνθεση ήχου, αναπαραγωγή αρχείων MIDI, ιστοσελίδες, 2D και 3D γραφικά, παρουσιάσεις κ.ά.

Το Etoys είναι ένα γραφικό περιβάλλον, φιλικό στον χρήστη, εύχρηστο και ευέλικτο και βοηθάει στον προγραµµατισµό των αντικειµένων που περιέχει. Παρακάτω θα περιγραφούν κάποια βασικά εργαλεία του Etoys καθώς επίσης και κάποιες από τις λειτουργίες του.

Καθώς ξεκινά το πρόγραµµα εµφανίζεται η αρχική εικόνα του περιβάλλοντος η οποία φαίνεται αµέσως παρακάτω. Ολόκληρο το λευκό παράθυρο ονοµάζεται ‘κόσµος’ (world) και πάνω σε αυτό θα λαµβάνουν µέρος όλες οι ενέργειες του χρήστη, δηλαδή ο προγραµµατισµός των αντικειµένων και γενικά όλα τα στάδια της δηµιουργίας των εφαρµογών του. Στο κάτω µέρος αριστερά κα δεξιά υπάρχουν 2 καρτέλες, οι Navigator και Supplies αντίστοιχα, όπου πατώντας µε απλό κλικ εµφανίζονται τα διάφορα εργαλεία που παρέχει το Etoys:

Page 34: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

34

Στις επόµενες εικόνες φαίνονται τα εργαλεία που βρίσκονται στις καρτέλες Navigator και

Supplies.

Εικόνα 9: Τα εργαλεία της καρτέλας Navigator

Εικόνα 8: Η αρχική εικόνα του περιβάλλοντος Etoys

Page 35: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

35

Εικόνα 10: Τα εργαλεία της καρτέλας Supplies

Page 36: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

36

5.ΕΦΑΡΜΟΓΕΣ ΣΤΗΝ ∆ΕΥΤΕΡΟΒΑΘΜΙΑ ΕΚΠΑΙ∆ΕΥΣΗ

5.1 Εισαγωγή Πηγή έµπνευσης για τις εκπαιδευτικές εφαρµογές που δηµιουργήθηκαν στην

πλατφόρµα Squeak Etoys, αποτέλεσε το βιβλίο «Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον» της Τεχνολογικής Κατεύθυνσης της Γ’ Λυκείου. Επιλέχθηκαν ορισµένα θέµατα από την ύλη του βιβλίου τα οποία κρίθηκαν κατάλληλα για οπτικοποίηση και διάδραση. Επίσης τα θέµατα που επιλέχθηκαν σίγουρα αποτελούν πρωτόγνωρες έννοιες για τους µαθητές, οι οποίες ίσως να είναι κάπως δύσκολες στην κατανόησή τους.

Σκοπός της δηµιουργίας αυτών των εφαρµογών στην πλατφόρµα Squeak Etoys, είναι να αντιληφθούν οι µαθητές µε οπτικό τρόπο τις έννοιες που τους παρουσιάζονται και να αλληλεπιδράσουν µε αυτές, ούτως ώστε να µπορέσουν να κατανοήσουν σε βάθος τη λειτουργία τους και να τις χρησιµοποιήσουν και οι ίδιοι.

Οι εφαρµογές που αναπτύχθηκαν είναι οι εξής: στοίβα, ουρά, µεταγλώττιση και σύνδεση προγράµµτος, το πρόβληµα του ταχυδρόµου, ταξινόµηση φυσσαλίδας, διάγραµµα ροής προγράµµατος, πίνακας.

5.2 Στοίβα Η στοίβα είναι µια δοµή δεδοµένων που περιγράφεται στη σελίδα 59 του βιβλίου

«Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον». Επιλέχθηκε να υλοποιηθεί στην πλατφόρµα Squeak Etoys διότι αποτελεί κατάλληλο παράδειγµα για οπτικοποίηση των λειτουργιών και των αντικειµένων της. Ο µαθητής µπορεί µε διαδραστικό τρόπο (µε χρήση κουµπιών) να γεµίσει και να αδειάσει τη στοίβα και έτσι να κατανοήσει ευκολότερα τον τρόπο λειτουργίας της.

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

Page 37: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

37

5.2.1Περιγραφή αρχικής οθόνης Στην αρχική οθόνη της εφαρµογής, Εικόνα 11, υπάρχουν τα τρία βασικά κουµπιά µε

τίτλους αρχικοποίηση,ώθηση στοιχείου και απώθηση στοιχείου. Πάνω από τα κουµπιά βλέπουµε τα αντικείµενα A,B,C,D τα οποία ο χρήστης θα εισάγει στη στοίβα. Με µπλε χρώµα δίπλα στα αντικείµενα βρίσκεται η δοµή στοίβας, µε τη µορφή ενός κατακόρυφου µονοδιάστατου πίνακα. Με κόκκινο χρώµα µέσα στη δοµή της στοίβας τοποθετήσαµε τον δείκτη κορυφής µε όνοµα “Top”. Στο γαλάζιο πλαίσιο πάνω αριστερά στην οθόνη εµφανίζεται η θεωρία που υλοποιείται σε κάθε στάδιο της εφαρµογής.

5.2.2 Πώς λειτουργεί η εφαρµογή

5.2.2.1 Αρχικοποίηση Για να ξεκινήσει ο χρήστης την εφαρµογή αρκεί να πατήσει το πλήκτρο αρχικοποίηση,

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

Εικόνα 11: Η αρχική οθόνη στην εφαρµογή της Στοίβας

Page 38: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

38

5.2.2.2 Ώθηση Στη συνέχεια ο χρήστης µπορεί να επιλέξει µόνο το πλήκτρο ώθηση στοιχείου, Εικόνα

12, εφόσον δεν υπάρχει κανένα αντικείµενο για απώθηση.Πατώντας το πλήκτρο ώθηση,τα αντικείµενα εισάγονται ένα ένα, από αριστερά προς τα δεξιά,µέσα στη στοίβα ενώ παράλληλα ο δείκτης “TOP” µετακινείται µια θέση επάνω, δείχνοντας και πάλι το στοιχείο της κορυφής. Μέχρι να εισαχθούν όλα τα στοιχεία στη στοίβα δεν εκτελείται καµιά απώθηση στοιχείου. ∆ηλαδή αν ο µαθητής πατήσει το πλήκτρο απώθηση δεν εκτελείται καµία ενέργεια. Θεωρήσαµε ότι για διδακτικούς σκοπούς θα ήταν καλύτερο πρώτα να ολοκληρωθεί η διαδικασία της ώθησης, έτσι ώστε να δει ο µαθητής πώς αλλάζει ο δείκτης και πώς τοποθετούνται τα αντικείµενα στη στοίβα και να έχει µια ξεκάθαρη ιδέα της διαδικασίας της ώθησης.Επιπλέον επειδή παράλληλα παρουσιάζεται σε ακολουθιακή µορφή και η σχετική θεωρία που εξηγεί σε κάθε βήµα ποιες κινήσεις υλοποιούνται δεν µπορούσαµε να δώσουµε πλήρη ελευθερία στο χρήστη να εκτελεί ώθηση και απώθηση ταυτόχρονα, γιατί κάτι τέτοιο δε θα επέτρεπε την ανάπτυξη κατά τη διαδικασία της µάθησης της λογικής ενότητας της ώθησης. Τέλος όταν όλα τα στοιχεία εισαχθούν στη στοίβα, αν ο χρήστης πατήσει ξανά ώθηση βγαίνει σχετικό µήνυµα που τον ενηµερώνει ότι όλα τα στοιχεία έχουν εισαχθεί στη στοίβα οπότε δεν υπάρχει άλλο στοιχείο για ώθηση.

Εικόνα 12: Η στοίβα µετά την εισαγωγή του πρώτου στοιχείου της

Εικόνα 13: Η στοίβα µετά από την εξαγωγή όλων των στοιχείων

Page 39: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

39

5.2.2.3 Απώθηση Εφόσον και τα 4 αντικείµενα A,B,C και D έχουν εισαχθεί στη στοίβα, έχει

ολοκληρωθεί η λογική ενότητα της ώθησης και µπορεί τώρα να ξεκινήσει η λογική ενότητα της απώθησης.Όπως και µε την ώθηση, κάθε φορά που το κουµπί απώθηση επιλέγεται, το αντικείµενο που βρίσκεται στην κορυφή τοποθετείται έξω από τη στοίβα, ο δεικτής “TOP” µειώνεται κατά ένα, έτσι ώστε να δείχνει το επόµενο στοιχείο που βρίσκεται στην κορυφή και παράλληλα εµφανίζεται η θεωρία που εξηγεί το κάθε βήµα. Μέχρι να εξαχθούν όλα τα στοιχεία από τη στοίβα, Εικόνα 13, το κουµπί ώθηση δεν είναι ενεργό, δηλαδή αν επιλεγεί δεν εκτελεί καµιά ενέργεια για τους ίδιους λόγους που αναλύσαµε πιο πάνω.

5.2.3 Πώς αναπτύχθηκε η εφαρµογή

5.2.3.1 Είδη αντικειµένων που χρησιµοποιήθηκαν Τα τρία κουµπιά που είναι υπεύθυνα για τη λειτουργία του προγράµµατος είναι

αντικείµενα τύπου Button, τα οποία επιλέξαµε από το µενού Supplies. Τα αντικείµενα A,B,C,D καθώς και ότι κείµενο παρουσιάζεται είναι τύπου ΤΕΧΤ και

δηµιουργείται από το µενού Supplies. Το βέλος είναι αντικείµενο τύπου Arrow, και πάλι από το αντικείµενο – µενού Object

Catalog επιλέγουµε Graphics και µετά Arrow. Όλα τα άλλα αντικείµενα είναι τύπου Rectangle η τύπου Round Rectangle, από το

βασικό µενού Supplies.

5.2.3.2 Button arxikopoihsh Για να δούµε τον κώδικα του αντικειµένου αυτού τύπου Button, πατάµε µια φορά κλικ

µε το µεσαίο πλήκτρο του ποντικιού και έπειτα επιλέγουµε τον Viewer. Τώρα βλέπουµε τις ιδιότητες του αντικειµένου αυτού, Εικόνα 15, ο κώδικας περιέχεται στο Button Script1 και µε ένα απλό σύρε και άφησε ανοίγει το σχετικό Script που περιέχει τις εντολές, Εικόνα 14. Με την ίδια τεχνική σύρε και άφησε έχουµε εισάγει µέσα σε αυτό το Script όλες τις ιδιότητες των αντικειµένων που µας ενδιαφέρουν και τους έχουµε δώσει τις κατάλληλες τιµές. ∆ηλαδή τα αντικείµενα A,B,C,D είναι τα Text23, Text24, Text25, Text26 και δίνονται οι κατάλληλες τιµές στα Χ,Υ των αντικειµένων έτσι ώστε να τοποθετηθούν στην επιθυµητή θέση. Επιπλέον το βέλος που δείχνει την κορυφή της στοίβας είναι το αντικείµενο Arrow2 και δίνεται και σε αυτό η τιµή του Χ προκειµένου να τοποθετηθεί στον πάτο της στοίβας.

Επιπλέον όλα τα αντικείµενα τύπου Text που εµφανίζονται στο γαλάζιο πλαίσιο εξηγώντας τη θεωρία κάθε βήµατος αποµακρύνονται από την οθόνη µε την εντολή Text Hide, που στην ουσία τα καθιστά µη ορατά. Το κείµενο που εµφανίζεται κάθε φορά που το Button arxikopoihsh επιλέγεται είναι το αντικείµενο Text1 και εµφανίζεται µε την εντολή Text1 show, που καθιστά ορατό το συγκεκριµένο αντικείµενο τύπου Text.

Τέλος κάθε φορά καθίστανται ορατά τα κουµπιά Button1 για ώθηση στοιχείου και Button3 για απώθηση στοιχείου.

Για να προγραµµατίσουµε το κουµπί έτσι ώστε να εκτελείται κάθε φορά που το επιλέγουµε µε το ποντίκι, επιλέγουµε µε αριστερό η δεξί κλικ πάνω στην επιλογή normal που εµφανίζεται δίπλα στο Button Script1. Στο µενού που εµφανίζεται µε τίτλο “When should this Script run” επιλέγουµε mouseDown.

Page 40: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

40

5.2.3.3 Button wthhsh stoixeiou Η λειτουργία της ώθησης εκτελείται από 4 αντικείµενα τύπου Button τα Button1,

Button2, Button5, Button7.Τα τέσσερα αυτά κουµπιά είναι ακριβώς ίδια στην εµφάνιση και βρίσκονται ακριβώς στο ίδιο σηµείο της οθόνης .Στην αρχή του προγράµµατος µόνο το Button1 είναι ορατό και άρα ενεργό. Κάθε κουµπί αφού εκτελεστεί καθιστά τον εαυτό του µη ορατό και καθιστά ορατό και ενεργό το επόµενο κουµπί.

Το κάθε Button εκτός από το Button1 περιέχει την ίδια οµάδα εντολών και είναι υπεύθυνο για την ώθηση ενός και µόνο ενός αντικειµένου στη στοίβα. Το Button1 ωθεί το αντικείµενο Α, Το Button2 ωθεί το αντικείµενο B, Το Button5 ωθεί το αντικείµενο C, Το Button7 ωθεί το αντικείµενο D.

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

Εικόνα 15: Οι ιδιότητες του Button arxikopoihsh

Εικόνα 14: Ο κώδικας που περιέχεται στο Button Script1, δεν παρατίθεται όλος ο κώδικας γιατί είναι αρκετά εκτενής.

Button1 Hide MoveA

Button2 Hide MoveB

Button5 Hide MoveC

Button7 Hide MoveD

Εικόνα 16: Ο µηχανισµός λειτουργίας του κουµπιού ώθηση

Page 41: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

41

Για να δούµε τον κώδικα αντικειµένου τύπου Button, επαναλαµβάνουµε ότι κάναµε και στο κουµπί αρχικοποίηση. Για παράδειγµα το Button2 περιέχει τις εντολές µε τη σειρά που εµφανίζονται, Εικόνα 17.

1)∆ινει τιµή 370 στην τεταγµένη Υ του αντικειµένου Text13, που είναι το κείµενο που συνοδεύει το βέλος 2-3)Η τετµηµένη του αντικειµένου Text24 που είναι το αντικείµενο B, γίνεται 538 και η τεταγµένη 332. 4)Η τεταγµένη του αντικειµένου Arrow2 που είναι το βέλος γίνεται 355. 5)Καθίσταται ορατό και άρα ενεργό το κουµπί Button5. 6)Το Text2 που είναι το κείµενο που περιείχε τη θεωρία κατά την ώθηση του αντικιµένου A καθίσταται µη ορατό. 7) Το Text22 που είναι το κείµενο που περιέχει τη θεωρία κατά την ώθηση του αντικιµένου B καθίσταται ορατό. 8) Το κουµπί Button2 δεν είναι πλέον ορατό, αυτό σηµαίνει ότι µόλις πατηθεί αυτό το κουµπί αµέσως καθιστά τον ίδιο του τον εαυτό µη ορατό.

Στο Button1 περιέχεται το ίδιο είδος εντολών όπως και στα άλλα κουµπιά, αλλά υπάρχει ένας επιπλέον έλεγχος για το πότε επιλέγεται το Button1, Εικόνα 18. Το Button1 είναι ορατό και ενεργό όταν η στοίβα είναι άδεια, όταν η στοίβα είναι γεµάτη ή όταν βρίσκεται σε κάποιο ενδιάµεσο στάδιο κατά την απώθηση των αντικειµενών από τη στοίβα. Στην ουσία όλο αυτό συµβαίνει γιατί µετά την τοποθέτηση και του τελευταίου αντικειµένου που είναι το D, εκτελείται το τελευταίο κουµπί δηλαδή το Button7, καθιστά τον εαυτό του µη ορατό και στη συνέχεια ξανακαθιστά ορατό το Button1 µέχρι να ξανααδειάσει η στοίβα.

Ο έλεγχος για την κατάσταση της στοίβας γίνεται µε βάση την τεταγµένη του βέλους, δηλαδή του αντικειµένου Arrow4.

Όταν η τεταγµένη του βέλους είναι 305 < 306, σηµαίνει ότι η στοίβα είναι άδεια και µπορεί να εκτελεστεί το περιεχόµενο του Button1.

Όταν η τεταγµένη του βέλους είναι 440 > 439, σηµαίνει ότι η στοίβα είναι γεµάτη και δεν µπορεί να εκτελεστεί το περιεχόµενο του Button1, αλλά εµφανίζεται το κείµενο που βρίσκεται στο αντικείµενο Text28 και ενηµερώνει τον χρήστη ότι δεν υπάρχει άλλο στοιχείο για ώθηση.

Σε κάθε άλλη θέση του βέλους κατά την απώθηση της στοίβας το Button1 είναι ορατό και ενεργό, αλλά δεν εκτελείται κάποια ενέργεια.

Εικόνα 17: Οι εντολές που περιέχονται στο Script1 του Button2

Page 42: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

42

5.2.3.4.Button apwthhsh stoixeiou Ο τρόπος που αναπτύσεται η λειτουργία της απώθησης είναι ακριβώς ίδιος µε αυτόν

της ώθησης, δηλαδή εκτελείται από 4 αντικείµενα τύπου Button τα Button3, Button4, Button6, Button8.Τα τέσσερα αυτά κουµπιά είναι ακριβώς ίδια στην εµφάνιση και βρίσκονται ακριβώς στο ίδιο σηµείο της οθόνης .Στην αρχή του προγράµµατος µόνο το Button3 είναι ορατό και άρα ενεργό. Κάθε κουµπί αφού εκτελεστεί καθιστά τον εαυτό του µη ορατό και καθιστά ορατό και ενεργό το επόµενο κουµπί.

Το κάθε Button εκτός από το Button1 περιέχει την ίδια οµάδα εντολών και είναι υπεύθυνο για την ώθηση ενός και µόνο ενός αντικειµένου στη στοίβα. Το Button3 απωθεί το αντικείµενο D, Το Button4 απωθεί το αντικείµενο C, Το Button6 απωθεί το αντικείµενο B, Το Button8 απωθεί το αντικείµενο A.

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

Εικόνα 18 : Οι εντολές που περιέχονται στο Script2 του Button1.

Page 43: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

43

Για να δούµε τον κώδικα αντικειµένου τύπου Button, επαναλαµβάνουµε ότι κάναµε και στο κουµπί αρχικοποίηση.

Επίσης και στο Button3 περιέχεται το ίδιο είδος εντολών όπως και στα άλλα κουµπιά, Εικόνα 20, αλλά υπάρχει ένας επιπλέον έλεγχος για το πότε επιλέγεται όπως µε το Button1. Το Button3 είναι ορατό και ενεργό όταν η στοίβα είναι άδεια, όταν η στοίβα είναι γεµάτη ή όταν βρίσκεται σε κάποιο ενδιάµεσο στάδιο κατά την ώθηση των αντικειµενών στη στοίβα. Στην ουσία όλο αυτό συµβαίνει γιατί µετά την απώθηση και του τελευταίου αντικειµένου που είναι το A, εκτελείται το τελευταίο κουµπί δηλαδή το Button8, καθιστά τον εαυτό του µη ορατό και στη συνέχεια ξανακαθιστά ορατό το Button3 µέχρι να ξαναγεµίσει η στοίβα.

Ο έλεγχος για την κατάσταση της στοίβας γίνεται και σε αυτή την περίπτωση µε βάση την τεταγµένη του βέλους, δηλαδή του αντικειµένου Arrow4.

Όταν η τεταγµένη του βέλους είναι 440 > 439, σηµαίνει ότι η στοίβα είναι γεµάτη και µπορεί να εκτελεστεί το περιεχόµενο του Button3.

Όταν η τεταγµένη του βέλους είναι 305 < 306, σηµαίνει ότι η στοίβα είναι άδεια και δεν µπορεί να εκτελεστεί το περιεχόµενο του Button3, αλλά εµφανίζεται το κείµενο που βρίσκεται στο αντικείµενο Text28 και ενηµερώνει τον χρήστη ότι δεν υπάρχει άλλο στοιχείο για ώθηση

Σε κάθε άλλη θέση του βέλους κατά την ώθηση των αντικειµένων στη στοίβα το Button3 είναι ορατό και ενεργό, αλλά δεν εκτελείται κάποια ενέργεια.

Button3 Hide MoveD

Button4 Hide MoveC

Button6 Hide MoveB

Button8 Hide MoveA

Εικόνα 19: Ο µηχανισµός λειτουργίας του κουµπιού απώθηση.

Εικόνα 20 : Οι εντολές που περιέχονται στο Script1 του Button3.

Page 44: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

44

5.3 Ουρά Όπως η στοίβα έτσι και η ουρά είναι µια δοµή δεδοµένων που περιγράφεται στη

σελίδα 60 του βιβλίου «Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον». Επιλέχθηκε να αναπτυχθεί στην πλατφόρµα Squeak Etoys επειδή αποτελεί και αυτή µια κατάλληλη δοµή για οπτικοποίηση των στοιχείων και των λειτουργιών της και επίσης προσφέρει διάδραση µε το χρήστη.

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

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

5.3.1 Περιγραφή αρχικής οθόνης Στην αρχική οθόνη της εφαρµογής, Εικόνα 21, υπάρχουν τα τρία βασικά κουµπιά µε

τίτλους αρχικοποίηση,εισαγωγή στοιχείου και εξαγωγή στοιχείου. Πάνω από τα κουµπιά βλέπουµε τα αντικείµενα 8,4,7,12,5 µε τη µορφή τετράγωνων πολύχρωµων κύβων, τα οποία ο χρήστης θα εισάγει στην ουρά. Με καφέ χρώµα πάνω από τα αντικείµενα βρίσκεται η δοµή της ουράς, µε τη µορφή ενός οριζόντιου µονοδιάστατου πίνακα. Με κόκκινο χρώµα πάνω από τη δοµή της ουράς τοποθετήσαµε τον δείκτη εξαγωγής µε όνοµα “Front”. Με µαύρο χρώµα κάτω από τη δοµή της ουράς τοποθετήσαµε τον δείκτη εισαγωγής µε όνοµα “Rear”. Στο πράσσινο πλαίσιο πάνω δεξιά στην οθόνη εµφανίζεται η θεωρία που υλοποιείται σε κάθε στάδιο της εφαρµογής.

Εικόνα 21 : Η αρχική οθόνη στην εφαρµογή της Ουράς.

Page 45: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

45

5.3.2 Πώς λειτουργεί η εφαρµογή

5.3.2.1 Αρχικοποίηση Για να ξεκινήσει ο χρήστης την εφαρµογή αρκεί να πατήσει το πλήκτρο αρχικοποίηση,

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

5.3.2.2 Εισαγωγή Στη συνέχεια ο χρήστης πρέπει να επιλέξει το πλήκτρο εισαγωγή στοιχείου, για να

ξεκινήσει την εισαγωγή των στοιχείων εφόσον δεν υπάρχει κανένα αντικείµενο για εξαγωγή, Εικόνα 22. Πατώντας το πλήκτρο εισαγωγή,τα αντικείµενα εισάγονται ένα ένα, από δεξιά προς τα αριστερά,µέσα στην ουρά ενώ παράλληλα ο δείκτης εισαγωγής “Rear” µετακινείται µια θέση δεξιά, και δείχνει το στοιχείο που εισάχθηκε τελευταίο. Ο δείκτης εξαγωγής παραµένει σταθερός κατά τη διάρκεια της εισαγωγής και δείχνει το στοιχείο που εισαγάγαµε πρώτο δηλαδή το 5. Μέχρι να εισαχθούν όλα τα στοιχεία στην ουρά δεν εκτελείται καµιά εξαγωγή στοιχείου. ∆ηλαδή αν ο µαθητής πατήσει το πλήκτρο εξαγωγή στοιχείου δεν εκτελείται καµιά ενέργεια. Θεωρήσαµε ότι για διδακτικούς σκοπούς θα ήταν καλύτερο πρώτα να ολοκληρωθεί η διαδικασία της εισαγωγής όλων των στοιχείων στην ουρά, έτσι ώστε να δει ο µαθητής πώς αλλάζει ο δείκτης εισαγωγής και πώς τοποθετούνται τα αντικείµενα στην ουρά και να έχει µια ξεκάθαρη ιδέα της διαδικασίας της εισαγωγής.Επιπλέον επειδή παράλληλα παρουσιάζεται σε ακολουθιακή µορφή και η σχετική θεωρία που εξηγεί σε κάθε βήµα ποιες κινήσεις υλοποιούνται δεν µπορούσαµε να δώσουµε πλήρη ελευθερία στο χρήστη να εκτελεί εισαγωγή και εξαγωγή ταυτόχρονα, γιατί κάτι τέτοιο δε θα επέτρεπε την ανάπτυξη κατά τη διαδικασία της µάθησης της λογικής ενότητας της εισαγωγής. Τέλος όταν όλα τα στοιχεία εισαχθούν στην ουρά, αν ο χρήστης πατήσει ξανά εισαγωγή στοιχείου βγαίνει σχετικό µήνυµα που τον ενηµερώνει ότι όλα τα στοιχεία έχουν εισαχθεί στην ουρά οπότε δεν υπάρχει άλλο στοιχείο για εισαγωγή στην ουρά.

5.3.2.3 Εξαγωγή στοιχείου Εφόσον και τα πέντε αντικείµενα 5,12,7,4 και 8 έχουν εισαχθεί στην ουρά, έχει

ολοκληρωθεί η λογική ενότητα της εισαγωγής στοιχείου και µπορεί τώρα να ξεκινήσει η λογική ενότητα της εξαγωγής στοιχείου. Με κάθε επιλογή του κουµπιού εισαγωγή στοιχείου, το αντικείµενο που βρίσκεται στην αρχή της ουράς, δηλαδή προηγείται από αριστερά προς τα δεξιά εξάγεται από την ουρά, ο δεικτής “Front” αυξάνεται κατά ένα, έτσι ώστε να δείχνει το

Εικόνα 22 : Η οθόνη της εφαρµογής µετά την εισαγωγή του αντικειµένου µε τιµή 5

Page 46: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

46

επόµενο στοιχείο που είναι πρώτο στην ουρά ενώ παράλληλα εµφανίζεται η θεωρία που εξηγεί το κάθε βήµα, Εικόνα 23. Μέχρι να εξαχθούν όλα τα στοιχεία από την ουρά, το κουµπί εισαγωγή στοιχείου αν επιλεγεί δεν εκτελεί καµιά ενέργεια για τους ίδιους λόγους που αναλύσαµε πιο πάνω.

5.3.3 Πώς αναπτύχθηκε η εφαρµογή

5.3.3.1 Είδη αντικειµένων που χρησιµοποιήθηκαν Τα τρία κουµπιά που είναι υπεύθυνα για τη λειτουργία του προγράµµατος είναι

αντικείµενα τύπου Button, τα οποία επιλέξαµε από το µενού Supplies. Τα αντικείµενα 5,12,7,4 και 8 είναι τύπου ΤΕΧΤ(Border) και δηµιουργείται ως εξής,

από το µενού Supplies, επιλέγουµε µε την τεχνική σύρε και άφησε το αντικείµενο - µενού Object Catalog, έπειτα επιλέγουµε την κατηγορία Text και στη συνέχεια το αντικείµεο Text( Border) πάλι µε την τεχνική σύρε κι άφησε.

Ότι κείµενο παρουσιάζεται καθώς, οι αριθµοί των κελιών του οριζόντιου πίνακα καθώς και το κείµενο στο πράσσινο πλαίσιο που περιέχει τη θεωρία του κάθε βήµατος είναι αντικείµενα τύπου Text τα οποία επιλέξαµε από το µενού Supplies.

Τα βέλη είναι αντικείµενα τύπου Arrow, και πάλι από το αντικείµενο – µενού Object Catalog επιλέγουµε Graphics και µετά Arrow.

Όλα τα άλλα αντικείµενα είναι τύπου Rectangle η τύπου Round Rectangle, από το βασικό µενού Supplies.

5.3.3.2 Button arxikopoihsh Για να δούµε τον κώδικα του αντικειµένου αυτού τύπου Button, πατάµε µια φορά κλικ

µε το µεσαίο πλήκτρο του ποντικιού και έπειτα επιλέγουµε τον Viewer, Εικόνα 24. Τώρα βλέπουµε τις ιδιότητες του αντικειµένου αυτού, ο κώδικας περιέχεται στο Button Script1 και µε ένα απλό σύρε και άφησε ανοίγει το σχετικό Script που περιέχει τις εντολές, Εικόνα 25. Με την ίδια τεχνική σύρε και άφησε έχουµε εισάγει µέσα σε αυτό το Script όλες τις ιδιότητες των αντικειµένων που µας ενδιαφέρουν και τους έχουµε δώσει τις κατάλληλες τιµές.

∆ηλαδή τα αντικείµενα 8,4,7,12,5 είναι τα Text(border)2, Text(border)1, Text(border), Text(border)11 και Text(border)15 δίνονται οι κατάλληλες τιµές στα Χ,Υ των αντικειµένων έτσι ώστε να τοποθετηθούν στην επιθυµητή θέση. Επιπλέον ο δείκτης εισαγωγής στοιχείου είναι το αντικείµενο Arrow2 ενώ το βέλος εξαγωγής στοιχείου είναι το αντικείµενο Arrow3 και δίνεται και στα δυο αντικείµενα η κατάλληλη τιµή του Χ προκειµένου να τοποθετηθούν στο σηµείο όπου θα ξεκινήσει η εισαγωγή των στοιχείων δηλαδή στη θέση 4 του οριζόντιου πίνακα.

Εικόνα 23 : Η οθόνη της εφαρµογής κατά την εξαγωγή του πρώτου στοιχείου, δηλαδή κατά την εξαγωγή του αντικειµένου µε τιµή 5.

Page 47: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

47

Επιπλέον όλα τα αντικείµενα τύπου Text που εµφανίζονται στο πράσσινο πλαίσιο εξηγώντας τη θεωρία κάθε βήµατος αποµακρύνονται από την οθόνη µε την εντολή Text Hide, που στην ουσία τα καθιστά µη ορατά. Το κείµενο που εµφανίζεται κάθε φορά που το Button arxikopoihsh επιλέγεται είναι το αντικείµενο Text1 και εµφανίζεται µε την εντολή Text2 show, που καθιστά ορατό το συγκεκριµένο αντικείµενο τύπου Text.

Τέλος κάθε φορά καθίστανται ορατά τα κουµπιά Button1 για εισαγωγή στοιχείου και Button3 για εξαγωγή στοιχείου. Ακόµη αποκρύπτονται όλα τα άλλα Button γιατί στην ουσία τα κουµπιά δεν είναι µόνο δύο, αλλά υπάρχουν πέντε κουµπιά για την εισαγωγή των στοιχείων και πέντε κουµπιά για την εξαγωγή των στοιχείων. Κάθε κουµπί είναι υπεύθυνο για την εισαγωγή ενός στοιχείου ή την εξαγωγή ενός στοιχείου. Επειδή ο χρήστης µπορεί να εγκαταλήψει την εφαρµογή σε όποιο στάδιο θέλει και µετά να επιλέξει αρχικοποίηση, το κουµπί αρχικοποίηση θέτει πάντα µόνο τα δυο αρχικά Button ορατά.

Για να προγραµµατίσουµε το κουµπί έτσι ώστε να εκτελείται κάθε φορά που το επιλέγουµε µε το ποντίκι, επιλέγουµε µε αριστερό η δεξί κλικ πάνω στην επιλογή normal που εµφανίζεται δίπλα στο Button Script1. Στο µενού που εµφανίζεται µε τίτλο “When should this Script run” επιλέγουµε mouseDown.

Εικόνα 24 : Οι εντολές του Button arxikopoihsh .

Εικόνα 25 : Οι ιδιότητες του αντικειµένου Button arxikopoihsh

Page 48: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

48

5.3.3.3 Button eisagwgh stoixeiou Η εισαγωγή στοιχείου εκτελείται από πέντε αντικείµενα τύπου Button τα Button1,

Button2, Button5, Button7 και Button9.Τα κουµπιά αυτά είναι ακριβώς ίδια στην εµφάνιση και βρίσκονται ακριβώς στο ίδιο σηµείο της οθόνης .Στην αρχή του προγράµµατος µόνο το Button1 είναι ορατό και άρα ενεργό. Κάθε κουµπί αφού εκτελεστεί καθιστά τον εαυτό του µη ορατό και καθιστά ορατό και ενεργό το επόµενο κουµπί.

Το κάθε Button εκτός από το Button1 περιέχει την ίδια οµάδα εντολών και είναι υπεύθυνο για την εισαγωγή ενός και µόνο ενός αντικειµένου στην ουρά. Το Button1 εισάγει το αντικείµενο 5, Το Button2 εισάγει το αντικείµενο 12, Το Button5 εισάγει το αντικείµενο 7, Το Button7 εισάγει το αντικείµενο 4, Το Button9 εισάγει το αντικείµενο 8.

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

Για να δούµε τον κώδικα αντικειµένου τύπου Button, επαναλαµβάνουµε ότι κάναµε και στο κουµπί αρχικοποίηση.

Για παράδειγµα το Button2 περιέχει τις εντολές µε τη σειρά που εµφανίζονται, Εικόνα 26.

1) Το κουµπί Button5 καθίσταται ορατό, ενώ µε την επόµενη εντολή το Button2 καθιστά τον εαυτό του µη ορατό. Αυτό σηµαίνει ότι µόλις πατηθεί αυτό το κουµπί αµέσως καθιστά τον ίδιο του τον εαυτό µη ορατό. 2)Το Text2 που είναι το κείµενο που περιείχε τη θεωρία κατά την εισαγωγή του αντικιµένου 5 καθίσταται µη ορατό. 3)Η εντολή Text(border)13 καθιστά µη ορατό το κείµενο που εµφανίζεται σε περίπτωση που ο χρήστης έχει εξάγει όλα τα στοιχεία από την ουρά και επιλέγει ξανά εξαγωγή στοιχείου, οπότε βγαίνει ένα κείµενο που τον ενηµερώνει ότι δεν υπάρχει άλλο στοιχείο για εξαγωγή. 4) Το Text3 που είναι το κείµενο που περιέχει τη θεωρία κατά την εισαγωγή του αντικειµένου 12 καθίσταται ορατό. 5-6)∆ινει τιµή 461 στην τεταγµένη Χ και 531 στην τετµηµένη Υ του αντικειµένου Text(border)11, που είναι το αντικείµενο 12. 7-8)Οι δείκτες εισαγωγής και εξαγωγής καθίστανται ορατοί, οι εντολές αυτές µπορούν και να παραληφθούν.

Εικόνα 26 : Οι εντολές που περιέχονται στο Button2

Page 49: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

49

9)Η τεταγµένη του αντικειµένου Arrow3 που είναι το βέλος εισαγωγής γίνεται 445. Στο Button1 περιέχεται το ίδιο είδος εντολών όπως και στα άλλα κουµπιά, αλλά

υπάρχει ένας επιπλέον έλεγχος για το πότε επιλέγεται το Button1. Το Button1 είναι ορατό και ενεργό όταν η ουρά είναι άδεια, όταν η ουρά είναι γεµάτη ή όταν βρίσκεται σε κάποιο ενδιάµεσο στάδιο κατά την εξαγωγή των αντικειµενών από την ουρά. Στην ουσία όλο αυτό συµβαίνει γιατί µετά την τοποθέτηση και του τελευταίου αντικειµένου που είναι το 8, εκτελείται το τελευταίο κουµπί δηλαδή το Button9, καθιστά τον εαυτό του µη ορατό και στη συνέχεια ξανακαθιστά ορατό το Button1 µέχρι να ξανααδειάσει η ουρά.

Ο έλεγχος για την κατάσταση της ουράς γίνεται µε βάση την τεταγµένη του δείκτη εισαγωγής, δηλαδή του αντικειµένου Arrow3. Όταν η τεταγµένη του βέλους είναι < 390, σηµαίνει ότι η ουρά είναι άδεια και µπορεί να εκτελεστεί το περιεχόµενο του Button1.

Όταν η τεταγµένη του βέλους είναι 620 > 619, σηµαίνει ότι η ουρά είναι γεµάτη και δεν µπορεί να εκτελεστεί το περιεχόµενο του Button1, αλλά εµφανίζεται το κείµενο που βρίσκεται στο αντικείµενο Text(border)12 και ενηµερώνει τον χρήστη ότι δεν υπάρχει άλλο στοιχείο για εισαγωγή.

Σε κάθε άλλη θέση του δείκτη εισαγωγής κατά την εξαγωγή στοιχείου από την ουρά το Button1 είναι ορατό και ενεργό, αλλά δεν εκτελείται κάποια ενέργεια. Button exagwgh stoixeiou:

Ο τρόπος που αναπτύσεται η λειτουργία της εξαγωγής στοιχείου είναι ακριβώς ίδιος µε αυτόν της εισαγωγής στοιχείου και υλοποιείται από τα αντικείµενα τύπου Button τα Button3, Button4, Button6, Button8 και Button10.Τα τέσσερα αυτά κουµπιά είναι ακριβώς ίδια στην εµφάνιση και βρίσκονται ακριβώς στο ίδιο σηµείο της οθόνης .Στην αρχή του προγράµµατος µόνο το Button3 είναι ορατό και άρα ενεργό. Κάθε κουµπί αφού εκτελεστεί καθιστά τον εαυτό του µη ορατό και καθιστά ορατό και ενεργό το επόµενο κουµπί. Το κάθε Button εκτός από το Button1 περιέχει την ίδια οµάδα εντολών και είναι υπεύθυνο για την εισαγωγή ενός και µόνο ενός αντικειµένου στην ουρά. Το Button3 εξάγει το αντικείµενο 5, Το Button4 εξάγει το αντικείµενο 12, Το Button6 εξάγει το αντικείµενο 7, Το Button8 εξάγει το αντικείµενο 4, Το Button10 εξάγει το αντικείµενο 8.

Κάθε κουµπί περιέχει εντολές για την µετακίνηση του αντικειµένου,για την εµφάνιση του αντίστοιχου κειµένου της θεωρίας καθώς και την απόκρυψη του προηγούµενου κειµένου, για την µετακίνηση του δείκτη εξαγωγής καθώς και του κειµένου που το συνοδεύει και τέλος αφού πατηθεί το κουµπί περιέχει εντολή για την απόκρυψή του και την εµφάνιση του κουµπιού που είναι υπεύθυνο για τη µετακίνηση του επόµενου αντικειµένου. Για να δούµε τον κώδικα αντικειµένου τύπου Button, επαναλαµβάνουµε ότι κάναµε και στο κουµπί αρχικοποίηση.

Επίσης και στο Button3 περιέχεται το ίδιο είδος εντολών όπως και στα άλλα κουµπιά, αλλά υπάρχει ένας επιπλέον έλεγχος για το πότε επιλέγεται όπως µε το Button1. Το Button3 είναι ορατό και ενεργό όταν η ουρά είναι άδεια, όταν η ουρά είναι γεµάτη ή όταν βρίσκεται σε κάποιο ενδιάµεσο στάδιο κατά την εισαγωγή των αντικειµενών στην ουρά. Στην ουσία όλο αυτό συµβαίνει γιατί µετά την εξαγωγή και του τελευταίου αντικειµένου που είναι το 8, εκτελείται το τελευταίο κουµπί δηλαδή το Button10, καθιστά τον εαυτό του µη ορατό και στη συνέχεια ξανακαθιστά ορατό το Button3 µέχρι να ξαναγεµίσει η ουρά.

Ο έλεγχος για την κατάσταση της ουράς γίνεται σε αυτή την περίπτωση µε βάση την τεταγµένη των δεικτών εισαγωγής και εξαγωγής, δηλαδή των αντικειµένων Arrow2 και Arrow3.

Όταν η τεταγµένη του δείκτη εισαγωγής είναι > 619 και ο δείκτης εξαγωγής είναι < 375, σηµαίνει ότι η ουρά είναι γεµάτη και µπορεί να εκτελεστεί το περιεχόµενο του Button3. Όταν η τεταγµένη του δείκτη εξαγωγής είναι > 634, σηµαίνει ότι η ουρά είναι άδεια και δεν µπορεί να εκτελεστεί το περιεχόµενο του Button3, αλλά εµφανίζεται το κείµενο που βρίσκεται στο αντικείµενο Text(border)13 και ενηµερώνει τον χρήστη ότι δεν υπάρχει άλλο στοιχείο για εξαγωγή.

Σε κάθε άλλη θέση κατά την εισαγωγή στοιχείων στην ουρά το Button3 είναι ορατό και ενεργό, αλλά δεν εκτελείται κάποια ενέργεια.

Page 50: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

50

5.4 Μεταγλώττιση και σύνδεση προγράµµατος Η διαδικασία της µεταγλώττισης και της σύνδεσης του προγράµµατος παρουσιάζεται

στη σελίδα 137 του βιβλίου «Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον». Επιλέξαµε να αναπτύξουµε αυτή την εφαρµογή για να δείξουµε στο µαθητή την πορεία που ακολουθεί το πρόγραµµα, από τη συγγραφή του πηγαίου κώδικα, τη µεταγλώττιση, τη σύνδεση και τέλος τη δηµιουργία του εκτελέσιµου προγράµµατος. Όλες αυτές οι φάσεις του προγράµµατος ενδείκνυται για οπτικοποίηση ούτως ώστε να κατανοήσει ο µαθητής από ποια στάδια περνά το πρόγραµµα µέχρι να πάρει την τελική του µορφή.

Στην ενότητα αυτή περιγράφεται η διαδικασία µετατροπής µιας γλώσσας προγραµµατισµού σε έντολες γλώσσας µηχανής. Έτσι περιγράφεται η συνολική διαδικασία της µεταγλώττισης και σύνδεσης, και αναπτύσσονται οι έννοιες του Μεταγλωττιστή, του ∆ιερµηνευτή, του Αρχικού, Τελικού και Εκτελέσιµου προγράµµατος καθώς και του Συνδέτη. Επιπλέον στο Σχ. 6.5 Μεταγλώττιση και Σύνδεση προγράµµατος παρουσιάζονται τα στάδια της Μεταγλώττισης και της Σύνδεσης µε τη σειρά. Σύµφωνα µε αυτήν την θεωρία και το Σχήµα 6.5 αναπτύξαµε την εφαρµογή που ακολουθεί.

5.4.1 Περιγραφή αρχικής οθόνης Στην αρχική οθόνη της εφαρµογής υπάρχουν τα τρία βασικά κουµπιά µε τίτλους

αρχικοποίηση, έλεγχος και σωστή απάντηση, Εικόνα 27. Πάνω από τα κουµπιά βλέπουµε την περιοχή στην οποία ο χρήστης πρέπει να τοποθετήσει µε την τεχνική σύρε κι άφησε τις έννοιες Μεταγλωττιστής, Αρχικό πρόγραµµα, Συνδέτης, Εκτελέσιµο πρόγραµµα, Τελικό πρόγραµµα που βρίσκονται στο κάτω µέρος της οθόνης. Με λαχανί χρώµα στο µέσο της οθόνης βλεπουµε το εισαγωγικό κείµενο για τη χρήση της εφαρµογής.

Εικόνα 27: Μεταγλώττιση και σύνδεση προγράµµατος αρχική οθόνη εφαρµογής

Page 51: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

51

5.4.2 Πώς λειτουργεί η εφαρµογή

5.4.2.1 Αρχικοποίηση Για να ξεκινήσει ο χρήστης την εφαρµογή αρκεί να πατήσει το πλήκτρο αρχικοποίηση,

έτσι ώστε οι έννοιες να τοποθετηθούν στην αρχική τους θέση, δηλαδή κάτω δεξιά στην οθόνη. Αν δεν πατήσει αρχικοποίηση τότε οι έννοιες δε θα τοποθετηθούν κάτω δεξιά, θα παραµείνουν όµως εκεί που βρίσκονται χωρίς αυτό να εµποδίζει την κανονική λειτουργιά της εφαρµογής. Για να µετακινήσει τις έννοιες ο χρήστης, αρκεί να εφαρµόσει την τεχνική σύρε κι άφησε από το πράσσινο ή το κίτρινο χρώµα της περιοχής κι όχι από το κείµενο των εννοιών.

5.4.2.2 Έλεγχος Με το κουµπί έλεγχος, αφού ο χρήστης τοποθετήσει τις «έννοιες» πάνω στους

αντίστοιχους αριθµούς µε τη σειρά που θεωρεί ότι είναι η σωστή, γίνεται ο έλεγχος για την τοποθέτηση των εννοιών στη σωστή σειρά. Για κάθε έννοια εµφανίζεται το αποτέλεσµα της τοποθέτησης, Εικόνα 28.

5.4.2.3 Σωστή απάντηση Πατώντας το κουµπί σωστή απάντηση οι «έννοιες» της Μεταγλώττισης και της

Σύνδεσης τοποθετούνται στη σωστή τους θέση σε περίπτωση που ο χρήστης θέλει να δει τις απαντήσεις.

5.4.3 Πώς αναπτύχθηκε η εφαρµογή

5.4.3.1 Είδη αντικειµένων που χρησιµοποιήθηκαν Τα τρία κουµπιά που είναι υπεύθυνα για τη λειτουργία του προγράµµατος είναι

αντικείµενα τύπου Button, τα οποία επιλέξαµε από το µενού Supplies. Ότι κείµενο παρουσιάζεται είναι τύπου ΤΕΧΤ(Border) και δηµιουργείται ως εξής, από το µενού Supplies, επιλέγουµε µε την τεχνική σύρε και άφησε το αντικείµενο - µενού Object Catalog, έπειτα επιλέγουµε την κατηγορία Text και στη συνέχεια το αντικείµεο Text( Border) πάλι µε την τεχνική σύρε κι άφησε.

Οι έννοιες είναι αντικείµενα τύπου Sketch, τα οποία ζωγραφίσαµε από την επιλογή ζωγραφικής της Squeak. Επιλέξαµε µε µεσαίο κλικ από το µενού World την επιλογή Desktop menu στη συνέχεια new morph και τέλος make new drawing από το µενού Add a new morph. Έπειτα ζωγραφίσαµε ένα ορθογώνιο στις διαστάσεις που επιθυµούµε και επιλέξαµε Keep. Τέλος δηµιουργούµε ένα αντικείµενο τύπου Text και από το µενού επιλέγουµε embed in Sketch έτσι ώστε όταν µετακινείται το Sκetch να µετακινείται και το Text. Όλα τα άλλα αντικείµενα είναι τύπου Rectangle η τύπου Round Rectangle, από το βασικό µενού Supplies.

Tα βέλη είναι εικόνες jpg, τις οποίες εισαγάγαµε στην εφαρµογή και τις αναγνωρίζει ως Sketch. H εισαγωγή έγινε ως εξής: από το µενού Navigator, επιλέξαµε find έχοντας πατηµένο το αριστερό πλήκτρο του ποντικιού συνέχεια, από το µενού Find options επιλέξαµε find any file, στη συνέχεια µε κλικ επιλέξαµε το αρχείο images.jpg και µετά open.

Εικόνα 28: Τα αποτελέσµατα του ελέγχου όταν οι « έννοιες» είναι στην αρχική τους θέση

Page 52: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

52

Στα αντικείµενα της οθόνης που δεν πρέπει να µετακινούνται επιλέξαµε από το menu του αντικειµένου resist being deleted, resist being picked up, be locked. Με αυτές τις εντολές επιλεγµένες δεν µπορεί κάποιος να σβήσει, να µετακινήσει ή να αλλάξει τα αντικείµενα.

5.4.3.2 Button arxikopoihsh Για να δούµε τον κώδικα του αντικειµένου αυτού τύπου Button, πατάµε µια φορά κλικ

µε το µεσαίο πλήκτρο του ποντικιού και έπειτα επιλέγουµε τον Viewer, Εικόνα 29. Τώρα βλέπουµε τις ιδιότητες του αντικειµένου αυτού, ο κώδικας περιέχεται στο Button Script4 και µε ένα απλό σύρε και άφησε ανοίγει το σχετικό Script που περιέχει τις εντολές, Εικόνα 30.

Με την ίδια τεχνική σύρε και άφησε έχουµε εισάγει µέσα σε αυτό το Script όλες τις ιδιότητες των αντικειµένων που µας ενδιαφέρουν και τους έχουµε δώσει τις κατάλληλες τιµές στα Χ,Υ των αντικειµένων έτσι ώστε να τοποθετηθούν στην επιθυµητή θέση.

Επιπλέον όλα τα αντικείµενα τύπου Text που εµφανίζονται στο λαχανί πλαίσιο, ενηµερώνοντας αν η κάθε «έννοια» έχει τοποθετηθεί σωστά, αποµακρύνονται από την οθόνη µε την εντολή Text Hide, που στην ουσία τα καθιστά µη ορατά.

Το εισαγωγικό κείµενο που εµφανίζεται κάθε φορά που το Button arxikopoihsh επιλέγεται είναι το αντικείµενο Text και ενεργοποιείται µε την εντολή Text show, που καθιστά ορατό το συγκεκριµένο αντικείµενο τύπου Text.

Για να προγραµµατίσουµε το κουµπί έτσι ώστε να εκτελείται κάθε φορά που το επιλέγουµε µε το ποντίκι, επιλέγουµε µε αριστερό η δεξί κλικ πάνω στην επιλογή normal που εµφανίζεται δίπλα στο Button Script4. Στο µενού που εµφανίζεται µε τίτλο “When should this Script run” επιλέγουµε mouseDown.

Τα υπόλοιπα script είναι βοηθητικά και δεν εκτελούνται.Τα Script2, Script3 περιέχουν εντολές για να εµφανιστούν τα βοηθητικά Rectangles που χρησιµοποιούνται στη λειτουργία του ελέγχου που περιγράφεται παρακάτω.

Εικόνα 30: Ο πηγαίος κώδικας από το κουµπί αρχικοποιήση

Εικόνα 29: Οι ιδιότητες του κουµπιού αρχικοποίηση

Page 53: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

53

5.4.3.3 Button elegxos Στο Button1Script1 περιέχεται ο κώδικας που ελέγχει αν η κάθε έννοια έχει

τοποθετηθεί στη σωστή θέση, Εικόνα 32. Έξω από κάθε ορθογώνιο υπάρχει ένα άλλο ορθογώνιο το οποίο δεν φαίνεται. Εκτός κι αν εκτελεστεί το script2 από το Button arxikopoihsh οπότε θα δούµε τα ορθογώνια που περιβάλλουν τα ορθογώνια µε τους αριθµούς. Χρησιµοποιούµε τις ιδιότητες top, bottom, left, right των έξω ορθογονίων για να βρούµε τις συντεταγµένες που ορίζουν την περιοχή µέσα στην οποία η κάθε «έννοια» θεωρείται ότι έχει τοποθετηθεί σωστά, Εικόνα 31.

Στο κουµπί «έλεγχος» περιέχεται ο κώδικας, στον οποίο παίρνουµε την τεταγµένη και την τετµηµένη της κάθε έννοιας για παράδειγµα, της έννοιας «Αρχικό πρόγραµµα» που είναι το αντικείµενο Sketch4 και ελέγχουµε αν βρίσκεται µέσα στο σωστό ορθογώνιο. Θεωρούµε ότι βρίσκεται στο σωστό ορθογώνιο όταν βρίσκεται στο εντός των µεγάλων ορθογωνίων έτσι ώστε να υπάρχει ένα περιθώριο 25 µονάδων αριστερά, δεξιά, πάνω, κάτω σε περίπτωση που το αντικείµενο δεν τοποθετηθεί ακριβώς στη θέση του. Σε κάθε περίπτωση, τυπώνεται για το κάθε αντικείµενο το αντίστοιχο κείµενο που ενηµερώνει τον χρήστη ότι τοποθετήθηκε σωστά ή όχι και αυτό φαίνεται στον κώδικα µε τις αντίστοιχες εντολές hide και show των αντικειµένων Text.

Εικόνα 31: Μεταγλώττιση και σύνδεση προγράµµατος, τα έξω ορθογώνια ορίζουν την περιοχή µέσα στην οποία αν τοποθετηθεί η αντίστοιχη «έννοια», πατώντας το κουµπί έλεγχος θα δείξει ότι η έννοια, έχει τοποθετηθεί σωστά.

Εικόνα 32: Ο κώδικας που βρίσκεται στο κουµπί έλεγχος, για το Sketch4.

Page 54: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

54

5.4.3.4 Button swsth apanthsh Στο κουµπί αυτό περιλαµβάνεται ο κώδικας για την τοποθέτηση κάθε έννοιας

αντικείµενου σωστά. Η τοποθέτηση γίνεται δίνοντας τις κατάλληλες τιµές σε τεταγµένη και τετµηµένη. Επιπλέον αποκρύπτονται όλα τα αντικείµενα Text που ενηµερώνουν για τη σωστή η λάθος τοποθέτηση, Εικόνα 33.

Εικόνα 33: Ο κώδικας στο script2 του Button2

5.5 Το πρόβληµα του ταχυδροµικού διανοµέα Το πρόβληµα του ταχυδροµικού διανοµέα παρουσιάζεται στη σελίδα 81 του βιβλίου

«Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον». Το πρόβληµα αυτό µπορεί να είναι κάπως δύσκολο στην κατανόησή του από το µαθητή οπότε επιλέξαµε να το υλοποιήσουµε στην πλατφόρµα Squeak Etoys ούτως ώστε να παρατεθεί οπτικά στο µαθητή και να αλληλεπιδράσει ο µαθητής µαζί του. Έτσι θα µπορέσει ο µαθητής µέσω της εφαρµογής να λύσει το πρόβληµα αντί να το διαβάσει µόνο από βιβλίο.

Στην ενότητα αυτή παρουσιάζεται στο µαθητή η αναγκαιότητα για καλή ανάλυση του κάθε προβλήµατος καθώς δεν υπάρχει µόνο µια λύση σε κάθε πρόβληµα. Έπειτα παρουσιάζονται τα στάδια της ανάλυσης σε ένα σύγχρονο υπολογιστικό περιβάλλον καθώς και οι ερωτήσεις στις οποίες θα πρέπει να απαντήσουµε κατά την ανάλυση ενός προβλήµατος. Στη συνέχεια παρουσιάζεται το πρόβληµα του ταχυδροµικού διανοµέα, που πρέπει να ξεκινήσει από ένα χωριό, να επισκεφθεί έναν αριθµό από γειτονικά χωριά, για να µοιράσει ένα σύνολο επιστολών και να επιστρέψει στο χωριό, από όπου ξεκίνησε περνώντας µόνο µια φορά από κάθε χωριό. Το πρόβληµα έγκειται στην εύρεση της καλύτερης διαδροµής, έτσι ώστε ο διανοµέας να διανύσει το µικρότερο δυνατό αριθµό χιλιοµέτρων.

Στο σχήµα 4.1 «Χωριά και αποστάσεις µεταξύ τους» παρουσιάζονται τα χωριά και οι αποστάσεις από το ένα χωριό στο άλλο ακριβώς όπως τα απεικονίσαµε στην εφαρµογή µας.

Page 55: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

55

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

5.5.1 Περιγραφή αρχικής οθόνης Στην αρχική οθόνη κάτω αριστερά, σε γκρί πλαίσιο εµφανίζεται το κείµενο που εξηγεί

ποιος είναι ο στόχος της εφαρµογής, Εικόνα 34. Πάνω από το γκρί πλαίσιο υπάρχει το κουµπί αρχικοποίηση και τα χωριά που πρέπει να επισκεφθεί ο ταχυδρόµος, ο ταχυδρόµος που βρίσκεται σε ένα χωριό τη φορά και σε κάθε χωριό υπάρχει ένα κίτρινο κουµπί µε τον τίτλο “episkepsh”.

Στα δεξιά επάνω, στο ροζ πλαίσιο σχηµατίζεται δυναµικά ο γράφος µε τα χωριά που επισκέπτεται ο ταχυδρόµος, αµέσως κάτω στο γαλάζιο πλαίσιο ενηµερώνεται ο χρήστης για την απόσταση που διένυσε κάθε φορά. Ενώ στο πορτοκαλί πλαίσιο εµφανίζεται στο τέλος ένα κείµενο που ενηµερώνει τον χρήστη αν επισκέφθηκε τα χωριά διανύοντας την ελάχιστη δυνατή διαδροµή.

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

5.5.2 Πώς λειτουργεί η εφαρµογή

5.5.2.1 Αρχικοποίηση Για να ξεκινήσει ο χρήστης την εφαρµογή αρκεί να πατήσει το πλήκτρο αρχικοποίηση,

έτσι ώστε ο ταχυδρόµος να επιστρέψει στο χωριό Α από όπου ξεκινά, τα χωριά να πάρουν πράσινο χρώµα καθώς και οι σύνδεσµοι και τέλος να αρχικοποιηθεί ο γράφος και να

Εικόνα 34: Η αρχική οθόνη στην εφαρµογή του ταχυδροµικού διανοµέα.

Page 56: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

56

µηδενιστεί η απόσταση που διένυσε ως τώρα. Αν δεν πατήσει αρχικοποίηση απλά θα συνεχίσει την εκτέλεση της εφαρµογής από το στάδιο στο οποίο βρίσκεται.

5.5.2.2 Επίσκεψη Ο ταχυδροµικός διανοµέας αρχικά βρίσκεται στο χωριό Α, αν ο χρήστης επιλέξει να

επισκεφθεί το χωριό Α, τότε ενηµερώνεται ότι µπορεί να επισκεφθεί το Α ξανά µόνο τελευταίο. Προκειµένου ο µαθητής να επισκεφθεί ένα χωριό αρκεί να επιλέξει το κουµπί “episkepsh” που βρίσκεται στο αντίστοιχο χωριό µε κίτρινο χρώµα, Εικόνα 35. Στη συνέχεια το περίγραµµα του χωριού γίνεται κόκκινο καθώς και η ακµή που συνδέει το χωριό στο οποίο βρίσκεται τώρα ο ταχυδρόµος, µε το χωριό που επισκέφθηκε πριν. Στο δυναµικό γράφο προστίθενται τα ονόµατα των χωριών που επισκέπτεται ως κόµβοι, ενώ παράλληλα ενηµερώνεται η απόσταση που διένυσε. Όταν ο ταχυδροµικός διανοµέας επιστρέψει στο Α που είναι το τελευταίο χωριό που θα επισκεφθεί εµφανίζεται στο πορτοκαλί πλάισιο ένα κείµενο που ενηµερώνει τον χρήστη για το αν διένυσε την ελάχιστη απόσταση ή όχι. Σε περίπτωση που ο µαθητής επιλέξει δυο φορές τον ίδιο κόµβο ενηµερώνεται ότι επισκέφθηκε ήδη τον κόµβο αυτό.

5.5.3 Πώς αναπτύχθηκε η εφαρµογή

5.5.3.1 Είδη αντικειµένων που χρησιµοποιήθηκαν Τα πέντε κουµπιά, τέσσερα “episkepsh” και ένα “arxikopoihsh” που είναι υπεύθυνα

για τη λειτουργία του προγράµµατος είναι αντικείµενα τύπου Button, τα οποία επιλέξαµε από το µενού Supplies.

Τα ονόµατα των χωριών A,B,C,D, το κουτάκι που δείχνει την απόσταση που διανύθηκε καθώς και ότι κείµενο παρουσιάζεται είναι τύπου ΤΕΧΤ(Border) και δηµιουργείται ως εξής, από το µενού Supplies, επιλέγουµε µε την τεχνική σύρε και άφησε το αντικείµενο - µενού Object Catalog, έπειτα επιλέγουµε την κατηγορία Text και στη συνέχεια το αντικείµεο Text( Border) πάλι µε την τεχνική σύρε κι άφησε.

Ο γράφος αποτελείται από ελλείψεις και βέλη. Οι ελλείψεις είναι αντικείµενα τύπου Ellipse από το µενού Supplies και το κείµενο που έχουν µέσα είναι αντικείµενο τύπου Text. Επιπλέον τον ίδιο τύπο αντικειµένων χρησιµοποιήσαµε και για τα πλαίσια που αναγράφουν τις αποστάσεις των χωριών.

Εικόνα 35: Η οθόνη της εφαρµογής µετά από επίσκεψη της πόλης C.

Page 57: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

57

Το βέλος είναι αντικείµενο τύπου Arrow, και πάλι από το αντικείµενο – µενού Object Catalog επιλέγουµε Graphics και µετά Arrow. Οι ακµές που συνδέουν τα χωριά είναι αντικείµενα τύπου Line από το µενού Object Catalog επιλέγουµε Line από την κατηγορία Basic ή Graphics. Όλα τα άλλα αντικείµενα είναι τύπου Rectangle η τύπου Round Rectangle, από το βασικό µενού Supplies.

Tα χωριά και ο ταχυδρόµος είναι εικόνες jpg, τις οποίες εισαγάγαµε στην εφαρµογή και τις αναγνωρίζει ως Sketch. H εισαγωγή έγινε ως εξής: από το µενού Navigator, επιλέξαµε find έχοντας πατηµένο το αριστερό πλήκτρο του ποντικιού συνέχεια,από το µενού Find options επιλέξαµε find any file,στη συνέχεια µε κλικ επιλέξαµε το αρχείο images.jpg και µετά open.

Στα αντικείµενα της οθόνης που δεν πρέπει να µετακινούνται επιλέξαµε από το menu του αντικειµένου resist being deleted, resist being picked up, be locked. Με αυτές τις εντολές επιλεγµένες δεν µπορεί κάποιος να σβήσει, να µετακινήσει ή να αλλάξει τα αντικείµενα. Αν προσπαθήσουµε να µετακινήσουµε το ορθογώνιο που βρίσκεται πίσω από κάποιο χωριό και φαίνεται σαν το περίγραµµά του θα δούµε ότι θα µετακινηθούν µαζί του η εικόνα του χωριού, το κουµπί του χωριού και το όνοµα του χωριού. Αυτό γίνεται διότι στα αντικείµενα που βρίσκονται µέσα στο ορθογώνιο ενεργοποιήσαµε την εντολή embed into και επιλέξαµε το ορθογώνιο ως το αντικείµενο στο οποίο θα ενσωµατωθούν. Την ίδια τεχνική ακολουθήσαµε και στις περιπτώσεις όπου εµφανίζεται κείµενο µέσα σε έλλειψη.

5.5.3.2 Button arxikopoihsh Για να δούµε τον κώδικα του αντικειµένου αυτού τύπου Button, πατάµε µια φορά κλικ

µε το µεσαίο πλήκτρο του ποντικιού και έπειτα επιλέγουµε τον Viewer, Εικόνα 36. Τώρα βλέπουµε τις ιδιότητες του αντικειµένου αυτού, ο κώδικας περιέχεται στο Button4 Script1 και µε ένα απλό σύρε και άφησε ανοίγει το σχετικό Script που περιέχει τις εντολές, Εικόνα 37.

Τα button4 eliphide, button4 elipshow Script, είναι βοηθητικά και δεν εκτελούν καµιά λειτουργία, δηµιουργήθηκαν στο στάδιο της ανάπτυξης για δοκιµαστικούς λόγους. Τα button4 hidevar, button4 showvar Script, κάνουν ορατά ή κρύβουν κάποια αντικείµενα Text(Border) τα οποία λειτουργούν ως global µεταβλητές για το πρόγραµµα.

Εικόνα 37: Ο πηγαίος κώδικας του button αrxikopoihsh, δεν παρατίθεται όλος ο κώδικας. Εικόνα 36: Οι ιδιότητες του button

“arxikopoihsh”.

Page 58: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

58

Στο Button4Script1 όλες αυτές οι βοηθητικές µεταβλητές A, B, C, D, voithitikh, komvoi παίρνουν την τιµή µηδέν, Εικόνα 38.

Σε αυτό το Script επίσης περιέχονται οι εντολές Text8 setNumericValue: 0 µε την οποία µηδενίζουµε τη συνολική απόσταση που διανύει ο ταχυδρόµος. Rectangle4 setColor: (Color r: 0.645 g: 1.0 b: 0.323)η οποία χρωµατίζει πράσινο το περίγραµµα των εικόνων των χωριών. Με τις εντολές Sketch5 setX: 135, Sketch5 setY: 653, δίνουµε στον ταχυδρόµο τις κατάλληλες συντεταγµένες έτσι ώστε να τοποθετηθεί στην αρχική του θέση. Επιπλέον γίνονται µη ορατά τα βέλη και οι ελλείψεις του γράφου µε τις Arrow5 hide,Ellipse7 hide. Η Line2 setBorderColor: Color black,δίνει το αρχικό τους χρώµα σε όλες τις ακµές που συνδέουν τα χωριά.

Για να προγραµµατίσουµε το κουµπί έτσι ώστε να εκτελείται κάθε φορά που το επιλέγουµε µε το ποντίκι, επιλέγουµε µε αριστερό η δεξί κλικ πάνω στην επιλογή normal που εµφανίζεται δίπλα στο Button Script1. Στο µενού που εµφανίζεται µε τίτλο “When should this Script run” επιλέγουµε mouseDown.

5.5.3.3 Button episkepsh Τα τέσσερα Button episkepsh περιέχουν τις ίδιες περίπου εντολές µόνο που αλλάζουν

κάποια αντικείµενα ανάλογα µε το όνοµα του χωριού. Το Button episkepsh A έχει κάποιες παραπάνω εντολές ελέγχου σε σχέση µε τα άλλα για να προβλεφθεί και η περίπτωση που ο χρήστης πατάει το A χωρίς να είναι το τελευταίο κουµπί.

Σε κάθε αντικείµενο Button έχει δοθεί και η ονοµασία του χωριού στο οποίο ανήκει. Έτσι υπάρχουν τα ButtonA, ButtonB, ButtonC, ButtonD για κάθε ένα από αυτά χρησιµοποιούµε ένα αντικείµενο,που έχει το ρόλο της καθολικής βοηθητικής µεταβλητής τύπου Text(Border) και δεν είναι ορατό, για να αποθηκεύουµε χρήσιµες αριθµητικές πληροφορίες.

Κάθε φορά που ο χρήστης επιλέγει ένα Button για παράδειγµα το B πρέπει µε κάποιο τρόπο να δούµε αν ο χρήστης έχει επισκεφθεί ξανά αυτό το χωριό, Εικόνα 39. Για το λόγο αυτό αποθηκεύουµε την τιµή 0 στο Text(Border) B κατά την έναρξη του προγράµµατος, που σηµαίνει ότι ο χρήστης δεν επισκέφθηκε ακόµη το χωριό B.

Έπειτα όταν ο χρήστης επισκεφθεί το χωριό B βλέπουµε την τιµή του Text(Border) B και αν δεν είναι µηδέν απλά ενηµερώνεται ο χρήστης ότι έχει ήδη επισκεφθεί αυτό το χωριό µε µια εντολή Show του αντίστοιχου αντικειµένου Text, εδώ είναι το Text12.

Σε περίπτωση που η τιµή του Text(Border) B είναι µηδέν, τότε πρέπει να δούµε ποιο χωριό επισκέφθηκε πριν ο χρήστης ή ο ταχυδροµικός διανοµέας. Την πληροφορία αυτή τη διατηρούµε στο αντικείµενο Text(Border) voithitikh,το οποίο είναι µη ορατό στο χρήστη. ∆ίνουµε τις τιµές 2,3 και 4 για επίσκεψη των B, C και D αντίστοιχα και 0 σε περίπτωση που είναι το πρώτο χωριό που επισκέφθηκε . Για το Α δεν υπάρχει πρόβλεψη γιατί είναι πάντα το πρώτο και το τελευταίο χωριό που θα επισκεφθεί ο χρήστης. Στην περίπτωση του χωριού B το αντικείµενο Text(Border) voithitikh µπορεί να πάρει τις τιµές 0,3 και 4.

Αφού µάθουµε ποιο χωριό επισκέφθηκε πριν ο χρήστης χρωµατίζουµε την ακµή που ενώνει τα δυο χωριά καθώς και το περίγραµµα του τρέχοντος χωριού µε τις εντολές Line1 setBorderColor: Color red. Rectangle1 setColor: (Color r: 1.0 g: 0.065 b: 0.032). Επιπλέον µετακινούµε την εικόνα του ταχυδρόµου στο τρέχων χωριό,εδώ το Β, δίνοντας τις κατάλληλες συντεταγµένες µε τις εντολές Sketch5 setX: 76. Sketch5 setY: 366.

Γνωρίζοντας ποιο χωριό επισκέφθηκε πριν ξέρουµε την απόσταση που θα προσθέσουµε στην απόσταση που είχε διανύσει πριν. Σε κάθε ένα από τα Text(Border) A, B, C και D αποθηκεύουµε το άθροισµα των προηγούµενων αποστάσεων αφού προσθέσουµε και την τρέχουσα. Έτσι αν το Β είναι το πρώτο χωριό που επισκέπτεται θα αποθηκεύσουµε την απόσταση AB δηλαδή 5 στο Text(Border) B, σε περίπτωση που δεν είναι το πρώτο χωριό και

Εικόνα 38: Τα αντικείµενα που εµφανίζονται κάτω αριστερά µε εκτέλεση του Button4 showvar. Τα ονόµατα των αντικειµένων είναι A,B,C,D voithitikh και komvoi.

Page 59: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

59

έστω ότι το D είναι το προηγούµενο χωριό, τότε θα πάρουµε από το Text(Border) D το άθροισµα των αποστάσεων που είχε διανύσει και θα προσθέσουµε σε αυτό την απόσταση DB δηλαδή 9. Με το τελικό άθροισµα που προκύπτει θα ενηµερωθεί και το αντικείµενο Text18 στο οποίο εµφανίζεται το σύνολο της απόστασης που έχει διανύσει ο ταχυδρόµος κάθε φορά. Παράλληλα µε την κίνηση του ταχυδρόµου εµφανίζονται δυναµικά και µε τη µορφή κόµβων ενός γράφου τα ονόµατα των χωριών που επισκέπτεται. Πατώντας το αντίστοιχο Button γνωρίζουµε ποιο χωριό επισκέπτεται, αλλά για να εµφανιστεί το όνοµά του στη σωστή θέση του γράφου πρέπει να ξέρουµε και τη σειρά επίσκεψης. Για παράδειγµα όταν επιλέγεται το Button B πρέπει να τυπωθεί ο χαρακτήρας ‘Β’ µε την εντολή Text setCharacters: ‘B’ αλλά σε ποιον από τους κόµβους του γράφου θα εµφανιστεί; Για το λόγο αυτό χρησιµοποιούµε το αντικείµενο Text(Border) komvoi ως καθολική µεταβλητή στην οποία αποθηκεύουµε το άθροισµα των κόµβων που έχουµε επισκεφθεί. Έτσι γνωρίζουµε ποιο βέλος και ποια έλλειψη θα εµφανιστούν µε τις εντολές Arrow1 show και Ellipse8 show. Επιπλέον εµφανίζουµε και το αντίστοιχο αντικείµενο Text στο οποίο θα τυπωθεί ο χαρακτήρας που αποτελεί το όνοµα του χωριού και ενηµερώνουµε το άθροισµα των κόµβων µε την εντολή Komvoi setNumericValue:. Το Button episkepsh A όπως ήδη αναφέραµε περιέχει κάποιες παραπάνω εντολές ελέγχου. Έτσι µε αυτές τις εντολές εξασφαλίζεται ότι µόνο σε περίπτωση που ο χρήστης έχει επισκεφθεί όλα τα άλλα χωριά θα µπορέσουν να εκτελεστούν οι αντίστοιχες εντολές. Αυτό γίνεται ελέγχοντας τα αντικείµενα Text(Border) B, C, D . Αν οι αριθµητικές τιµές τους είναι µεγαλύτερες του µηδενός αυτό σηµαίνει ότι ο χρήστης έχει ήδη επισκεφθεί όλα τα άλλα χωριά.

Page 60: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

60

Εικόνα 39: Οι εντολές που περιέχει Script1 του ButtonB που αντιστοιχεί στο χωριό B, δεν παρατίθενται όλες οι εντολές.

Page 61: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

61

5.6 Ταξινόµηση Φυσσαλίδας Η ταξινόµηση φυσσαλίδας παρουσιάζεται στη σελίδα 66 του βιβλίου «Ανάπτυξη

Εφαρµογών σε Προγραµµατιστικό Περιβάλλον». Το θέµα αυτό επιλέχθηκε να υλοποιηθεί και να παρουσιαστεί στην πλατφόρµα Squeak Etoys µε σκοπό να δει ο µαθητής πώς εφαρµόζεται ο αλγόριθµος ταξινόµησης φυσσαλίδας σε έναν πίνακα µε αταξινόµητα στοιχεία. Ο αλγόριθµος αυτός µπορεί να αποτελεί για τους µαθητές µια έννοια κάπως δύσκολη στην κατανόησή της αν δεν παρουσιαστεί µε ένα παράδειγµα, γι’ αυτό το λόγο τον παρουσιάζουµε µε µια εφαρµογή µε την οποία αλληλεπιδρά ο µαθητής. Στόχος του παραδείγµατος είναι µε την οπτικοποίηση να φαίνεται ξεκάθαρα το στάδιο του αλγορίθµου που εκτελείται κάθε φορά έτσι ώστε να κατανοήσει πλήρως ο µαθητής τη λειτουργία του αλγορίθµου χωρίς να µείνουν κενά σηµεία που ίσως δεν καλύπτονται από µια απλή θεωρητική παρουσίαση του αλγορίθµου. Επίσης µετά τη χρήση της εφαρµογής θα ήταν επιθυµητό ο χρήστης να έχει µάθει πως λειτουργεί ο αλγόριθµος έστω και µόνο από την παρακολούθηση των συγκρίσεων και των αντιµεταθέσεων στα κελιά. ∆ηλαδή έστω και µόνο από την παρακολούθηση του παραδείγµατος.

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

Έπειτα παρουσιάζεται σε φυσική γλώσσα ο αλγόριθµος Φυσσαλίδας/ Ευθείας ανταλλαγής και για να γίνει πιο κατανοητός παρουσιάζεται ένα παράδειγµα µε εννέα κλειδιά το οποίο δίνεται και σχηµατικά στο Σχ. 3.7 Ταξινόµηση Φυσσαλίδας. Τέλος παρουσιάζεται ο ψευδοκώδικας του αλγορίθµου Φυσσαλίδας.

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

5.6.1 Περιγραφή αρχικής οθόνης

Εικόνα 40 : Η αρχική οθόνη της εφαρµογής που εµφανίζεται επιλέγοντας το Button ekkinhsh

Page 62: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

62

Αρχικά εµφανίζονται στο χρήστη στο επάνω µέρος της οθόνης σε ένα πράσινο πλαίσιο τα πέντε κελιά του κατακόρυφου πίνακα τα οποία περιέχουν µηδενικές τιµές, κάτω από το πράσσινο πλαίσιο σε ένα άλλο πλαίσιο δυο κουµπιά µε τίτλους “ekkinhsh” και “arxikopihsh”, και τέλος στο κάτω µέρος της οθόνης σε ένα κίτρινο πλαίσιο ένα εισαγωγικό κείµενο, Εικόνα 40.

5.6.2 Πώς λειτουργεί η εφαρµογή

5.6.2.1 Εκκίνηση Αρχικά ο χρήστης πρέπει να επιλέξει το κουµπί “ekkinhsh” έτσι ώστε να

µηδενιστούν οι τιµές των πέντε κελιών, Εικόνα 41. Σε περίπτωση που ο χρήστης δεν έχει χρησιµοποιήσει την εφαρµογή και βρίσκεται ήδη στην αρχική οθόνη δεν είναι ανάγκη να επιλέξει το κουµπί εκκίνηση καθώς ήδη οι τιµές των κελιών είναι µηδενικές.

5.6.2.2 Αρχικοποίηση Στη συνέχεια ο χρήστης καλείται να επιλέξει το κουµπί “arxikopοihsh” έτσι ώστε να

αρχικοποιηθούν οι τιµές των κελιών του πίνακα µε πέντε τυχαίους αριθµούς και να εµφανιστεί ο ψευδοκώδικας του αλγορίθµου. Παράλληλα αφού έχει γίνει η αρχικοποίηση, εµφανίζονται τρία νέα κουµπιά µε τίτλους “epomeno vhma”, “sugrish”, “antimetathesh”.

5.6.2.3 Επόµενο Βήµα Ο χρήστης για να προχωράει στο επόµενο βήµα θα πρέπει κάθε φορά να επιλέγει

πρώτα το κουµπί “epomeno vhma”.Έτσι θα εµφανιστούν τα κελιά µε τις νέες αριθµητικές τιµές στο επόµενο βήµα του αλγορίθµου. Επιπλέον εµφανίζονται οι νέες τιµές των i και j καθώς και το κοµµάτι κώδικα που εκτελείται, µέσα σε ένα πράσσινο πλαίσιο,ενώ οι τιµές του ψευδοκώδικα ενηµερώνονται δυναµικά, Εικόνα 42.

Εικόνα 41: Η οθόνη της εφαρµογής κατά την επιλογή του Button arxikopοihsh

Page 63: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

63

5.6.2.4 Σύγκριση Αφού ο χρήστης έχει επιλέξει το κουµπί “epomeno vhma” θα πρέπει στη συνέχεια να

επιλέξει πρώτα το κουµπί “sugrish”, Εικόνα 43. Με αυτή την επιλογή θα γίνει η σύγκριση των δυό ζητούµενων κελιών κάθε φορά. Παράλληλα ο χρήστης βλέπει τα κελιά των οποίων οι τιµές συγκρίνονται να χρωµατίζονται το πάνω µε φουξ και το κάτω µε µπλε χρώµα. Όπως και πριν βλέπει την εξέλιξη του αλγορίθµου στο κίτρινο πλαίσιο.

5.6.2.5 Αντιµετάθεση Στη συνέχεια τελευταίο πρέπει να επιλέγεται το κουµπί “antimetathesh” για να γίνει η

αντιµετάθεση των αριθµών όταν χρειάζεται, Εικόνα 44. Θα έπρεπε εδώ να τονίσουµε ότι είναι απαραίτητο τα κουµπιά να επιλέγονται µε τη σειρά που αναφέραµε σε κάθε στάδιο γιατί αλλιώς ο αλγόριθµος δεν θα υλοποιηθεί σωστά. Κάθε φορά που πατιέται ένα κουµπί βλέπουµε στο κίτρινο πλαίσιο και πιο κοµµάτι κώδικα εκτελείται µέσα σε ένα πράσινο πλαίσιο ενώ οι τιµές του ψευδοκώδικα ενηµερώνονται δυναµικά.

Ο χρήστης δεν καλείται να επιλέξει το κουµπί “sugrish” ή “antimetathesh” µόνο όταν χρειάζεται. Τουλάχιστον η σύγκριση εκτελείται πάντα τόσο στον ψευδοκώδικα όσο και στο ανθρώπινο µυαλό έστω και ασυνείδητα, για αυτό για να λειτουργήσει σωστά ο αλγόριθµος θα πρέπει να πατιέται σε κάθε επάναληψη το κουµπί “sugrish”. Παροµοίως σε περίπτωση που δεν πατηθεί το κουµπί “antimetathesh” ο αλγόριθµος δε θα συνεχίσει τη λειτουργία του. Αυτό έχει κυρίως προγραµµατιστικές παρά εκπαιδευτικές σκοπιµότητες, και ίσως να µπερδεύει κάπως το µαθητή όµως βλέπει ότι αν και επιλέγεται κάθε φορά του κουµπί αντιµετάθεση δε γίνεται πάντα η αντιµετάθεση. Σε κάθε περίπτωση ο αλγόριθµος θέλει να ενεργοποιήσει τον µαθητή να σκεφτεί και όχι απλά να παρακολουθήσει την εξέλιξη του αλγορίθµου, Εικόνα 45.

Εικόνα 42: Η οθόνη της εφαρµογής κατά την πρώτη επιλογή του Button “epomeno vhma”. Εµφανίζονται για i = 2 και j = 5, οι τιµές των κελιών πριν γίνει η πρώτη σύγκριση και η πρώτη αντιµετάθεση. Με πράσσινο χρώµα στο κάτω µέρος της οθόνης φαίνεται το τµήµα ψευδοκώδικα που εκτελείται.

Page 64: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

64

Εικόνα 43: Η οθόνη της εφαρµογής κατά την πρώτη επιλογή του Button “sugrish”. Βλέπουµε ότι χρωµατίζονται µε ροζ και µπλε τα αντίστοιχα κελιά στα οποία θα γίνει η σύγκριση. Με πράσσινο φαίνεται το κοµµάτι ψευδοκώδικα που εκτελείται.

Εικόνα 44 : Η οθόνη της εφαρµογής κατά την πρώτη επιλογή του Button “antimetathesh”. Βλέπουµε ότι επειδή το 68 > 44 σύµφωνα µε τον αλγόριθµο έγινε η αντιµετάθεση του table[4] µε το table[5]. Με πράσσινο φαίνεται το κοµµάτι ψευδοκώδικα που εκτελείται.

Page 65: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

65

Εικόνα 45 : Η οθόνη της εφαρµογής κατά την τελευταία επιλογή του Button “antimetathesh” και την έξοδο από τον αλγόριθµο. Βλέπουµε ότι τα στοιχεία που έχουν ταξινοµηθεί χρωµατίζονται µε κίτρινο.

Page 66: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

66

5.6.3 Πώς αναπτύχθηκε η εφαρµογή

5.6.3.1 Είδη αντικειµένων που χρησιµοποιήθηκαν Τα κελιά του πίνακα, το κείµενο για την ονοµασία των κελιών

table[1]…table[5], το κείµενο για τους δείκτες i=2..5 και j=5…i πάνω από τα κελιά, το κείµενο του ψευδοκώδικα που εµφανίζεται στο κίτρινο πλαίσιο, καθώς και οι αριθµοί που ενηµερώνονται δυναµικά στον ψευδοκώδικα µε κόκκινο χρώµα είναι όλα αντικείµενα τύπου Text( Border).

Τα πέντε κουµπιά που χρησιµοποιούνται είναι αντικείµενα τύπου Button, τα οποία επιλέξαµε από το µενού Supplies.

Το πράσινο πλαίσιο στο οποίο περιέχονται τα κελιά, το κίτρινο πλαίσιο στο οποίο τοποθετήσαµε τον ψευδοκώδικα καθώς και το έντονο πράσσινο χρώµα που χρησιµοποιείται για να δείξει ποιο κοµµάτι κώδικα εκτελείται κάθε φορά είναι όλα αντικείµενα τύπου Rectangle από το βασικό µενού Supplies.

Το πλαίσιο όπου βρίσκονται τα τρία κουµπιά είναι τύπου Round Rectangle.

5.6.3.2 Button ekkinhsh Το Button ekkinhsh έχει το όνοµα Reset και στο Script1 του αντικειµένου Reset

περιέχονται οι εντολές που εκτελούνται κάθε φορά που το κουµπί αυτό επιλέγεται. Όλα τα κελιά του πίνακα µηδενίζονται µε την εντολή Text setNumericValue: 0 που χρησιµοποιείται µε το όνοµα του κάθε αντικειµένου κάθε φορά.

Επιπλέον το χρώµα του φόντου ενός κελιού γίνεται ελαφρύ κίτρινο µε την εντολή Text setBackgroundColor: (Color r: 1.0 g: 0.903 b: 0.677),η εντολή αυτή επαναλαµβάνεται µόνο για τα αντικείµενα των οποίων το χρώµα µεταβάλλεται κατά τη διάρκεια της εκτέλεσης του αλγορίθµου.

Όλα τα κελιά της εφαρµογής εκτός από τα 5 πρώτα, κατά την εκκίνηση γίνονται µη ορατά µε την εντολή Text hide. Επιπλέον γίνονται µη ορατό και το κείµενο του ψευδοκώδικα που εµφανίζεται σε όλα τα στάδια του αλγορίθµου, σε περίπτωση που ο χρήστης επιλέξει να εκκινήσει την εφαρµογή ενώ αυτή βρίσκεται σε εξέλιξη. Επειδή δεν µπορούµε να προβλέψουµε πότε θα επιλέξει ο χρήστης να τερµατίσει και να εκκινήσει ξανά την εφαρµογή και δε θέλουµε να «κλειδώσουµε τον χρήστη» για το λόγο αυτό µε το πάτηµα αυτού του κουµπιού γίνονται µη ορατά όλα τα αντικείµενα που θα πρέπει να εµφανίζονται σε µελλοντικό στάδιο εκτέλεσης του αλγορίθµου. Το µόνο κείµενο που είναι ορατό αρχικά είναι το εισαγωγικό µε την εντολή Text60 show.

Επιπλέον γίνονται µη ορατά και τα αντικείµενα Rectangle που είναι υπεύθυνα για τη σήµανση του κώδικα που εκτελείται κάθε φορά.

Τέλος γίνονται µη ορατά και όλα τα κουµπιά “epomeno vhma”, “sugrish”, “antimetathesh” τα οποία δεν είναι µόνο τρία όπως φαίνεται αλλά υπάρχουν 10 κουµπιά “epomeno vhma”, 10 “sugrish” και 10 “antimetathesh” και η κάθε τριάδα είναι υπεύθηνη για κάθε ένα από τα 10 βήµατα εκτέλεσης του αλγορίθµου.

Για να προγραµµατίσουµε το κουµπί έτσι ώστε να εκτελείται κάθε φορά που το επιλέγουµε µε το ποντίκι, επιλέγουµε µε αριστερό η δεξί κλικ πάνω στην επιλογή normal που εµφανίζεται δίπλα στο Button Script1. Στο µενού που εµφανίζεται µε τίτλο “When should this Script run” επιλέγουµε mouseDown.

5.6.3.4 Button arxikopoihsh Το αντικείµενο µε τίτλο Button arxikopoihsh έχει το όνοµα initialization και στο script1

περιέχονται οι εντολές για την παραγωγή 5 τυχαίων αριθµών και την προσωρινή αποθήκευσή τους σε έναν πίνακα 5 θέσεων. Η παραγωγή των τυχαίων αριθµών γίνεται µε την εντολή myGenerator nextInt: 99, η οποία παράγει ένα τυχαίο αριθµό κάθε φορά στο διάστηµα τιµών από 1 ως 99. Στη συνέχεια οι αριθµοί αυτοί αποθηκεύονται στο βοηθητικό πίνακα 5 θέσεων myArray := Array new: 5. Έπειτα µε τις εντολές Text1 setNumericValue: (myArray at: 1) ως Text5 αρχικοποιούµε τα πέντε πρώτα κελιά του πίνακα µε τους τυχαίους αριθµούς.

Κάτα την επιλογή της αρχικοποίησης εµφανίζεται ο ψευδοκώδικας στο κίτρινο πλαίσιο και στο τέλος εµφανίζονται οι πέντε τυχαίοι αριθµοί που θα χρησιµοποιηθούν σε αυτό το

Page 67: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

67

παράδειγµα. Αυτό γίνεται δίνοντας την εντολή setNumericValue: (myArray at: 1), στα αντικείµενα Text63, Text64, Text65, Text68, Text67 που είναι υπεύθυνα για την εµφάνιση των αριθµών αυτών στον ψευδοκώδικα. Στη συνέχεια τα κάνουµε ορατά µε την εντολή Text show.

Επιπλέον κάνουµε µη ορατό το κείµενο που εµφανίστηκε κατά την εκκίνηση µε την εντολή Text60 hide. Και µε µια εντολή show εµφανίζεται και το κείµενο του ψευδοκώδικα. Τέλος εµφανίζεται η πρώτη τριάδα κουµπιών “epomeno vhma”, “sugrish”, “antimetathesh” µε τις εντολές Epanalhpsh1 show, Sugrish show και Antimetathesh show όπου Epanalhpsh1 είναι το όνοµα του αντικειµένου τύπου Button µε τίτλο epomeno vhma.

Θα έπρεπε να αναφέρουµε εδώ ότι υπάρχει και µια συνθήκη ελέγχου έτσι ώστε για κάθε εκκίνηση που γίνεται να πραγµατοποιείται µόνο µια παραγωγή τυχαίων αριθµών. Αυτό σηµαίνει ότι αν θέλουµε να παράγουµε µια νέα πεντάδα τυχαίων αριθµών θα πρέπει πρώτα να επιλέξουµε εκκίνηση ενώ σε περίπτωση που απλά επιλέξουµε το κουµπί arxikopoihsh ξανά θα δούµε ότι δε θα παραχθούν νέοι αριθµοί.

5.6.3.5 Button “epomeno vhma”, “sugrish”, “antimetathesh” Τα κουµπιά αυτά όπως ήδη αναφέραµε δεν είναι τρία αλλά αντιστοιχεί µια τριάδα σε

κάθε επανάληψη ή στάδιο του αλγορίθµου. Τα κουµπιά αυτά είναι τοποθετηµένα ακριβώς στο ίδιο σηµείο, έχουν το ίδιο χρώµα και τις ίδιες διαστάσεις απλά δεν είναι όλα ορατά ταυτόχρονα. Στην πρώτη επανάληψη εµφανίζεται η πρώτη τριάδα. Οι εντολές που περιέχονται σε κάθε τριάδα είναι παρόµοιες για αυτό θα περιγράψουµε µόνο τα πρώτα τρία κουµπι.

5.6.3.6 Button “epomeno vhma” Στην πρώτη επανάληψη του αλγορίθµου το αντκείµενο µε τον τίτλο “epomeno vhma”

είναι το Button µε όνοµα epanalhpsh1 και οι εντολές περιέχονται στο script1. Με µια συνθήκη ελέγχου εξασφαλίζεται ότι το πρώτο κελί δεν έχει µηδενική τιµή οπότε και τα άλλα τέσσερα κελιά του πίνακα δε θα έχουν µηδενικές τιµές και άρα µπορεί να συνεχιστεί η εκτέλεση του αλγορίθµου.

Αρχικά εµφανίζουµε την δεύτερη πεντάδα κελιών µε την εντολή show για κάθε κελί και δίνουµε σε κάθε κελί την ίδια τιµή που έχει το αντίστοιχο κελί στην προηγούµενη επανάληψη µε την εντολή ανάθεσης Text6 setNumericValue: Text1 getNumericValue. Επιπλέον µε την εντολή hide κάνουµε µη ορατό το κείµενο του ψευδοκώδικα που δεν είναι πλέον χρήσιµο από το στάδιο της αρχικοποίησης και γενικά σε κάθε επόµενο βήµα κάνουµε µη ορατό το κείµενο ή τα κουµπιά που δεν πρέπει να είναι πλέον ορατά. Στη συνέχεια µε την εντολή show εµφανίζουµε τα αντικείµενα τύπου Text(Border) που εµφανίζονται στον ψευδοκώδικα µε κόκκινο χρώµα. Τα αντικείµενα αυτά µεταβάλλονται δυναµικά είτε µε εντολές Text setNumericValue: Text getNumericValue αναθέτουµε τιµές από άλλα αντικείµενα, είτε δίνουµε νέες τιµές µε την εντολή Text setNumericValue:2 π.χ.. Έτσι ενηµερώνουµε το δυναµικό κείµενο του ψευδοκώδικα δίνοντας σε κάθε βήµα τις κατάλληλες τιµές.

Εικόνα 46 : Η οθόνη της εφαρµογής σε πολύ αρχικό στάδιο. Τα κελιά υπάρχουν όπως και τα κουµπιά κατά τη διάρκεια εκτέλεσης του αλγορίθµου. Τα κελιά είναι µη ορατά ενώ τα κουµπιά είναι τοποθετηµένα το ένα πάνω στο αλλό και δεν είναι ορατά.

Page 68: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

68

Για να δείξουµε ποιο κοµµάτι κώδικα εκτελείται κάθε φορά χρησιµοποιούµε αντικείµενα τύπου Rectangle και δίνουµε τις κατάλληλες συντεταγµένες για να µετακινηθούν στο κατάλληλο σηµείο. Τα αντικείµενα που χρησιµοποιούµε εδώ είναι το Rectangle4 και το τοποθετούµε εκεί που θέλουµε µε τις εντολές Rectangle4 setY: 201.0. Rectangle4 show.

Εικόνα 47 : Η ανάθεση των τιµών στα αντίστοιχα κελιά σε κάθε επανάληψη όταν επιλέγεται η επιλογή Επόµενο βήµα µε το Button epomeno vhma.

Στις επόµενες επαναλήψεις τα αντικείµενα µε τίτλο “epomeno vhma” είναι υπεύθυνα για την εµφάνιση του κουµπιού “antimetathesh” της τρέχουσας επανάληψης µε την εντολή Antimetathesh show. Έτσι ώστε πρώτα να έχει επιλεγεί το κουµπί επόµενο βήµα της τρέχουσας επανάληψης και µετά ο χρήστης να µπορεί να επιλέξει αντιµετάθεση για να µην δηµιουργηθεί κάποιο πρόβληµα στον αλγόριθµο γιατί όπως θα δούµε το αντικείµενο µε τίτλο “antimetathesh” είναι υπεύθυνο για την αντιµετάθεση, αλλά και για την εµφάνιση των κουµπιών επόµενο βήµα και σύγκριση της επόµενης επανάληψης καθώς και για την απόκρυψη των κουµπιών επόµενο βήµα και σύγκριση της τρέχουσας επανάληψης.

5.6.3.7 Button “sugrish” Στην πρώτη επανάληψη του αλγορίθµου το αντκείµενο µε τον τίτλο “sugrish” είναι το

Button µε όνοµα Sugrish και οι εντολές περιέχονται στο script1. Με µια συνθήκη ελέγχου εξασφαλίζεται ότι το πρώτο κελί σε αυτή την επανάληψη

που είναι η 1 είναι το Text6 δεν έχει µηδενική τιµή οπότε και τα άλλα τέσσερα κελιά του πίνακα δε θα έχουν µηδενικές τιµές και άρα µπορεί να συνεχιστεί η εκτέλεση του αλγορίθµου.

Χρωµατίζουµε το φόντο των κελιών των οποίων οι αριθµητικές τιµές συγκρίνονται το πάνω µε ροζ µε την εντολή Text10 setBackgroundColor: (Color r: 1.0 g: 0.032 b: 0.903). και το κάτω κελί µε µπλε µε την εντολή Text42 setBackgroundColor: (Color r: 0.387 g: 0.548 b: 1). Σε αυτήν την επανάληψη χρωµατίζεται το φόντο των αντικειµένων Text10 και Text42. Σε κάθε επανάληψη είναι διαφορετικά τα αντικείµενα των οποίων το φόντο χρωµατίζεται. Τέλος µε την εντολή Rectangle4 setY: 151.0 µετακινούµε το πράσινο ορθογώνιο για να δείχνει το σηµείο του κώδικα που εκτελείται.

5.6.3.8 Button “antimetathesh” Στην πρώτη επανάληψη του αλγορίθµου το αντκείµενο µε τον τίτλο “antimetathesh”

είναι το Button µε όνοµα αntimetathesh και οι εντολές περιέχονται στο script1. Συγκρίνονται τα κελιά Text10 και Text42 µε την εντολή ελέγχου Text10

getNumericValue > Text42 getNumericValue και αν ισχύει η συνθήκη µε εντολές ανάθεσης γίνεται ανταλλαγή των αριθµητικών τιµών.

Επανάληψη1 Επανάληψη2

1

2

3

4

5

1

2

3

4

5

Επανάληψη9 Επανάληψη10

1

2

3

4

5

1

2

3

4

5 ……….

Page 69: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

69

Με τις εντολές Epanalhpsh2 show, Sugrish2 show, Epanalhpsh1 hide και Sugrish hide εµφανίζονται τα κουµπιά που είναι υπεύθυνα για τις λειτουργίες επόµενο βήµα και σύγκριση της επόµενης επανάληψης και αποκρύπτονται τα αντίστοιχα της τρέχουσας επανάληψεις. Τέλος µε την εντολή Rectangle4 setY: 101.0 µετακινούµε το πράσσινο ορθογώνιο για να δείχνει το σηµείο του κώδικα που εκτελείται.

Σε κάθε επανάληψη το κάθε κουµπί περιέχει τις αντίστοιχες εντολές. Πώς λειτουργεί ο µηχανισµός των κουµπιών: Επανάληψη [1]: για i=2, j=5 µε επιλογή του κουµπιού αρχικοποίησης εµφανίζονται και τα τρία κουµπιά επόµενο βήµα[1], σύγκριση[1], αντιµετάθεση[1]. Επανάληψη [2]: για i=2, j=4 το κουµπί αντιµετάθεση[1] εµφανίζει τα επόµενο βήµα[2] και σίγκριση[2] και καθιστά µη ορατά τα επόµενο βήµα[1], σύγκριση[1]. Το κουµπί επόµενο βήµα[2] εµφανίζει το κουµπί αντιµετάθεση[2] και καθιστά µη ορατό το αντιµετάθεση[1] . . . . Επανάληψη [10]: για i=5, j=5 Το κουµπί επόµενο βήµα[10] εµφανίζει το κουµπί αντιµετάθεση[10] και καθιστά µη ορατό το αντιµετάθεση[9] .

5.7 ∆ιάγραµµα ροής προγράµµατος(∆ΡΠ) Το διάγραµµα ροής προγράµµατος περιγράφεται στη σελίδα 28 του βιβλίου

«Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον» και στη σελίδα 29 περιγράφονται τα σύµβολα που χρησιµοποιούνται για την κατασκευή ενός ∆ΡΠ.

Σκοπός της εφαρµογής αυτής είναι να εξοικειωθεί ο µαθητής µε την έννοια και την κατασκευή του ∆ΡΠ, ούτως ώστε να µπορεί να αναπαριστά τους αλγόριθµους µε αυτόν τον τρόπο. Στην παρούσα εφαρµογή παρουσιάζεται ο αλγόριθµος φυσσαλίδας σε φυσική γλώσσα µε βήµατα, έτσι όπως υλοποιείται στο σχολικό βιβλίο, και η βήµα προς βήµα κατασκευή του διαγράµµατος ροής από τη φυσική γλώσσα. Στη συνέχεια εκτελείται η αντίστροφη διαδικασία, δηλαδή η βήµα προς βήµα δηµιουργία του αλγορίθµου σε φυσική γλώσσα από το διάγραµµα ροής του.

Η εφαρµογή αυτή έχει τη µορφή παρουσίασης και συγχρόνως δίνεται η δυνατότητα στο χρήστη να πλοηγείται µέσα σε αυτήν µέσω δύο κουµπιών. Η διαδικασία παραγωγής του διαγράµµατος ροής γίνεται αυτόµατα και σταδιακά και ξεκινά εφόσον ο χρήστης πατήσει το κατάλληλο κουµπί. Έτσι ο χρήστης παραµένει θεατής στην εξελικτική πορεία της κατασκευής του διαγράµµατος ροής και η διάδρασή του µε την εφαρµογή περιορίζεται στη χρησιµοποίηση των προαναφερθέντων κουµπιών.

5.7.1 Περιγραφή αρχικής οθόνης Όπως φαίνεται και παρακάτω, Εικόνα 48, στην αρχική οθόνη της εφαρµογής στο

επάνω µέρος αριστερά βρίσκεται ο αλγόριθµος φυσσαλίδας σε φυσική γλώσσα µε βήµατα. Ακριβώς κάτω από τον αλγόριθµο υπάρχουν τα δυο κουµπιά πλοήγησης, που υποδεικνύουν µε τα χαρακτηριστικά τους βέλη προς τα πού θέλει να κινηθεί ο χρήστης π.χ. προηγούµενη σελίδα ( <- ), επόµενη σελίδα ( ->). Σε σχεδόν κεντρική θέση στην οθόνη βρίσκεται ένα µωβ πλαίσιο µέσα στο οποίο θα δηµιουργηθεί το διάγραµµα ροής. Κάτω από αυτό το πλαίσιο υπάρχουν δυο κουµπιά, τα start και back, τα οποία σχετίζονται µε το διάγραµµα ροής. Πατώντας το κουµπί start ξεκινά κάθε φορά η δηµιουργία του κατάλληλου κοµµατιού του διαγράµµατος ροής. Πατώντας το κουµπί back επαναφέρεται το διάγραµµα ροής στην προηγούµενη κατάστασή του, δηλαδή πριν την προσθήκη του νέου κοµµατιού. Η διάταξη όλων αυτών των στοιχείων, του αλγορίθµου, των κουµπιών και του πλαισίου παραµένει ίδια σε όλη τη διάρκεια της εφαρµογής για να µην υπάρξει σύγχυση.

Page 70: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

70

5.7.2 Πώς λειτουργεί η εφαρµογή Η λειτουργία της εφαρµογής είναι πολύ απλή και προφανής καθότι ο χρήστης το µόνο που έχει να κάνει είναι να πατά κάθε φορά το κουµπί start για να ξεκινά η δηµιουργία του διαγράµµατος ροής και το κουµπί µε την ένδειξη για να προχωρήσει στην επόµενη σελίδα. Επίσης για την επιστροφή σε προηγούµενη σελίδα µπορεί να πατήσει το κουµπί µε την ένδειξη και για την επιστροφή στην αµέσως προηγούµενη κατάσταση του διαγράµµατος ροής, το κουµπί back. Για επιπλέον διευκόλυνση, όταν ο χρήστης τοποθετήσει το δείκτη του ποντικιού σε οποιοδήποτε κουµπί, εµφανίζεται ένα ΄µπαλόνι΄ που επεξηγεί τη λειτουργία του συγκεκριµένου κουµπιού, Εικόνα 49.

Κάθε φορά που ο χρήστης πατά το κουµπί start, εκτός από τη δηµιουργία του διαγράµµατος ροής, χρωµατίζονται µε κόκκινο χρώµα και επισηµαίνονται µε κόκκινο βέλος οι αντίστοιχες γραµµές του αλγορίθµου σε φυσική γλώσσα, οι οποίες θα µετατραπούν σε κοµµάτια του διαγράµµατος ροής. Πατώντας όµως το κουµπί back οι γραµµές του αλγορίθµου επιστρέφουν στην αρχική τους κατάσταση, έχοντας πάλι µαύρο χρώµα και το βέλος εξαφανίζεται.

Page 71: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

71

5.7.3 Πώς αναπτύχθηκε η εφαρµογή

5.7.3.1 Είδη αντικειµένων που χρησιµοποιήθηκαν Για τη δηµιουργία ολόκληρης της παρουσίασης χρησιµοποιήθηκε ένα αντικείµενο

Book το οποίο µπορούµε να προµηθευτούµε µε τον εξής τρόπο: από την καρτέλα Supplies, επιλέγουµε ένα αντικείµενο Object Catalog µε την τεχνική ‘σύρε και άφησε’ (drag and drop). Από εκεί κάνουµε κλικ στην κατηγορία Presentation και επιλέγουµε ένα αντικείµενο Book µε drag and drop. Η εφαρµογή µας υλοποιείται ξεχωριστά σε κάθε σελίδα του Book, δηλαδή στην πρώτη σελίδα υπάρχει µια σύντοµη περιγραφή της εφαρµογής, στη δεύτερη παρουσιάζεται ο αλγόριθµος και κατόπιν (εφόσον πατηθεί το κατάλληλο κουµπί) εµφανίζεται το διάγραµµα ροής κ.ο.κ.

Ο αλγόριθµος είναι γραµµένος µέσα σε ένα αντικείµενο Text (border) το οποίο µπορούµε να προµηθευτούµε από ένα Object Catalog (όπως περιγράφηκε παραπάνω), επιλέγοντας την κατηγορία Text και κάνοντας drag and drop ένα αντικείµενο Text (border). Επίσης οι γραµµές που αλλάζουν χρώµα κάθε φορά (και µόνο αυτές) είναι γραµµένες σε ξεχωριστά Text (borders).

Το µωβ πλαίσιο, στο οποίο εµφανίζεται το διάγραµµα ροής, είναι ένα αντικείµενο Playfield. Το Playfield βρίσκεται στην καρτέλα Supplies και είναι κατάλληλο για τη φιλοξενία κινούµενων γραφικών. Το διάγραµµα ροής εµφανίζεται σταδιακά στο Playfield και σε αρκετές περιπτώσεις τα στοιχεία που το αποτελούν, π.χ. έλλειψη, ρόµβος κ.λπ., εµφανίζονται κινούµενα ούτως ώστε να γίνει πιο κατανοητή στο χρήστη η δηµιουργία του διαγράµµατος ροής.

Τα κουµπιά που βοηθούν στην πλοήγηση της παρουσίασης υπάρχουν στην καρτέλα Supplies µε τα ονόµατα NextPage και PreviousPage αντίστοιχα, µε τη µόνη διαφορά ότι έχει αλλαχθεί το σχήµα τους για να καταστούν πιο ευανάγνωστα. Το σχήµα µπορεί να αλλαχθεί επιλέγοντας το κάτω δεξιά κίτρινο κυκλάκι από τις ιδιότητες του κουµπιού, οι οποίες εµφανίζονται πατώντας Alt + αριστερό κλικ ή πατώντας το µεσαίο κουµπί του ποντικιού, έχοντας ταυτόχρονα και στις δυο περιπτώσεις το δείκτη του ποντικιού πάνω στο αντικέιµενο.

Page 72: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

72

Τα κουµπιά start και back που είναι υπεύθυνα για τη δηµιουργία ή την ‘εξαφάνιση’ αντίστοιχα του διαγράµµατος ροής είναι αντικείµενα Button. Τα αντικείµενα Button βρίσκονται στην καρτέλα Supplies.

Χρησιµοποιήθηκαν αντικείµενα Ellipse από την καρτέλα Supplies, για την αναπαράσταση των ελλείψεων του διαγράµµατος ροής, που συµβολίζουν την αρχή και το τέλος του αλγορίθµου. Επίσης για τα βέλη που δείχνουν την πορεία του διαγράµµατος ροής χρησιµοποιήθηκαν αντικείµενα Arrow από το Object Catalog. Για τη διεργασία των πράξεων στο διάγραµµα ροής (ορθογώνιο σχήµα) χρησιµοποιήθηκαν αντικείµενα text (border) και για την έκφραση της συνθήκης (ρόµβος) σχεδιάστηκε ρόµβος µε το πρόγραµµα ζωγραφικής του Squeak Etoys που βρίσκεται στην καρτέλα Navigator.

5.7.3.2 Button start Πριν προχωρήσουµε στην περιγραφή της υλοποίησης των κουµπιών start και back

πρέπει να αναφέρουµε ότι όλα τα κουµπιά αυτά προγραµµατίστηκαν µε τρόπο παρόµοιο µε αυτόν που ακολουθεί. Για το λόγο αυτό δεν κρίνεται απαραίτητο να περιγράψουµε αναλυτικά τη λειτουργία όλων των κουµπιών start και back της εφαρµογής αλλά θα περιγράψουµε µόνο τα αρχικά κουµπιά start και back.

Για να δούµε τον κώδικα του κουµπιού start ανοίγουµε τον Viewer αυτού, Εικόνα 50 και κάνουµε drag and drop το Button1script1 στην επιφάνεια εργασίας του Etoys, Εικόνα 51 Βλέπουµε ότι εάν πατήσει ο χρήστης το κουµπί start τότε εκτελούνται οι εντολές που βρίσκονται µέσα στο script1. Το ότι οι εντολές εκτελούνται όταν ο χρήστης πατήσει µε το δείκτη του ποντικιού του το κουµπί, δηλώνεται ρυθµίζοντας το ρολόι, που βρίσκεται στη γραµµή εργαλείων του script, στην ένδειξη mouseDown.

Οι αρχικές εντολές του script1 δηλώνουν ότι ξεκινά η εκτέλεση των script1 των αντικειµένων ARXH και TELOS, τα οποία είναι ελλείψεις και αναπαριστούν την αρχή και το τέλος του διαγράµµατος ροής και συνεπώς την αρχή και το τέλος του αλγορίθµου. Επίσης η πρώτη και η τελευταία γραµµή του αλγορίθµου αποκτούν κόκκινο χρώµα (εντολές textarxh script2 και texttelos script2) και εµφανίζεται και από ένα βέλος πλάι σε αυτές για να επισηµανθεί ποιες από τις γραµµές του αλγορίθµου µετατρέπονται σε διάγραµµα ροής τη συγκεκριµένη στιγµή (εντολές Arrow15 show και Arrow16 show).

Ο κώδικας που περιέχεται στο script1 του αντικειµένου ARXH φαίνεται στην Εικόνα 52.Το αντικείµενο ARXH εµφανίζεται στο playfield και κινείται σταδιακά µέχρις ότου λάβει την επιθυµητή του θέση στο playfield. Ταυτόχρονα µε το αντικείµενο ARXH εµφανίζεται και κινείται και το αντικείµενο TELOS, το οποίο σταµατάει και αυτό την κίνησή του όταν λάβει την επιθυµητή του θέση στο playfield, Εικόνα 49.Κατόπιν εµφανίζονται τα βέλη που δείχνουν την πορεία του διαγράµµατος ροής και το σηµείο στο διάγραµµα όπου θα τοποθετηθούν οι επόµενες εντολές του αλγορίθµου.

Εικόνα 50: Οι εντολές στο script1 του κουµπιού start

Page 73: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

73

5.7.3.3 Button back Ανοίγοντας τον Viewer του κουµπιού back Εικόνα 53 µπορούµε να δούµε τις εντολές

του κουµπιού από το Button script1 Εικόνα 52. Οι ελλείψεις ARXH και TELOS γίνονται hide και τοποθετούνται στην αρχική τους θέση (στην αρχή του playfield) χωρίς να φαίνονται. Ακόµα γίνονται hide τα βέλη στο διάγραµµα ροής και στον αλγόριθµο και τέλος οι γραµµές του αλγορίθµου που χρωµατίστηκαν κόκκινες αποκτούν ξανά το αρχικό τους χρώµα (µαύρο).

Εικόνα 51: Ο κώδικας που περιέχεται στο script1 του αντικειµένου ARXH

Εικόνα 52: Οι εντολές στο script1 του κουµπιού back

Εικόνα 53: Ο Viewer του κουµπιού back

Page 74: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

74

5.8 Πίνακας Η έννοια του πίνακα παρουσιάζεται στη σελίδα 56 του βιβλίου «Ανάπτυξη Εφαρµογών

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

5.8.1 Περιγραφή αρχικής οθόνης Όπως φαίνεται και στην Εικόνα 54 στο αριστερό µέρος της αρχικής οθόνης της

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

Στα δεξιά της αρχικής οθόνης της εφαρµογής βρίσκεται ένας πίνακας 3Χ4 στον οποίο

θα εισαχθούν οι αριθµοί. Για να γίνει αντιληπτή η σειρά εισαγωγής των αριθµών στον πίνακα, απαριθµώνται οι γραµµές του µε i=1 i=2 i=3 και οι στήλες του µε j=1 j=2 j=3 j=4 αντίστοιχα.

Ακριβώς κάτω από τους αλγόριθµους υπάρχουν δύο κουµπιά, τα reset και start. Για να ξεκινήσει η λειτουργία της εφαρµογής ο χρήστης πρέπει να πατήσει το κουµπί start. Πατώντας το start εµφανίζεται η επόµενη (και τελευταία) οθόνη της εφαρµογής, Εικόνα 55. Η µοναδική διαφορά αυτής της οθόνης από την αρχική οθόνη, αφορά στη θέση των αλγορίθµων. Εδώ δεν υπάρχουν οι δύο εκδοχές των αλγορίθµων αλλά υπάρχει ένας αλγόριθµος, που δείχνει σε ποιο κελί του πίνακα γίνεται η εισαγωγή και ποιος αριθµός εισάγεται κάθε φορά. Επίσης κάτω από τον αλγόριθµο εµφανίζονται και οι αριθµοί που πρόκειται να εισαχθούν στον πίνακα. Ο πίνακας παραµένει ίδιος όπως στην αρχική οθόνη ενώ εµφανίζονται και δυο νέα κουµπιά, τα grammes και sthles. Πατώντας το grammes οι αριθµοί

Εικόνα 54: Η αρχική οθόνη στην εφαρµογή του πίνακα

Page 75: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

75

εισάγονται στον πίνακα ανά γραµµές ενώ πατώντας το sthles οι αριθµοί εισάγονται στον πίνακα ανά στήλες. Τέλος πατώντας το reset επαναφέρεται η αρχική οθόνη της εφαρµογής.

5.8.2 Πώς λειτουργεί η εφαρµογή Μόλις ο χρήστης ανοίξει την εφαρµογή αντικρύζει την οθόνη έτσι όπως φαίνεται στην

Εικόνα 54. Η αρχική οθόνη δίνει στο χρήστη τη δυνατότητα να παρατηρήσει τους αλγόριθµους εισαγωγής των αριθµών στον πίνακα ανά γραµµές και ανά στήλες, καθώς και τις διαφορές αυτών των αλγορίθµων. ∆ηλαδή ποιες αλλαγές συµβαίνουν στον αλγόριθµο προκειµένου να εισαχθούν τα στοιχεία τη µια φορά ανά γραµµές και την άλλη ανά στήλες. Ακόµα ο χρήστης έχει τη δυνατότητα να δει άδειο τον πίνακα στον οποίο θα εισαχθούν οι αριθµοί.

Για να ξεκινήσει η λειτουργία της εφαρµογής θα πρέπει ο χρήστης να πατήσει το κουµπί start. Τότε εµφανίζεται η οθόνη της εφαρµογής όπως αυτή φαίνεται στην Εκόνα 55. Έπειτα ο χρήστης επιλέγει τον τρόπο µε τον οποίο θέλει να γεµίσει τον πίνακα, ανά γραµµές ή ανά στήλες, πατώντας το κατάλληλο κουµπί, το grammes ή το sthles.

Εφόσον ο χρήστης επιλέξει να εισάγει τους αριθµούς στον πίνακα ανά γραµµές, θα πρέπει να πατά συνεχώς το κουµπί grammes έως ότου γεµίσει ο πίνακας. Αν προσπαθήσει να εισάγει και άλλο στοιχείο στον ήδη γεµάτο πίνακα, θα του εµφανιστεί σχετικό µήνυµα προειδοποίησης, Εικόνα 57. Η ίδια ακριβώς λειτουργία εκτελείται και όταν ο χρήστης επιλέξει να εισάγει τους αριθµούς ανά στήλες, µε τη µόνη διαφορά ότι πατά το κουµπί sthles.

Οποιονδήποτε τρόπο και αν έχει επιλέξει ο χρήστης για να γεµίσει τον πίνακα, δεν µπορεί, εφόσον δεν έχει ολοκληρωθεί η εισαγωγή όλων των αριθµών, να επιλέξει εισαγωγή µε άλλον τρόπο. Π.χ. αν έχει επιλέξει να εισάγει τους αριθµούς ανά γραµµές δεν µπορεί να επιλέξει εισαγωγή αριθµών ανά στήλες προτού ολοκληρωθεί η εισαγωγή όλων των αριθµών ανά γραµµές. Αν επιχειρήσει κάτι τέτοιο τότε του εµφανίζεται σχετικό προειδοποιητικό µήνυµα, Εικόνα 56. Το ίδιο ισχύει και για όταν επιλέξει εισαγωγή ανά στήλες.

Εικόνα 55: Η οθόνη της εφαρµογής έχοντας πατήσει το κουµπί start

Page 76: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

76

Ας πάρουµε για παράδειγµα την περίπτωση της εισαγωγής αριθµών ανά γραµµές

προκειµένου να δούµε τι συµβαίνει στην εφαρµογή. Ο χρήστης πατά µια φορά το κουµπί grammes. Τότε εισάγεται ο πρώτος αριθµός, από αυτούς που βρίσκονται στα αριστερά της οθόνης, στο πρώτο κελί του πίνακα. Ταυτόχρονα στον αλγόριθµο το i γίνεται ίσο µε 1 (η πρώτη γραµµή του πίνακα), το j γίνεται ίσο µε 1 (η πρώτη στήλη του πίνακα) και τα βελάκια στον πίνακα που υποδεικνύουν την πρώτη γραµµή και την πρώτη στήλη (πρώτο κελί) γίνονται κόκκινα για να δείξουν σε ποιο κελί έγινε η εισαγωγή, Εικόνα 58. Πατώντας ξανά το κουµπί grammes εισάγεται ο δεύτερος αριθµός στο κελί του πίνακα. Ταυτόχρονα στον αλγόριθµο το i παραµένει ίσο µε 1 ενώ το j γίνεται ίσο µε 2 και στον πίνακα το βελάκι που δείχνει στη δεύτερη στήλη γίνεται κόκκινο καθώς το βελάκι που δείχνει στην πρώτη γραµµή παραµένει κόκκινο, Εικόνα 59.

Εικόνα 56: Ο χρήστης προσπαθεί να εισάγει αριθµούς ανά στήλες ενώ έχει ξεκινήσει να εισάγει ανά γραµµές

Εικόνα 57: Ο χρήστης προσπαθεί να εισάγει αριθµούς στον ήδη γεµάτο πίνακα

Εικόνα 58: Εισαγωγή του πρώτου αριθµού ανά γραµµές

Εικόνα 59: Εισαγωγή του δεύτερου αριθµού ανά γραµµές

Page 77: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

77

Η παραπάνω διαδικασία συνεχίζεται παροµοίως για τις εισαγωγές όλων των αριθµών. Συνοψίζοντας µπορούµε να δούµε στον παρακάτω πίνακα τις τιµες των i (γραµµών) και j (στηλών) για κάθε εισαγωγή αριθµού ανά γραµµές: Πίνακας 1: Εισαγωγή αριθµών ανά γραµµές

Όταν οι αριθµοί εισάγονται ανά στήλες οι τιµές των i και j φαίνονται στον Πίνακα2: Πίνακας 2: Εισαγωγή αριθµών ανά στήλες

5.8.3 Πώς αναπτύχθηκε η εφαρµογή

5.8.3.1 Είδη αντικειµένων που χρησιµοποιήθηκαν Για την κατασκευή της εφαρµογής χρησιµοποιήθηκαν αρχικά δυο αντικείµενα

Playfield, ένα µεγαλύτερο πράσινου χρώµατος που φιλοξενεί ολόκληρη την εφαρµογή και ένα µικρότερο ροζ χρώµατος που φιλοξενεί τον πίνακα. Χρησιµοποιήθηκαν αρκετά Text (borders) για την εµφάνιση των αλγορίθµων, των διαφόρων µηνυµάτων, για την αναπαράσταση των κελιών του πίνακα, για την εµφάνιση των προς εισαγωγή αριθµών και για την εµφάνιση των i και j γύρω από τον πίνακα. Επίσης χρησιµοποιήθηκαν αρκετά αντικείµενα Buttons τόσο για το ξεκίνηµα και την επανεκκίνηση της εφαρµογής, όσο και για την εισαγωγή των αριθµών στον πίνακα.

Τα βελάκια που περιστοιχίζουν τον πίνακα και δείχνουν σε κάθε γραµµή και σε κάθε στήλη είναι αντικείµενα τύπου Arrow. Ακόµα έχουν χρησιµοποιηθεί αντικείµενα τύπου

αριθµοί i j 32 1 1 18 1 2 24 1 3 67 1 4 8 2 1 15 2 2 41 2 3 2 2 4 10 3 1 56 3 2 74 3 3 9 3 4

αριθµοί j i 32 1 1 18 1 2 24 1 3 67 2 1 8 2 2 15 2 3 41 3 1 2 3 2 10 3 3 56 4 1 74 4 2 9 4 3

Page 78: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

78

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

5.8.3.2 Button reset Για να δούµε τον κώδικα του κουµπιού reset ανοίγουµε τον Viewer του, Εικόνα 60.

Στη συνέχεια ανοίγουµε τα scripts του reset: script1, script2, script3. Στην Εικόνα 61, φαίνεται ο κώδικας του script1. Τα script2 και script3 δεν παρατίθενται εδώ, όµως ο αναγνώστης µπορεί να τα δει µέσα από την εφαρµογή. Στο script1 περιλαµβάνονται εντολές όπου αποκρύπτουν ή εµφανίζουν κάποια αντικείµενα στην οθόνη και επίσης εντολές που ενεργοποιούν τα υπόλοιπα scripts. Στο script2 περιλαµβάνονται εντολές απόκρυψης των κουµπιών grammes και sthles και αφού ολοκληρωθούν αυτές εκτελείται ακόµα µια εντολή για να σταµατήσει το script2. Τέλος στο script3 περιλαµβάνονται εντολές που εµφανίζουν κάποια αντικείµενα στο playfield και αποκρύπτουν κάποια άλλα. Επίσης περιλαµβάνονται εντολές που θέτουν το χρώµα µαύρο σε όσα αντικείµενα το χρώµα έγινε κόκκινο.

Με άλλα λόγια η λειτουργία του κουµπιού reset είναι να επαναφέρει την οθόνη της εφαρµογής στην αρχική της κατάσταση, δηλαδή όπως εµφανίζεται στην Εικόνα 54.

Εικόνα 60: Ο Viewer του κουµπιού reset

Εικόνα 61: Ο κώδικας του script1

Page 79: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

79

5.8.3.3.Button start Από τον Viewer του κουµπιού start, Εικόνα 62, µπορούµε να δούµε τα scripts του

start: script1, script2, script3. Στην Εικόνα 63 φαίνεται ο κώδικας του script1. Τα script2 και script3 δεν παρατίθενται εδώ, όµως ο αναγνώστης µπορεί να τα δει µέσα από την εφαρµογή. Στο script1 περιλαµβάνονται εντολές που αποκρύπτουν κάποια αντικείµενα ή εµφανίζουν κάποια άλλα στην οθόνη και επίσης εντολές που ενεργοποιούν τα υπόλοιπα scripts. Στο script2 περιλαµβάνονται εντολές που εµφανίζουν τα κουµπιά grammes και sthles και µια εντολή που σταµατά το script2. Τέλος στο script3 περιλαµβάνονται εντολές που αποκρύπτουν κάποια αντικείµενα, εµφανίζουν κάποια άλλα, θέτουν αρχικές τιµές σε ορισµένα και θέτουν σε µαύρο το χρώµα των αντικειµένων των οποίων είναι κόκκινο.

Με άλλα λόγια η λειτουργία του κουµπιού start είναι να εµφανιστούν τα κατάλληλα αντικείµενα (κουµπιά, αριθµοί, αλγόριθµος) ούτως ώστε να µπορέσει ο χρήστης να εισάγει τους αριθµούς στον πίνακα. Αλλάζει δηλαδή η όψη της αρχικής οθόνης και γίνεται σαν αυτή που απεικονίζεται στην Εικόνα 55.

Εικόνα 62: Ο Viewer του κουµπιού start

Εικόνα 63: Ο κώδικας script1

Page 80: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

80

5.8.3.4 Button grammes και Button sthles Το κουµπί grammes µπορεί να φαίνεται ότι είναι ένα µόνο κουµπί το οποίο πατά ο

χρήστης συνεχόµενα µέχρι να γεµίσει τον πίνακα, στην ουσία όµως είναι δώδεκα κουµπιά τα οποία είναι στοιβαγµένα το ένα κάτω από το άλλο. Τα κουµπιά αυτά έχουν παρόµοιες λειτουργίες. Είναι υπεύθυνα για την εµφάνιση των στοιχείων µέσα στον πίνακα και τον χρωµατισµό των βελών και των i και j γύρω από τον πίνακα. Επίσης είναι υπεύθυνα για το χρωµατισµό και την αλλαγή των αριθµών στον αλγόριθµο. Μόλις το κάθε κουµπί εκτελέσει τις λειτουργίες του εξαφανίζεται και στη θέση του εµφανίζεται το επόµενο κουµπί. Το τελευταίο κουµπί που εµφανίζεται είναι αυτό που εµφανίστηκε πρώτο. Αυτό το κουµπί δεν εξαφανίζεται αν πατηθεί αλλά εµφανίζει ένα µήνυµα που ειδοποιεί το χρήστη ότι ο πίνακας είναι γεµάτος.

Από τον Viewer του κουµπιού grammes, Εικόνα 64, µπορούµε να δούµε τα scripts του κουµπιού: script1 και script2. Ο κώδικας των script1 και script2 φαίνεται στην Εικόνα 65. Ο κώδικας αυτός καθορίζει τη λειτουργία του κουµπιού grammes. Ο κώδικας των υπόλοιπων κουµπιών είναι παρόµοιος µε αυτόν που µόλις παραθέσαµε οπότε δεν κρίνεται αναγκαίο να παρατεθεί εδώ.

Εικόνα 64: Ο Viewer του κουµπιού grammes

Εικόνα 65: Ο κώδικας των script1 και script2

Page 81: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

81

Η φιλοσοφία κατασκευής των κουµπιών sthles είναι ακριβώς ίδια µε αυτήν της κατασκευής των κουµπιών grammes. Η µοναδική διαφορά εντοπίζεται στο γεγονός ότι µε τη χρήση των κουµπιών sthles οι αριθµοί εισάγονται στον πίνακα ανά στήλες. Στην Εικόνα 66, φαίνεται ο Viewer του κουµπιού sthles και στην Εικόνα 67, ο κώδικας των script1 και script2.

Εικόνα 66: Ο Viewer του κουµπιού sthles

Εικόνα 67: Ο κώδικας των script1 και script2

Page 82: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

82

6.ΣΥΜΠΕΡΑΣΜΑΤΑ

Κατά τη γνώµη µας η πλατφόρµα Squeak Etoys ενδείκνυται για εκµάθηση βασικών αρχών και εννοιών προγραµµατισµού διότι η ελκυστική διεπαφή χρήστη αποτελεί ενθαρρυντικό παράγοντα για παιδιά αλλά και αρχάριους χρήστες. Το γεγονός ότι µπορούν πολλές εργασίες να εκτελεσθούν µε οπτικό προγραµµατισµό ή απλά και µόνο µε την επιλογή αντικειµένων και τη ρύθµιση των ιδιοτήτων τους από ήδη υπάρχοντα µενού και όχι πληκτρολογώντας εντολές, διευκολύνει τον χρήστη στην γρήγορη εξοικείωση µε την πλατφόρµα και τις ιδιότητες της. Τέλος ο χρήστης µπορεί να κατανοήσει πολύ εύκολα την έννοια της µεταβλητής ή της συνάρτησης καθώς παρακολουθεί τα αποτελέσµατα των ενεργειών που εκτελεί στα γραφικά αντικείµενα του περιβάλλοντος. Το Squeak Etoys αποτελεί ένα πολύ καλό περιβάλλον εκµάθησης των βασικών αρχών αντικειµενοστρεφούς προγραµµατισµού καθώς οποιοδήποτε στοιχείο του περιβάλλοντος είναι αντικείµενο. Κάθε αντικείµενο αποτελεί ένα ξεχωριστό γραφικό στοιχείο µε οµαδοποιηµένα και ενσωµατωµένα χαρακτηριστικά και µεθόδους. Ο χρήστης καλείται να επιδράσει στο αντικειµενοστρεφές περιβάλλον δηµιουργώντας αντικείµενα και τροποποιώντας τις τιµές και τις συναρτήσεις τους πολλές φορές µόνο µε οπτικό προγραµµατισµό. Θεωρούµε ότι για την εκµάθηση βασικών εννοιών προγραµµατισµού θα έπρεπε να αποσαφηνιστεί στους εκπαιδευόµενους ότι οι µεταβλητές και οι συναρτήσεις όπως και πολλές άλλες έννοιες προγραµµατισµού µπορούν να υπάρξουν και αυτόνοµα σε ένα πρόγραµµα στα πλαίσια του γραµµικού προγραµµατισµού. Όπως έχει ήδη αναφερθεί το ανοιχτό λογισµικό όπου κατατάσσεται και η πλατφόρµα Squeak Etoys, υπερτερεί έναντι του κλειστού λογισµικού στη διαδικασία της µάθησης καθότι δίνει στους µαθητές τη δυνατότητα να κατανοήσουν την εσωτερική δοµή και λειτουργία όλων των στοιχείων του περιβάλλοντος. Με αυτόν τον τρόπο οι εκπαιδευόµενοι µπορούν να αναπτύξουν πιο ολοκληρωµένα νοητικά µοντέλα των εννοιών που µαθαίνουν και τους δίνεται η δυνατότητα να αναπτύξουν και να εξελίξουν τις γνώσεις τους σε ανώτερα επίπεδα και µε πολύ ταχύτερους ρυθµούς. Τέλος θα θέλαµε να τονίσουµε ότι ο προγραµµατισµός εφαρµογών σε επίπεδο αντικειµένου της πλατφόρµας Squeak Etoys µπορεί να αποτελέσει ανασταλτικό παράγοντα για εφαρµογές µεγάλου µεγέθους µε πολλά αντικείµενα. Οπότε πιστεύουµε ότι για µικρού µεγέθους πολυµεσικές εφαρµογές η πλατφόρµα Squeak Etoys µπορεί να αποτελέσει µια αξιόπιστη και εύχρηστη επιλογή. Ένα πρόβληµα το οποίο παρατηρήθηκε µέσα από την ανάπτυξη των εφαρµογών µας, είναι ότι η πλατφόρµα Squeak Etoys δεν υποστηρίζει ελληνικούς χαρακτήρες. Έτσι αν θέλουµε να γράψουµε ελληνικές λέξεις θα πρέπει να τις πληκτρολογήσουµε µε αγγλικούς χαρακτήρες (greeklish). Επίσης η πλατφόρµα Squeak Etoys δεν έχει εγκατασταθεί ακόµα στα σχολικά εργαστήρια οπότε δε γνωρίζουµε κατά πόσο µπορεί να θεωρηθεί αποτελεσµατική στη διαδικασία της µάθησης. Όµως θεωρούµε ότι η εκµάθησή της µπορεί να γίνει σχετικά εύκολα και γρήγορα τόσο από τους καθηγητές όσο και από τους µαθητές, µε τη βοήθεια ενός οδηγού χρήσης της πλατφόρµας.

Page 83: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

83

7.ΑΝΑΦΟΡΕΣ

7.1 Βιβλιογραφία [1] Andrew P. Black, Stephane Ducasse, Oscar Nierstrasz, Damien Pollet, (2007), Squeak by Example [2] Alec Sharp,(1997),Smalltalk by Example [3] Edward J.Klimas, Suzanne Skublics, David A. Thomas, (2004), Smalltalk with Style [4] Ted Kaehler, Dave Patterson,First Edition (1986),A taste of Smalltalk [5] John Hunt,Smalltalk and Object Orientation [6] Dan Shafer, Dean A.Ritz,(1991),Practical Smalltalk [7] Simon Lewis, (1995), The Art and Science of Smalltalk [8] Trevor Hopkins, Bernard Horan, Smalltalk: An Introduction to Application Development Using VisualWorks [9] John Hunt, Smalltalk and Object Orientation: An Introduction

Page 84: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

84

7.2 ∆ικτυακές Πηγές [1] http://ru6.cti.gr/olpc/ [2] OLPC- XO http://www.laptop.org/ [3] Squeak e-toys http://www.squeakland.org/ [4]The Squeak environment http://squeakhelpmirror.joyful.com/TheSqueakEnvironment [5] Doing some simple things in Smalltalk http://wiki.squeak.org/squeak/3290 [6] Πλήρης προσοµοίωση του Μηχανισµού των Αντικυθήρων στο περιβάλλον Squeak EToys. http://spinellis.gr/sw/ameso/index.el.html [7] Η γλώσσα Squeak http://el.wikipedia.org/wiki/Squeak [8] A Development Example for Squeak 3.9 http://squeak.preeminent.org/tut2007/html/ [9] An Introduction to the Squeak World http://web.cecs.pdx.edu/~black/OOP/Tutorial/Squeak%20Worksheet%201A.html [10] Discovering Better Code: Bowling For Smalltalk http://www.xprogramming.com/xpmag/BowlingForSmalltalk.htm [11] The Essentials of Message-Oriented Programming with Smalltalk http://www.chronos-st.org/Smalltalk-Getting-the-Message.html [12] Squeak Smalltalk: Language Reference http://www.mucow.com/squeak-qref.html [13] LanguageNotes http://squeak.joyful.com/LanguageNotes [14] Terse guide to Squeak http://wiki.squeak.org/squeak/5699 [15] Squeak, the Smalltalk of the 21st. Century http://www.arsol.net/arte/squeakXXI/squeakXXI.htm [16] A Morphic Rolodex Tutorial http://wiki.squeak.org/squeak/2102 [17] Counter Tutorial http://wiki.squeak.org/squeak/1827 [18] Learning Squeak Step by Step http://www.dmu.com/squeak/sq6.html [19] Fifhbow http://www.consultar.com/Squeak/tutorial/fishbowl.html [20] What We Call Objects http://www.consultar.com/Squeak/tutorial/whatwecallobjects.html [21] ProgrammingMorphs http://wiki.squeak.org/squeak/3013 [22] Morphic - The Squeak User Interface http://www.jvuletich.org/Squeak/IntroductionToMorphic/Morphic.html [23] Fun with the Morphic Graphics System http://static.squeak.org/tutorials/morphic-tutorial-1.html [24] More Morphic Tutorials http://wiki.squeak.org/squeak/792#Beginner [25] Drawing morph http://www.visoracle.com/squeak/faq/drawing-morph.html [26] How to control Mouse Event with Morph Objects in Squeak http://www.ccs.neu.edu/course/com3230/squeak/SqueakMouseControls.html [27] Animation with inspector http://web.cecs.pdx.edu/~black/OOP/Tutorial/Squeak%20Worksheet%202.html [28] Create a window with scrollable contents http://wiki.squeak.org/squeak/3875 [29] How to jump to a project with smalltalk http://wiki.squeak.org/squeak/1013 [30] Delay execution of some code http://wiki.squeak.org/squeak/195 [31] How to run some Smalltalk code when entering a project http://wiki.squeak.org/squeak/1012 [32] Using Squeak's SUnit to test your code http://squeak.preeminent.org/copyFilesTutorial/usingSUnit-3.5.html [33] Squeak Cookbook http://wiki.squeak.org/squeak/66 [34]How to lay out submorphs http://www.visoracle.com/squeak/faq/morphic-layout.html [35] Adding tiles to Text Morph viewer http://squeak.pbwiki.com/Adding+tiles+to+Text+Morph+viewer

Page 85: Ανάπτυξη πολυµεσικών διαδραστικών µ Squeak e-toys»users.auth.gr/tsiatsos/Files/ptyxiakes/2008_Mauridi_Politou.pdf · ΕΛΕΥΘΕΡΟ ΚΑΙ ΑΝΟΙΚΤΟ

85

[36] Smalltalk: Getting The Message http://www.chronos-st.org/Smalltalk-Getting-the-Message.html