ΗΥ252 - Οντοκεντρικός Προγραµµατισµός Προγραµµατιστική Εργασία Εαρινού Εξαµήνου 2004 Περιγραφή Παραδοτέων

Σχετικά έγγραφα
Ιεραρχία Οργανισµών Οι οργανισµοί που ζουν στο οικοσύστηµά µας κατατάσσονται σύµφωνα µε την παρακάτω ιεραρχία: Organisms

Οντοκεντρικός Προγραμματισμός II C++ Project Xειμερινό Εξάμηνο Organisms

Φροντιστήριο 8 Λύσεις

ΗΥ 252 Αντικειμενοστρεφής Προγραμματισμός Προγραμματιστική Εργασία Χειμερινού Εξαμήνου Σκάκι

Φροντιστήριο 8 Λύσεις

Σειρά Προβλημάτων 5 Λύσεις

Σειρά Προβλημάτων 4 Λύσεις

Σειρά Προβλημάτων 4 Λύσεις

Σειρά Προβλημάτων 4 Λύσεις

Σε αυτό το µάθηµα. Εισαγωγή στις Μηχανές Turing. Μηχανή Turing (Turing Machine - TM) Μηχανές Turing. Παραδείγµατα Μηχανών Turing

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 12: Μηχανές Turing

num(m(w 1 ;... ; w k )) = f(num(w 1 ),..., num(w k ))

Μηχανές Turing (T.M) I

Σειρά Προβλημάτων 4 Λύσεις

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 13: Παραλλαγές Μηχανών Turing και Περιγραφή Αλγορίθμων

Σειρά Προβλημάτων 4 Λύσεις

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Σειρά Προβλημάτων 4 Λύσεις

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

Σειρά Προβλημάτων 4 Λύσεις

Σειρά Προβλημάτων 4 Λύσεις

Φροντιστήριο 9 Λύσεις

Μια TM µπορεί ένα από τα δύο: να αποφασίζει µια γλώσσα L. να αναγνωρίζει (ηµιαποφασίζει) µια γλώσσα L. 1. Η TM «εκτελεί» τον απαριθµητή, E.

7.Α.1 Παρουσιάσεις. 7.Α.2 Περιγραφή περιεχομένων της εφαρμογής

Περιεχόμενα Ορισμός και λειτουργία των μηχανών Turing Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Επ. Καθ. Π. Κατσαρός Τμήμ

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

Φροντιστήριο 10 Λύσεις

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

Σειρά Προβλημάτων 4 Λύσεις

2.2 Ειδικά Φύλλα Mahjong Phoenix - Φοίνικας Hund - Σκυλάκια Drache - Δράκος... 5

Πτυχιακή Εργασία Οδηγώντας ένα Ρομποτικό Αυτοκίνητο με το WiFi. Η Ασύρματη Επικοινωνία, χρησιμοποιώντας

Σειρά Προβλημάτων 5 Λύσεις

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Scratch 2.0 Προκλήσεις

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 1o Μέρος

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

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

Ενότητα 13. Εισαγωγή στην Πληροφορική. Κεφάλαιο 13Α. Αρχεία. Χειµερινό Εξάµηνο ρ. Παναγιώτης Χατζηδούκας (Π..407/80) προγραµµατισµός

Πλακίδια του Wang C πεπερασμένο σύνολο χρωμάτων.

Τ.Ε.Ι. ΚΡΗΤΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΙΑΣ. Ασκήσεις 1-2 Εισαγωγή

Σειρά Προβλημάτων 5 Λύσεις

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ «ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ»

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Θεωρία Υπολογισμού και Πολυπλοκότητα Αναγωγές

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Πιθανοτικός Συμπερασμός: Πού βρίσκομαι στο πλέγμα; [ΠΛΗ 513] Αυτόνομοι πράκτορες - Project Εξαμήνου ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ

Α. Ερωτήσεις Ανάπτυξης

ΗΥ 252: Αντικειµενοστρεφής Προγραµµατισµός

GreekLUG Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Προγραμματισμός Ι (HY120)

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Αρχιτεκτονική Μηχανής. Αποθήκευση εδοµένων

Θεωρία Υπολογισμού και Πολυπλοκότητα

Σειρά Προβλημάτων 1 Λύσεις

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

Θεωρία Υπολογισμού και Πολυπλοκότητα To Δόγμα Church-Turing

Κεφ. 1: Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος

Ο ΗΓΙΕΣ DOCUMENT DESIGNER

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Η NTM αποδέχεται αν µονοπάτι στο δέντρο που οδηγεί σε αποδοχή.

