Metody Programowania - Lista 5
Zadanie 1
Zakodować w notacji intepretera z wykładu
procedurę obliczania reszty z dzielenia liczby dodatniej a przez
liczbę dodatnią b (samą procedurę zrealizować jako pętlę
która wielokrotnie odejmuje b od a).
Zadanie 2
Do intepretera z wykładu dodać
następujce operacje:
- "quote" -- ta operacja ma jeden argument który jest dowolną
wartością w Pop11, wynikiem jest wartość argumentu. Np.
[quote [ala ma kota]]
ma dać wartość
[ala ma kota]
Celem tej operacji jest umieszczanie dowolnych stałych w programach.
- cons -- cons z Pop11
- front -- front z Pop11
- back -- back z Pop11
Następnie bazując na dodanych operacjach zakodować jako wyrażenie
dla interpretera procedurę kopiowania listy.
Zadanie 3
Wyjaśnić dlaczego w ostatnim teście dla intepretera
z wykładu najpierw inicjuję na 0 zmienną fib a potem podstawiam
wartość funkcyjną (closure). Czy można by bezpośrednio przypisać
treść procedury do fib?
Zadanie 4
Użyć applist lub maplist z odpowiednim parametrem funkcyjym
(jeśli trzeba zagnieżdżonym) aby:
- powiększyć wszystkie elementy listy o 1
- wyprodukować nową listę której elemetami są listy
dwuelmentowe których pierwszym elementem jest liczba podająca
numer kolejny elementu a drugim jest odpowiedni element z
listy źródłowej
- obliczyć sumę elementów na liście