Τμήμα
Πληροφοριακών
και Επικοινωνιακών
Συστημάτων
Γλώσσες προγραμματισμού
Διδάσκων: Επικ. Καθηγητής Διομήδης Σπινέλλης | Εξεταστική περίοδος
Ιουνίου 2000 |
Μια οικολογική οργάνωση σας ζητά να υλοποιήσετε ένα πρόγραμμα για την παρακολούθηση της πανίδας της Ελλάδας. Το πρόγραμμα θα περιλαμβάνει στοιχεία για κάθε ξεχωριστό οργανισμό (π.χ. έναν συγκεκριμένο αετό). Τα στοιχεία αυτά είναι: κωδικός αριθμός, γεωγραφικές συντεταγμένες που έχει εμφανιστεί τελευταία φορά (γεωγραφικό μήκος και πλάτος) και συνολική απόσταση που εμφανίζεται να έχει διανύσει. Η συνολική απόσταση πρέπει να ενημερώνεται αυτόματα κάθε φορά που καταχωρούνται νέες συντεταγμένες. Επίσης, για κάθε κατηγορία οργανισμών (π.χ. για όλους τους αετούς) πρέπει να τηρείται αυτόματα ο αριθμός των οργανισμών που παρακολουθούνται. Ειδικά για τους θαλάσσιους οργανισμούς θα φυλάσσεται το μέγιστο βάθος στο οποίο έχει εμφανιστεί ένας συγκεκριμένος οργανισμός και για τα πτηνά το αντίστοιχο μέγιστο ύψος. Επίσης, για κάθε δελφίνι θα πρέπει να φυλάσσεται ο αριθμός των παιδιών του.
Θέμα 1ο: (2.5 βαθμοί)Σχεδιάστε σε UML ένα διάγραμμα κλάσεων για το παραπάνω πρόγραμμα. Στο διάγραμμα πρέπει να φαίνονται οι ιδιότητες καθώς και μέθοδοι που εσείς κρίνετε απαραίτητες. Σχεδιάστε ένα αντιπροσωπευτικό διάγραμμα αντικειμένων.
Θέμα 2ο: (2.5 βαθμοί)
Να γράψετε σε C++ μια κλάση που να υλοποιεί τις γεωγραφικές συντεταγμένες. Η κλάση να επανακαθορίζει τον τελεστή - έτσι ώστε να επιστρέφει την απόσταση ανάμεσα σε δύο σημεία. Σημείωση: θεωρήσετε πως οι γεωγραφικές συντεταγμένες καταχωρούνται σε μέτρα και πως η απόσταση μεταξύ δύο σημείων μπορεί να υπολογιστεί ως η υποτείνουσα του αντίστοιχου τριγώνου.
Θέμα 3ο: (2.5 βαθμοί)
Γράψτε σε C++ τις δηλώσεις για τις κλάσεις που απαιτούνται για το πρόγραμμα παρακολούθησης της πανίδας καθώς και τους ορισμούς των συναρτήσεων κατασκευής και της συνάρτησης που ενημερώνει τις συντεταγμένες της τελευταίας εμφάνισης. Αν τα στοιχεία για τους οργανισμούς φυλάσσονται σε έναν πίνακα με δείκτες στα αντίστοιχα αντικείμενα, γράψτε μια συνάρτηση που να επιστρέφει τη συνολική απόσταση που έχει διανυθεί από όλους τους καταχωρημένους οργανισμούς.
Θέμα 4ο: (2.5 βαθμοί)
Τα παρακάτω κατηγορήματα της Prolog ορίζουν αναδρομικά μια οικογένεια δελφινιών:
Διάρκεια εξέτασης 2,5 ώρες | Καλή επιτυχία! |
Τμήμα
Πληροφοριακών
και Επικοινωνιακών
Συστημάτων
Γλώσσες προγραμματισμού
Διδάσκων: Επικ. Καθηγητής Διομήδης Σπινέλλης | Εξεταστική περίοδος
Σεπτεμβρίου 2000 |
Ο οργανισμός "Αθήνα 2004" σας αναθέτει να υλοποιήσετε ένα δοκιμαστικό πρόγραμμα για την παρακολούθηση των αθλητών των Ολυμπιακών αγώνων. Το πρόγραμμα θα περιλαμβάνει στοιχεία για κάθε ξεχωριστό αθλητή. Τα στοιχεία αυτά είναι: όνομα, εθνικότητα, άθλημα που αγωνίζεται, στοιχεία σχετικές με τις προσπάθειές του στο άθλημα και η καλύτερη επίδοση στο άθλημα αυτό. Κάθε αθλητής λαμβάνει μέρος σε ένα και μόνο ένα άθλημα. Για κάθε άθλημα πρέπει να τηρείται αυτόματα ο αριθμός των αθλητών που αγωνίζονται. Στα αθλήματα ταχύτητας φυλάσσεται η επίδοση (χρόνος) ως αριθμός κινητής υποδιαστολής, στα άλματα φυλάσσεται η απόσταση ως αριθμός κινητής υποδιαστολής, και στις άρσεις φυλάσσεται το βάρος ως ακέραιος αριθμός. Σε ορισμένα αθλήματα πρέπει να φυλάσσεται και ο αριθμός των προσπαθειών. Το πρόγραμμα πρέπει να μπορεί να εμφανίζει τα στοιχεία για έναν συγκεκριμένο αθλητή, να ενημερώνει τα στοιχεία του αθλητή με τα αποτελέσματα από μια προσπάθεια και να εμφανίζει τους αθλητές για ένα άθλημα με τη σωστή σειρά κατάταξης.
Θέμα 1ο: (2 βαθμοί)Σχεδιάστε σε UML ένα διάγραμμα κλάσεων για το παραπάνω πρόγραμμα. Στο διάγραμμα πρέπει να φαίνονται οι ιδιότητες καθώς και οι μέθοδοι που εσείς κρίνετε απαραίτητες. Σχεδιάστε ένα αντιπροσωπευτικό διάγραμμα αντικειμένων.
Θέμα 2ο: (2 βαθμοί)
Για κάθε άθλημα να γράψετε σε C++ τη μέθοδο compare(a1, a2) που επιστρέφει -1, 0, ή 1 ανάλογα με το αν η επίδoση του αθλητή a1 είναι καλύτερη, ίση ή χειρότερη με την επίδοση του αθλητή a2.
Θέμα 3ο: (2 βαθμοί)
Να γράψετε σε C++ μια κλάση που να υλοποιεί τις "προσπάθειες". Η κλάση να έχει συνάρτηση κατασκευής που να λαμβάνει ως όρισμα τον αριθμό των προσπαθειών που επιτρέπει ένα αγώνισμα και τις μεθόδους NewTry που εκτελείται πριν από κάθε προσπάθεια και εμφανίζει τον αριθμό της και αυτές που απομένουν και την MoreTries που επιστρέφει αληθές αν επιτρέπονται άλλες προσπάθειες.
Θέμα 4ο: (2 βαθμοί)
Γράψτε σε C++ μια μέθοδο για την κλάση του αθλητή που λαμβάνει ως όρισμα έναν πίνακα με αθλητές που αγωνίστηκαν σε ένα αγώνισμα, και τον αριθμό τους. Η μέθοδος πρέπει με τη χρήση της compare να εμφανίζει τον αθλητή που έχει την καλύτερη επίδοση στο συγκεκριμένο αγώνισμα.
Θέμα 5ο: (2 βαθμοί)
Η παρακάτω συνάρτηση της Lisp επιστρέφει τον αριθμό των στοιχείων μιας λίστας:
Διάρκεια εξέτασης 2,5 ώρες | Καλή επιτυχία! |