Laboratorium PRM, semestr letni 2014/2015
Informacje
konsultacje: poniedziałek 14:15-15:00 s. 227 (proszę
wcześniej o kontakt mailowy: pjarosik(at)stud.elka.pw.edu.pl)
Laboratoria
LP. (Data)
|
Tematyka
|
Punktacja
|
3. (16 III) |
Pętle for, while, do-while. Instrukcje sterujące
if-else, switch, break, continue. Operacje logiczne. |
0-5 |
4. (23 III) |
Funkcje, przekazywanie argumentów przez wartość
oraz przez wskazanie. |
0-5 |
5. (30 III) |
Tablice jako zmienne automatyczne, tablice dwuwymiarowe, tablice
jako argumenty funkcji. |
0-5 |
6. (13 IV) |
Dekompozycja prostych problemów, prawidłowe wyodrębnienie i użycie
funkcji. |
0-5 |
7. (20 IV) |
Struktury, dynamiczna alokacja pamięci. |
0-5 |
Projekt
W ramach projektu należy przygotować dokumentację wstępną i przesłać ją na
mój adres (pjarosik(at)stud.elka.pw.edu.pl) do końca dnia 11.05.15.
Dokumentacja wstępna nie powinna zajmować więcej niż jedną stronę formatu A4
i powinna zawierać odpowiedzi na następujące pytania:
- realizowana funkcjonalność - jakie operacje będą dostępne dla
użytkownika aplikacji?
- projekt rozwiązania - jakie struktury danych oraz funkcje na nich
operujące są planowane?
Za dokumentację wstępną można uzyskać 5 punktów.
Pozostałe 15 punktów można uzyskać za implementację oraz dokumentację
techniczną projektu
(przykład takiej dokumentacji).
Jak zdobyć dużą liczbę punktów z projektu?
- Program powinien budować się przy użyciu narzędzia
make
,
na komputerach w laboratorium. Kompilacja przy użyciu gcc
z
flagą -Wall
nie powinna dawać żadnych komunikatów o błędach
ani ostrzeżeń.
- Program powinien dawać poprawne wyniki dla dowolnych, dopuszczalnych w
zadaniu danych.
- Kluczem do sukcesu jest prawidłowe wyodrębnienie funkcji oraz
określenie struktur, na których te funkcje będą operować.
- Należy stosować jednolity styl kodowania (najlepiej zgodny z
wymaganiem
dla przedmiotu)
- Program powinien posiadać co najmniej namiastkę interfejsu użytkownika
- funkcjonalność (np. operacja mnożenia macierzy) aplikacji może być
dostępna np. jako opcja menu wybierana przy użyciu cyfry 1, itp.
- Program powinien być odporny na błędy popełniane przez użytkownika,
który zamiast liczby może wpisać ciąg znaków, itp. (w szczególności na
błędy popełniane przez sprawdzającego projekt - a popełnia on ich dużo :)
)
Najszybszą formą komunikacji ze mną jest kontakt mail'owy - w razie
jakichkolwiek wątpliwości proszę o wiadomość na mój adres z tytułem
rozpoczynającym się od [PRM]. W trakcie projektu jestem również do
Państwa dyspozycji w terminie laboratorium, w sali 011 lub w trakcie
konsultacji, w obu przypadkach po wcześniejszym uzgodnieniu spotkania
mail'em.
Tematy projektów
Matematyka
-
Kalkulator operacji na macierzach
Zaimplementować dodawanie, usuwanie, mnożenie par macierzy; wyznacznik
oraz transpozycja macierzy; mnożenie macierzy przez liczbę. Macierz może mieć
dowolne wymiary (wykorzystać dynamiczną alokację pamięci).
(algebra liniowa)
-
Kalkulator operacji na skończonych zbiorach liczb zmiennoprzecinkowych
Zaimplementować sumę, przecięcie, różnicę, iloczyn kartezjański par
zbiorów; moc (liczebność) zbioru. Zbiory są skończone i mogą przechowywać liczby
typu double
. Zbiór może mieć dowolny rozmiar (wykorzystać
dynamiczną alokację pamięci).
(teoria mnogości)
-
Całkowanie i różniczkowanie wielomianów jednej zmiennej
Zaimplementować operacje:
- wyznaczania pochodnej wielomianu jednej zmiennej metodą symboliczną
(wypisać postać pochodnej wielomianu),
oraz wartości tej pochodnej w danym punkcie (użyć schematu Hornera)
- wyznaczania całki wielomianu metodą symboliczną (wypisać postać
wynikową całki) oraz wartość tej całki dla zadanego zakresu metodą
symboliczną oraz numeryczną: metodą prostokątów i trapezów.
(analiza matematyczna)
-
Kalkulator RPN liczb zespolonych
Zaimplementować kalkulator liczb zespolonych akceptujący wyrażenia w
postaci Odwrotnej
Notacji Polskiej. Liczby zespolone będą podawane przez użytkownika w
nawiasach, np.
(1+2j) (3) + (4+5j) -
daje wynik -3j
.
(algebra liniowa)
-
Minimalizacja wielomianu z wykorzystaniem metody gradientu prostego
Zaimplementować program poszukujący minimum funkcji wielomianowej jednej
zmiennej w zadanym przedziale, przy użyciu
metody
gradientu prostego. Punkt startowy powinien być wylosowany z rozkładem
jednostajnym w przedziale, w którym poszukiwane jest minimum. Użytkownik
podaje stopień oraz współczynniki wielomianu, granice zakresu, długość
kroku.
(analiza matematyczna,optymalizacja)
Gry
-
Gra w życie
Zaimplementować grę w życie przy zastosowaniu np. reguł gry wg Conwaya.
Interfejs aplikacji powinien być przygotowany przy użyciu ncurses
.
-
Kółko i krzyżyk
Zaimplementować interfejs do gry w kółko i krzyżyk przy użyciu
biblioteki ncurses
, przy jednym z następujących założeń:
- gra jednoosobowa (przeciwnikiem jest komputer) na planszy 3x3.
Zaproponować strategię podejmowanych ruchów przez komputer
(przeszukiwanie możliwych przestrzeni stanów gry/opracowanie gotowych reguł
działania)
- gra wieloosobowa na planszy o dowolnym (podanym przez użytkownika)
rozmiarze.
-
Samotnik
Zaimplementować grę
w samotnika.
Interfejs do gry powinien być przygotowany przy użyciu ncurses
.
-
Saper
Zaimplementować grę
w sapera.
Interfejs do gry powinien być przygotowany przy użyciu ncurses
.