PO2024: Wyniki egzaminu – termin drugi, 10.09

Wiersze zawierają: trzy ostatnie cyfry z nr indeksu, liczbę punktów za część teoretyczną, liczbę punktów za część praktyczną, całkowitą liczbę zdobytych punktów i ocenę.

  1. ***045   7   3   10   2
  2. ***397   16   8   24   3.5
  3. ***446   10   10   20 +ε   3
  4. ***448   21.5   8   29.5   4
  5. ***508   17.5   16   33.5   4.5
  6. ***526   7.5   5   12.5   2
  7. ***531   18.5   13   31.5   4
  8. ***545   17.5   0   17.5   2
  9. ***546   9.5   8   17.5   2
  10. ***595   20   6   26   3.5
  11. ***621   9.5   13   22.5   3
  12. ***638   11   9   20 +ε   3
  13. ***668   21   16   37   5
  14. ***699   17.5   10   27.5   3.5
  15. ***898   7   3   10   2
  16. ***899   7   13   20 +ε   3
  17. ***943   17   12   29   4
  18. ***944   16   9   25   3.5

Osoby zainteresowane wglądem w swoją pracę egzaminacyjną proszę o kontakt celem ustalenia terminu.

W razie niejasności proszę o kontakt mailowy.

PO2024: Poprawa lab. i egzamin w sesji wrześniowej – terminy i zasady

Termin poprawy zajęć laboratoryjnych

9 września (poniedziałek), godz. 11:00, pracownia komputerowa 119, bud. 21. Czas trwania: około 4 godzin zegarowych.

II termin egzaminu

10 września (wtorek), godz. 11:00, sala 114, bud.21. Egzamin w drugim terminie ma formę i czas trwania identyczne jak w pierwszym (uwaga: ograniczenia w trakcie trwania egzaminu zostały rozszerzone o wprowadzenie „ciszy radiowej”; proszę o uważne przeczytanie jeszcze raz opisu zasad).

Zasady udziału w poprawie zajęć laboratoryjnych

Zgodnie z regulaminem zaliczeń przedmiotów, studenci, którzy na laboratorium nie zdobyli wystarczającej liczby punktów i otrzymali ocenę negatywną, mają prawo do poprawy tej oceny. Ci, którzy zamierzają uczestniczyć w poprawie, muszą jednak najpierw otrzymać ocenę pozytywną z zadania semestralnego. Rozwiązania zadań semestralnych (zzipowany komplet plików, spełniających wszystkie formalne wymagania) studenci przekazują do oceny swoim prowadzącym zajęcia. Jeżeli ktoś w czerwcu pozytywnie rozliczył swoje zadanie semestralne, to jest już dopuszczony do poprawy. Takie osoby mogą teraz przypomnieć o pozytywnym zaliczeniu zadania swoim prowadzącym, ponieważ przed poprawą będę prosił prowadzących o przesłanie do mnie list osób, które otrzymały oceny pozytywne za zadanie semestralne. Tylko osoby, które będą na tych listach, zostaną dopuszczone do poprawy w poniedziałek, 9 września.

Studenci przekazują do swoich prowadzących rozwiązania zadań semestralnych do oceny według zasad i zgodnie z terminami ustalonymi przez tych prowadzących. Studenci z mojej grupy, którzy chcą przystąpić do poprawy, a nie mają jeszcze zaliczonego zadania semestralnego, przesyłają mi je do oceny w postaci załącznika do maila w terminie od 2 (poniedziałek) do 5 września (czwartek) do końca dnia. Prace przesłane później mogą nie zostać ocenione, a prace przesłane wcześniej mogą niechcący zostać przeoczone. Mail z odpowiedzią/oceną zostanie wysłany zwrotnie, tj. na adres mailowy, z którego nadesłano rozwiązanie. Wszystkie oceny za zadania semestralne muszą zostać wystawione do 6 września (piątek), do końca dnia.

Zgłoszenie udziału w poprawie zajęć laboratoryjnych

Osoby, które chcą i mogą przystąpić do poprawy, przysyłają do mnie mailem swoje zgłoszenie udziału w poprawie (wystarczy jedno zdanie typu „zgłaszam swój udział w …”, a poniżej imię, nazwisko i nr indeksu). Zgłoszenie należy wysłać w terminie od 2 (poniedziałek) do 7 września (sobota), do końca dnia. Proszę nie przysyłać zgłoszeń wcześniej, bo mogą zostać przeze mnie niechcący przeoczone. Brak przesłania w terminie zgłoszenia udziału spowoduje, że nie zostanie przygotowane zadanie dla danej osoby i tym samym uniemożliwi jej udział w poprawie. Uwaga: jeżeli żadne zgłoszenia nie zostaną przesłane w terminie, poprawa zostanie odwołana.

