Programmazione Funzionale

Похожие документы
Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Tecniche per risolvere problemi: riduzione a sottoproblemi più semplici. Ricorsione

Corso di Linguaggi di Programmazione

Definizione di nuovi tipi

I punti di inizio e di fine della spezzata prendono il nome di estremi della spezzata. lati

Le Funzioni e la Ricorsione

Laboratorio di programmazione

AA Realizzare un interprete in OCaml

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Esercizi di Algoritmi e Strutture Dati

Creare una funzione float square(float x). La funzione deve restituire il quadrato del parametro x.

C5. Triangoli - Esercizi

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Esercizi sui metodi. Carla Limongelli. Maggio Esercizi 1

Espressione composta da: Operatori Operandi (costanti, variabili, )

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Fissiamo nello spazio un sistema di riferimento cartesiano ortogonale O, x, y, z, u.

Definizioni ricorsive

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Frazioni. 8 Esercizi di Analisi Matematica Versione Argomenti: Operazioni sulle frazioni Tempo richiesto: Completare la seguente tabella: a b

C6. Quadrilateri - Esercizi

VBA Principali Comandi

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Programmazione web lato client con JavaScript. Marco Camurri 1

Costruzioni geometriche. (Teoria pag , esercizi )

Individuazione di sottoproblemi

CLASSIFICAZIONE DELLE CONICHE AFFINI

Programmazione funzionale

Programmazione in Java (I modulo)

Espressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test

ESEMPIO: le variabili LETTURA/SCRITTURA DI VARIABILI. Specifica Leggere da tastiera un intero, un carattere, un float e un double. Stamparli a video.

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

2. APPUNTI SUI FASCI DI CIRCONFERENZE (raccolti dal prof. G. Traversi)

Strutture dati dinamiche in C (II)

TEST SULLE COMPETENZE Classe Seconda

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

Esercizi su esponenziali, coni, cilindri, superfici di rotazione

5 - Istruzioni condizionali

Strutture di controllo in C++

ESERCIZI SVOLTI SU: GEOMETRIA TRIDIMENSIONALE. 2. Fissato un sistema di riferimento cartesiano dello spazio euclideo O, i, j, k,

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Esempi di Problemi Iterativi

C5. Triangoli. C5.1 Definizioni. C5.2 Classificazione dei triangoli in base ai lati

Sincronizzazione. Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

Esercitazione: Implementazione in linguaggio C dell ADT. Stack con l utilizzo. di linked list

Codice Gray. (versione Marzo 2007)

Laboratorio Informatica

PROGRAMMAZIONE STRUTTURATA

Formalismi per la descrizione di algoritmi

Programmazione 1 A.A. 2015/2016

La parabola. Giovanni Torrero Aprile La poarabola come luogo geometrico

Problema: conteggio occorrenze

Esercizi di Analisi Matematica I

CORREZIONE FORMATIVA 2 ( RETTA IN FORMA PARAMETRICA E FASCI)

Esercizi per la prova in itinere (con soluzioni)

Algoritmi e dintorni: La radice quadrata Prof. Ettore Limoli. Formule iterative

lato obliquo trapezio isoscele Un quadrilatero che ha i lati opposti paralleli. Ogni parallelogramma ha... D α + β π

GEOMETRIA ANALITICA 1 IL PIANO CARTESIANO

14 - Metodi e Costruttori

Corso Arduino Maggio Riccardo Binetti Lezione 1 - Blinking LEDs with style

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Il punteggio totale della prova è 100/100. La sufficienza si ottiene con il punteggio di 60/100.

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Reti di Calcolatori

Esempio (if): equazione di secondo grado

Don Bosco, A.S. 2013/14 Compiti per le vacanze - 1C

Транскрипт:

1/9 Programmazione Funzionale Esercizio sulle variabili locali Davide Mottin - Themis Palpanas March 12, 2014

OCaml Funzioni preparatorie Sommario 2/9

Funzioni preparatorie Costruire una funzione val even : int -> bool = <fun> che restituisca vero se un numero è pari, falso altrimenti. Creare una funzione odd che calcoli l opposto di even. OCaml 3/9

Funzioni preparatorie Costruire una funzione val even : int -> bool = <fun> che restituisca vero se un numero è pari, falso altrimenti. let even n = if n mod 2 = 0 then true else false;; Creare una funzione odd che calcoli l opposto di even. let odd n = not (even n);; OCaml 3/9

Un esercizio più complesso Costruire una funzione che stampi Pari e divisibile per 3 se un numero in input è pari e divisibile per tre, altrimenti Pari ma non divisibile per 3 oppure Dispari e divisibile per 3 e Dispari ma non divisibile per 3. Cercare di utilizzare, ove possibile, dichiarazioni locali. OCaml 4/9

( P r i n t whether a number i s d i v i s i b l e by 2 and by 3 ) l e t p r i n t d i v i s i b i l i t y n = i f even n then l e t out = P a r i i n i f n mod 3 = 0 then p r i n t s t r i n g ( out ˆ e d i v i s i b i l e per 3 ) e l s e p r i n t s t r i n g ( out ˆ ma non d i v i s i b i l e per 3 ) e l s e l e t out = D i s p a r i i n i f n mod 3 = 0 then p r i n t s t r i n g ( out ˆ e d i v i s i b i l e per 3 ) e l s e p r i n t s t r i n g ( out ˆ ma non d i v i s i b i l e per 3 ) ; OCaml 5/9

