1. Definire una variabile di tipo stringa
let x = “Pippo”;;
2. Definire una variabile di tipo bool:
let x = true;; let x = if (2=3) then true else false;;
3. Scrivere una funzione che abbia il seguente tipo: int → float
let f x = if (x+1 = 2) then 2.0 else 3.0;; let f x = float_of_int(x);; (*NOTA: le parentesi non sono necessarie*) f 3;;
4. Scrivere una funzione che abbia il seguente tipo: int → string → string → string
let f x a b = if (x = 1) then a^" " else b;;
5. Definire una variabile che valga 3.141592 e chiamarla pi
let pi = 3.141592
6. Scrivere una funzione che calcoli il perimetro del cerchio dato il raggio e che utilizzi la variabile pi:
let f r = 2.0 *. pi *. r ;;
7. Scrivere una funzione che calcoli l’area del cerchio dato il raggio e che utilizzi la variabile pi
let f r = r *. r *. pi;;
8. Scrivere una funzione f che, preso un intero, ne restiuisca il resto derivato dalla divisione per due. Es. f 3 restituisce 1 , f 4 restituisce 0, f (-1) restituisce 1
let f x = x mod 2;; let resto x = if x<0 then f (-x) else f x;;
9. Scrivere una funzione che dato un numero, restituisca la stringa “pari” se esso e’ pari e la stringa “dispari” altrimenti.
let f x = if (x mod 2 = 0) then “pari” else “dispari”;;
10. Utilizzando la funzione square vista a lezione, scrivere una funzione che calcoli f(x) = x^4
let f x = square x * square x;; let f x = square (square x );;
11. Scrivere una funzione f che presi in ingresso 3 parametri interi, ne restituisca il massimo. Es: f 2 7 3 deve restituire 7
let max a b = if (a > b) then a else b;; let f x y z = let w = max x y in max w z;;
13. Dire che cosa calcola la seguente funzione:
fun a b c -> ( a<b && b<c ) || (a>b && b>c);;
a, b, c sano ordinati in maniera strettamente monotona.
14. Scrivere una funzione f che prenda tre parametri interi e tale che f x a b restituisca true se x e’ compreso nell’intervallo tra a e b.
let f x a b = ( a<x && x<c ) || (a>x && x>c);;
15. Scrivere una funzione che presi in ingresso due numeri interi restituisca “+” se il loro prodotto e’ positivo, “-” se il prodotto e’ negativo e “0” se il prodotto e’ nullo. NOTA: non e’ possibile utilizzare l’operatore di moltiplicazione .
let f x y = if ( x < 0 && y > 0) || ( x > 0 && y > 0 ) then “+” else if ( x = 0 || y = 0 ) then “0” else “-”;;
16. Scrivere una funzione che calcoli lo XOR logico tra due booleani (nota: lo XOR valuta true solo se una sola delle espressioni e’ true)
let xor a b = ( a && not b) || ( b && not a );;
17. Scrivere una funzione che dati in ingresso 4 numeri ne restituisca la media
let avg a b c d = ( a +. b +. c +. d) /. 4.0;; let avg a b c d = ( a + b + c + d) / 4;;