Semestr wiosenny 2021/22

Konsultacje:
pon. 11:15-12:00, czw. 10:15-11:00, pokój 904
Wykład:
wt. 18:15-20:00 (MSTeams)
laboratorium:
pon. 12:15-14:00 s. 411


Projekty na zaliczenie:


Projekt 1:

Napisz program, który obliczy przybliżoną wartość liczby pi, korzystając ze wzoru całkowego: pi to jest całka od 0 do 1 z funkcji 4/(1+x^2). Program powinien poprosić użytkownika o wybór maksymalnego dopuszczalnego błędu eps>0, i wybór metody całkowania: metoda trapezów lub Simpsona. Należy skorzystać ze znanych oszacowań błędu w powyższych metodach.

Uwaga 1: Pochodna rzędu 4 funkcji 1/(1+x^2) przyjmuje swoją największą wartość (co do modułu) na przedziale [0,1] w punkcie 0, i ta największa wartość (co do modułu) wynosi 24. Kto nie wierzy - niech zmierzy.

Uwaga 2: Samo obliczenie całki powinno być wydzielone do oddzielnej funkcji. Każda z dwóch metod całkowania powinna być w oddzielnej funkcji, a każda z tych funkcji w oddzielnym pliku *.cpp.

Termin złożenia projektu: niedziela 29.05. (włącznie). Projekty proszę przesłać mailem osobie prowadzącej waszą grupę laboratoryjną.


Projekt 2:

Napisz program, który będzie bibliotekę utworów muzycznych. Program ma tworzyć i obsługiwać dynamiczną listę dwukierunkową. Elementami listy powinny być struktury, zawierające typowe dane dla utworów muzycznych: wykonawca, tytuł, czas trwania, data wydania, album. Program powinien prezentować menu, które powinno zawierać co najmniej: dodaj utwór, usuń utwór, sortuj listę wg daty wydania (to pole powinno byćobowiązkowe), wypisz listę. Sorotowanie można zaimplementować "bąbelkowo", wtedy jedyna operacja na liście, to byłaby zamiana kolejności bezpośrednich sąsiadów. Wszystkie funkcje operujące na liście powinny być wydzielone do funkcji, a funkcje wydzielone do oddzielnego pliku *.cpp. Powinien być stworzony i "inkludowany" odpowiedni plik nagłówkowy. Funkcje nie powinny operować na żadnych zmiennych globalnych: cała komunikacja przez zrgumenty formalne i/lub zwracaną wartość. Uwaga: nie można korzystać z żadnych bibliotek które nie były omawiane na wykładzie (np. vector). Program powinien, jak zwykle, zawierać wystarczająco dużo komentarzy, aby dało się łatwo wszystko zrozumieć.

Termin złożenia projektu: niedziela 26.06. (włącznie)


Projekt 3:

Zmodyfikuj Projekt 2 w ten sposób, że struktury zostaną zastąpione przez obiekty. Trzeba zdefiniować klasę która będzie zawierała konkretny utwór. Niezależnie od tego, trzeba stworzyć klasę lista. Będzie zawierała wskaźnik do początku, ew. także końca. Wszystkie funkcje, które mieliśmy do tej pory należy zrealizować jako metody tych klas. Trzeba przemyśleć, do której klasy dana funkcja pasuje jako metoda. Klasy powinny być zdefiniowane we własnych plikach *.cpp i posiadać własne pliki nagłowkowe *.h.

Termin złożenia projektu: niedziela 26.06. (włącznie)

Uwaga: projekty (w postaci pliku .cpp lub kompletu plików .h .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.



Zasady zaliczania:

Podstawą zaliczenia są projekty. Za każdy projekt będą przydzielane punkty, a suma zostanie przeliczona na stopień. Ten stopień będzie wspólny dla laboratorium i wykładu.



Tematy na laboratorium:

Lista 1 7.03.22 Lista 2 21.03.22 Lista 3 28.03.22
Lista 4 11.04.22 Lista 5 30.05.22 Lista 6 13.06.22


Materiały z wykładu:

Wstęp
1.03.22
Przykład 1 Instrukcje sterujące
8.03.22
Przykład 1
Zmienne
Przykład 1
Przykład 2
Operatory
Operatory 2
Przykład 1 Funkcje
main.cpp   funkcje.cpp
funkcje.hpp
Tablice

 
Wskaźniki
  
Listy dwukierunkowe
Przykład 1 Klasy