Skip to main content

Laboratorium 4

Zadania do wykonania

Zadanie 1: Zaimplementuj system monitorowania temperatury reaktora jądrowego z wykorzystaniem programowania wielowersyjnego i mechanizmu porównywania wyników opartego na średniej z odrzuceniem skrajnych. Opracuj szczegółową specyfikację modułu monitorującego temperaturę, zawierającą zakres dopuszczalnych wartości temperatury, częstotliwość pomiarów oraz wymagania dotyczące dokładności i niezawodności. Stwórz cztery niezależne wersje oprogramowania dokonującego pomiaru temperatury, gdzie każda wersja powinna być zaimplementowana przez inny zespół lub osobę, używając różnych języków programowania i metod pomiaru (np. różne algorytmy filtracji danych, różne metody kalibracji). Zaimplementuj mechanizm obliczający średnią z odrzuceniem wartości skrajnych, który odrzuca wyniki oddalone o więcej niż jedno odchylenie standardowe od mediany i oblicza średnią z pozostałych wartości. Uzasadnij wybór tego mechanizmu i opisz jego zalety w kontekście monitorowania parametrów reaktora. Zaimplementuj procedury awaryjne na wypadek wykrycia anomalii (np. znaczne rozbieżności między wynikami) i upewnij się, że system jest odporny na awarie pojedynczych wersji i zapewnia ciągłość działania. Przeprowadź testy symulujące różne scenariusze, takie jak normalne warunki pracy, awarie czujników w jednej lub kilku wersjach oraz nagłe zmiany temperatury. Dokumentuj wyniki testów i analizuj skuteczność mechanizmu porównywania.

Zadanie 2: Napisz program, który oblicza wartość funkcji matematycznej (np. funkcji trygonometrycznej) przy użyciu trzech niezależnych wersji algorytmu i wykorzystuje głosowanie większościowe do wyboru poprawnego wyniku. Zaimplementuj trzy różne funkcje obliczające wartość wybranej funkcji matematycznej: wersja 1 używa wbudowanej funkcji bibliotecznej, wersja 2 implementuje algorytm numeryczny (np. szereg Taylora), wersja 3 używa aproksymacji lub innej metody przybliżonego obliczania. Celowo wprowadź błąd w jednej z wersji (np. zmień znak w formule), który powoduje niepoprawne wyniki dla pewnych wartości wejściowych. Zaimplementuj mechanizm głosowania większościowego, który porównuje wyniki z trzech wersji, uznaje wynik pojawiający się najczęściej za poprawny, a w przypadku braku większości (każdy wynik inny) wyświetla komunikat o braku zgodności. Przetestuj program dla różnych wartości wejściowych, w tym wartości, dla których wszystkie wersje powinny zwrócić ten sam wynik oraz wartości, dla których wprowadzony błąd ujawnia się w jednej z wersji. Pokaż, jak mechanizm głosowania pozwala uzyskać poprawny wynik pomimo błędu w jednej z implementacji.

Zadanie 3: Napisz program, który sortuje listę liczb całkowitych przy użyciu dwóch różnych algorytmów sortowania i porównuje wyniki. Wersja 1 implementuje sortowanie bąbelkowe, wersja 2 implementuje sortowanie przez wstawianie. Uruchom obie wersje na tej samej, losowo wygenerowanej liście liczb i porównaj wyniki obu algorytmów. Jeśli wyniki są identyczne, wyświetl komunikat o poprawnym sortowaniu, jeśli wyniki się różnią, wyświetl komunikat o niezgodności i wskaż różnice. Celowo wprowadź błąd w jednej z implementacji (np. niepoprawny indeks w pętli), aby spowodować niepoprawne sortowanie. Uruchom program ponownie i zaobserwuj, jak mechanizm porównywania wykrywa różnice. Przetestuj program na różnych zestawach danych wejściowych (różne wielkości listy, wartości ujemne, liczby powtarzające się).

Zadanie 5: Napisz program, który oblicza silnię liczby naturalnej na dwa różne sposoby i porównuje wyniki. Funkcja iteracyjna implementuje obliczanie silni przy użyciu pętli, funkcja rekurencyjna implementuje obliczanie silni jako funkcję rekurencyjną. Program powinien dla zadanej liczby obliczyć silnię obu metodami, porównać wyniki i wyświetlić komunikat, czy są identyczne, a w przypadku różnic wskazać, która funkcja zwróciła niepoprawny wynik. Przetestuj program dla kilku wartości wejściowych (np. 0, 1, 5, 10) i upewnij się, że wyniki są poprawne. Możesz celowo wprowadzić błąd w jednej z funkcji (np. brak warunku stopu w rekurencji) i zaobserwować, jak program wykrywa różnice.

Materiały

📄 Pobierz PDF LAB-4