Zadanie semestralne – wyjaśnienie

W związku z powtarzającymi się pytaniami dotyczącymi schematu działania programu podanego w opisie zadania semestralnego:

Wczytanie danych z pliku do tablicy;
while (!koniec_pracy)
Operacje na danych zapisanych w tablicy;
Zapisanie danych z tablicy do pliku.

o użyte w schemacie słowo „tablica”, wyjaśniam, że zostało ono użyte w kontekście ogólnym, jako sekwencja, tj. uporządkowana seria danych. Być może należało je zastąpić słowem „tabela”, tak aby nie kojarzyło się niepotrzebnie ze strukturą danych istniejącą w C i C++ zwaną tablicą. Wspomniana w schemacie „tablica”, bądź – trafniej ujmując – „tabela”, składa się z wierszy (rekordów) reprezentujących pojedyncze paczki danych o identycznej strukturze, ale oczywiście różnej treści. Każda paczka (zwana też encją) to reprezentacja jednego obiektu (pracownika, komputera, faktury, książki, etc.) i składa się z listy wartości pól tego obiektu.

Praktyczna realizacja tabeli w kodzie programu może polegać zarówno na zadeklarowaniu tablicy rekordów jak i listy dynamicznej rekordów (jedno- lub dwukierunkowej). Każde z tych rozwiązań będzie uważane za poprawne, o ile będzie też spełniało wymagania funkcjonalne opisane w zadaniu. W szczególności zwracam Państwa uwagę, aby unikać rozwiązania, w którym zakładane jest górne ograniczenie maksymalnej liczby rekordów przechowywanych w bazie danych, np. poprzez deklarację tablicy o ustalonym rozmiarze. Takie rozwiązanie będzie uważane za błędne. Jedynym ograniczeniem dla programu na rozmiar wczytywanych danych może być wyłącznie rozmiar dostępnej pamięci. Obejście tego ograniczenia w przypadku tablic wymaga realokowania nowego bloku danych w przypadku, kiedy dotychczas używany zostanie zapełniony. W przypadku list dynamicznych ten problem w ogóle nie istnieje, co wynika z samej budowy listy.

Legitymacja studencka konieczna na egzaminie z PO

Osoby uczestniczące w egzaminie z PO muszą mieć przy sobie dokument ze zdjęciem (np. legitymację studencką) potwierdzający tożsamość właściciela. Wynika to z par. 29 pkt. 4 regulaminu studiów na UKSW, który brzmi:

W przypadku nieusprawiedliwionej nieobecności na egzaminie w obu terminach student otrzymuje z tego egzaminu ocenę niedostateczną. [..]

Dlatego właśnie, abym mógł jednoznacznie ustalić, kto uczestniczył w egzaminie, wszyscy uczestnicy egzaminu muszą mieć przy sobie dokument ze zdjęciem. Po potwierdzeniu tożsamości student może wpisać się na listę obecności. Osoba, która nie będzie mogła okazać takiego dokumentu, będzie musiała opuścić aulę. Brak wpisu na liście będzie jednoznaczny ze stwierdzeniem nieobecności na egzaminie. Po ustaleniu listy obecności rozpocznie się egzamin. Wtedy żadna nowa osoba nie będzie już mogła dołączyć do udziału w egzaminie (drzwi do sali zostaną zamknięte na klucz).

Osoby, które nie zaliczą ćwiczeń w semestrze, w ogóle nie mogą przystąpić do egzaminu w pierwszym terminie. Nie ma tu wtedy mowy o usprawiedliwionej lub nieusprawiedliwionej nieobecności w tym terminie. Traktowane są wtedy zgodnie zasadami opisanymi w par. 29 pkt. 2:

W przypadku nieuzyskania przed sesją egzaminacyjną zaliczenia zajęć warunkującego
dopuszczenie do egzaminu, student przystępuje do tego zaliczenia w sesji poprawkowej i jeśli
je uzyska przysługuje mu jeden termin egzaminu w sesji poprawkowej, a jeśli nie uzyska
zaliczenia otrzymuje z egzaminu ocenę niedostateczna. [..]

Tak więc osoby, które nie zaliczą ćwiczeń w semestrze, przystępują do poprawy do tego zaliczenia w sesji poprawkowej i jeśli im się powiedzie, przysługuje im jeden termin egzaminu w sesji poprawkowej. W razie niepowodzenia na tym egzaminie otrzymują ocenę niedostateczną.

Terminarz zajęć lab. PO w ostatnich tygodniach semestru

Poniżej w tabeli znajduje się terminarz zajęć laboratoryjnych w ostatnich trzech tygodniach semestru. W poszczególnych kolumnach znajdują się terminarze dla prowadzących: MS – Marek Szczepański, HZ – Hubert Zembrowski, KT – Krzysztof Trojanowski, DD – Dorota Dąbrowska. W komórkach wpisane mogą być:

  1. numery zadań, jakie będą realizowane,
  2. słowo „popr” – zajęcia, na których będzie można poprawić jedno zero
  3. słowo „popr/wolne” – w kolumnie takie zapisy występują zawsze dwa razy; oznacza to, że prowadzący sam ustala, który z tych terminów jest wolny, a w którym odbędzie się poprawa,

