Programmazione Introduzione - Università Ca' Foscari...

33
Programmazione Introduzione Samuel Rota Bul` o Dipartimento di Scienza Ambientali, Informatica e Statistica. Universit` a Ca’ Foscari di Venezia. 2011

Transcript of Programmazione Introduzione - Università Ca' Foscari...

Page 1: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

ProgrammazioneIntroduzione

Samuel Rota Bulo

Dipartimento di Scienza Ambientali, Informatica e Statistica.Universita Ca’ Foscari di Venezia.

2011

Page 2: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Outline

Informazioni generali

Introduzione alla programmazione

Il linguaggio OCaML

Numeri interi e reali

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 3: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Il corso

Docente : Samuel Rota Bulo ([email protected])

Orario : mercoledı 18:15 - 19:45 e sabato 10:30 - 12:00

Aula : A / 1

Ricevimento : da concordare via email

Homepage : www.dsi.unive.it/∼srotabul/programming.html

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 4: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Testi di riferimento

I M. Hailperin, B. Kaiser, K. Knight.Concrete Abstractions.(http://gustavus.edu/+max/concrete-abstractions-pdfs/index.html)

I J. Hickey.Introduction to Objective Caml.(http://files.metaprl.org/doc/ocaml-book.pdf)

I Emmanuel Chailloux, Pascal Manoury and Bruno Pagano.Developing Applications With Objective CaML.(http://caml.inria.fr/pub/docs/oreilly-book/ocaml-ora-book.pdf)

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 5: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Outline

Informazioni generali

Introduzione alla programmazione

Il linguaggio OCaML

Numeri interi e reali

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 6: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

You think you know when you can learn, are moresure when you can write, even more when you can teach,but certain when you can program.

– Alan J. Perlis, “Epigrams in Programming”

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 7: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

A good programmer is someone who looks both waysbefore crossing a one-way street.

– Doug Linder, systems administrator

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 8: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

When someone says - I want a programming languagein which I need only say what I wish done -, give him alollipop.

– Alan J. Perlis, “Epigrams in Programming”

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 9: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

The only way to learn a new programming language isby writing programs in it.

– B. Kernighan & D. Ritchie

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 10: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Cosa significa programmare?

I Programmare significa estendere le capacita di una“macchina” con nuove funzionalita finalizzate a risolverenuovi problemi.

I Il compito del programmatore e “insegnare” alla macchina ilprocedimento attraverso il quale un determinato problema puoessere risolto .

I Il linguaggio con cui il programmatore comunica questoprocedimento alla “macchina” e detto linguaggio diprogrammazione.

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 11: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Problem-solving

I Un bravo programmatore deve essere in grado di:

1. analizzare un problema (generalmente espresso in linguaggionaturale);

2. esprimerlo in modo astratto e formale (magari, aiutandosi conesempi);

3. formalizzare un procedimento risolutivo in un linguaggiopreciso (algoritmo);

4. verificare che il procedimento sia corretto ed eventualmenterivisitarlo;

5. fare attenzione ai dettagli con atteggiamento auto-critico.

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 12: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Insegnante ≈ Programmatore

I Insegnante ≈ Programmatore

I Studente ≈ Macchina

I Linguaggio di programmazione ≈ Linguaggio naturale

I L’insegnante insegna allo studente degli “algoritmi” espressi inlinguaggio naturale affinche quest’ultimo possa risolvaproblemi.

Un programmatore in genere ha a che fare con macchine molto piu“stupide” !

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 13: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Macchina alla von Neumann

I Le macchine con cui abbiamo (comunemente) a che farepresentano un architettura alla von Neumann.

ArithmeticLogicUnit

ControlUnit

Memory

Input Output

Accumulator

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 14: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Programmazione imperativa

I Paradigma di programmazione in cui la computazione edescritta mediante comandi che modificano lo stato delprogramma.

I Lo stato viene tipicamente modificato con comandi diassegnamento del tipo v = E o v := E .

I I comandi sono scritti sequenzialmente, separati tra di loro.

I E possibile esprimere condizioni, ripetizioni o organizzare ilcodice in procedure o funzioni.

I E il paradigma piu diffuso: C, C++, Java, Pascal e derivati,Basic e derivati, . . .

I Caratteristiche strettamente legate all’architettura di vonNeumann.

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 15: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Paradigma funzionale

I Radicalmente diverso dal paradigma imperativo.I Il paradigma e slegato dalla macchina di von NeumannI Paradigma di programmazione in cui la computazione e

descritta mediante valutazioni di funzioni.I Il programma e un’espressione e l’esecuzione del programma e

la valutazione di questa espressione.I In senso puro, un linguaggio funzionale non ha variabili e non

ha stato.I Non ci sono assegnamenti. Non c’e sequenzialita dei comandi.I Le funzioni sono alla base di tutto. Possono essere

interpretate come valori, e possono essere argomento o valoredi ritorno di altre funzioni.

I Al posto di istruzioni di ciclo vi e la ricorsione di funzioni.

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 16: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Programma in astratto

Siano σ0 e σn stato iniziale e finale di un programmaI Programma in un linguaggio imperativo

I Descrive una sequenza di comandi ci , i = 0, · · · , n − 1 tale percui

σ0c0−→ σ1

c1−→ σ2c2−→ · · · cn−1−−→ σn .

I Programma in un linguaggio funzionaleI Descrive una funzione f che dato l’argomento σ0 ritorna σn

σn = f (σ0) .

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 17: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Un esempio concreto: calcolo del fattoriale

Fattoriale di n

n! = n · (n − 1) · · · 1 , 0! = 1

Imperativo

funzione FATTORIALE (n)

x <- 1

mentre n>0

x <- n*x

n <- n-1

ritorna x

Funzionale

funzione FATTORIALE (n)

ritorna se n=0

1

altrimenti

n * FATTORIALE(n-1)

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 18: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Outline

Informazioni generali

Introduzione alla programmazione

Il linguaggio OCaML

Numeri interi e reali

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 19: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Il linguaggio OCaML

I Linguaggio funzionale (non puro)

I Dialetto di ML (Meta-Language)

I Progetto Open Source dell’INRIA(Istituto nazionale francese di ricerca in informatica)

I interprete/compilatore reperibile all’indirizzohttp://caml.inria.fr/

I disponibile per Windows, Linux, Unix e MacOSX.

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 20: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Alcune caratteristiche di ML

I Linguaggio funzionale: funzioni sono gli oggetti principalidel linguaggio.

I Fortemente tipato: il tipo di ogni variabile ed espressione edeterminato al momento della compilazione.

I Inferenza di tipo: i tipi delle espressioni vengono inferite.Raramente il programmatore assegna tipo direttamente.

I Polimorfismo: si possono scrivere funzioni che sonoindipendenti dai tipi degli argomenti.

I Semantica formale: hanno interpretazione matematica.

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 21: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Perche OCaML?

I Didatticamente altri linguaggi funzionali sarebbero preferibiliad OCaML, come per es. Scheme.

I Infatti, OCaML non e un linguaggio funzionale puro, ma eprevalentemente funzionale.

I Utilizzato nel mondo del lavoro, ed e molto compatibile conF# (linguaggio della famiglia .NET di Microsoft).

I Open source

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 22: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

L’interprete OCaML

I Avviamo l’interprete invocando ocaml

Objective Caml version 3.10.2

#

I L’interprete rimane in attesa di espressioni da valutare.

I Le espressioni devono terminare con ;; per essere valutate.

I Per uscire digitare

# exit 0;;

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 23: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Outline

Informazioni generali

Introduzione alla programmazione

Il linguaggio OCaML

Numeri interi e reali

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 24: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

I numeri interi

I Il programma piu semplice consiste in un numero:

# 1;;

- : int = 1

I L’interprete valuta l’espressione ritornandone il valore 1 e iltipo int.

I Il tipo int rappresenta un sottoinsieme dei numeri interi Z.

# 100000000000000000000;;

Integer literal exceeds the range of representable

integers of type int

I Il tipo int in OCaML ha una rappresentazione a 32/64 bit aseconda dell’architettura.

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 25: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Alcune espressioni sugli interi

# - -2;; (* Negazione *)

- : int = 2

# 2 + 3;; (* Addizione *)

- : int = 5

# 2 - 3;; (* Sottrazione *)

- : int = -1

# 2 * 3;; (* Moltiplicazione *)

- : int = 6

# 7 / 3;; (* Divisione intera *)

- : int = 2

# 7 mod 3;; (* Modulo *)

- : int = 1

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 26: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Eccezioni

I Alcune espressioni possono generare degli errori “controllabili”chiamate eccezioni.

I Verranno approfondite piu avanti.

# 1 / 0;; (* Eccezione ! *)

Exception: Division by zero.

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 27: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Forme alternative per i numeri interi

I Accanto alla forma decimale, possiamo esprimere un intero informa ottale . . .

# 0o17;; (* Forma ottale *)

- : int = 15

I . . . esadecimale . . .

# 0x1F;; (* Forma esadecimale *)

- : int = 31

I . . . e binaria.

# 0b11110;; (* Forma binaria *)

- : int = 30

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 28: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

I numeri reali

I Il tipo float rappresenta un sottoinsieme dei numeri reali Restesi con i simboli ±∞ e Nan (Not a number).

# 1.2;;

- : float = 1.2

# -1.2e-10;; (* notazione scientifica *)

- : float = -1.2e-10

# -1.2E-10;;

- : float = -1.2E-10

# 1E400;; (* approssimato a +infinito *)

- : float = infinity

# -1E400;; (* approssimato a -infinito *)

- : float = neg_infinity

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 29: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Tipizzazione forte di ML

I Ogni espressione deve avere un tipo.

I Se non e possibile determinare il tipo di un’espressione questagenera un errore.

# 1.1 + 2;; (* Errore di tipo ! *)

^^^

This expression has type float but is here used

with type int

# 1.1 * 0;; (* Errore di tipo ! *)

^^^

This expression has type float but is here used

with type int

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 30: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Alcune espressioni sui reali

# 2.0 +. 3.0;; (* Addizione *)

- : float = 5.

# 2. -. 3.;; (* Sottrazione *)

- : float = -1.

# 2. *. 3.;; (* Moltiplicazione *)

- : float = 6.

# 7. /. 3.;; (* Divisione *)

- : float = 2.3333333333333333

# 2. ** 3.;; (* Potenza *)

- : float = 8.

# int of float 1.2;; (* Conversione float -> int *)

- : int = 1

# float of int 1;; (* Conversioni int -> float *)

- : float = 1.

# -.(-2. +. 3.);; (* Negazione *)

- : float = -1.

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 31: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Aritmetica floating-point

I L’aritmetica dei floating-point e estesa tenendo conto deisimboli di infinito e Nan.

I Alcuni esempi sono:

# -1. /. 0.;; (* -Infinito *)

- : float = neg infinity

# 0. /. 0.;; (* Indefinito *)

- : float = nan

# 1. /. infinity;; (* Zero *)

- : float = 0.

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 32: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Attenzione agli errori di tipo !

# 1.1 +. 2;; (* Errore di tipo ! *)

^

This expression has type int but is here used

with type float

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.

Page 33: Programmazione Introduzione - Università Ca' Foscari Veneziasrotabul/files/programmazione/2011/lezione_001.… · Eccezioni I Alcune espressioni possono generare degli errori \controllabili"

Informazioni generali Introduzione alla programmazione Il linguaggio OCaML Numeri interi e reali

Una calcolatrice poco tascabile !

I Per ora abbiamo solo visto che possiamo fare semplicioperazioni !

I Se scriviamo espressioni piu complicate le operazionirispettano l’ordine di precedenza standard.

I Possiamo forzare la precedenza mediante parentesi.

# 1 + 2 * 3;;

- : int = 7

# (1 + 2) * 3;;

- : int = 9

# 1 + int_of_float (2.*.3.**2.**2.);;

- : int = 163

Programmazione Introduzione Dipartimento di Scienza Ambientali, Informatica e Statistica. Universita Ca’ Foscari di Venezia.