#

# Algorytmy od podstaw – przykładowy kod

Poniżej znajduje się informacja dotycząca kodu źródłowego towarzyszącego niniejszej książce oraz instrukcja jego kompilacji1 .

## Podział tematyczny przykładów

Załączony kod źródłowy podzielony jest na dwie części. Pierwsza, znajdująca się w katalogu `main` to zasadniczy kod aplikacji, druga znajdująca się w katalogu `test` obejmuje zestawy testowe dla poszczególnych fragmentów części pierwszej. Każda z wymienionych części podzielona jest stosownie do podziału treści książki na rozdziały, w następujący sposób:

Pakiety
`com.wrox.algorithms.iteration` | Rozdział 2 – Iteracja i rekurencja
`com.wrox.algorithms.lists` | Rozdział 3 - Listy
`com.wrox.algorithms.queues` | Rozdziały 4 i 8 – Kolejki i kolejki priorytetowe
`com.wrox.algorithms.stacks` | Rozdział 5 - Stosy
`com.wrox.algorithms.sorting` | Rozdziały 6 i 8 - Sortowanie
`com.wrox.algorithms.bsearch` | Rozdział 9 – Wyszukiwanie binarne
`com.wrox.algorithms.bstrees` | Rozdział 10 – Binarne drzewa wyszukiwawcze
`com.wrox.algorithms.hashing` | Rozdział 11 - Haszowanie
`com.wrox.algorithms.sets` | Rozdział 12 - Zbiory
`com.wrox.algorithms.maps` | Rozdział 13 - Mapy
`com.wrox.algorithms.tstrees` | Rozdział 14 – Drzewa ternarne
`com.wrox.algorithms.btrees` | Rozdział 15 - B-drzewa
`com.wrox.algorithms.ssearch` | Rozdział 16 – Wyszukiwanie tekstu
`com.wrox.algorithms.wmatch` | Rozdział 17 – Dopasowywanie łańcuchów
`com.wrox.algorithms.geometry` | Rozdział 18 – Geometria obliczeniowa

## Kompilacja kodu źródłowego

Towarzyszący niniejszej książce kod źródłowy jest samowystarczalny – nie wymaga żadnych specjalizowanych bibliotek zewnętrznych. Aby więc skompilować wszystkie pliki związane z rozdziałem (na przykład) 3. - znajdują się one w katalogu lists – wystarczy wydać polecenie

      javac -sourcepath main main/com/wrox/algorithms/lists/*.java

Spowoduje to skompilowanie wszystkich plików zawartych w pakiecie `com.wrox.algorithms.lists` package.

Opcja `-sourcepath main` stanowi dla kompilatora informację o tym, gdzie ma on poszukiwać plików zewnętrznych wykorzystywanych w kompilowanym pakiecie. Przykładowo pakiet `com.wrox.algorithms.lists` package (związany z rozdziałem 3.) wykorzystuje niektóre pliki pakietu `com.wrox.algorithms.iteration`.

Podobnie ma się rzecz z kompilacją zestawów testowych, z jedym ważnym wyjątkiem: wymagają one biblioteki JUnit , którą można pobrać stąd w postaci archiwum .ZIP i wypakować z niego plik `junit.jar`. Kompilację zestawów testowych dla rozdziału (na przykład) 3. można następnie przeprowadzić w wyniku wydania polecenia 2.

    javac -classpath junit.jar -sourcepath main test/com/wrox/algorithms/lists/*.java

Podobnie jak poprzednio, opcja `-sourcepath main` informuje kompilator, gdzie ma on poszukiwać niezbędnych plików zewnętrznych.

## Uruchamianie testów

Po skompilowaniu zestawów testowych można je uruchomić – przykładowo uruchomienie zestawu `ArrayListTest` (z rozdziału 3.) następuje przez wydanie polecenia

      java -classpath junit.jar:main:test junit.textui.TestRunner com.wrox.algorithms.lists.ArrayListTest

w wyniku czego po chwili na ekranie powinien pojawić się tekst:

      .........................
      Time: 0.021

      OK (25 tests)

lub podobny, informujący o zaliczeniu wszystkich 25 testów w czasie 0,021 sekundy.

Dla uzyskania raportu w formie graficznej należy posłużyć się pakietem swingui zamiast textui:

      java -classpath junit.jar:main:test junit.swingui.TestRunner com.wrox.algorithms.lists.ArrayListTest

## Uwagi

1 Opis ten dotyczy uruchamiania kompilacji z poziomu wiersza poleceń. Szczegółów związanych z kompilacją przeprowadzaną w środowisku IDE należy poszukiwać w jego dokumentacji.

2 Polecenie to spowoduje jednocześnie skompilowanie także kodu zasadniczego, co niewątpliwie będzie ułatwieniem dla programisty.