ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 4 Υλοποίηση Εφαρμογής Εστιατορίου (take-away)



Σχετικά έγγραφα
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 3 Μοντελοποίηση Εστιατορίου (take-away)

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 5 Ανάπτυξη Προγράμματος Συμπίεσης/Αποσυμπίεσης Αρχείων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 1 Συμβολοσειρές, Πίνακες, Δείκτες

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

ΕΚΦΩΝΗΣΗ ΥΠΟΧΡΕΩΤΙΚΗΣ ΕΡΓΑΣΙΑΣ σε UML

ΕΠΛ131 Αρχές Προγραμματισμού Ι

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

Η άσκηση μπορεί να γίνει με συνεργασία το πολύ δυο φοιτητών, οι οποίοι θα λάβουν τον ίδιο βαθμό στην εργασία.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ231: ομές εδομένων και Αλγόριθμοι

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ ÊÁËÁÌÁÔÁ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ. Πρώτη Σειρά ασκήσεων Ημερομηνία Παράδοσης: 24 Απριλίου 2018, 12 μ.μ.

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

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 1. Χειμερινό Εξάμηνο

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

από τις 12 το μεσημέρι Κυριακές κλειστά

ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ Queuing Systems Εισαγωγή

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

Εργαστήριο Λειτουργικών Συστημάτων - Αλγόριθμοι Χρονοπρογραμματισμού. Εργαστηριακή Άσκηση

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2019 Β ΦΑΣΗ

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΜΟΝΟ ΝΕΟ ΣΥΣΤΗΜΑ Γ ΗΜΕΡΗΣΙΩΝ

Χρησιμοποιούμε από το Λογισμικό Προσομοίωσης AnyLogic το αρχείο-μοντέλο Call Center.alp που υπάρχει στο φάκελο \models\call Center\

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

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

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

3 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ

ΕΞΕΤΑΣΕΙΣ ΠΡΟΣΟΜΟΙΩΣΗΣ Γ ΤΑΞΗΣ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: 7

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΕΡΓΑΣΙΩΝ ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟ ΛΟΓΙΣΜΙΚΟ EXTEND. 1 ο εργαστήριο Διοίκησης και Παραγωγής Έργων

Δίκτυα Υπολογιστών Εργαστήρια

ΕΠΛ131 Αρχές Προγραμματισμού

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

ΠΕΡΙΓΡΑΦΙΚΗ ΣΤΑΤΙΣΤΙΚΗ Ι Κ. Μ. 436

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

Ονοματεπώνυμο: Ερώτημα: Σύνολο Μονάδες: Βαθμός:

ΑΡΧΗ 2ΗΣ ΣΕΛΙ ΑΣ ΜΟΝΟ ΝΕΟ ΣΥΣΤΗΜΑ Γ ΗΜΕΡΗΣΙΩΝ

ΣΤΗΛΗ Β ΑΠΟΤΕΛΕΣΜΑ 1. float(10) α pow(2,3) β abs(-10) γ int(5.6) δ. 10 ε. 5.6 Μονάδες 8 ΣΤΗΛΗ Α ΣΥΝΑΡΤΗΣΗ

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΩΝ & Δ ΤΑΞΗΣ ΕΣΠΕΡΙΝΩΝ ΥΠΟΛΕΙΠΟΜΕΝΕΣ ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ HMEΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ

ΣΗΜΕΙΩΣΕΙΣ ΤΕΛΙΚΗΣ ΕΡΓΑΣΙΑΣ ΤΟΥ ΜΑΘΗΜΑΤΟΣ «ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ»

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

ΕΠΛ 003: Εισαγωγή στην Επιστήμη της Πληροφορικής & Πληρ. Συστήματα - Εργαστήριο ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Εργαστήριο Διοίκησης Παραγωγής & Έργων. Εισαγωγή στην προσομοίωση διεργασιών χρησιμοποιώντας το λογισμικό Extend

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΕΛΙΚΕΣ ΕΞΕΤΑΣΕΙΣ (11/05/2011, 9:00)

Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας

Μονάδες 10. Μονάδες 9 5 PROLOG. Μονάδες 5

HY-252 Αντικειμενοστραφής Προγραμματισμός. Χειμερινό Εξάμηνο 2012 Διδάσκων: Χριστοφίδης Βασίλης. Ημερομηνία Παράδοσης: 16/11/2012

«Μηχανή Αναζήτησης Αρχείων» Ημερομηνία Παράδοσης: 30/04/2015, 09:00 π.μ.

