Semestr wiosenny 2018/19

Konsultacje:
pon., śr. 13:15-14:00, pokój 904
Wykład:
pt. 14:15-16:00 s. HS
laboratorium:
pon. 16:15-18:00 s. 410


Zaliczenie wykładu: 2 termin:

Szanowni Państwo: Dla osób, które nie zaliczyły wykładu w 1 terminie będzie 2 termin. Odbędzie się on 10.09. w godz. 10-12 w lab. 416. Formuła egzaminu będzie taka, że trzeba będzie w trakcie egzaminu napisać program. Nie będzie dostępu do internetu, natomiast będzie do dyspozycji książka Grębosza.



Projekty na zaliczenie:

Projekt 1: Napisz program, który poprosi użytkownika o podanie liczby naturalnej N po czym wypisze N poczatkowych liczb pierwszych (powiedzmy, że pierwszą liczbą pierwszą jest 2). Następnie zapyta się użytkownika, czy kontynuować, i jeżeli użytkownik odpowie "T", to program powtarza procedurę, a jeżeli użyktownik odpowie "N" to program się zakończy.

Termin złożenia projektu: piątek 22.03. (włącznie)

Projekt 2: Napisz program, który oblicza przybliżoną wartość liczby pi. Powinien zapytać się użytkownika o metodę obliczenia, a nastepnie wywołać jedną z kilku funkcji obliczających. Jedna z funkcji powinna wykorzystać wzór: pi^2/6= suma odwrotności kwadratów liczb naturalnych. Inna z funkcji powinna wykorzystać wzór: pi/2= suma n!/(2n+1)!!. ((.)!! to iloczyn wszystkich liczb nie większych o tej samej parzystości - co druga). W końcu trzecia funkcja powinna zaimplementować tzw. metodę Monte-Carlo: wiemy, że pi/4 to stosunek pola koła do pola opisanego na nim kwadratu. Generujemy dużą ilość "punktów losowych" w kwadracie - można posłużyć się funkcją rand() - opis w Google, i liczyć odsetek punktów, które "wpadły" do koła wpisanego w kwadrat. Wszystkie 3 funkcje powinny znajdować się w odrębnym pliku. W ramach każdej funkcji należy zadać użytkownikowi pytanie o ilość wymaganych iteracji, czy punktów losowych. Program powinien działać dopóki użytkownik nie wybierze opcji "zakończ program".

Termin złożenia projektu: piątek 19.04. (włącznie)

Projekt 3: Program ma utworzyć i "utrzymywać" listę osób. Trzeba zdefiniować klasę "osoba", która będzie zawierała dane osoby, imię i nazwisko, i jeszcze jeakieś dodatkowe. Te dane powinny być prywatne, a do ich zapisu i odczytu powinny być w klasie specjalne funkcje. Następnie zdefiniować należy klasę "lista", która zawierać będzie listę "osób" (jako część prywatną, która zawsze powinna być przechowywana posortowana), oraz funkcje działające na tej liście. Klasa powinna zawierać funkcje takie jak dodaj osobę, usuń osobę, sortuj listę, wypisz listę, może jakieś inne. Lista osób oczywiście powinna być dynamiczna. Proszę nie zapomnieć o odpowiednich konstruktorach i destruktorach. Sam program powinien realizować menu, gdzie użytkownik może wybrać opcję dodania osoby do listy, wypisania konkretnej osoby, wypisania całej listy, ew. wyjścia z programu.
Uwaga: W związku z wieloma pytaniami dotyczącymi projektu, oraz uwagami typu "że jest przerażający" :-) dyskutujemy ten projekt na zajęciach, i wypisujemy wspólnie szkielet projektu. To, co się do tej pory "urodziło" można obejrzeć tutaj

Termin złożenia projektu: piątek 31.05. (włącznie)

Projekt 4: Projekt 4 to niewielkie uzupełnienie projektu 3. Należy do klasy Osoba dodać pole Wiek. Lista zawierająca osoby powinna być posortowana jednocześnie względem nazwisk (alfabetycznie) i wieku. To było omawiane na wykładzie.

Termin złożenia projektu: czwartek 13.06. (włącznie)

Uwaga: projekty (w postaci pliku .cpp) proszę przesłać mailem swojemu prowadzącemu grupę laboratoryjną. Plik powinien zawierać wystarczająco dużo komentarzy, żeby prowadzący mógł go skompilować i przetestować. Proszę dowiedzieć się u prowadzącego, jakie szczegółowe kryteria oceniania będzie stosował. W trakcie pisania projektu jak najbardziej można się konsultować z innymi, ale każdy projekt powinien być napisany i przetestowany samodzielnie. Prowadzący po złożeniu projektu mogą zadawać pytania i wyjaśniać różne wątpliwości.



Tematy na laboratorium:

Lista 1 1.3.19 Lista 2 16.3.19 Lista 3 30.3.19
Lista 4 28.04.19 Lista 5 Lista 6
Lista 7 Lista 8 Lista 9