Programmazione Funzionale

Documenti analoghi
Programmazione Funzionale

ML è un linguaggio interattivo La modalità interattiva di OCaml Ciclo: LETTURA, VALUTAZIONE, STAMPA. Objective Caml version 3.06

let quorem pair = ((fst pair)/(snd pair), (fst pair) mod (snd pair))

La principale modalità di calcolo è l applicazione di funzioni

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

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

Corso di Linguaggi di Programmazione

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Silvia Crafa

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

DEFINIZIONE DI NUOVI TIPI Un tipo è un insieme di valori.

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Esercizi di Algoritmi e Strutture Dati

Automa deterministico con prospezione 1. < {q}, Σ, Σ V, δ, q, S, Φ > δ(a, X) = α R. se a Gui(X α) senza spostamento della testina.

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

Istruzioni di ripetizione in Java 1

TRADUZIONE STATE AND TRANSITION DIAGRAM UML E CORRETTEZZA DEI PROGRAMMI IN TLA+

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

Valutazione Lazy. Prefazione alla lezione

Programmazione Procedurale in Linguaggio C++

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

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

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 17/01/2014/ Foglio delle domande / VERSIONE 1

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)

Informatica 1. Prova di recupero 15 Febbraio 2005

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.

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.

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

Esempi di Problemi Iterativi

Esercizi su esponenziali, coni, cilindri, superfici di rotazione

Programmazione è gestione di eventi

Una libreria di funzioni per la geometria analitica

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

define define int int int double

Algoritmi e Strutture Dati - Prof. Roberto De Prisco A.A Seconda prova di verifica (4 Febbraio 2005)

Codice Gray. (versione Marzo 2007)

Laboratorio Informatica

Introduzione a R. Monica Marabelli. 30 Ottobre 2015

Corso di Fondamenti di Informatica

PROGRAMMAZIONE STRUTTURATA

Formalismi per la descrizione di algoritmi

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Programmazione 1 A.A. 2015/2016

Laboratorio di Matematica e Informatica 1

Esiste però anche un ambiente globale: quello dove tutte le funzioni sono definite. Qui si possono anche definire variabili, dette variabili globali

Funzioni. function [<risultati>] = nome_funzione ([ par.formali ])

Esercizi di logica. Ivan Valbusa 5 dicembre 2012

La parabola. Giovanni Torrero Aprile La poarabola come luogo geometrico

Problema: conteggio occorrenze

Esercizi di Analisi Matematica I

1. MyAir. Analizzare anche i criteri funzionali

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

1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio

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

Zeri di una funzione. Funzioni continue - Proprietà. certo intervallo dell'asse x. da: a ξ. cui f(x)=0. precisione desiderata (iterazione( iterazione)

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.

A B = { x x A x B} A B x y x A y B

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

Esempio (if): equazione di secondo grado

Programmazione Procedurale in Linguaggio C++

STUDIO. Esercizi proposti a lezione cap. 3 rev. dic da Ulmann, Widom Introduzione ai database. indirizzo. titolo. nome. recitain. attori.

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

Transcript:

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