PO2024: Wyniki egzaminu – termin pierwszy, 19.06

Wiersze zawierają: trzy ostatnie cyfry z nr indeksu, liczbę punktów za część teoretyczną, liczbę punktów za część praktyczną, całkowitą liczbę zdobytych punktów i ocenę.

  1. ***045   7   1   8   2
  2. ***050   12   8   20+ε   3
  3. ***107   17.5   5   22.5   3
  4. ***242   12.5   14   26.5   3.5
  5. ***311   19.5   1   20.5   3
  6. ***327   16   5   21   3
  7. ***379   11   9   20+ε   3
  8. ***397   6.5   8   14.5   2
  9. ***428   18.5   5   23.5   3
  10. ***432   23   14   37   5
  11. ***446   9   5   14   2
  12. ***448   16.5   0.5   17   2
  13. ***475   14   6.5   20.5   3
  14. ***476   13   7   20+ε   3
  15. ***478   21.5   6   27.5   3.5
  16. ***501   21   9   30   4
  17. ***508   8.5   1   9.5   2
  18. ***526   6.5   5   11.5   2
  19. ***531   14.5   0   14.5   2
  20. ***536   17   3   20+ε   3
  21. ***545   15.5   0   15.5   2
  22. ***546   7.5   1   8.5   2
  23. ***549   21   0   21   3
  24. ***559   19   6   25   3.5
  25. ***571   19.5   7   26.5   3.5
  26. ***578   16.5   8   24.5   3.5
  27. ***595   14.5   1   15.5   2
  28. ***620   25   3   28   4
  29. ***621   12.5   6   18.5   2
  30. ***638   7   0   7   2
  31. ***658   19.5   2   21.5   3
  32. ***668   10   7   17   2
  33. ***699   7.5   5.5   13   2
  34. ***728   22.5   2   24.5   3.5
  35. ***899   2.5   5   7.5   2
  36. ***907   15   5   20+ε   3
  37. ***939   15.5   8   23.5   3
  38. ***945   23.5   1   24.5   3.5

Wgląd w prace egzaminacyjne będzie możliwy we czwartek, 27.06, w godz. od 12:00 do 12:30 (lub dłużej, aż do ostatniego zainteresowanego) w pok. 1247 bud. 12.

W razie niejasności proszę o kontakt mailowy

PO2024: Lista osób zwolnionych z egzaminu

Lista zawiera trzy ostatnie cyfry numeru indeksu osób zwolnionych z egzaminu za bardzo dobre wyniki na zajęciach lab. oraz proponowaną ocenę.

  1. ***305   5
  2. ***334   5
  3. ***471   5
  4. ***482   4.5
  5. ***550   4.5
  6. ***577   5
  7. ***587   5
  8. ***639   4.5
  9. ***732   5
  10. ***734   5

Ocena zostanie wpisana do protokołu USOS jako ocena zdobyta w pierwszym terminie.

W razie niejasności proszę o kontakt mailowy.

PO2024: Wejściówka na Lab.13

Do klasy bazowej wybranej do realizacji na lab. 11 (reprezentującej samochód albo urządzenie optyczne albo osobę na uczelni) dodaj przeciążony operator += jako metodę należącą do klasy. Zaproponuj własną logikę sumowania obiektów (np. gdyby to było sumowanie kwadratów, to wynikiem sumowania może być kwadrat, którego pole jest sumą pól składników sumy, albo którego bok ma długość równą sumie długości boków składników sumy). Utwórz listę dynamiczną zawierającą 5 elementów typu klasy bazowej, po czym zsumuj je do obiektu pomocniczego typu klasy bazowej korzystając z napisanego operatora. Na koniec wywołaj metodę wypisz na rzecz obiektu przechowującego wartość sumy.

Przetestowany, działający program (tylko plik z kodem źródłowym) uploaduj do https://e.uksw.edu.pl jako rozwiązanie zadania „Wejściówka” w sekcji „Temat 13”.

Hint: na lab.13 będą rozwijane programy napisane na lab.11 i 12.

PO2024: Wejściówka na Lab.12

