ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ
Τμήμα Ηλεκτρονικών Μηχ. και Μηχ. Υπολογιστών

ΛΟΓ 201: Τεχνολογία Λογισμικού ΙΙ
http://www.softlab.ntua.gr/~nickie/TUC/log201/

Θέματα Εξετάσεων

Ημερομηνία εξέτασης:

Τρίτη 13 Ιουνίου 2000

Διάρκεια: 3 ώρες
Ποσοστό επί της συνολικής βαθμολογίας:

60%


Άσκηση 1 (50%)

Ζητείται να υλοποιηθεί ένα class template με όνομα Set<T>, τα αντικείμενα του οποίου να παριστάνουν σύνολα από στοιχεία τύπου T. Οι ελάχιστες επιθυμητές λειτουργίες είναι οι ακόλουθες:

Για την υλοποίηση των συνόλων μπορείτε να χρησιμοποιήσετε τα παρακάτω class templates, που θεωρείται ότι έχουν ήδη υλοποιηθεί. Το List<T> υλοποιεί μια απλά συνδεδεμένη λίστα από στοιχεία τύπου T, ενώ το ListIterator<T> υλοποιεί έναν iterator για τα στοιχεία της λίστας.

   template <class T>
class List
{
public:
List ();
~List ();
void insert (const T & t);
}; template <class T>
class ListIterator
{
public:
ListIterator (const List<T> & l);
bool get ();
T current () const;
};

Για τον έλεγχο της σωστής λειτουργίας του template, να γραφεί κατάλληλο σύντομο πρόγραμμα.


Άσκηση 2 (50%)

Να γραφεί ένα πρόγραμμα σε περιβάλλον Unix System V που κατά την εκτέλεσή του να ξεκινάει n διεργασίες. Η τιμή του n θα δίνεται στη γραμμή εντολής του προγράμματος. Κάθε μια από τις διεργασίες θα πρέπει να εκτυπώνει συνεχώς ένα μήνυμα της μορφής:

   Process i running.

για i από 0 ως n-1. Οι διεργασίες όμως θα πρέπει να συγχρονίζονται, ώστε τα μηνύματα να εμφανίζονται με την εξής σειρά:

   0, 1, 2, ... n-1, 0, 1, 2, ... , n-1 , 0, 1, 2 ...

Υπόδειξη: για το συγχρονισμό των διεργασιών προσφέρεται η χρήση σηματοφορέων.


Καλή επιτυχία.


Νίκος Παπασπύρου (nickie@softlab.ntua.gr). 13/6/2000 .