4 ο ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ ΓΕΝΙΚΟΣ ΣΚΟΠΟΣ :

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Υπολογίσιμες Συναρτήσεις

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

ΑΕΠΠ Ερωτήσεις θεωρίας

Σειρά Προβλημάτων 5 Λύσεις

ΚΕΦΑΛΑΙΟ 2ο ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΑΚΡΙΤΩΝ ΓΕΓΟΝΟΤΩΝ

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Εισαγωγή στην Τεχνολογία Λογισµικού

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

Εγκατάσταση αρχείων βιβλιοθήκης VHOPE και VHOPE

Μοντέλα. χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες.

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

«Οδηγίες χρήσης εφαρμογής Ενιαίου Συστήματος Πληρωμών»

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

ΗΥ 252: Αντικειµενοστρεφής Προγραµµατισµός

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

Εισαγωγή στην Επιστήμη των Υπολογιστών

Εισαγωγή στην Τεχνολογία Λογισµικού

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6

Εργαλεία του JDK. Β.1 Εργαλεία του JDK. Β.2 Μεταγλωττιστής javac. Τα πιο βασικά εργαλεία του JDK είναι τα παρακάτω.

Ψευδοκώδικας. November 7, 2011

ρ. Μάρκος Ν. ενδρινός Καθηγητής Πληροφορικής ΤΕΙ-Α Microsoft Office Power Point 2003

ΗΥ240: Δοµές Δεδοµένων Εαρινό Εξάµηνο Ακαδηµαϊκό Έτος 2016 Διδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστική Εργασία - 1 ο Μέρος

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

Τεχνητή Νοημοσύνη. 2η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Τομέας Ηλεκτρονικής και Υπολογιστών. ΤΗΜΜΥ Α.Π.Θ Δευτέρα 22 / 11 / 2017 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

Ο ΗΓΙΕΣ ΛΕΙΤΟΥΡΓΙΑΣ. Τοποθέτηση και αντικατάσταση των µπαταριών. Γενικές πληροφορίες. Περιγραφή λειτουργίας. ruwido s_4 τηλεχειριστήριο γενικής χρήσης

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

Χειµερινό Εξάµηνο 2013

Transcript:

ΗΥ252 - Οντοκεντρικός Προγραµµατισµός Προγραµµατιστική Εργασία Εαρινού Εξαµήνου 2004 Περιγραφή Παραδοτέων Περιγραφή Στην εργασία αυτή καλείστε να υλοποιήσετε την προσοµοίωση µηχανών Turing. Μια µηχανή Turing είναι µια συσκευή αποτελούµενη από µία κεφαλή ανάγνωσης/εγγραφής προσαρτηµένη πάνω σε µία ταινία απείρου µήκους, η οποία µπορεί να κινείται αριστερά-δεξιά. Η ταινία αυτή έχει πάνω της άπειρα διακριτά κελιά, στα οποία η κεφαλή µπορεί να γράφει ή να διαβάζει σύµβολα. Κάθε (διακριτή) χρονική στιγµή, η µηχανή Turing βρίσκεται σε µια µοναδική κατάσταση. Το «πρόγραµµα» µιας τέτοιας µηχανής είναι ένας πίνακας µετάβασης καταστάσεων, ο οποίος περιέχει τις εξής πληροφορίες: την τρέχουσα κατάσταση της µηχανής, το σύµβολο κάτω από την κεφαλή, την επόµενη κατάσταση στην οποία θα µεταβεί η µηχανή, το νέο σύµβολο που θα γραφτεί και την κατεύθυνση κατά την οποία θα µετακινηθεί η ταινία (επιτρέπεται να µείνει και ακίνητη). Υπάρχει επίσης µια κατάσταση που ονοµάζεται αρχική (initial state), καθώς και µία ή περισσότερες καταστάσεις τερµατισµού (halting states). Όταν η µηχανή «ξεκινά», η «είσοδος» στο πρόγραµµα αποτελείται από όλα τα σύµβολα που είναι ήδη γραµµένα επάνω στην ταινία. Σε κάθε βήµα η µηχανή εκτελεί µια ενέργεια (γράψιµο νέου συµβόλου, µετακίνηση της ταινίας ή και µετάβαση σε νέα εσωτερική κατάσταση) που καθορίζεται από την τρέχουσα κατάσταση και από το σύµβολο κάτω από την κεφαλή. Η µηχανή θα δουλεύει µέχρι να φτάσει σε κάποια κατάσταση τερµατισµού. Η «έξοδος» του προγράµµατος αποτελείται από τα σύµβολα που έχουν αποµείνει στην ταινία, όταν η µηχανή σταµατήσει. Η βασική µηχανή Turing (TM) είναι ένα τυπικό µοντέλο µελέτης υπολογιστικών µηχανών 1 και αποτελείται από τα παρακάτω αντικείµενα: Μια ταινία µε τα παρακάτω χαρακτηριστικά: o Εκτείνεται άπειρα προς τα δεξιά (δηλαδή έχει αρχή, αλλά όχι τέλος). o Χωρίζεται σε κελιά. o Κάθε κελί χωράει ένα σύµβολο. o Τα σύµβολα στην ταινία προέρχονται από ένα πεπερασµένο σύνολο από σύµβολα, που ονοµάζεται Αλφάβητο. o Το αλφάβητο πρέπει να περιέχει ένα ξεχωριστό σύµβολο που θα υποδηλώνει το κενό. o (Η ταινία) Έχει µία αρχική κατάσταση, η οποία ορίζεται από ένα πεπερασµένο σύνολο από κελιά, το περιεχόµενό τους και ένα καθορισµένο αρχικό κελί όπου τοποθετείται η κεφαλή, το οποίο είναι το αριστερότερο κελί της ταινίας. Μια κεφαλή µε τα παρακάτω χαρακτηριστικά: o Τοποθετείται στο αριστερότερο κελί της ταινίας, δηλαδή στην αρχή της. o Μπορεί να διαβάσει το σύµβολο στην ταινία στην συγκεκριµένη θέση. 1 Οι σηµερινοί Η/Υ είναι, ουσιαστικά, µηχανές Turing µε πεπερασµένη, όµως, µνήµη και CPU (=µονάδα ελέγχου). 1

