User Tools

Site Tools


ex-l1-sol

This is an old revision of the document!


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 ) then0else-;; 

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 );;	
let xor a b = if (a && b) then true else (a || b);;
let xor a b = a != b ;;

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;;
ex-l1-sol.1411383125.txt.gz · Last modified: 2015/10/08 15:20 (external edit)