Α.1 Τι γνωρίζετε για τον διερμηνευτή, τον μεταγλωττιστή και ποιες οι διαφορές τους. 15 ΜΟΝΑΔΕΣ

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

Εργαστηριακή Άσκηση. Τμήμα Μηχανικών Πληροφορικής ΤΕ

Ο Π Ε Υ Ελάχιστα γραμμών Ο *maximin (A) Π Ε Υ * minimax (B)

ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ Queuing Systems

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

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΣΤΑΤΙΣΤΙΚΗ ΤΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ. Κεφάλαιο 8. Συνεχείς Κατανομές Πιθανοτήτων

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Πλεονεκτήματα και μειονεκτήματα της προσομοίωσης

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

Α Διαγώνισμα 1 ου Τριμήνου στο μάθημα της Πληροφορικής Γ Γυμνασίου Ονοματεπώνυμο:...

ΛΥΚΕΙΟ ΠΕΤΡΟΥΠΟΛΗΣ ΠΕΜΠΤΗ 26 ΑΠΡΙΛΙΟΥ 2012 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ : ΜΑΘΗΜΑΤΙΚΑ & ΣΤΟΙΧΕΙΑ ΣΤΑΤΙΣΤΙΚΗΣ

Κεφάλαιο 10ο. ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ιαδικασίες - Συναρτήσεις

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

δεδομένων με συντελεστές στάθμισης (βαρύτητας)

Η ΙΣΧΥΣ ΕΝΟΣ ΕΛΕΓΧΟΥ. (Power of a Test) ΚΕΦΑΛΑΙΟ 21

ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ Queuing Systems Παράμετροι Συστημάτων Αναμονής Τύπος Little

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

Δίκτυα Υπολογιστών I Εργαστήρια

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

1 η Άσκηση στο Χρονοπρογραμματισμό Έργων

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΗΜΕΡΗΣΙΩΝ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Μαθηµατικά & Στοιχεία Στατιστικής Γενικής Παιδείας Γ Λυκείου 2001

Αντικειμενοστρεφής Προγραμματισμός

Μοντελοποίηση Συστημάτων

Β[(ι-7)*15+j] ON[ι,j] temp B[j-1] B[j-1] B[j] B[j] temp. j j+1

ΕΙΣΑΓΩΓΗ ΣΤΗ ΣΤΑΤΙΣΤΙΚΗ

Να σχεδιάσετε τον πίνακα Β[6] μετά την εκτέλεση των παρακάτω εντολών: Μονάδες 12. Α5. Δίδεται πίνακας ΠΙΝ[7] με τις παρακάτω τιμές:

Μαθηµατικά & Στοιχεία Στατιστικης Γενικής Παιδείας Γ Λυκείου 2001 ÈÅÌÅËÉÏ

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΜΟΝΟ ΝΕΟ ΣΥΣΤΗΜΑ Γ ΗΜΕΡΗΣΙΩΝ

Μοντελοποίηση Συστημάτων. Διαγράμματα Κλάσεων ClassDiagrams

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΜΟΝΟ ΝΕΟ ΣΥΣΤΗΜΑ Γ ΗΜΕΡΗΣΙΩΝ

Πληροφορική 2. Τεχνολογία Λογισμικού

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

Ηρώων Πολυτεχνείου 9, Ζωγράφου, Αθήνα, Τηλ: , Fax: URL

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ. Βασικά Εργαλεία και Μέθοδοι για τον Έλεγχο της Ποιότητας [ΔΙΠ 50]

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Διαδικαστικά

Πανεπιστήμιο Κύπρου Πολυτεχνική Σχολή

