Kolokwium poprawkowe 2 :!
Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowaPrzeczytaj UWAŻNIE
Odpowiedz na zebrane poniżej zadania, zaznaczając numer pytania, na które odpowiadasz.
Odpowiedzi wyślij mailem do prowadzącego zajęcia, umieszczając w tytule następujące informacje:
[zboj2] [grupa N] Imie Nazwisko
gdzie N jest numerem twojej grupy.
Przestrzegaj limitu czasu pisania. Na rozwiązanie zadań masz dokładnie 120 minut.
Pytania nie są podchwytliwe i możesz rozwiązać tyle z nich,
ile chcesz. Brana pod uwagę będzie taka liczba poprawnie rozwiązanych zadań,
aby wyrównać Twoją ocenę do 3.0.
Zadania dla grupy 'z'
- Porównaj działanie modyfikatorów /m oraz /s w operatorach dopasowania wzorca.
- Opracuj wyrażenie regularne które z dowolnego dokumentu HTML zwróci jedynie listę użytych w tym dokumencie otwierających tagów HTML (bez nawiasów kątowych). Przypadki np. <br /> także można uznać za otwierające. Przykład: z tagów <html><head><meta ... /><body...><p ...><br /></p></body...> ma powstać lista: html head meta body p br.
- Użyj mechanizmu wyrażeń regularnych, aby wydobyć drugie słowo z drugiego zdania tekstu, który znajduje się w zmiennej $tekst i ma długość w znakach przekraczającą tysiące znaków. Tekst ten zawiera więcej niż dwa zdania, i posiada wyłącznie znaki które należą do klasy znakowej [\w\s.,].
- Czym różni się działanie polecenia tr/a-z/A-Z/ od polecenia s/a-z/A-Z/?.
- Jak działa modyfikator /cg w operatorach dopasowania wzorca?
- Wyjaśnij, czym różni się use od require.
- Do czego służy moduł Exporter? Wyjaśnij przynajmniej jedno z jego zastosowań i podeprzyj je stosownym przykładem.
- Za pomocą debuggera perlowego znajdź przynajmniej jeden błąd w programie przedstawionym poniżej i podaj polecenia, których użyłeś. Wyjaśnij też na czym polega błąd.
#!/usr/bin/perl -wl my $u = 11; sub A { my $a = 2; $u += $a; print "A: $u"; &B; } sub B { my $a = shift; $u -= $a+1; print "B: $u"; &A if $u > 0; } A(1);
- Wskaż które i wyjaśnij dlaczego, wywołanie konstruktora jest najbardziej poprawne:
my $obj = new Object();
my $obj = Object::->new();
my $obj = Object->new();
- Stwórz iterator, który zwraca kolejne liczby będące elementami ciągu Fibonacciego, zaczynając od n-tego elementu, gdzie n jest podane jako argument przy tworzeniu iteratora. Użyj techniki domknięć.
- W jaki sposób odróżnić wywołanie metody klasy od wywołania metody instancji?
- W jaki sposób wywołać metodę obiektową tak, aby nie została ona wywołana jak metoda obiektowa, ale jak zwykła procedura perla?
- W jaki sposób w klasie perla przechować dane statyczne (być może prywatne dla klasy), nie należące do danych instancji?
- Czym różni się zapis our @ISA = qw(Moduł); od zapisu use base qw(Moduł);?
- Wyjaśnij, w jaki sposób sprawdzić, czy dana zmienna skalarna należy do klasy Stupid oraz jak upewnić się, że klasa ta implementuje metodę cure.
- Czy klasa może dziedziczyć po sobie samej?
- Opisz zachowanie perla w przypadku wywołania nazwy funkcji, która nie została nigdzie zdefiniowana.
- W jaki sposób można zdefiniować metody akcesorów i mutatorów klasy, nie pisząc ich explicite w kodzie? Zaproponuj przynajmniej jedną technikę :)
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.