Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- open System.Security.Cryptography.X509Certificates
- printfn "Witaj swiecie!" //zaznaczyc cale i alt+enter
- //Zad 1 (let)
- let n = 10 //deklaracja identyfikatora
- let dodaj a b = a + b // deklaracja funkcji o danych wejsciowych a i b, a nastepenie cialo funkcji (spacje musza byc)
- let wynik = dodaj n 4 // przypisanie funkcji dodaj do identyfikatora wynik z danymi 10 i 4
- printfn "wynik obliczen = %i" wynik // wystwielenie wyniku %i to wystwli sie dana zzaraz za lancuchem (wynik)
- //Zad 2 (funkcja)
- let srodek a b =
- let tmp = b - a // jak nie dziala to 3 spacje z lewej zamiast TAB przypisanie do tmp wartosci roznicy
- let tmp = tmp / 2 //
- tmp + a // nie ma return zwrot wartosci nastepuje domyslnie
- // wciecia dzialja jak klamry w C#
- printfn "srodek miedzy 5 a 11 to %i" (srodek 5 11)
- printfn "srodek miedzy 11 a 5 to %i" (srodek 11 5)
- // Zad 3 (Silnia)
- let rec silnia x =
- match x with
- | 0 -> 1
- | x -> silnia(x-1)*x
- let n1 = 4
- printfn "%i! = %i" n1 (silnia n1)
- // Fibonacci
- let rec fib x =
- match x with
- | 1 -> 1
- | 2 -> 1
- | x -> fib(x-1)+fib(x-2)
- printfn "Fibb = %i" (fib 10)
- // Zad 3a (silnia z obsluga bled)
- let rec silnia1 x =
- match x with
- | x when x < 0 -> failwith "Wartosc musi byc wieksza albo rowna o"
- | 0 -> 1
- | x -> silnia(x-1)*x
- let n2 = -1
- printfn "%i! = %i" n2 (silnia n2)
- // Zad 4 (lambda)
- let wynikWyrazenia = fun x y -> x + y // te fun to jest info ze lambda
- printfn "wynik wyrazenia lambda = %i" (wynikWyrazenia 2 3)
- //Zad 5. Podwojenie elementow listy
- let rec podwojenie list =
- match list with
- | glowa :: ogon -> glowa * 2 :: podwojenie ogon
- | [] -> []
- printfn "Lista podwojona %A" (podwojenie [1;2;3])
- // 5a ( z uzuciem List.map)
- let result1 = List.map((*)2)[1;2;3] //zamiast gwiazki moze byc plus, minus itd
- printfn "lista wynikowa %A" result1
- // 6 Poteguj elementy listy
- let result2 = List.map(fun i ->i*i)[1;2;3]
- printfn "Lista wynikowa %A" result2
- // 7 iloczyn wszystkich elementow listy
- let rec iloczyn list =
- match list with
- | glowa :: ogon -> glowa * iloczyn ogon
- | [] -> 1
- printfn "Iloczyn %i" (iloczyn [1;2;3])
- // to samo dla dodatnich
- let rec iloczynDod list =
- match list with
- | glowa :: ogon when glowa <= 0 -> iloczynDod ogon
- | glowa :: ogon -> glowa * iloczynDod ogon
- | [] -> 1
- printfn "Iloczyn %i" (iloczynDod [1;-2;3])
- // DOM --------------------
- // 1 Wykonaj wyrazenie lambda, kotr oblicza wyrazenie ab-2c
- let wzor = fun a b c -> a*b-2*c
- printfn "wynik wyrazenia lambda = %i" (wzor 2 2 3)
- // 2. Napisz program, który zawiera definicję dwóch funkcji. Jedna liczy deltę równania kwadratowego
- // a druga na podstawie delty zwraca komunikat o liczbie pierwiastków ( zero, jeden lub dwa)
- // %s slda lancucha tekstowego
- let delta = fun a b c -> b*b - 4*a*c
- let pierwiastki x =
- match x with
- | x when x < 0 -> 0
- | x when x = 0 -> 1
- | x when x > 0 -> 2
- printfn "Delta = %i Pierwiastki = %i" (delta 5 4 3) (pierwiastki (delta 5 4 3))
- // 3. Fukncja rekurencyjna, ktora sumuje elementy listy
- let rec suma list =
- match list with
- | glowa :: ogon -> glowa + suma ogon
- | [] -> 0
- printfn "Suma %i" (suma [1;2;3;4])
- // 4. Funkcja rekurencyjna, ktora zwraca dlugosc listy
- let rec dlugosc list =
- match list with
- | glowa :: ogon -> 1 + dlugosc ogon
- | [] -> 0
- printfn "Dlugosc %i" (dlugosc [1;2;3;4])
- // 5. Funkcja rekureyncyjna, kotra zwraca ostatni element listy (zeby sprawdzic czy lista nie jest pusta |_->failwith "Komunikat")
- let rec ostatni list =
- match list with
- | glowa :: [] -> glowa
- | glowa :: ogon -> ostatni ogon
- | _ -> failwith "Pusta lista"
- printfn "Ostatni %i" (ostatni [7;1;2;3;4])
- // 6. Funkcja rekurencyjna, ktora zwraca pierwszy element listy
- let rec pierwszy list =
- match list with
- | glowa :: ogon -> glowa
- | [] -> 0
- printfn "Pierwszy %i" (pierwszy [7;1;2;3;4])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement