Θέματα εξετάσεων και άλλες σχετικές πληροφορίες

Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr

Εξεταστική περιόδος Ιουνίου 2000

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Τμήμα Πληροφοριακών και Επικοινωνιακών Συστημάτων

Γλώσσες προγραμματισμού

Διδάσκων: Επικ. Καθηγητής Διομήδης Σπινέλλης

Εξεταστική περίοδος

Ιουνίου 2000

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

Θέμα 1ο: (2.5 βαθμοί)

Σχεδιάστε σε UML ένα διάγραμμα κλάσεων για το παραπάνω πρόγραμμα. Στο διάγραμμα πρέπει να φαίνονται οι ιδιότητες καθώς και μέθοδοι που εσείς κρίνετε απαραίτητες. Σχεδιάστε ένα αντιπροσωπευτικό διάγραμμα αντικειμένων.

Θέμα 2ο: (2.5 βαθμοί)

Να γράψετε σε C++ μια κλάση που να υλοποιεί τις γεωγραφικές συντεταγμένες. Η κλάση να επανακαθορίζει τον τελεστή - έτσι ώστε να επιστρέφει την απόσταση ανάμεσα σε δύο σημεία. Σημείωση: θεωρήσετε πως οι γεωγραφικές συντεταγμένες καταχωρούνται σε μέτρα και πως η απόσταση μεταξύ δύο σημείων μπορεί να υπολογιστεί ως η υποτείνουσα του αντίστοιχου τριγώνου.

Θέμα 3ο: (2.5 βαθμοί)

Γράψτε σε C++ τις δηλώσεις για τις κλάσεις που απαιτούνται για το πρόγραμμα παρακολούθησης της πανίδας καθώς και τους ορισμούς των συναρτήσεων κατασκευής και της συνάρτησης που ενημερώνει τις συντεταγμένες της τελευταίας εμφάνισης. Αν τα στοιχεία για τους οργανισμούς φυλάσσονται σε έναν πίνακα με δείκτες στα αντίστοιχα αντικείμενα, γράψτε μια συνάρτηση που να επιστρέφει τη συνολική απόσταση που έχει διανυθεί από όλους τους καταχωρημένους οργανισμούς.

Θέμα 4ο: (2.5 βαθμοί)

Τα παρακάτω κατηγορήματα της Prolog ορίζουν αναδρομικά μια οικογένεια δελφινιών:

familydolphin(d).
familydolphin(child(X)) :-
        familydolphin(X).
Να ορίσετε, βασισμένοι στα παραπάνω, το κατηγόρημα familygen(X, Y) που είναι αληθές όταν και μόνο όταν το Υ είναι ο αριθμός των γενεών της οικογένειας X. Για παράδειγμα το κατηγόρημα familygen(child(child(d)), 2) είναι αληθές (η οικογένεια X είναι δύο γενεών).

Διάρκεια εξέτασης 2,5 ώρες Καλή επιτυχία!

Εξεταστική περιόδος Σεπτεμβρίου 2000

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Τμήμα Πληροφοριακών και Επικοινωνιακών Συστημάτων

Γλώσσες προγραμματισμού

Διδάσκων: Επικ. Καθηγητής Διομήδης Σπινέλλης

Εξεταστική περίοδος

Σεπτεμβρίου 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 επιστρέφει τον αριθμό των στοιχείων μιας λίστας:

(defun length (a) 
        (if (null a) 
                0 
                (+ (length (cdr a)) 1)))
Αν η συνάρτηση listp είναι αληθής όταν το όρισμά της είναι λίστα και η car επιστρέφει το πρώτο στοιχείο μιας λίστας, να ορίσετε μια συνάρτηση expandlength που να επιστρέφει τον αριθμό των στοιχείων μια λίστας λαμβάνοντας υπόψη και τα στοιχεία της λίστας που και αυτά είναι λίστες. Για παράδειγμα ενώ η (length '(5 8 40 '(60 90))) έχει την τιμή 4 η (expandlength '(5 8 40 '(60 90))) έχει την τιμή 5.

Διάρκεια εξέτασης 2,5 ώρες Καλή επιτυχία!

Βοηθήματα στις εξετάσεις

Στην εξέταση για το μάθημα Γλώσσες προγραμματισμού οι εξεταζόμενοι μπορούν (προαιρετικά) να έχουν μαζί τους ένα φύλλο με σημειώσεις σύμφωνα με τους παρακάτω όρους:
  1. Οι σημειώσεις πρέπει να είναι όλες γραμμένες σε ένα φύλλο μεγέθους Α4.
  2. Επιτρέπεται η χρήση και των δύο όψεων του φύλλου.
  3. Το φύλλο παραδίδεται μαζί με το γραπτό.
  4. Οι πρώτες λέξεις και στις δύο όψεις του φύλλου πρέπει να είναι το ονοματεπώνυμο και ο αριθμός μητρώου του εξεταζόμενου.
  5. Οι σημειώσεις πρέπει να είναι γραμμένες στα ελληνικά ή αγγλικά, να διαβάζονται με γυμνό μάτι και να μην είναι κωδικοποιημένες.
  6. Οι σημειώσεις επιτρέπεται να περιέχουν κώδικα στις γλώσσες προγραμματισμού που έχουν διδαχτεί στο μάθημα καθώς και σχήματα UML.
  7. Στο τέλος της δεύτερης όψης πρέπει να υπάρχει η παρακάτω φράση
    Η σημειώσεις στο φύλλο αυτό έχουν συνταχθεί από εμένα. Κανένα τμήμα τους δεν έχει αντιγραφεί αυτούσιο από άλλη πηγή.
    μαζί με το ονοματεπώνυμο, την ημερομηνία και υπογραφή του εξεταζόμενου.
  8. Όλα τα περιεχόμενα του φύλλου (με εξαίρεση την υπογραφή) πρέπει να είναι τυπωμένα.
  9. Απαγορεύονται οι χειρόγραφες προσθήκες ή σημειώσεις στο φύλλο, τόσο πριν, όσο και κατά τη διάρκεια της εξέτασης.
  10. Παράβαση των παραπάνω όρων συνεπάγεται μηδενισμό του γραπτού.