Pobierz z moodle kod rozwiązania zadania poziomu I z lab. 11. W tym kodzie, w klasie bazowej wybranej do realizacji na lab. 11 oraz w jej dwóch klasach pochodnych zmień prawa dostępu do wszystkich pól na protected (również do pola nast). W metodach modyfikujących wartości pól, tzw. seterach, dodaj kod sprawdzający poprawność wprowadzanych wartości (np. pole 'cena’ nie może mieć wartości ujemnej, itp.), który pozostawia pole niezmienione jeżeli przekazana w argumencie nowa wartość nie należy do ustalonej dziedziny.

Dodaj funkcję tworzącą listę dynamiczną jednokierunkową na podstawie danych z pliku tekstowego, gdzie każdy wiersz zawiera wartości jednego elementu listy. Przygotuj taki plik, gdzie dane w pliku są przemieszane, tj. wiersze zawierają dane inicjujące dla obiektów obydwu typów pochodnych. Pierwszy znak w każdym wierszu oznacza umowny identyfikator typu pochodnego (zaproponuj własny sposób kodowania identyfikatorów), pozostałe wartości to dane odpowiednie dla wskazanego typu. Dane w wierszu są zawsze poprawne co do składni wiersza, ale wartości mogą wykraczać poza dozwolone dziedziny (np. cena albo pojemność może być ujemna). Wczytaj te wiersze i utwórz odpowiednio listę dynamiczną. Do walidacji i zapisu wczytanych danych użyj seterów. W razie podania wartości spoza dziedziny wartość pola powinna być równa wartości domyślnej, tj. takiej, jaką ustawia konstruktor domyślny. Przygotuj plik z danymi wejściowymi tak, aby zawierał różne możliwe przypadki. W funkcji main zamiast kodu, pobierającego od użytkownika dane do listy, wywołaj przygotowaną funkcję.

Zmień metodę wypisz na polimorficzną, aby w oknie konsoli wypisywane były wartości wszystkich pól odpowiednio do typu obiektu z listy dynamicznej.

Przetestuj jeszcze raz cały kod i popraw ewentualne błędy, ponieważ zadanie poziomu I na lab. 12 będzie rozwinięciem kodu Wejściówki.

Przetestowany, działający program (tylko plik z kodem źródłowym) uploaduj do https://e.uksw.edu.pl jako rozwiązanie zadania „Wejściówka” w sekcji „Temat 12”, tak aby na początku zajęć można go było szybko pobrać, skompilować i zademonstrować działanie.

PO2024: Wejściówka na Lab.11

Zaprojektuj i zaimplementuj trzy klasy, które na zajęciach 11 posłużą jako klasy bazowe. Klasy reprezentują pojęcia:

  1. samochód – zawiera pola przechowujące cechy wspólne dla wszystkich samochodów (cena, rodzaj silnika).
  2. urządzenie optyczne – zawiera pola przechowujące cechy wspólne dla wszystkich takich urządzeń (zoom, waga).
  3. osoba na uczelni – zawiera pola przechowujące cechy wspólne dla wszystkich takich osób (imię i nazwisko, adres e-mail).

Wszystkie pola klasy bazowej powinny być zadeklarowane jako public. Mimo to, dla każdego z pól powinny istnieć odpowiednie getery i setery, aby na zajęciach laboratoryjnych prawa dostępu do tych pól mogły być zmieniane na bardziej ograniczające. Ponadto każda klasa musi mieć metodę wypisz, która wypisze w oknie konsoli wartości wszystkich pól obiektu w sposób graficznie przystępny dla użytkownika.

Do wszystkich klas zaprojektuj po trzy konstruktory: konstruktor domyślny inicjalizujący wszystkie pola obiektu rozsądnymi wartościami domyślnymi, konstruktor kopiujący oraz konstruktor z argumentami przechowującymi wartości dla inicjalizacji wszystkich pól.

Dodatkowo każda klasa bazowa powinna mieć jeszcze pole nast, zadeklarowane jako public i zawierające wskaźnik typu takiego jak klasa bazowa. Tym sposobem obiekty klasy bazowej będą mogły być wykorzystane jako elementy listy dynamicznej jednokierunkowej.

Zademonstruj poprawność działania zaprojektowanych klas, pisząc w funkcji main kod, budujący dla każdego z typów danych listę dynamiczną jednokierunkową zawierającą 5 elementów. Do tworzenia elementów listy użyj konstruktorów domyślnych. Po utworzeniu każdej z list wywołaj metodę wypisz na rzecz każdego z elementów listy. Na koniec usuń wszystkie listy.

Przetestowany, działający program (tylko plik z kodem źródłowym) uploaduj do https://e.uksw.edu.pl jako rozwiązanie zadania „Wejściówka” w sekcji „Temat 11”.

PO2024: oceny uzyskane na zajęciach w nieswoich grupach

Przypominam, że po uzyskaniu oceny przez studenta na zajęciach lab. PO z inną grupą niż własna, ocena ta może zostać wpisana tylko pod warunkiem, że prowadzący, który ją wystawił, wyśle maila z informacją do prowadzącego grupę, do której ten student jest przypisany. Krótko mówiąc: skuteczny jest tylko mail między prowadzącymi. Dlatego po uzyskaniu oceny w nieswojej grupie student musi „dopilnować”, czy taka komunikacja między prowadzącymi nastąpiła, sprawdzając swoje oceny w moodle i zasięgając informacji u swojego prowadzącego. Wszyscy prowadzący zajęcia lab. PO wiedzą, jaka jest organizacja zajęć, oraz że powinni wysyłać maile z ocenami do siebie nawzajem. Jeżeli informacja nie została przesłana, warto przypomnieć się mailem prowadzącemu, który ocenę wystawił.

PO2024: Wejściówka na Lab.10

Do klasy MojaKlasa (https://ktrojanowski.blog.uksw.edu.pl/programowanie-obiektowe/kody-programow-po/: Program #6) dodaj pole nast, tak aby można było tworzyć listę dynamiczną jednokierunkową obiektów typu MojaKlasa.

Następnie zaprojektuj nową klasę Wykladowca, która zawiera pole typu MojaKlasa* wskazujące na listę dynamiczną jednokierunkową. Pole to ma pełnić rolę głowy dynamicznej listy grup studenckich przypisanych do danego wykładowcy. Klasa Wykladowca może też zawierać inne pola, jeżeli okażą się potrzebne.

Do klasy Wykladowca dodaj konstruktory:

  1. konstruktor domyślny, inicjalizujący obiekt tak, aby lista dynamiczna była pusta.
  2. konstruktor z argumentem reprezentującym nazwę pliku tekstowego. Plik zawiera listę kilku adresów e-mail. Konstruktor tworzy jeden obiekt dynamiczny typu MojaKlasa, do którego zostają zapisane adresy e-mail odczytane z pliku. Następnie obiekt ten jest dołączany do listy dynamicznej.
  3. konstruktor kopiujący, który tworzy kopię listy dynamicznej z obiektu podanego w argumencie wywołania.

oraz destruktor, który zwalnia wszystkie dynamicznie zaalokowane zasoby.

Do klasy Wykladowca dodaj metodę dodaj_klase dodającą nowy obiekt do listy dynamicznej. Argumentem wywołania metody jest nazwa pliku tekstowego z listą adresów mailowych. W metodzie tworzony jest nowy obiekt dynamiczny typu MojaKlasa, zapisywane są w nim adresy mailowe ze wskazanego pliku, a na koniec obiekt jest dołączany do listy.

Do klasy Wykladowca dodaj też metodę wypisz, która wypisuje w oknie konsoli wszystkie grupy studenckie przypisane do danego wykładowcy, tj. dla każdego elementu listy dynamicznej wypisuje wszystkie zapisane w nim niepuste adresy mailowe.

Zademonstruj działanie napisanego kodu: w funkcji main utwórz obiekty dynamiczne typu Wykladowca z wykorzystaniem wszystkich trzech konstruktorów, do wybranego z wykładowców dodaj kilka nowych grup studenckich (metodą dodaj_klase), po czym dla każdego z wykładowców wywołaj metodę wypisz. Na koniec usuń obiekty dynamiczne typu Wykladowca, przy czym z pomocą debuggera upewnij się, że destruktor za każdym razem prawidłowo zwolnił wszystkie dynamicznie zaalokowane zasoby.

Przygotuj odpowiedź na pytanie prowadzącego: ile razy w napisanym programie zostały wywołane konstruktory, które i w których miejscach kodu to nastąpiło. A ile razy zostały wywołane destruktory?

Przetestowany, działający program (tylko plik z kodem źródłowym) uploaduj do https://e.uksw.edu.pl jako rozwiązanie zadania „Wejściówka” w sekcji „Temat 10”.

Hint: na zajęciach lab. 10 będzie trzeba rozbudować kod programu napisanego na lab.9. Dlatego warto przejrzeć dotychczas napisany kod i usunąć wszystkie ewentualne błędy i niedoróbki.