(1) Σ 0 (2) Κ 0 (3) Αρχή_Επανάληψης (4) ιάβασε Χ (5) Σ Σ+Χ (6) Αν Χ>0 τότε (7) Κ Κ+1 (8) Τέλος_Αν (9) Μέχρις_ότου Σ>1000 (10) Εμφάνισε Χ

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

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός Χειμερινό Εξάμηνο 2012 ΑΣΚΗΣΗ 4 Υλοποίηση Εφαρμογής Εστιατορίου (take-away) Διδάσκων Καθηγητής: Παναγιώτης Ανδρέου Ημερομηνία Υποβολής: 29/10/2012 Ημερομηνία Παράδοσης: 15/11/2012 ΠΕΡΙΓΡΑΦΗ Σε αυτή την άσκηση καλείστε να υλοποιήσετε ένα πρόγραμμα προσομοίωσης σουβλατζίδικου take-away. Σκοπός της άσκησης είναι η υλοποίηση ενός προγράμματος μικρού μήκους χρησιμοποιώντας με τις βασικές αρχές του αντικειμενοστρεφή προγραμματισμού (π.χ., κληρονομικότητα, πολυμορφισμός, κτλ.) καθώς και η χρήση προχωρημένου προγραμματισμού όπως διαχείριση εξαιρέσεων και διαπροσωπείες. ΑΝΑΛΥΤΙΚΗ ΠΕΡΙΓΡΑΦΗ Το σουβλατζίδικο δέχεται τηλεφωνικές παραγγελίες μεταξύ 18:00 και 23:00 καθημερινά (το σουβλατζίδικο ανοίγει στις 17:30 και μένει ανοιχτό μέχρι τις 24:00). Για την εργασία αυτή μπορείτε να δουλέψετε σε ομάδες των τριών ατόμων. Το σουβλατζίδικο διαθέτει φουκού μήκους Μ εκατοστών και N τηγάνια για πατάτες, όπου κάθε τηγάνι χωράει C μερίδες πατάτες. Επίσης τα κάρβουνα της φουκούς χρειάζονται χρόνο T μέχρι να είναι έτοιμα προς χρήση (για να ανάψουν). Το σουβλατζίδικο διεκπεραιώνει παραγγελίες για: Πίττα σουβλάκι χοιρινό (περιλαμβάνει δύο σμίλες) Πίττα σουβλάκι κοτόπουλο (περιλαμβάνει δύο σμίλες) Πίττα σεφταλιά (περιλαμβάνει δύο σμίλες) Πίττα μίξ (περιλαμβάνει μία σμίλα χοιρινό και μία σμίλα σεφταλιά) Τηγανιτές πατάτες Για την προετοιμασία των τροφών, απαιτείται:

1 σμίλα σουβλάκι χοιρινό: 20-25 λεπτά ψήσιμο 1 σμίλα σουβλάκι κοτόπουλο: 15-20 λεπτά ψήσιμο 1 σμίλα σεφταλιά: 25 λεπτά ψήσιμο 1 πίττα: 5 λεπτά ψήσιμο 1 μερίδα πατάτες: 20 λεπτά τηγάνισμα Κάθε σμίλα σουβλάκι καταλαμβάνει x εκατοστά χώρου από την φουκού, κάθε σμίλα σεφταλιά y εκατοστά και κάθε πίτα z εκατοστά. Κάθε παραγγελία που παραδίδεται τηλεφωνικά, έχει τα ακόλουθα χαρακτηριστικά: Μοναδικό αύξοντα αριθμό Ώρα παραγγελίας Επιθυμητή ώρα παραλαβής Αριθμό από πίττες και μερίδες πατάτες Μια παραγγελία μπορεί να αναπαρασταθεί στο πρόγραμμά σας ως εξής: <num t order, t req, n pp, n pc, n ps, n pm, n pf > όπου: num: ο αύξων αριθμός της παραγγελίας t order : αντιστοιχεί στη χρονική στιγμή λήψης της παραγγελίας, εκπεφρασμένη σε αριθμό λεπτών από τις 18:00, οπότε ανοίγει το σουβλατζίδικο, μέχρι τις 23:00 (π.χ. μια παραγγελία που έγινε στις 19:45 θα έχει χρονική στιγμή λήψης t order = 105). t req : αντιστοιχεί στη χρονική στιγμή κατά την οποία ο πελάτης επιθυμεί να παραλάβει την παραγγελία του, εκπεφρασμένη σε αριθμό λεπτών από τις 18:00, οπότε ανοίγει το σουβλατζίδικο, μέχρι τις 24:00. n pp : αριθμός από πίττες σουβλάκια της παραγγελίας. n pc : : αριθμός από πίττες κοτόπουλο της παραγγελίας. n ps : αριθμός από πίττες σεφταλιά της παραγγελίας. n pm : αριθμός από πίττες μίξ της παραγγελίας. n pf : αριθμός από μερίδες πατάτες της παραγγελίας. Παραδείγματα αποδεκτών παραγγελιών ακολουθούν: <14 75, 105, 1, 0, 0, 0, 1> : ο 14ος πελάτης τηλεφωνεί στις 7:15μμ και θέλει να παραλάβει μέχρι τις 7:45μμ μια πίττα σουβλάκια χοιρινό και μια πατάτες <15 65, 135, 10, 2, 0, 5, 10> : ο 15ος πελάτης τηλεφωνεί στις 7:05μμ και θέλει να παραλάβει μέχρι τις 8:15μμ δέκα πίττες σουβλάκια χοιρινό, δύο πίττες κοτόπουλο, πέντε σεφταλιά και δέκα πατάτες (σουβλάκι πάρτυ).

