Zadania do wykładu o debuggerze perla

Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa

Perl: programowanie - debugger perla

  1. Uruchom debugger perla i zapoznaj się z jego podstawową obsługą. Przypomnij sobie działanie opcji h oraz kombinacji h h.
  2. Napisz krótki, parolinijkowy program perla (dobra jest np. jakaś funkcja rekurencyjna, np. Ackermanna, albo chociażby silnia) i przeprowadź jego wykonanie w debuggerze krok po kroku (za pomocą poleceń n lub s. Obejrzyj wartości zmiennych, których użyłeś (polecenia p, x), głębokość stosu (polecenie T), oraz inne zachowania debuggera.
  3. Możesz wybrać jeden ze swoich programów napisanych wcześniej i świadomie wprowadzić do niego błąd logiczny, a następnie przekazać osobie obok na pracowni z prośbą o zdebugowanie kodu i usunięcie błędu. Akcja tego typu jest bardzo pouczająca i daje okazję do wielu godzin siedzenia nad nie swoim kodem. Bywa także denerwująca.
  4. * Główne zadanie do wykonania na tych zajęciach jest być może złożone, ale debugger perla doskonale się może do niego przydać. Dlatego może ono wydawać się skomplikowane. Należy zaprogramować generator kształtów dżdżownic, które wychodzą po deszczu na powierzchnię. Każda dżdżownica składa się z N segmentów długości jednostkowej. Liczbę N do programu podaje się jako argument. Wynikiem działania programu jest lista napisów, które określają wszystkie dozwolone kształty dżdżownic na dwuwymiarowej płaszczyźnie. Generowanie kształtu jest bardzo proste. Należy wybrać punkt na płaszczyźnie o współrzędnych xy (0,0), a następnie wygenerować jego przesunięcie w wybranym kierunku (np. +x, -y, itp.), powodujące utworzenie nowego punktu (np. 1,0). Nowy punkt nie może znajdować się na żadnym starym poprzednio wygenerowanym punkcie, a ścieżka do niego nie może przecinać sama siebie. Wszystkie współrzędne są całkowite. Przykład kształtów robali dla N=3 jest poniżej.

    Robale w trzech możliwych konfiguracjach dla długości 3.
    Kształt zapisujemy jako napis złożony z ponumerowanych transformacji, to znaczy zamiast współrzędnych xy, podajemy tylko listę przesunięć pierwszego punktu. Gdyby ponumerować wszystkie możliwe kierunki w jakich można transformować dany punkt liczbami 0 (+x), 1 (+y), 3 (-x) i 4 (-y), to kształty przedstawione na rysunku miały zapis 00, 01 i 04. Zbiór rozwiązań, czyli kształtów powinien być pozbawiony robali uzyskanych przez obrót innych robali, czyli kształt 00 to jest to samo, to kształt 11 tyle że obrócony. Pozostawić należy natomiast robale symetryczne, np. 01 i 04. Transformacji o numerze 2 nie ma dlatego że w momencie wprowadzenia przestrzeni 3d będzie ona oznaczać kierunek +z dla 2, a -z dla 5. Zadanie to jest punktowane, każdy kto wykona je do chwili 20070331:2359 (deadline), może otrzymać jeden lub dwa punkty. Jeden punkt jest za algorytm, drugi za wykonanie, dokumentację i wszystkie sprawy dodatkowe. Powodzenia :)
Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa - Perl - Zadania
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.