o Μπορεί να γράψει οποιοδήποτε σύµβολο του αλφαβήτου της ΤΜ στην ταινία και στην συγκεκριµένη θέση. o Μπορεί να µετακινηθεί στην ταινία κατά ένα κελί, είτε προς τα δεξιά είτε προς τα αριστερά. Ένα πεπερασµένο σύνολο από καταστάσεις, καθεµία µε τα παρακάτω χαρακτηριστικά: o Ένα µοναδικό όνοµα. o Ένα πεπερασµένο σύνολο από µεταβάσεις. o Κάθε µετάβαση ορίζεται από ένα µοναδικό αρχικό σύµβολο (καµία µετάβαση δεν έχει το ίδιο αρχικό σύµβολο µε µια άλλη µετάβαση της ίδιας κατάστασης). o Κάθε µετάβαση έχει µια τελική κατάσταση και ένα τελικό σύµβολο ή µια διεύθυνση. o Το αρχικό και το τελικό σύµβολο µίας µετάβασης µπορεί να είναι το ίδιο σύµβολο. o Η τελική κατάσταση µίας µετάβασης µπορεί να είναι η κατάσταση στην οποία ανήκει η µετάβαση. Μια βασική ΤΜ έχει τα παρακάτω χαρακτηριστικά λειτουργίας: Σε κάθε χρονική στιγµή, τοποθετείται σε µια κατάσταση. Έχει µια συγκεκριµένη αρχική κατάσταση. Μπορεί να εκτελέσει µόνο µια στοιχειώδη λειτουργία, η οποία αποτελείται από τα παρακάτω βήµατα: o ιάβασε το σύµβολο στην τωρινή θέση της κεφαλής. o Επέλεξε την µετάβαση της συγκεκριµένης κατάστασης µε αρχικό σύµβολο ίσο µε το σύµβολο στην συγκεκριµένη θέση της κεφαλής. o Ανάλογα µε την επελεχθείσα µετάβαση: Είτε γράψε το τελικό σύµβολο της επιλεγµένης µετάβασης στην συγκεκριµένη θέση της κεφαλής Είτε µετακίνησε την κεφαλή στην κατεύθυνση της συγκεκριµένης µετάβασης. o Πήγαινε στην τελική κατάσταση της επιλεγµένης µετάβασης. Αν η τωρινή κατάσταση δεν έχει µία µετάβαση µε αρχικό σύµβολο ίσο µε το σύµβολο στην τρέχουσα θέση της κεφαλής, τότε η ΤΜ σταµατά. Η γενικευµένη µηχανή Turing είναι µια παραλλαγή της βασικής ΤΜ µε τις εξής διαφορές: Η ταινία εκτείνεται άπειρα και προς τις δύο κατευθύνσεις. Η ταινία έχει µία αρχική κατάσταση, η οποία ορίζεται από ένα πεπερασµένο σύνολο από κελιά, το περιεχόµενό τους και ένα καθορισµένο αρχικό κελί όπου τοποθετείται η κεφαλή. Κάθε µετάβαση έχει µια τελική κατάσταση, ένα τελικό σύµβολο και µια διεύθυνση. Αυτό που σας ζητείται είναι να σχεδιάσετε και να υλοποιήσετε την προσοµοίωση τόσο της βασικής όσο και της γενικευµένης µηχανής Turing. 2

