Zaliczeniowe zadanie programistyczne

 

Dopuszczalne, a nawet wskazane, s� dyskusje z innymi na temat zadania, a nawet wsp�lne opracowywanie algorytmu rozwi�zania - lecz ostateczn� implementacj�, testowanie i dokumentacj� programu nale�y wykona� samodzielnie.

Wykonanie zada� wi��e si� m.in. z opanowaniem programowania operacji zapisu i odczytu plik�w tekstowych w j�zyku C. W razie k�opot�w ze zrozumieniem stosownego rozdzia�u w K&R s�u�� konsultacjami.

Wyb�r zadania

Z przedstawionych do wyboru zada�, nale�y wybra� jedno. Tytu� wybranego zadania nale�y przes�a� do zatwierdzenia na adres email piotr.krzyzanowski@mimuw.edu.pl. Zatwierdzenie b�dzie si� odbywa� na zasadzie FIFS, otrzymacie Pa�stwo mail zwrotny z informacj�. Gdy oka�e si�, �e wybrane zadanie ju� nie jest dost�pne, nale�y dokona� ponownego wyboru z puli aktualnie dost�pnych zada�. B�d� pierwszy raz zamyka� zadanie, gdy zgromadzi si� dwoje ch�tnych. Potem zadania b�d� otwiera� i zamyka� wed�ug bie��cej sytuacji, d���c do zr�wnowa�enia liczby os�b przypisanych do zada�.

Wyb�r zadania jest ostateczny, nie b�dzie mo�na go p�niej zmieni� na inne, ani zamieni� si� z inn� osob� - dlatego w razie w�tpliwo�ci warto wcze�niej skonsultowa� tre�� zadania z prowadz�cym �wiczenia.

Projekt programu

Po zatwierdzeniu wyboru zadania, nale�y sporz�dzi� projekt programu. Projekt programu jest dla zadania tym, czym konspekt dla wypracowania z j�zyka polskiego: to plan pracy i zarys metod wykonania jej. Projekt programu powinien zawiera�:

  1. Sformu�owanie zadania
  2. Og�lne om�wienie projektowanego rozwi�zania (wyb�r metody, uzasadnienie, dyskusja alternatyw)
  3. Og�lny opis struktury logicznej programu i jego podprogram�w (funkcji)
  4. Opis formatu danych i wynik�w, ograniczenia na dane
  5. Propozycje test�w programu

Projekt musi zosta� zatwierdzony przez prowadz�cego �wiczenia; w przeciwnym razie nale�y go poprawi� zgodnie ze wskaz�wkami. Z tego powodu wskazane jest, by d��y� do mo�liwie wczesnego zatwierdzenia projektu: zostanie wi�cej czasu na opracowywanie programu!

Rozwi�zanie zadania

Nast�pnie nale�y przyst�pi� do realizacji zadania zgodnie z zatwierdzonym projektem. W trakcie pisania programu dobrze jest go dokumentowa�, zamieszczaj�c w nim (dla siebie) kr�tkie i tre�ciwe komentarze przy kolejnych porcjach kodu. Gdy zajdzie uzasadniona potrzeba odej�cia od zatwierdzonego projektu, nale�y to obja�ni� w aneksie do projektu. Po opracowaniu, uruchomieniu i przetestowaniu programu, nale�y rozbudowa� dokumentuj�ce go komentarze tak, by kod �r�d�owy by� czytelny dla sprawdzaj�cego. Nale�y pami�ta�, by ka�dy plik kodu �r�d�owego mia� na pocz�tku kr�tki komentarz dotycz�cy: streszczenia zawarto�ci pliku, jego autora i daty ostatniej modyfikacji.

Konstruowany program powinien mie� budow� modu�ow�, tzn. sk�ada� si� z kilku dobrze przemy�lanych funkcji, realizuj�cych logicznie wyodr�bione cz�ci algorytmu rozwi�zania zadania.

Ocenie b�dzie podlega� program wraz z dokumentacj�, na kt�r� sk�adaj� si� co najmniej trzy pliki:

W/w sk�adniki rozwi�zania nale�y przes�a� (w jednym mailu, jako za��czniki) do dnia 14.01.09. na adres piotr.krzyzanowski@mimuw.edu.pl. Ka�dy rozpocz�ty dzie� op�nienia obni�a ocen� o 5 punkt�w.

Ocena

Oceniane b�d�: warto�� merytoryczna, artystyczna i estetyczna przedstawionego rozwi�zania. Maksymalnie mo�na uzyska� 10 punkt�w. Program, kt�ry nie daje si� uruchomi�, b�dzie oceniony na 0 punkt�w. Elementem oceny mo�e by� tak�e rozmowa na temat programu i jego uruchomienie "na �ywo".

Zadania do wyboru

Szach-mat (N.Targosz) (dost�pne)
W pliku tekstowym podane s� kolejne ruchy partii szach�w, w standardowej notacji szachowej, np.


e2-e4	e7-e5
Sg1-f3	d7-d6
Sf3xe5	d6xe5

...itd.
Program powinien na podstawie tego pliku wygenerowa� plansz� przedstawiaj�c� sytuacj� na szachownicy po wykonaniu ostatniego ruchu zapisanego w partii. Dodatkowo, w przypadku podania ruchu niezgodnego z regu�ami gry lub niezgodnego z sytuacj� na szachownicy, powinien ko�czy� prac� drukuj�c bie��cy stan planszy i opis b��du. Ponadto, program powinien sygnalizowa� wygran� kt�rego� z graczy, o ile nast�pi�a w trakcie partii.
Mega kalkulator (A.Filip, �.�wistek, B. B�k) (dost�pne)
Nale�y napisa� program, kt�ry tak jak zwyk�y kalkulator wykonuje cztery podstawowe dzia�ania matematyczne, ale na dowolnych ca�kowitych liczbach 128-cyfrowych (operacja dzielenia ma wi�c tak�e by� operacj� dzielenia ca�kowitego). Nale�y opracowa� wygodny i odporny na b��dy interfejs u�ytkownika. Po zako�czeniu pracy kalkulatora, na �yczenie u�ytkownika przebieg ca�ej sesji ma by� zapisywany do pliku tekstowego.
WC+S&R (J.Czerpak, K.Turska, M.Zaremba, J.Szczawi�ski)
W zale�no�ci od wyboru u�ytkownika, w zadanym pliku tekstowym nale�y policzy� liczb� wierszy i s��w (poza konkursem: tak�e liczb� wszystkich znak�w) (odpowiednik programu wc w Unixie), lub zast�pi� podany ci�g znak�w innym, tak�e podanym przez u�ytkownika (odpowiednik funkcji Search and Replace w edytorze tekstowym). W tym ostatnim przypadku, nale�y wypisa� na ekran liczb� wykonanych zamian i zapisa� zmieniony plik do innego pliku o podanej przez u�ytkownika nazwie.
Wieczny kalendarz (W.Marat, �.Sobolewski, K.Knop) (dost�pne)
Opracowa� program drukuj�cy kalendarz na zadany miesi�c (lub tydzie�) dowolnego roku w bie��cym wieku. Wa�ne jest sformatowanie wyniku oraz oznaczenie dni ustawowo wolnych od pracy. Kalendarz ma by� albo wy�wietlany na ekranie, albo zapisywany do pliku tekstowego - w zale�no�ci od decyzji u�ytkownika.