• Nie Znaleziono Wyników

Operatory logiczne (&&amp

N/A
N/A
Protected

Academic year: 2021

Share "Operatory logiczne (&&amp"

Copied!
4
0
0

Pełen tekst

(1)

Języki i paradygmaty programowania – lab. 5 i 6.

1. Podstawowe polecenia interpretera ghci (?, set, module, info, type, load, cd)

2. Działania arytmetyczne (+, -, *, /, ^, **), notacja infiksowa i sufiksowa, liczby ujemne, - operator negacji.

3. Operatory logiczne (&&, ||), wartości logiczne: True, False 4. Operatory porównania (==, <, <=, >, >=, /=).

5. Funkcja not.

6. Definiowanie zmiennych (let), polecenie :show bindings

7. listy (budowa listy np. [1,2,3], lista pusta [], lista z wykorzystaniem notacji numerycznej np. [1..5], lista nieskończona [1..])

8. Operacje na listach (last, take, head, tail, drop, ++, :)

9. Łańcuchy i operacje na łańcuchach (polecenie putStrLn, getLine, lines), łańcuch jako lista znaków.

10. zmienna it

11. typy (Char, String, Int, Integer, Float, Double, Bool, Ratio (w module Data.Ratio)).

12. Funkcje (null, odd, compare), Funkcje liczbowe (mod, sqrt, succ, pred, truncate, round, floor, ceiling)

13. krotki i operacje na krotkach (fst, snd)

Zad. 1. Napisać funkcję czyWieksza, która w zależności od podanych dwóch liczb zwróci wartość -1, 0, 1. Sprawdzić typ funkcji.

Zad. 2. Napisać funkcję silnia. Sprawdzić typ funkcji.

Zad. 3. Napisać funkcję przedOst, która zwraca przedostatni element listy przekazanej jako argument.

Zad. 4. Napisać funkcję maks, która zwraca maksymalny element z listy przekazanej jako argument.

Zad. 5. Napisz funkcję o nazwie poleProstokata obliczającą pole prostokąta.

Zad. 6. Napisz funkcję o nazwie poleTrojkata obliczajacą pole trójkąta równobocznego o danym boku.

(2)

Zad. 7. Napisz funkcję poleKola obliczającą pole koła o danym promieniu.

Zad. 8. Napisz funkcję o nazwie objetoscProstop zwracającą objętość prostopadłościanu o zadanych długościach krawędzi.

Zad. 9. Przy pomocy funkcji poleProstokat napisz funkcję poleKwadratu obliczającą pole kwadratu o zadanym boku.

Zad. 10. Przy pomocy funkcji poleKola napisz funkcje objetoscWalca, która zwraca objętość walca o danej wysokości i promieniu podstawy.

Zad. 11. Napisz funkcję dodajDoListy, która dodaje element do listy. Element dodawany do listy i lista przekazywane są jako argumenty funkcji. Sprawdź typ funkcji (:type

dodajDoListy).

Zad. 12. (if) Napisz funkcję pozdrowOsobe, która w zależności od przekazanego jako argument imienia, zwróci komunikat „Dzień dobry Panu!” lub „Dzień dobry Pani ”.

Zad. 13. (case) Funkcję z Zad. 12 napisz przy pomocy instrukcji case.

Przykład użycia case:

przyklad x = case x of 1 -> 1

2 -> 10 3 -> 20

_ -> 30 -- wartość domyślna

Zad. 14. (Złożenie funkcji) Napisz funkcję polowa i podwojona, które zwracają odpowiednio połowę i wartość podwojoną przekazanego argumentu. W ghci wykonaj polecenie

podwojona(polowa x) a następnie

(podwojona.polowa) x

Zad. 15. (Zmienne lokalne w funkcji) Poniżej przedstawiono przykład funkcji ze zmiennymi lokalnymi:

przyklad2 x = let y = 10 z = 20

in x + y + z

Napisz funkcję pierwiastki, która dla argumentów a, b, c zwraca pierwiastki równania kwadratowego.

(3)

Wykorzystaj zmienne lokalne (delta, pierwDelta). Funkcja powinna zwrócić

dwuelementową krotkę pierwiastków równania ax2+bx+c=0. Dopisz przed definicją funkcji jej sygnaturę.

Zad. 16. (instrukcje we-wy, czyli Hello World :-) ) Przykład użycia polecenia putStrLn:

main = do

putStrLn „Podaj imie”

imie <- getLine

putStrLn („Czesc ” ++ imie ++ „!”)

Funkcja read konwertuje String na typ liczbowy, funkcja show konwertuje liczbę na String.

Napisz program, który działa w następujący sposób:

Podaj długość prostokata:

5

Podaj szerokość prostokąta:

10