[table id=4 /]
Zwracam uwagę, że w dniach 8 i 9 czerwca zajęcia prowadzone są wg planu czwartkowego i piątkowego.

Terminy oddawania zadań semestralnych:

  1. grupy poniedziałkowe MS: 25 maja (poniedziałek),
  2. grupy środowe HZ: 27 maja (środa) lub 3 czerwca (środa) – w zależności od decyzji prowadzącego, którego dnia odbędą się zajęcia, na których będzie można poprawić jedno zero,
  3. grupy środowe KT: 3 czerwca (środa)
  4. grupy piątkowe DD: 5 czerwca (piątek)

Wejściówka na ćwiczenia nr 14

Do obydwu klas reprezentujących owoce z poprzedniej wejściówki dodaj operator +=, przy czym dla jednego typu owoców napisz ten operator w formie metody należącej do klasy, a dla drugiego – w formie funkcji globalnej.

Napisz funkcję main w której tworzone są dwie listy dynamiczne, zawierające: jedna owoce jednego typu, a druga drugiego. Dodaj do każdej z list po kilka obiektów utworzonych za pomocą konstruktora domyślnego, a następnie dla każdej z list zsumuj operatorem += jej obiekty, zapisując wynik do obiektów pomocniczych odpowiedniego typu zadeklarowanych jako obiekty lokalne funkcji main.

Opis wyników eksperymentów

Na naszym ostatnim spotkaniu ustaliłem na dziś termin przesłania mi pierwszej wersji rozdziału z wynikami eksperymentów. Niestety, cały czas u niektórych osób trwają poprawki do rozdziałów z opisem teoretycznym metod i być może dlatego wstrzymują się one z przesłaniem mi tej części tekstu. Proszę jednak o przesłanie mi już pierwszych wersji wyników badań eksperymentalnych niezależnie od tego, na jakim etapie jest poprawianie rozdziałów z opisem teorii. Choćby te wyniki eksperymentalne były jeszcze bardzo niekompletne. Jak mówiłem, w tej części pracy liczy się nie tylko sam wynik, ale również jego sposób podania, tj. plan eksperymentów, dobór badanych parametrów algorytmu, a także forma: tabelki, w tym odpowiednie nagłówki, odniesienia do tabel w tekście, zwłaszcza objaśnienia budowy tabel i krótkie omówienie wyników dla każdej z nich. No i oczywiście na koniec warto pamiętać, że ważna jest również strona estetyczna (ramki, etc.). Chciałbym zobaczyć, jak sprawnie poradzicie sobie z kwestią podania wyniku i przekazać uwagi na jak najwcześniejszym etapie, tak aby pozostałe części omawiające wyniki eksperymentów były już pisane poprawnie.

Jeszcze jedna uwaga: pozwólcie żeby na razie tabelki mogły sobie „wędrować” po różnych stronach – poradzę sobie z czytaniem, ponieważ do każdej z nich będą odwołania w tekście. Proszę nie skupiać teraz wysiłków na właściwym umieszczeniu tabel względem tekstu.

To samo dotyczy rysunków.

Wejściówka na ćwiczenia nr 13

Wymyśl i napisz klasę abstrakcyjną reprezentującą pojecie owocu. Zaproponuj w tej klasie przynajmniej dwie metody czysto wirtualne. Następnie zaimplementuj dwie klasy dziedziczące po tej klasie i reprezentujące dwa wybrane gatunki owoców. Obiekty reprezentujące gatunki owoców powinny być tak zaprojektowane, aby można z nich było tworzyć listy dynamiczne. W funkcji main utwórz jedną listę dynamiczną składającą się z kilku różnych owoców i na jej przykładzie zademonstruj polimorfizm metod deklarowanych w bazowej jako czysto wirtualne.

Uwaga: zadanie daje dużą swobodę interpretacji, jeżeli chodzi o model (co mają reprezentować metody zadeklarowane w klasie bazowej? – tj. co można robić z owocami..), dlatego interpretacje identyczne mogą zostać potraktowane jako wykonane niesamodzielnie i mogą zostać nie uznane przez prowadzących. Sprawdzane będą podobieństwa pomysłów w obrębie grupy, a także między grupami. Wszystkie osoby, które zawarły ten sam model w swoim kodzie, mają anulowaną wejściówkę, a w konsekwencji również punkty zdobyte na ćwiczeniach 12. Nie będzie rozstrzygania, kto pierwszy zaprezentował swój pomysł i jest jego autorem, a kto był tylko plagiatorem.