Ενδεικτικές κλάσεις (όχι υποχρεωτικές) Παρακάτω παραθέτουµε κάποιες ενδεικτικές κλάσεις των οποίων η παρουσία και η χρήση στο σχεδιασµό και την υλοποίηση της εργασίας, αντίστοιχα, δεν είναι απαραίτητες. Αρχικά, παραθέτουµε τις βασικές κλάσεις των στοιχειωδών οντοτήτων µιας ΤΜ και ύστερα τις υπόλοιπες όπου στιγµιότυπα των βασικών κλάσεων εµφανίζονται ως µέλη των κλάσεων αυτών. Βασικές κλάσεις: State: Η κλάση που χρησιµοποιείται για την αναπαράσταση των καταστάσεων στις οποίες µπορεί να βρεθεί µία ΤΜ. Εκτός από το συµβολισµό που την αναπαριστά, χαρακτηριστικό της αποτελεί και η πληροφορία για το αν µία κατάσταση είναι αρχική ή τελική. Cell: Η κλάση που αντιστοιχεί στα κελιά της ταινίας. Κάθε κελί έχει ως χαρακτηριστικό το σύµβολο που περιέχει (αν περιέχει). Symbol: Η κλάση των συµβόλων µίας ΤΜ. Υπόλοιπες κλάσεις: Alphabet: Η κλάση του αλφαβήτου (συνόλου συµβόλων) που αντιστοιχεί σε µία ΤΜ. Tape: Η κλάση της ταινίας µιας ΤΜ που αποτελείται από κελιά. Transition: Η κλάση που αναπαριστά µία µετάβαση σε µία ΤΜ, και αποτελείται από το αρχικό σύµβολο, την αρχική της κατάσταση, την τελική της κατάσταση, το τελικό σύµβολο και/ή την κατεύθυνση προς την οποία πρέπει να κινηθεί η κεφαλή. Program: Η κλάση του προγράµµατος που αντιστοιχεί σε µία TM, δηλαδή το σύνολο των µεταβάσεων (transitions) αυτής. TM: Η κλάση που αντιστοιχεί σε µία Turing Machine και περιέχει όλη την πληροφορία αυτής (δυνατές καταστάσεις, ταινία, αλφάβητο, πρόγραµµα, κ.τ.λ.). Η υλοποίηση της ΤΜ µπορεί να γίνει µε τους δύο παρακάτω τρόπους (ή κάποιον άλλο που θα επιλέξετε): Είτε οι παραπάνω κλάσεις ορίζονται ως abstract και στη συνέχεια γίνονται extend για την υλοποίηση του κάθε µοντέλου από τα δύο ξεχωριστά. Είτε υλοποιούνται κανονικά για το απλό µοντέλο και στη συνέχεια γίνονται extend για το γενικευµένο µε ταυτόχρονο override των µεθόδων, όπου απαιτείται. 3

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

