Informatyka I rok Laboratorium Metod Programowania 2000/2001 Zadanie z dnia: 12.03.01 Termin odbioru: 26.03.01 Zad. 1 Należy napisać program porzadek. Użytkownik tego programu, pracuje nad projektem (np. programistycznym), w ramach którego ma wygenerować zestaw plików tekstowych (np. modułów). Ów użytkownik co pewien czas zapisuje (za każdym razem w innym podkatalogu katalogu projektu) wszystkie wygenerowane przez siebie pliki. Nazwy podkatalogów są generowane w kolejności leksykograficznej (np. daty wg PN: rok, miesiąc, dzień). Ponieważ kopie robione są dość często, większość kopii różni się od poprzednich wersji tylko niewielką liczbą plików. Porządkowanie polega na przejrzeniu podkatalogów wskazanego katalogu i usunięciu nadmiarowych kopii (tzn. tych plików które są identyczne z plikami z poprzedniego leksykograficznie katalogu). Napisz program porzadek, który można wywoływać w następujące sposoby: porzadek -u (np. porzadek -u c:\projekt) porządkuje wszystkie podkatalogi wskazanego jako parametr katalogu. porzadek -t (np. porzadek -t c:\projekt) j.w. tyle że nie usuwa żadnych plików, a tylko wypisuje nazwy plików które powinny być usunięte. Uwaga, program ma dać się stosować przyrostowo, tzn. jeśli użytkownik wywoła go raz w danym projekcie, potem dopisze kilka nowych podkatalogów i znów wywoła ten program, to wynik powinien być taki, jaki byłby wtedy, gdyby użytkownik wywołał ten program tylko za drugim razem. Jeśli wywołanie będzie miało złą liczbę parametrów lub parametry będą niepoprawne, to program powinien poinformować o tym użytkownika i zakończyć działanie. Na koniec działania program powinien wypisać informację o liczbie usuniętych (wypisanych) plików. Dodatkowo powinien wypisac informację o zajetości pamięci na początku działania i na końcu (oczywiście te liczby powinny byc równe). Dodatkowe uwagi: - podkatalogi projektu zawierają tylko pliki (a nie kolejne katalogi), - w trakcie prac nad projektem mogą się pojawiać nowe pliki, nigdy natomiast nie nikną już istniejące, - program nie uwzględnia zmian nazw plików składowych projektu, tzn. jesli taka zmiana nastąpi, to program ma traktować plik ze zmienioną nazwą jako nowy plik w projekcie, zaś plik ze starą nazwą jako nadal istniejący w projekcie (tyle że już nie modyfikowany), - przez identyczne pliki rozumiemy pliki o takiej samej zawartości i nazwie, nie bierzemy pod uwagę daty ostatniej modyfikacji pliku, - porównując dwa pliki należy oczywiście zakończyć porównywanie po napotkaniu pierwszej różnicy i w ogóle nie należy go zaczynać, gdy długości plików sa różne. Informacje o BP: - do wyszukwiania plików i katalogów należy użyć procedur FindFirst i FindNext podając atrybut AnyFile lub Directory (ale uwaga, wyszukiwanie z atrybutem Direcory wyszukuje także pliki, należy więc sprawdzić po wyszukaniu w zmiennej typu SearchRec pole Attr co zostało znalezione. Uwaga na katalogi . i ..! Należy też zwrócić uwagę na to, że wyszukiwanie nie wyszukuje w kolejności rosnącej wg nazw (ani czegokolwiek innego), - do usuwania plików służy procedura Erase. Możliwe rozszerzenia programu (nie wymagane do zdobycia maksymalnej liczby punktów): porzadek -g (np. porzadek -g c:\projekt) porządkuje wszystkie podkatalogi wskazanego jako parametr katalogu i w ostatnim z nich generuje pełną wersję projektu. porzadek -z (np. porzadek -z -g c:\projekt 00-03-25 01-01-31) gdzie to jedna z podanych wcześniej opcji), działa jak opisano poprzednio, tyle że zaczyna od podkatalogu o pierwszej z podanych nazw i kończy na podkatalogu o ostatniej z podanych nazw. Miejsce skąd można pobierać treści zadań zaliczeniowych: www.mimuw.edu.pl/~janusz (i potem dość oczywiste dowiązania)