Υποθέστε ότι στατιστικές μετρήσεις των παραγγελιών στο σουβλατζίδικο έχουν δείξει ότι: Κάθε ημέρα, το 20% των εισερχόμενων παραγγελιών αφορά σε μια πίττα μόνο, το 35% των εισερχόμενων παραγγελιών αφορά σε δύο πίττες, το 10% των παραγγελιών αφορά σε τρείς πίττες, το 20% των παραγγελιών αφορά σε τέσσερεις πίττες, ενώ το υπόλοιπο ποσοστό των παραγγελιών αφορά σε 5-20 πίττες. Θεωρείστε ότι σε μια τυχαία παραγγελία, υπάρχουν οι ίδιες πιθανότητες μια τυχαία πίττα να ανήκει σε οποιαδήποτε είδος (σουβλάκι χοιρινό, κοτόπουλο, σεφταλιά ή μίξ). Επίσης, θεωρείστε ότι κάθε ημέρα, στο 60% των παραγγελλόμενων πιττών, καθεμιά πίττα συνοδεύεται από μια μερίδα πατάτες. Το 35% των παραγγελλόμενων πιττών δεν συνοδεύονται από πατάτες. Τέλος, ένα 5% των παραγγελλόμενων πιττών συνοδεύεται από δύο μερίδες πατάτες. Οι χρονικές στιγμές άφιξης των παραγγελιών είναι διεσπαρμένες χρονικά και ακολουθούν κανονική κατανομή (Gaussian) με μέση τιμή 180 (δηλ. 21:00) και διασπορά 60. Η κατανομή της επιθυμητής ώρας παραλαβής κυμαίνεται από τριάντα λεπτά μέχρι τρείς ώρες από την λήψη της παραγγελίας - σε παραγγελίες πάνω των 10 πιττών, ο επιθυμητός χρόνος παραλαβής δεν μπορεί να είναι λιγότερος της μιας ώρας. ΖΗΤΗΜΑ 1ο: Υλοποιήστε ένα πρόγραμμα γεννήτρια παραγγελιών OrderGenerator, η οποία να δημιουργεί τις παραγγελίες μιας ημέρας. Η γεννήτρια πρέπει να δέχεται σαν παραμέτρους εισόδου τους αριθμούς των παραγγελιών που θέλουμε να δημιουργήσουμε. Αν π.χ. θέλουμε να εξετάσουμε ένα σενάριο με 1000 παραγγελίες, θα πρέπει να εκτελέσουμε το πρόγραμμα ως εξής: java OrderGenerator 1000 Το πρόγραμμα αυτό στην έξοδό του πρέπει να δημιουργεί ένα αρχείο orders.txt, το οποίο ξεκινάει με μια γραμμή η οποία περιέχει τον αριθμό των παραγγελιών του (π.χ. 1000) και μετά ακολουθούν οι παραγγελίες για το συγκεκριμένο σενάριο. Κάθε παραγγελία εμφανίζεται σε διαφορετική γραμμή του αρχείου και έχει την ακόλουθη δομή: num t order t delreq; n pp n pc n ps n pm n pf Οι παραγγελίες πρέπει να εμφανίζονται ταξινομημένες με βάση τη χρονική σειρά της παράδοσής τους στο σουβλατζίδικο. Οι παραγγελίες πρέπει να ακολουθούν τα στατιστικά χαρακτηριστικά που περιγράφηκαν πιο πάνω. Το ζητούμενο είναι η υλοποίηση του προγράμματος.