Τρία text boxes που δείχνουν το όνοµα της συγκεκριµένης ΤΜ, την αρχική θέση της κεφαλής στην ταινία και τους αρχικούς χαρακτήρες που εισάγονται στην ταινία. υο message boxes, τα οποία δείχνουν τις επιτρεπτές καταστάσεις της µηχανής και κάποια διευκρινιστικά µηνύµατα για το πρόγραµµα. Λειτουργίες Οι λειτουργίες που θα υποστηρίζονται από την εφαρµογή θα είναι: Εναλλαγή µεταξύ των δύο υποστηριζόµενων µορφών της Turing µηχανής. ηµιουργία µίας καινούργιας TM. Αποθήκευση και φόρτωµα µίας υπάρχουσας ΤΜ. o Ειδικότερα για το φόρτωµα, θα πρέπει να υποστηρίζεται η φόρτωση ολόκληρης της Turing µηχανής (δηλαδή των καταστάσεων, της ταινίας, του αλφαβήτου, του προγράµµατος, κ.τ.λ.) από text αρχείο, το οποίο θα έχει συγκεκριµένη µορφή που θα καθοριστεί αργότερα. Απώτερος σκοπός είναι δυνατόν κατά την εξέταση να δίνονται τα χαρακτηριστικά µιας συγκεκριµένης ΤΜ και να ελέγχονται τα αποτελέσµατα αυτής. Προσθήκη και αφαίρεση συµβόλων από το αλφάβητο της ΤΜ. Αρχικοποίηση, αποθήκευση και διόρθωση της ταινίας της ΤΜ. Προσθήκη και αφαίρεση καταστάσεων. Προσθήκη, αφαίρεση και διόρθωση των µεταβάσεων µίας κατάστασης. Εκτέλεση στοιχειώδους λειτουργίας της ΤΜ, δηλαδή απλού βήµατος (Step). Επαναλαµβανόµενη εκτέλεση στοιχειωδών λειτουργιών της ΤΜ έως ότου αυτή να σταµατήσει (Run). Σταµάτηµα και συνέχιση της εκτέλεσης της ΤΜ είτε µε την υλοποίηση µιας λειτουργίας (Pause) είτε ως δυο λειτουργίες (Stop και Continue). Επαναφορά της ΤΜ στις αρχικές της ρυθµίσεις, δηλαδή αλλαγή της κατάστασης στην αρχική και αρχικοποίηση της ταινίας (Reset). Για όλες τις λειτουργίες που υποστηρίζει η εφαρµογή, θα πρέπει να καταγράψετε λεπτοµερώς στην αναφορά σας τα βήµατα που θα πρέπει να ακολουθεί ο χρήστης για να πραγµατοποιήσει τη λειτουργία αυτή (users manual). Γενικές παρατηρήσεις Για την υλοποίηση θα χρησιµοποιηθεί η γλώσσα Java. Για την υλοποίηση δεν χρειάζονται άλλες βιβλιοθήκες (packages) εκτός από αυτές που παρέχει η Java και ως εκ τούτου δεν επιτρέπεται χρήση άλλων βιβλιοθηκών εκτός από τα standard packages της Java 1.5. Παρόλο που η ανάπτυξη της εφαρµογής µπορεί να γίνει σε οποιαδήποτε πλατφόρµα ανάπτυξης, η δοκιµή και παρουσίαση θα γίνει στα εργαστήρια του τµήµατος οπότε οι οµάδες είναι υπεύθυνες να εξασφαλίσουν ότι η εφαρµογή τους θα µπορεί να εκτελεστεί σε αυτά και σύµφωνα µε την έκδοση της Java που υπάρχει σε αυτά τα µηχανήµατα. 5