Pole prostokata o bokach 5 i 10 wynosi 50.

Zad. 17. (rekurencja) Przykład użycia rekurencji (rekursji), czyli używanie danej funkcji jako część jej definicji:

silnia 0 = 1;

silnia n = n * silnia(n-1)

Napisać funkcję sumujListe, która zwraca sumę elementów listy przekazanej jako argument.

Zad. 18. Napisać funkcję fibonacci, która dla podanej liczby naturalnej n zwróci n-tą liczbę Fibonacciego. (liczby Fibonacciego: 1 1 2 3 5 8 13 …, n-ta liczba jest sumą dwóch wcześniejszych).

Zad. 19. Napisz funkcję o sygnaturze wypisz::Int->String->IO (), która dla podanej liczby naturalnej n i podanego łańcucha tekst wypisze n razy tekst.

Zad. 20. Operator dwuargumentowy to dowolna funkcja o sygnaturze : a->a->a, gdzie a jest pewnym typem.

Napisz operator o nazwie „+++”, który dla dwóch liczb x, y zwróć wartość x*y+2. Zastosuj najpierw sygnaturę

(+++)::Integer->Integer->Integer

a następnie zastosuj w sygnaturze operatora typ polimorficzny, tzn:

(+++)::Num a => a->a->a

(4)

Za każdym razem przetestuj operator w Ghci, jak jest różnica?

Zad. 21. Napisać operator o następującej sygnaturze (&&&)::Eq a => [a]->[a]->[a]

który dla podanych dwóch list, zwróci listę tych wspólnych elementów, które występują na tych samych miejscach w obydwu listach, np.

?> [1,5,6,3] &&& [1,2,6]

[1,6]

?> (&&&) „Ala ma” „Kotaaa”

„a”

Zad. 22. Napisać operator (%%%), który dla podanych dwóch list zwróci listę wszystkich wspólnych elementów obydwu list.

Zad. 23. Napisz operator o nazwie moje++, który zwróci sumę dwóch list przekazanych jako argumenty.

Zad. 24. Napisz funkcje mojeNull sprawdzająca czy podana lista jest pusta.

Zad. 25. Napisz funkcję o następującej sygnaturze:

inverse::Show a => [a]->[a]

która dla podanej listy zwróci listę elementów w odwrotnej kolejności.

Zad. 26. Napisz funkcję o nazwie doF, która dla podanej funkcji i listy, zwraca listę wartości elementów tej listy po zastosowaniu danej funkcji, np: (Jaka jest sygnatura tej funkcji?)

?> doF (+1) [2,3,4]

[3,4,5]

?> doF inverse [„abc”,”def”,”gh”]

[„cba”,”fed”,”gh”]

Zad. 27. Poniżej przedstawiono przykłady wyrażeń z kwalifikatorami:

[x+1 | x<- [0..10]]

[x+y | x<- [1..100], y<-[1..50], odd x, odd y]

[(x,2*x)| x<-[1,1.5..5]]

Napisać wyrażenia z kwalifikatorami, generujące:

a) Listę wszystkich liczb naturalnych 3-cyfrowych, podzielnych przez 5.

b) Listę par liczb naturalnych parzystych, których iloczyn wynosi 100.

c) Listę trójek pitagorejskich (a,b,c) z określonego zakresu, tzn. takich liczb, że a^2+b^2 = c^2.

Cytaty

Powiązane dokumenty

We prove an energy estimate for the complex Monge–Amp`ere operator, and a comparison theorem for the corresponding capacity and energy\. The results are pluricomplex counterparts

Mieszkańcy Lublina będą mogli tam wrzucić list adresowany do Henia Żytomir- skiego.. To element obchodzonych w Polsce 19 kwietnia Dni Pamięci o Holocauście i przeciwdziałania

∧ dd c u is well defined for plurisubharmonic (psh), locally bounded functions u, and that (∗) is solvable for measures having continuous densities with respect to the Lebesgue

Therefore, we cannot expect that this operator will be continuous for smooth regularizations of psh functions with analytic singularities... There are two problems with

One can easily show (see [5, Proposition 2.1]) that D is the biggest subclass of the class of psh functions where the complex Monge-Amp`ere operator can be defined as a regular

We shall now invoke a few results from the theory of nonlinear elliptic operators and use them to obtain results on local regularity of the complex Monge-Amp`ere operator.. By

Bedford, Survey of pluri-potential theory, Several Complex Variables, Proceedings of the Mittag-Leffler Institute 1987-88, J.E. BÃlocki, The domain of definition of the

W tym rozdziale podamy definicj e oraz potrzebne nam p´o´zniej wÃlasno´sci zespolonego , operatora Monge’a-Amp`ere’a dla funkcji psh ci agÃlych. Wystarczy pokaza´c