ΖΗΤΗΜΑ 2ο: Πρέπει να υλοποιήσετε ένα πρόγραμμα για την εκτέλεση των παραγγελιών με τρείς διαφορετικούς αλγόριθμους χρονοπρογραμματισμού. Το πρόγραμμα σας OrderDelivery δέχεται σαν παραμέτρους την χωρητικότητα της φουκούς (Μ) και το χρόνο προετοιμασίας των κάρβουνων (Τ), τον αριθμό των τηγανιών (Ν) και της χωρητικότητας τους (C) καθώς και το χώρο που καταλαμβάνουν οι σμίλες (x,y) και οι πίττες (z). Εν συνεχεία, διαβάζει το αρχείο orders.txt και υπολογίζει τον χρόνο ολοκλήρωσης της κάθε παραγγελίας βάση του αλγόριθμου που του ζητήθηκε, την απόκλιση από την επιθυμητή ώρα παράδοσης της και τον αριθμό των πελατών που μένουν ευχαριστημένοι (ευχαριστημένος είναι ο πελάτης του οποίου η παραγγελία είναι έτοιμη όχι αργότερα από τον επιθυμητό χρόνο παραλαβής του). Π.χ. η εντολή java OrderDelivery 400 45 10 4 3 6 12 2 Θα ξεκινήσει το πρόγραμμα με μια φουκού μήκους 400 εκατοστών που χρειάζεται 45 λεπτά για να ανάψει, 10 τηγάνια που χωρούν 4 μερίδες, σμίλες σουβλάκι των 3 εκατοστών, σμίλες σεφταλιά των 6 εκατοστών, πίττες των 12 εκατοστών και κάνοντας χρήση του αλγόριθμού 2. Η έξοδος του προγράμματος είναι ένα αρχείο deliveries.txt. Το αρχείου ξεκινάει με μια γραμμή η οποία περιέχει τον αριθμό των παραγγελιών που παραλαμβάνονται, τον μέσο όρο της απόκλισης από τις επιθυμητές ώρες παράδοσης των παραγγελιών και τον αριθμό των ευχαριστημένων πελατών, (π.χ. 1000 22,54 170), και μετά ακολουθούν πληροφορίες για την διεκπεραίωση των παραγγελιών. Για κάθε παραγγελία, εμφανίζονται σε διαφορετική γραμμή του αρχείου οι ακόλουθες πληροφορίες: num t order t del ( t del - t delreq) (n pp +n pc +n ps +n pm) n pf π.χ. η γραμμή: 10 150 195 15 5 1 σημαίνει ότι η παραγγελία 10 έγινε στις 20:30, παραδόθηκε στις 21:15, είχε 15 λεπτά καθυστέρηση και περιείχε 5 πίττες και μια μερίδα πατάτες. Αλγόριθμος 1: Υποθέστε ότι ο σουβλιστής εκτελεί τις παραγγελίες με την σειρά που αυτές παραλαμβάνονται (δηλ., FCFS - first come first served). Αλγόριθμος 2: Υποθέστε ότι ο σουβλιστής εκτελεί τις παραγγελίες διαλέγοντάς τη μικρότερη παραγγελία (μικρότερο χρόνο εκτέλεσης) που είναι διαθέσιμη και είναι δυνατό (χωρά στη φουκού) να εκτελεστεί τη δεδομένη στιγμή. Αλγόριθμος 3:

Υποθέστε ότι ο σουβλιστής για να εκτελέσει τις παραγγελίες διαλέγει τη παραγγελία με το μεγαλύτερο βάρος που είναι διαθέσιμη και είναι δυνατό να εκτελεστεί τη δεδομένη στιγμή. Το βάρος της κάθε παραγγελίας υπολογίζεται ως εξής: texec ( tdelreq tnow) w=, όπου: texec t now : η τρέχουσα χρονική στιγμή εκφρασμένη σε αριθμό λεπτών από τις 18:00 t exec : ο χρόνος που απαιτείτε για την εκτέλεση της παραγγελία σε λεπτά. Προφανώς το πρόγραμμα προσομοίωσης κατά τους υπολογισμούς του πρέπει ανά πάσα στιγμή να λαμβάνει υπόψη μόνο τις παραγγελίες που έχουν ήδη δοθεί. Για αυτό το σκοπό μπορείτε να χρησιμοποιήσετε διακριτό χρόνο. Τέλος, εκτός από την δημιουργία του αρχείου εξόδου, το πρόγραμμα πρέπει να αναπαριστά γραφικά (κάνοντας χρήση των βιβλιοθηκών που σας δόθηκαν) τη διεκπεραίωση των παραγγελιών. Εξετάστε ποιος αλγόριθμος δίνει τη μικρότερη συνολική απόκλιση και πόσοι πελάτες μένουν ευχαριστημένοι. Δώστε μια μικρή αναφορά (με γραφικές παραστάσεις) που δείχνει πως αλλάζει η μέση απόκλιση και ο αριθμός των ικανοποιημένων πελατών για κάθε αλγόριθμο για 5 διαφορετικά σενάρια παραγγελιών 200, 400, 600, 800 και 1000 παραγγελίες. Εκτός από την αναφορά πρέπει να παραδώσετε και τα αρχεία που παράγονται (20 συνολικά για κάθε σενάριο ένα αρχείο orders.txt και τρία αρχεία deliveries.txt). Για τον υπολογισμό τυχαίου αριθμού που ακολουθεί την κανονική (Gaussian) κατανομή μπορείτε να χρησιμοποιήσετε την μέθοδο nextgaussian της κλάσης Random του πακέτου java.util. Η nextgaussian επιστρέφει τυχαίους αριθμούς που ακολουθούν την κανονική κατανομή με μέση τιμή 0 και διασπορά 1. Για την μετατροπή σε κανονική μορφή με διαφορετική μέση τιμή (μ) και διασπορά (σ 2 ) μπορείτε να χρησιμοποιήσετε τον ακόλουθο τύπο: σ * nextgaussian+µ Προσέξτε ότι ο τύπος χρησιμοποιεί την τυπική απόκλιση και όχι τη διασπορά (σ και όχι σ 2 ).

