Dopuszczalne, a nawet wskazane, s� dyskusje z innymi studentami 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 (a tak�e operacji na stringach) w j�zyku C. W razie k�opot�w ze zrozumieniem stosownego rozdzia�u w K&R s�u�� konsultacjami.
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 do 12. kwietnia.
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.
Po zatwierdzeniu wyboru zadania, warto sporz�dzi� na w�asny u�ytek (nie b�dzie oceniany ani sprawdzany!) projekt programu, aby potem m�c w usystematyzowany spos�b prowadzi� implementacj�. 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�:
Nast�pnie nale�y przyst�pi� do realizacji zadania. 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 w trakcie implementacji zajdzie uzasadniona potrzeba odej�cia od swojego pierwotnego projektu, nale�y to dobrze przemy�le� i ewentualnie przekonstruowa� projekt. W takiej chwili, porzucenie projektu i zdanie si� na wielk� improwizacj� (aby zobaczy� "co wyjdzie") jest, moim zdaniem, ma�o roztropne. 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. Konieczne jest tak�e kr�tkie obja�nienie zasad dzia�ania najwa�niejszych funkcji.
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� w kodzie �r�d�owym, na kt�r� sk�adaj� si� co najmniej trzy pliki:
Makefile
dla skompilowania ca�o�ci
W/w sk�adniki rozwi�zania nale�y przes�a� (w jednym mailu, ale ka�dy plik jako osobny za��cznik) do dnia 25.05.09. na adres piotr.krzyzanowski@mimuw.edu.pl. Ka�dy rozpocz�ty dzie� op�nienia obni�a ocen� o 5 punkt�w.
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� na Linuxie na students.mimuw.edu.pl (tzn. w LABie), b�dzie automatycznie oceniony na 0 punkt�w. Elementem oceny mo�e by� tak�e rozmowa na temat programu i jego uruchomienie "na �ywo" w LABie.
Je�li na przyk�ad plik litwa.txt zawiera nast�puj�cy tekst:
Litwo! LiTWo ty moja! Ty jestes jak zdrowie. Ile cie trzeba cenic, ten tylko sie dowie, Kto cie stracil. Dzis pieknosc twa w calej ozdobie
to wywo�anie programu na tym pliku
program litwa.txt
dawa�oby efekt
calej 3 cenic 2 cie 2, 3 dowie 2 dzis 3 ...itd... litwo 1 moja 1 ...itd...
Program ma dzia�a� na du�ych tekstach. Zadaniem �atwym jest implementacja tego programu tak, by dzia�a� dobrze na tekstach angloj�zycznych, czy te� na tekstach polskoj�zycznych w kodowaniu Windows-1250, czy ISO-8859-2. Znacznie trudniejsze (i nie jest to obowi�zkowe, zob. akapit poni�ej) mo�e okaza� si� zaimplementowanie algorytmu tak, by dzia�a� prawid�owo na tekstach kodowanych w UTF-8 (domy�lnym w Linuxie). Wtedy mo�na skorzysta� z funkcji C dzia�aj�cych na rozszerzonym zestawie znak�w wykorzysta� funkcje C iconv_open
, iconv
, iconv_close
.
Na szcz�cie - je�li nie chcemy wg��bia� si� w tajniki obs�ugi UTF-8 - mo�emy omin�� t� trudno��. Dowolny tekst w pliku tekst1.txt w kodowaniu XXX mo�emy przekodowa� do pliku tekst2.txt (ju� w kodowaniu YYY) zakl�ciem iconv -f XXX -t YYY tekst1.txt > tekst2.txt, na przyk�ad
iconv -f UTF-8 -t ISO-8859-2 litwa.txt > brzytwa.txt
spowoduje, �e w pliku brzytwa.txt znajdzie si� zawarto�� pliku litwa.txt, ale ju� w kodowaniu ISO-8859-2 (pod warunkiem, oczywi�cie, �e litwa.txt faktycznie by�a w kodowaniu UTF-8).
Zatem sensowna sekwencja polece� naszego programu w przypadku, gdy indeksowany plik litwa.txt jest w kodowaniu UTF-8, mog�aby wygl�da� nast�puj�co:
iconv -f UTF-8 -t ISO-8859-2 litwa.txt > brzytwa.txt program brzytwa.txt > sitwa.txt iconv -f ISO-8859-2 -t UTF-8 sitwa.txt > indeks.txt
MAXLEN
) z napisem zawieraj�cym (by� mo�e poprawne) wyra�enie arytmetyczne, np.
3.14+5*(17.123/(-2)) funkcja ma oblicza� poprawn� warto�� tego wyra�enia lub sygnalizowa� b��d gdy wyra�enie jest b��dne, np. wtedy, gdy jest w nim niesparowany nawias: 3.14+5*(<17.123/(-2)). Oczywi�cie, mno�enie i dzielenie musz� mie� wi�kszy priorytet od dodawania i odejmowania, zatem 3.14+5*17 to to samo, co 3.14+(5*17). To zadanie jest tylko pozornie �atwe. Ale na pewno jest do zrobienia!