Esercizio Che tipo ha la funzione seguente e a cosa serve? l e t a p p l y f ( n,m) = ( f n m) ; ; OCaml 6/9

Esercizio Che tipo ha la funzione seguente e a cosa serve? l e t a p p l y f ( n,m) = ( f n m) ; ;. (α β γ) α β γ Sapete fornire una possibile applicazione di questa funzione? OCaml 6/9

Esercizio Che tipo ha la funzione seguente e a cosa serve? l e t a p p l y f ( n,m) = ( f n m) ; ;. (α β γ) α β γ Sapete fornire una possibile applicazione di questa funzione? (possibile). apply (fun x y -> sqrt (x**2.0 +. y**2.0)) (3.,4.);; OCaml 6/9

Esercizio Costruire una funzione conditional apply che, preso in input due funzioni f e g ed un elemento x restituisca g applicata ad x se f (x) restituisce true e x altrimenti. Ragionare inoltre sul tipo della funzione scritta. OCaml 7/9

Esercizio Costruire una funzione conditional apply che, preso in input due funzioni f e g ed un elemento x restituisca g applicata ad x se f (x) restituisce true e x altrimenti. Ragionare inoltre sul tipo della funzione scritta. l e t c o n d i t i o n a l a p p l y f g x = i f f x then g x e l s e x ; ; Qual è il tipo? OCaml 7/9

Esercizio Costruire una funzione conditional apply che, preso in input due funzioni f e g ed un elemento x restituisca g applicata ad x se f (x) restituisce true e x altrimenti. Ragionare inoltre sul tipo della funzione scritta. l e t c o n d i t i o n a l a p p l y f g x = i f f x then g x e l s e x ; ; Qual è il tipo? Esercizio. Costruire una funzione to odd che preso in input un valore se è pari restituisce il suo successore, altrimenti restituisce lo stesso valore. OCaml 7/9

Esercizio Costruire una funzione conditional apply che, preso in input due funzioni f e g ed un elemento x restituisca g applicata ad x se f (x) restituisce true e x altrimenti. Ragionare inoltre sul tipo della funzione scritta. l e t c o n d i t i o n a l a p p l y f g x = i f f x then g x e l s e x ; ; Qual è il tipo? Esercizio. Costruire una funzione to odd che preso in input un valore se è pari restituisce il suo successore, altrimenti restituisce lo stesso valore. (possibile). let to odd x = conditional apply even succ x;; OCaml 7/9

Altri Esercizi Costruire una funzione che restituisca la funzione della retta dato in input m e q (i.e., f (x) = mx + q). Attenzione ai tipi. OCaml 8/9

Altri Esercizi Costruire una funzione che restituisca la funzione della retta dato in input m e q (i.e., f (x) = mx + q). Attenzione ai tipi. l e t l i n e m q x = m. x +. q ; ; OCaml 8/9

Altri Esercizi Costruire una funzione che restituisca la funzione della retta dato in input m e q (i.e., f (x) = mx + q). Attenzione ai tipi. l e t l i n e m q x = m. x +. q ; ; Esercizio Usando la funzione precedente costruire una funzione che dato in input due punti restituisce la funzione della retta passante per essi. Dato (x 1, y 1 ) e (x 2, y 2 ) m = y 2 y 1 x 2 x 1, q = y 1x 2 x 1 y 2 x 2 x 1 OCaml 8/9

Altri Esercizi Costruire una funzione che restituisca la funzione della retta dato in input m e q (i.e., f (x) = mx + q). Attenzione ai tipi. l e t l i n e m q x = m. x +. q ; ; Esercizio Usando la funzione precedente costruire una funzione che dato in input due punti restituisce la funzione della retta passante per essi. Dato (x 1, y 1 ) e (x 2, y 2 ) m = y 2 y 1 x 2 x 1, q = y 1x 2 x 1 y 2 x 2 x 1 l e t l i n e e q u a t i o n x ( x1, y1 ) ( x2, y2 ) = l i n e ( ( y2. y1 ) /. ( x2. x1 ) ) ( ( y1. x2. x1. y2 ) /. ( x2. x1 ) ) x ; ; OCaml 8/9

Altri Esercizi - 2 Costruire una funzione che preso in input due funzioni e una coppia (x,y) controlli se si intersecano in (x,y) OCaml 9/9

Altri Esercizi - 2 Costruire una funzione che preso in input due funzioni e una coppia (x,y) controlli se si intersecano in (x,y) l e t i n t e r s e c t i n l 1 l 2 ( x, y ) = ( l 1 x = y ) && ( l 2 x = y ) ; ; OCaml 9/9

Altri Esercizi - 2 Costruire una funzione che preso in input due funzioni e una coppia (x,y) controlli se si intersecano in (x,y) l e t i n t e r s e c t i n l 1 l 2 ( x, y ) = ( l 1 x = y ) && ( l 2 x = y ) ; ; Esercizio Costruire una funzione che calcoli il baricentro tra tre punti. OCaml 9/9

Altri Esercizi - 2 Costruire una funzione che preso in input due funzioni e una coppia (x,y) controlli se si intersecano in (x,y) l e t i n t e r s e c t i n l 1 l 2 ( x, y ) = ( l 1 x = y ) && ( l 2 x = y ) ; ; Esercizio Costruire una funzione che calcoli il baricentro tra tre punti. l e t b a r y c e n t e r ( x1, y1 ) ( x2, y2 ) ( x3, y3 ) = ( ( x1 +. x2 +. x3 ) /. 3., ( y1 +. y2 +. y3 ) /. 3. ) ; ; OCaml 9/9