ΑΞΙΟΛΟΓΗΣΗ Για την αξιολόγηση του προγράμματος σας, θα ληφθούν οι πιο κάτω παράμετροι: - Ορθότητα: ο πρόγραμμα σας πρέπει τρέχει ορθά για οποιαδήποτε είσοδο - Κατανοητά σχόλια: Γράφετε κατανοητά σχόλια που να εξηγούν την λειτουργία της κάθε κλάσης/πεδίου/μεθόδου. - Αποδοτικότητα: θα πρέπει να γίνει επαναχρησιμοποίηση αντικειμένων όπου αρμόζει - Χαμηλή σύζευξη μεταξύ των αντικειμένων: κάθε αντικείμενο πρέπει να υποστηρίζει λειτουργίες που είναι άμεσα συσχετιζόμενες με αυτό - Δώστε ιδιαίτερη προσοχή στη χρήση των βασικών αρχών του αντικειμενοστραφή προγραμματισμού (π.χ., κληρονομικότητα, αφαιρετικές κλάσεις, διαπροσωπείες, πολυμορφισμός, εξαιρέσεις). ΓΕΝΙΚΕΣ ΟΔΗΓΙΕΣ - Η κάθε κλάση θα πρέπει να υλοποιηθεί σε ξεχωριστό αρχείο JAVA. - Στο πάνω μέρος της κάθε κλάσης να γράψετε με σχόλια το ονοματεπώνυμο και τον αριθμό ταυτότητας σας. - Βεβαιωθείτε ότι τα προγράμματα σας είναι ορθά και τρέχουν. - H άσκηση σας θα πρέπει να παραδοθεί στον υπεύθυνο βοηθό σαν ένα zip αρχείο (που να περιλαμβάνει όλες τις κλάσεις που θα υλοποιήσετε και το έγγραφο τεκμηρίωσης) σε ηλεκτρονική μορφή και σε έντυπη μορφή την ημερομηνία παράδοσης. - Το zip αρχείο θα είναι πρέπει να γίνει μέσω export από το eclipse σαν archive file. - Το zip αρχείο θα ονομάζεται με τον εξής τρόπο: epl233.ex4.<ταυτότητα>.zip - Μη τήρηση των ημερομηνιών παράδοσης των εργασιών συνεπάγεται τις ανάλογες βαθμολογικές επιπτώσεις (μέχρι τον μηδενισμό της εργασίας). - Οι προγραμματιστικές ασκήσεις θα ελέγχονται από ειδικό πρόγραμμα για την ανίχνευση των αντιγραφών. Οι αντιγραμμένες εργασίες θα μηδενίζονται και για τους αντιγραφείς θα εφαρμόζονται οι κανόνες τού Πανεπιστημίου. Αποφύγετε λοιπόν την αντιγραφή προγραμμάτων από άλλους συναδέλφους σας, διότι έτσι εκτίθετε και αυτούς και τον εαυτό σας στον κίνδυνο μηδενισμού και πειθαρχικής δίωξης. ΚΑΛΗ ΕΠΙΤΥΧΙΑ!!!