Σχεδιασµός και Υλοποίηση Το project χωρίζεται σε 2 φάσεις: Φάση 1η - Σχεδιασµός Σε αυτή τη φάση πρέπει να γίνει ο σχεδιασµός της εφαρµογής βάσει των ιδεών και των αρχών που έχετε διδαχθεί. Αποτέλεσµα του σχεδιασµού θα είναι να καθοριστούν οι οντότητες, τα χαρακτηριστικά τους και η συµπεριφορά τους, οι οποίες θα αποτελέσουν δοµικά στοιχεία για την υλοποίηση της ζητούµενης εφαρµογής. Παραδοτέα σε αυτή τη φάση είναι : µια αναφορά η οποία θα περιγράφει τα παραπάνω στοιχεία και θα παρουσιάζει το σχέδιο υλοποίησης του project έτσι ώστε να είναι έτοιµο το πέρασµα στην επόµενη φάση. σε µορφή πηγαίου κώδικα τα Java interfaces και classes συνοδευόµενα µε τα απαραίτητα javadoc σχόλια, τα οποία θα χρησιµοποιηθούν ως βάση για την υλοποίηση (φάση 2). Το αποτέλεσµα αυτής της φάσης θα είναι να καθοριστεί επ'ακριβώς τι θα γίνει και να σκιαγραφηθεί σε επίπεδο classes και interfaces το πώς θα γίνει. Επιγραµµατικά, οι σηµαντικότερες εργασίες που πρέπει να γίνουν σε αυτή τη φάση είναι: Αναγνώριση των κλάσεων. Ποια είναι τα χαρακτηριστικά του συστήµατος και πως µοντελοποιούνται. Αναγνώριση του interface κάθε κλάσης. Εύρεση των χαρακτηριστικών και των ιδιοτήτων κάθε κλάσης. Τι δεδοµένα πρέπει να κρατάει κάθε κλάση. Μεθόδους που υποστηρίζει κάθε αντικείµενο. Εύρεση των σχέσεων των αντικειµένων. Πώς επικοινωνούν (εάν επικοινωνούν) µεταξύ τους. Συµπεριφορά (behavior) των αντικειµένων. Αναγνώριση των ευθυνών κάθε κλάσης. Τι ενέργειες πρέπει να κάνει κάθε αντικείµενο. Τι ελέγχους πρέπει να κάνουν στα δεδοµένα (pre/post conditions) τα αντικείµενα, µέσω των µεθόδων τους. Interface των κλάσεων, υπογραφές (signatures) των µεθόδων που υποστηρίζει, συναρτήσεις εγκατάστασης (constructors), συναρτήσεις επόπτες (observers), συναρτήσεις µετατροπής (modifiers). Παρατήρηση: Για να µπορέσετε σε αυτή τη φάση να καθορίσετε όσο το δυνατό πληρέστερα τα παραπάνω και να καταλήξετε σε µια ικανοποιητική σχεδίαση, θα σας βοηθούσε αρκετά (αλλά δεν απαιτείται) να υλοποιήσετε ένα πρωτότυπο (prototype) της εφαρµογής, πάνω στο οποίο θα µπορούσατε µετέπειτα να βασιστείτε για την τελική υλοποίηση. Φάση 2η - Υλοποίηση Σε αυτή τη φάση πρέπει να γίνει η υλοποίηση της εφαρµογής, βάσει της σχεδίασης που έχει προηγηθεί (φάση 1). Μολονότι δεν επιβάλλεται να χρησιµοποιηθεί αυτούσια η σχεδίαση της 1ης φάσης, καθότι κάποιες σχεδιαστικές επιλογές 6

αποδεικνύονται στην πορεία άκυρες και χρειάζονται αναθεώρηση, εντούτοις η τελική βαθµολογία θα εξαρτηθεί και από το πόσο απείχε η τελική υλοποίηση από την αρχική σχεδίαση. Σε αυτή τη φάση, παραδοτέα είναι : ο πηγαίος κώδικας που υλοποιεί την ζητούµενη εφαρµογή και η δυνατότητα εκτέλεσης του προγράµµατος ως applet, αναλυτικές οδηγίες πώς µεταγλωτίζεται και πώς τρέχει το πρόγραµµα (README, Makefile κ.λ.π.). αναφορά, στην οποία θα αναλύεται : o η -τελική- σχεδίαση της εφαρµογής, o ποιες αλλαγές έγιναν σε σχέση µε τη σχεδίαση της 1ης φάσης (και γιατί), o οι αλγόριθµοι που χρησιµοποιήθηκαν, o τα προβλήµατα που αντιµετωπίστηκαν, o οι σχεδιαστικές ή προγραµµατιστικές αποφάσεις που λήφθηκαν και πώς αυτό αντανακλάται στον τελικό χρήστη (π.χ. ευκολία/δυσκολία χειρισµού), o πιθανές επεκτάσεις (π.χ. καινούριες λειτουργίες) και πώς θα µπορούσαν να γίνουν µε την παρούσα σχεδίαση, o ποιες αλλαγές θα έπρεπε να γίνουν στην υλοποίηση ή/και την σχεδίαση για να υποστηρίζονται επιπλέον λειτουργίες ή σχήµατα. o... γενικά ό,τι άλλο κρίνετε απαραίτητο να αναφέρετε. Βαθµολογία εργασίας Για την βαθµολογία της εργασίας θα συνεκτιµηθούν εάν (και πόσο) η σχεδίαση της εφαρµογής εφαρµόζει τις έννοιες και τεχνικές του οντοκεντρικού προγραµµατισµού που διδάχθηκαν στο µάθηµα εάν (και πόσο) υλοποιήθηκαν οι ζητούµενες λειτουργίες της εφαρµογής η πληρότητα της τελικής αναφοράς, η οποία θα καταγράφει και θα τεκµηριώνει την σχεδίαση και υλοποίηση της εφαρµογής Για διευκρινήσεις σχετικά µε την παραπάνω εργασία, µπορείτε να στέλνετε ηλεκτρονικά µηνύµατα µε απορίες στη λίστα του µαθήµατος hy252-list. 7