I6
Zadanie wyglądało w ten sposób: napisać generator, który dla wybranego rozkładu generuje na wyjściu komunikat i nr tego komunikatu. Jednocześnie czas działania generatora jest losowany zgodnie z wybranym rozkładem, tak samo jak czas psucia się tego generatora. Gdy generator się popsuje, to generowanie komunikatu jest przerywane. Po naprawieniu się, komunikat jest generowany od nowa. Kazał napisać same definicje obiektów, zmiennych i metod, bez metod inicjalizacyjnych. Mówił, że wejściówka będzie miała wpływ na ocenę końcową, jednak nie binarny, a ocena z ćwiczeń będzie wzięta z mniejszą wagą do oceny z laborek.
OBJECT GeneratorObj; {w deklaracji trzeba zaznaczyć OBJECT = GeneratorObj(RandomObj)}
Nr : INTEGER;
time1 : REAL;
time2 : REAL;
lambda,min,max,shape,scale : REAL;
Work : BOOLEAN;
ASK METHOD Generuj();
BEGIN
TELL SELF TO Psuj();
WHILE TRUE
WHILE Work
time1 := ASK SELF TO Exponential(1.0/lambda);
(Exponential użyty tutaj to metoda RandomObj zwracajaca liczbe o rozkladnie wykladniczym z parametrem lambda. Liczba ta jest typu Real.)
WAIT DURATION time1;
END WAIT;
INC(Nr);
OUTPUT("Komunikat numer: ",Nr);
END WHILE;
END WHILE;
END METHOD;
TELL METHOD Psuj();
BEGIN
WHILE TRUE
time2 := ASK SELF TO UniformReal(min,max);
WAIT DURATION time2;
Work := FALSE;
END WAIT;
time2 := ASK SELF TO Weibull(shape,scale);
WAIT DURATION time2;
Work := TRUE;
Nr := 0;
END WAIT;
END WHILE;
END METHOD;
END OBJECT;
I7
Bylo podobne zadanko, z tym ze dane z generatora to nie komunikaty, a na przyklad numerki i sa one wysylane do kolejki 1 z p-stwem p albo do kolejki 2 z p-stwem 1-p. Generator mial taka sama zasade dzialania. 15 minut na to zadanko.