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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 1 ML è un linguaggio interattivo La modalità interattiva di OCaml Ciclo: LETTURA, VALUTAZIONE, STAMPA # Objective Caml version 3.06 Il cancelletto è il prompt di Caml. # 3*8;; - : int = 24 LETTURA: viene letta un espressione (3*8), terminata da ;; e dalla pressione del tasto di ritorno carrello (ENTER) VALUTAZIONE: viene calcolato il valore dell espressione STAMPA: viene stampato il valore dell espressione, specificando di che tipo è: - : int il valore è di tipo int (intero) = 24 il valore è 24 # <ESPRESSIONE> ;; - : <TIPO> = <VALORE>

2 2 Il calcolo procede valutando espressioni. OGNI ESPRESSIONE DEL LINGUAGGIO HA UN VALORE E UN TIPO Quando si immette un espressione al prompt di OCaml (seguita da ;; e <ENTER>), OCaml ne calcola e stampa il valore e il tipo. # (5/2, 5 mod 2);; - : int * int = (2, 1) # if not(3>0) then "pippo" else "pluto";; - : string = "pluto" /, mod, not sono FUNZIONI PRIMITIVE del linguaggio int * int è il tipo delle coppie di interi if...then...else... è un espressione condizionale; if, then, else sono PAROLE CHIAVE "pippo", "pluto" sono stringhe

3 3 L ambiente di valutazione La valutazione di un espressione avviene in un AMBIENTE che contiene il significato (VALORE) di un insieme di parole (VARIABILI). Quando si avvia l interprete OCaml, le espressioni vengono valutate nell ambiente predefinito, che contiene il significato delle operazioni primitive del linguaggio. # succ;; - : int -> int = <fun> # succ 4;; - : int = 5 # abs;; - : int -> int = <fun> # abs (-3);; - : int = 3 # fst;; - : a * b -> a = <fun> # fst (3,"pippo");; - : int = 3

4 4 Un programma è una collezione di dichiarazioni (di variabili, funzioni, tipi,...) L ambiente può essere esteso mediante # let three = 3;; val three : int = 3 # three * 8;; - : int = 24 DICHIARAZIONI Una dichiarazione dà un nome a un valore I nomi dei valori si chiamano VARIABILI # let base = 3;; val base : int = 3 # let altezza = 4;; val altezza : int = 4 # let area = base * altezza;; val area : int = 12 let <VARIABILE> = <ESPRESSIONE>;;

5 5 DICHIARAZIONI # let pi = ;; val pi : float = float: tipo dei numeri reali (IR) # let r = 2.0;; val r : float = 2. NELLE ESPRESSIONI: # let area = pi *. r *. r;; val area : float = *. moltiplicazione sui reali Il tipo degli operandi deve essere consistente con quello richiesto dagli operatori, senza eccezioni. Caml distingue le operazioni sugli interi * + / - dalle corrispondenti operazioni sui reali (float) *. +. /. -. # let area = pi * r * r;; Characters 11-13: let area = pi * r * r;; ^^ This expression has type float but is here used with type int

6 DICHIARAZIONE DI FUNZIONI let <NOME-FUNZIONE> = function <PARAMETRO-FORMALE> -> <ESPRESSIONE>;; # let area_quadrato = function n -> n * n;; val area_quadrato : int -> int = <fun> area_quadrato è una funzione da interi a interi. Applicata a un intero n, riporta l area del quadrato con lato di lunghezza n ATTENZIONE: il valore di una funzione non è stampabile. OCaml informa soltanto che si tratta di una funzione (<fun>) ML ha un meccanismo di inferenza di tipi che gli consente di dedurre qual è il tipo di un espressione senza bisogno di dichiarazioni esplicite # let area_quadrato = function n -> n * n;; val area_quadrato : int -> int = <fun> ML ha dedotto il tipo della funzione: Se n viene moltiplicato per sé stesso mediante la moltiplicazione tra interi (*), deve essere n: int. Quindi il dominio di area_quadrato è int. Il valore della funzione, n*n, è di tipo int. Quindi il codominio di area_quadrato è int. 6

7 7 Dichiarazione di funzioni: sintassi alternativa La funzione area_quadrato si può definire anche così: # let area_quadrato n = n * n;; val area_quadrato : int -> int = <fun> let <NOME-FUNZIONE> <PARAMETRO-FORMALE> = <ESPRESSIONE> Definizione di una funzione che calcola il doppio di un intero: # let double x = 2 * x;; val double : int -> int = <fun> ML ha dedotto il tipo della funzione: Se x viene moltiplicato per 2 (con la moltiplicazione tra interi), deve essere x: int. Quindi il dominio di double è int. Il valore della funzione, x*2, è di tipo int. Quindi il codominio di double è int.

8 8 La principale modalità di calcolo è l applicazione di funzioni Applicazione di funzioni Quando una funzione è stata dichiarata, si può utilizzare il suo nome nelle espressioni, in particolare per applicarle a un argomento: # area_quadrato 5;; - : int = 25 # double 3;; - : int = 6 Esempio # let area r = pi *. r *. r;; val area : float -> float = <fun> # area 3.0;; - : float = # let square r = r *. r;; val square : float -> float = <fun> # area (square 3.0);; - : float = L espressione area (square 3.0) è corretta: square: float -> float square 3.0: float area: float -> float, quindi area si può applicare a square 3.0

9 ATTENZIONE: l applicazione di funzioni è associativa a sinistra In mancanza di parentesi area square 3.0 viene interpretato come (area square) 3.0, che non è un espressione corretta: square: area: float -> float float -> float, quindi area non si può applicare a square se anche area square fosse corretto, il suo tipo sarebbe float, che non è il tipo di una funzione, quindi non si può applicare a 3.0 # area square 3.0;; Characters 0-4: area square 3.0;; ^^^^ This function is applied to too many arguments 9

10 10 ML ha un meccanismo di inferenza di tipi che gli consente di dedurre qual è il tipo di un espressione senza bisogno di dichiarazioni esplicite Inferenza dei tipi Quando si immette un espressione o una dichiarazione: OCaml ne controlla la correttezza: un espressione è corretta se è possibile determinarne il tipo. Ne determina il tipo, mediante un processo di inferenza dei tipi. Se si tratta di un espressione, ne calcola il valore e lo stampa. Il valore viene calcolato nell ambiente di valutazione attuale. Se si tratta di una dichiarazione, estende l ambiente di valutazione creando un nuovo legame per la variabile dichiarata.

11 11 Il calcolo procede valutando espressioni. Non ci sono effetti collaterali AMBIENTE DI VALUTAZIONE Un ambiente è una collezione di legami variabile-valore: var n val n Ambiente di top level (iniziale): var n 1 val n var 1 val not function x mod function x function y Ambiente del modulo Pervasives

12 12 Estensione dell ambiente mediante dichiarazioni La valutazione di una dichiarazione aggiunge un nuovo legame all ambiente: # let two = 2;; val two : int = 2 # let three = two + 1;; val three : int = 3 two 2 ambiente del modulo P ervasives - Viene valutata l espressione two + 1 nell ambiente esistente, dove il valore di two è 2; - Viene creato un nuovo legame, di three con il valore di two + 1 three 3 two 2 ambiente del modulo P ervasives

13 L ambiente viene gestito come un PILA: i nuovi legami vengono aggiunti in alto e si cerca il valore delle variabili a partire dall alto. # let two = "due";; val two : string = "due" two "due" three 3 two 2 ambiente del modulo P ervasives In questo ambiente, il valore di two è "due": il nuovo legame nasconde il vecchio. 13

14 ML è un linguaggio a scopo statico: determina a tempo di compilazione il valore delle variabili in una dichiarazione. 14 # let six=6;; DICHIARAZIONE DI FUNZIONI six # let sixtimes n=six*n;; # let six=50;; # six;; - : int = 50 # sixtimes 3;; - : int = 18 sixtimes function n -> six * n six six 50 sixtimes function n -> six * n six Il valore di six nel corpo di sixtimes viene cercato NELL AMBIENTE DI DICHIARAZIONE di six, cioè nell ambiente in cui six è stata definita.

15 15 # let six="six";; # sixtimes 3;; - : int = 18 six "six" six 50 sixtimes function n -> six * n six OCaml è un LINGUAGGIO A SCOPO STATICO

16 16 CHIAMATA DI FUNZIONI # let six=6;; # let sixtimes = six * n;; # sixtimes (2+1);; sixtimes function n -> six * n six Quando viene chiamata la funzione sixtimes: - il suo argomento viene valutato nell ambiente; - viene creato un nuovo legame PROVVISORIO del parametro formale n con il valore dell argomento; - in questo nuovo ambiente viene valutato il corpo della funzione, six * n; - il legame provvisorio viene cancellato. sixtimes n n 3 sixtimes function n -> six * n six : int = 18 sixtimes function n -> six * n six

17 ML è un linguaggio fortemente tipato: ogni espressione in ML ha un tipo che può essere determinato a tempo di compilazione Espressioni e tipi semplici Un tipo è un insieme di valori Espressioni di tipo t: il cui valore è di tipo t int 0, - 23, 14,... Operazioni: +, -, *, /, mod, succ, pred float 0.01, 3.0, -4.0, 7E-5,... Operazioni: +., -., *., /., **, sqrt, sin,... bool true, false Operazioni booleane: not, &&, or # (true && not false) or false;; - : bool = true E è valutato solo se E && E E ha valore true E or E E ha valore false 17

18 18 string "pippo", "pluto", "12Ev",... Operazioni: (concatenazione) # "programmazione " ^ "funzionale";; - : string = "programmazione funzionale" # "ABCDEFG".[2];; - : char = C # string_of_int 45;; - : string = "45" char 'a', '9', ' ',... # Char.code A ;; - : int = 65 # Char.chr 65;; - : char = A unit ()

19 19 # 3*8 = 24;; - : bool = true # "pippo" = "pi" ^ "ppo";; - : bool = true # true = not true;; - : bool = false # true <> false;; - : bool = true Uguaglianza e disuguaglianza L uguaglianza non è definita sulle funzioni: # let double x = x*2;; val double : int -> int = <fun> # let treble x = x*3;; val treble : int -> int = <fun> # double = treble;; Exception: Invalid_argument "equal: functional value"

20 20 Operatori di confronto # 3*8 <= 30;; - : bool = true # 6.0 < 5.9;; - : bool = false # A >= B ;; - : bool = false # "abc" > "ABC";; - : bool = true # false < true;; - : bool = true

21 21 I tipi con uguaglianza L uguaglianza e gli operatori di confronto sono definiti su tutti i tipi di dati, tranne che sulle funzioni. # true <> false;; - : bool = true # 3*8 <= 30;; - : bool = true # false < true;; - : bool = true # "abc" > "ABC";; - : bool = true # let double x = x*2;; val double : int -> int = <fun> # let treble x = x*3;; val treble : int -> int = <fun> # double = treble;; Exception: Invalid_argument "equal: functional value"

22 22 Espressioni condizionali è un espressione condizionale se: E è di tipo bool F e G hanno lo stesso tipo if E then F else G ML è un linguaggio fortemente tipato: ogni espressione in ML ha un tipo che può essere determinato a tempo di compilazione Le espressioni hanno sempre un tipo e un valore: Il tipo di if E then F else G è il tipo di F e G Il suo valore è: il valore di F se E ha valore true il valore di G se E ha valore false È un espressione, non un costrutto di controllo La parte else non può mancare Nel valutare un espressione if E then F else G: se E è true, G non viene valutata se E è false, F non viene valutata

23 23 Operatori booleani e espressioni condizionali Un espressione della forma E && F E or F equivale a if E then F else false if E then true else F Come nella valutazione delle espressioni booleane, la valutazione delle espressioni condizionali è pigra : quando si valuta if E then F else G: viene valutata E; se il valore di E è true, allora viene valutata F e G non viene valutata; se il valore di E è false, allora viene valutata G e F non viene valutata.

24 24 Esempio: valutazione di un espressione condizionale # 4 + (if 1 < 0 then 3 * 8 else 5 / 2);; - : int = (if 1 < 0 then 3 * 8 else 5 / 2) ===> 4 + (if false then 3 * 8 else 5 / 2) ===> 4 + (5 / 2) ===> ===> 6 # let sign n = if n > 0 then 1 else if n = 0 then 0 else -1;; val sign : int -> int = <fun> # let sort (x,y) = if x<y then (x,y) else (y,x);; val sort : a * a -> a * a = <fun> # sort (5,2);; - : int * int = (2,5)

25 25 Coppie Coppie ordinate: (E,F) # (5,8);; - : int * int = (5, 8) # ("pippo",7);; - : string * int = ("pippo", 7) # (true,80);; - : bool * int = (true, 80) t 1 t 2 è il tipo delle coppie ordinate il cui primo elemento è di tipo t 1 ed il secondo di tipo t 2. t 1 t 2 è il prodotto cartesiano di t 1 e t 2 Attenzione: è un costruttore di tipo (un operazione su tipi): applicato a due tipi t 1 e t 2 costruisce il tipo delle coppie il cui primo elemento è di tipo t 1 ed il secondo di tipo t 2

26 26 Tuple Triple, quadruple o tuple di dimensione qualsiasi: # (true,5*4,"venti");; - : bool * int * string = (true, 20, "venti") # ((if 3<5 then "true" else "false"), 10.3, K, int_of_string "50");; - : string * float * char * int = ("true", 10.3, K, 50) Una tupla può essere elemento di una tupla: # (true,("pippo",98),4.0);; - : bool * (string * int) * float = (true, ("pippo", 98), 4) Attenzione: * non è associativo: ad esempio il tipo bool * (int * string) è diverso dal tipo (bool * int) * string Le funzioni sono oggetti di prima classe: possono essere componenti di una struttura dati, o costituire l argomento o il valore di altre funzioni. Una funzione può essere un elemento di una tupla: # (double,(true && not false, 6*5));; - : (int -> int) * (bool * int) = (<fun>, (true, 30))

27 27 Costruttori e Selettori di un tipo di dati Ogni tipo di dati è caratterizzato da un insieme di e un insieme di COSTRUTTORI (costanti + operazioni che costruiscono valori di quel tipo) SELETTORI (operazioni che selezionano componenti da un valore del tipo) Nel caso di tipi semplici (int, float, bool, string, char, unit), abbiamo soltanto costruttori: i costruttori di un tipo di dati semplici sono tutti i valori del tipo

28 28 Costruttori e Selettori del tipo coppia L insieme di parentesi e virgola (, ) è il costruttore per il tipo delle coppie Per selezionare i componenti: fst, snd (first, second) # let t = (true,("pippo",98));; val t : bool * (string * int) = true, ("pippo", 98) # fst t;; - : bool = true # snd t;; - : string * int = "pippo", 98 # snd (snd t);; - : int = 98 fst, snd sono funzioni polimorfe: # fst;; - : a * b -> a = <fun> # snd;; - : a * b -> b = <fun> OCaml utilizza espressioni della forma a, b, c per le variabili di tipo (α, β, γ).

29 29 Funzioni a più argomenti # let area_triangolo (base,altezza) = (base * altezza)/2;; val area_triangolo : int * int -> int = <fun> Qual è il tipo di area_triangolo? Per OCaml le funzioni hanno sempre un unico argomento; eventualmente una coppia o una tupla. let quorem (n,m) = (n/m, n mod m);; quorem : int * int -> int * int # quorem (17,5);; - : int * int = (3, 2)

30 30 ML ha un sistema di tipi polimorfo: una funzione può accettare argomenti di vari tipi. # let first (x,y) = x;; val first : a * b -> a = <fun> # let zero x = 0;; val zero : a -> int = <fun> POLIMORFISMO # let sort (x,y) = if x<y then (x,y) else (y,x);; val sort : a * a -> a * a = <fun> fst, zero, sort sono funzioni polimorfe: hanno più tipi.

31 Il processo di INFERENZA DEI TIPI ha lasciato alcuni tipi completamente non ristretti: a e b possono essere qualsiasi: let first (x,y) = x first(x,y) se x: α e y: β, dominio di first: α β = x codominio di first: α let sort (x,y) = if x<y then (x,y) else (y,x) sort(x,y) se x: α e y: β, dominio di sort: α β = if x < y... α = β (x,y): α α (y,x): α α... then (x,y)... codominio di sort: α α else (y,x) OK: il valore della funzione nel caso then e nel caso else è lo stesso 31

32 32 Schemi di tipo e istanze a * b -> a è uno schema di tipo: indica un insieme infinito di tipi, tutti quelli della forma T1 * T2 -> T1 Ogni tipo che si ottiene sostituendo a con un tipo e b con un tipo è un istanza di a * b -> a int * bool -> int int * int -> int (int * bool) * (int -> bool) -> (int * bool) ( a * b) * c -> ( a * b) a -> int è uno schema di tipo: indica un insieme infinito di tipi, tutti quelli della forma T -> int Istanze di a -> int: int * bool -> int a * b -> int ( a -> b) -> int

33 33 a * a -> a * a è uno schema di tipo: indica un insieme infinito di tipi, tutti quelli della forma T * T -> T * T Istanze di a * a -> a * a int * int -> int * int bool * bool -> bool * bool All interno di un espressione, il tipo di un oggetto polimorfo viene istanziato: Il tipo dell occorrenza di first nell espressione first (8,true) è int * bool -> int Il tipo dell occorrenza di first nell espressione first (double, pippo ) è (int -> int) * string -> (int -> int)

34 34 Occorrenze multiple di un oggetto polimorfo Un oggetto polimorfo può avere occorrenze con tipi diversi nella stessa espressione: (first (first,8)) (true,10) Notiamo che il valore di (first (first,8)) è (la seconda occorrenza di) first Questo valore viene applicato a (true,10): bool * int Quindi il tipo della seconda occorrenza di first è bool * int -> bool La prima occorrenza di first si applica a (first,8), che è dunque di tipo (bool * int -> bool) * int Quindi il tipo della prima occorrenza di first è (bool * int -> bool) * int -> (bool * int -> bool)

35 Le funzioni sono oggetti di prima classe: possono essere componenti di una struttura dati, o costituire l argomento o il valore di altre funzioni. I linguaggi funzionali consentono l uso di funzioni di ordine superiore, cioè funzioni che prendono funzioni come argomento o riportano funzioni come valore, in modo assolutamente generale. Funzioni di ordine superiore # let comp (f,g) = function x -> f(g x);; val comp : ( a -> b) * ( c -> a) -> c -> b = <fun> # let double n = n*2;; val double : int -> int = <fun> # let treble n = n*3;; val treble : int -> int = <fun> # let sixtimes = comp(double,treble);; val sixtimes : int -> int = <fun> # sixtimes 8;; - : int = 48 35

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

let quorem pair = ((fst pair)/(snd pair), (fst pair) mod (snd pair)) 1 PATTERN Consideriamo la definizione della funzione quorem: (* quorem: int * int -> int * int *) (* quorem(n,m) = quoziente e resto della divisione di n per m *) let quorem (n,m) = (n/m, n mod m) Per

Dettagli

Definizioni ricorsive

Definizioni ricorsive Definizioni ricorsive Caso base : (* fact: int -> int *) let rec fact n = if n=0 then 1 else n * fact (n-1) n! = 1 2... n 1 n = (n 1)! n = n (n 1)! 0! = 1 Il fattoriale è definito in termini di se stesso,

Dettagli

Programmazione Caratteri, stringhe, tipo unit ed ennuple

Programmazione Caratteri, stringhe, tipo unit ed ennuple Programmazione Caratteri, stringhe, tipo unit ed ennuple Samuel Rota Bulò DAIS Università Ca Foscari di Venezia. Outline Caratteri e stringhe Booleani Il tipo unit Ennuple I caratteri Il tipo char rappresenta

Dettagli

Programmazione Funzionale

Programmazione Funzionale Introduzione alla programmazione in un Programmazione Funzionale linguaggio funzionale Objective Caml di alto livello: un programma è una funzione; di tipo dichiarativo: il programmatore specifica che

Dettagli

Programmazione Funzionale

Programmazione Funzionale 1 Introduzione alla programmazione in un Programmazione Funzionale linguaggio funzionale Objective Caml di alto livello: un programma è una funzione; di tipo dichiarativo: il programmatore specifica che

Dettagli

Programmazione Funzionale

Programmazione Funzionale 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

Dettagli

La principale modalità di calcolo è l applicazione di funzioni

La principale modalità di calcolo è l applicazione di funzioni 1 La principale modalità di calcolo è l applicazione di funzioni Nei linguaggi funzionali puri non esistono strutture di controllo predefinite per la realizzazione di cicli quali for, while, repeat Un

Dettagli

Definizione di nuovi tipi

Definizione di nuovi tipi Definizione di nuovi tipi Un tipo è un insieme di valori. Per definire un nuovo tipo occorre specificare: 1 un nome per il tipo 2 come costruire i valori del tipo, cioè quali sono i costruttori del tipo.

Dettagli

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave

Dettagli

Tipi di dato primitivi

Tipi di dato primitivi Tipi di dato primitivi (oltre int) Tipi di dato primitivi int (già trattati) Valori logici (ricordati) Valori reali Valori carattere Informatica - A.A. 2009/2010 - Tipi di dato 2 1 Valori logici (il caso

Dettagli

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

DEFINIZIONE DI NUOVI TIPI Un tipo è un insieme di valori. 1 DEFINIZIONE DI NUOVI TIPI Un tipo è un insieme di valori. Per definire un nuovo tipo occorre specificare: 1. un nome per il tipo 2. come costruire i valori del tipo, cioè quali sono i costruttori del

Dettagli

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout

Dettagli

Espressioni aritmetiche

Espressioni aritmetiche Espressioni aritmetiche Consideriamo espressioni costruite a partire da variabili e costanti intere mediante applicazione delle operazioni di somma, sottrazione, prodotto e divisione (intera). Ad esempio:

Dettagli

Programmazione in Java (I modulo)

Programmazione in Java (I modulo) Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto

Dettagli

Indice. Prefazione. 3 Oggetti e Java 53

Indice. Prefazione. 3 Oggetti e Java 53 Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware

Dettagli

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso Unità Didattica 2 Linguaggio C Espressioni, Operatori e Strutture linguistiche per il controllo del flusso 1 Espressioni e assegnazioni Le espressioni sono definite dalla grammatica: espressione = variabile

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 5 Alberto Ceselli alberto.ceselli@unimi.it Università degli Studi di Milano 12 Marzo 2013 Le funzioni sono oggetti di prima classe in Scheme In Scheme le funzioni

Dettagli

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?

Dettagli

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

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C Tipi predefiniti e operatori Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 RICHIAMI char 8 bit Valori interi

Dettagli

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

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

Tecniche per risolvere problemi: riduzione a sottoproblemi più semplici. Ricorsione Tecniche per risolvere problemi: riduzione a sottoproblemi più semplici Ricorsione 1 Tecniche per risolvere problemi: riduzione a sottoproblemi più semplici Problema: dati tre numeri interi, calcolarne

Dettagli

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: Tipi di dato Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: esprimere in modo sintetico la loro rappresentazione in memoria, e un insieme di operazioni ammissibili permettere

Dettagli

Espressioni. Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica!

Espressioni. Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica! Espressioni Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica! Valutazione automatica di expr aritmetiche = obiettivo primario dei primi LP

Dettagli

Silvia Crafa

Silvia Crafa Introduzione ai Sistemi di Tipi Silvia Crafa silvia@dsi.unive.it Come nascono i tipi in informatica Cos è un tipo? Perché servono i tipi nei linguaggi di programmazione? Vediamo come nascono i tipi partendo

Dettagli

Concetti base programmazione. Antonio Gallo

Concetti base programmazione. Antonio Gallo Concetti base programmazione Antonio Gallo info@laboratoriolibero.com Programma Insieme di istruzioni: Strtturato Ad oggetti Strutturato Ha una struttura più lineare Basato sui concetti di sequenza, selezione,

Dettagli

LINGUAGGI DI PROGRAMMAZIONE!

LINGUAGGI DI PROGRAMMAZIONE! LINGUAGGI DI PROGRAMMAZIONE! Il potere espressivo di un linguaggio è! caratterizzato da:! quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente)! quali istruzioni

Dettagli

Indice. Ordine di valutazione. Espressioni in C++ Le espressioni in C++ (CAP 4) Alberto Garfagnini e Marco Mazzocco A.A. 2014/ * 20 / 2

Indice. Ordine di valutazione. Espressioni in C++ Le espressioni in C++ (CAP 4) Alberto Garfagnini e Marco Mazzocco A.A. 2014/ * 20 / 2 Le espressioni in C++ (CAP 4) Indice Le espressioni in C++ : precedenze e associatività degli operatori Alberto Garfagnini e Marco Mazzocco Università degli studi di Padova A.A. 2014/2015 gli operatori

Dettagli

Programmazione con Java

Programmazione con Java Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:

Dettagli

1 Il Paradigma Imperativo

1 Il Paradigma Imperativo 1 Il Paradigma Imperativo 1.1 Imp : un semplice linguaggio imperativo Abbiamo visto in Fun un meccanismo eager per la valutazione dei parametri di una funzione ed un meccanismo lazy. Una situazione analoga

Dettagli

Il linguaggio C. Notate che...

Il linguaggio C. Notate che... Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione

Dettagli

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: 1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente

Dettagli

28/02/2014 Copyright V. Moriggia

28/02/2014 Copyright V. Moriggia Informatica per la Finanza 3 Le variabili in VBA Altri I/O 28/02/2014 Copyright 2005-2007 V. Moriggia 1 28/02/2014 3.2 Le variabili in VBA V. Moriggia 1 28/02/2014 3.3 Dichiarazione di variabili in VBA

Dettagli

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

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Sintassi e Semantica: Convenzioni di Stile versione 1.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi

Dettagli

Esercizi Programmazione I

Esercizi Programmazione I Esercizi Programmazione I 9 Novembre 201 Esercizio 1 Valutare e dare il tipo delle seguenti espressioni condizionali. 1 char a= a, b= b ; // a ha v a l o r e decimale 97 2 i n t i= 1, j= 2 ; 3 double x=

Dettagli

Programmazione in Python. Moreno Marzolla

Programmazione in Python. Moreno Marzolla Programmazione in Python Moreno Marzolla http://www.moreno.marzolla.name/ Copyright 2011, Moreno Marzolla (http://www.moreno.marzolla.name/teaching/labinf2011/) This work is licensed under the Creative

Dettagli

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi Basi della programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Il concetto di variabile Uso delle variabili Dichiarazione Assegnamento Visualizzazione

Dettagli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Costanti e Variabili

Costanti e Variabili Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli

Dettagli

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 11 Array A. Miola Dicembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Array 1 Contenuti Il problema degli studenti da promuovere

Dettagli

Informatica Generale Andrea Corradini Ancora sui linguaggi di programmazione

Informatica Generale Andrea Corradini Ancora sui linguaggi di programmazione Informatica Generale Andrea Corradini 18 - Ancora sui linguaggi di programmazione Sommario Principali componenti di un linguaggio di programmazione Variabili e costanti Strutture dati: array e record Strutture

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 3 Istruzioni di Assegnazione G. Mecca M. Samela Università della Basilicata Elementi di Base >> Sommario Sommario Introduzione Istruzioni

Dettagli

Caratteristiche di un linguaggio ad alto livello

Caratteristiche di un linguaggio ad alto livello Caratteristiche di un linguaggio ad alto livello Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono

Dettagli

IL LINGUAGGIO C TIPI DI DATO

IL LINGUAGGIO C TIPI DI DATO IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura fisica di ogni elaboratore è intrinsecamente capace di trattare vari domini di dati, detti tipi primitivi dominio dei

Dettagli

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

Espressioni ed operatori in C

Espressioni ed operatori in C Espressioni ed operatori in C Espressioni Il C è un linguaggio basato su espressioni Una espressione è una notazione che denota un valore mediante un processo di valutazione Una espressione può essere

Dettagli

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

Introduzione alla programmazione in C++

Introduzione alla programmazione in C++ Introduzione alla programmazione in C++ Fondamenti di Informatica Roberto BASILI Marzo, 2007 La Programmazione Programmare significa: Determinare la natura del problema (analisi) Definire una decomposizione

Dettagli

Il sistema dei tipi in ML. cenni

Il sistema dei tipi in ML. cenni Il sistema dei tipi in ML cenni Inferenza tipi ML - val f = fn x => x+1; val f = fn : int -> int - f 2; val it = 3 : int - - fun f(x) = x+1; val f = fn : int -> int - f 2; val it = 3 : int - - val g =

Dettagli

Tipi di dato strutturati: Array

Tipi di dato strutturati: Array Tipi di dato strutturati: Array I dati visti finora sono: numeri (interi o razionali), booleani le stringhe (sequenze di caratteri) ma i dati manipolati nelle applicazioni reali sono spesso complessi (o

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso

Dettagli

Elementi di C++ di base

Elementi di C++ di base Elementi di C++ di base Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 10 ottobre, 2001 Gino Perna Esempi di semplici programmi in C++ Il programma più semplice consiste

Dettagli

Linguaggio C: Espressioni

Linguaggio C: Espressioni Linguaggio C: Espressioni Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 Ringraziamenti prof. Mirko Viroli, Università

Dettagli

Introduzione a Java. Riferimenti

Introduzione a Java. Riferimenti Introduzione a Java Si ringraziano Massimiliano Curcio e Matteo Giacalone 1: Introduction 1 Riferimenti! Java tutorial: http://java.sun.com/docs/books/tutorial/! Il Java tutorial è parte di una più ampia

Dettagli

Confronti, equals. Operatori Relazionali, confronti Confronti fra Oggetti, ridefinizione di equals. Laboratorio di Programmazione - Luca Tesei

Confronti, equals. Operatori Relazionali, confronti Confronti fra Oggetti, ridefinizione di equals. Laboratorio di Programmazione - Luca Tesei Confronti, equals Operatori Relazionali, confronti Confronti fra Oggetti, ridefinizione di equals 1 Operatori relazionali All interno delle parentesi tonde della condizione dell if è possibile, come abbiamo

Dettagli

Prima lezione. Le funzioni (subroutines)

Prima lezione. Le funzioni (subroutines) Prima lezione Le funzioni (subroutines) Motivazioni Un problema può dirsi risolto quando tutti i sottoproblemi individuati dal processo di scomposizione possono essere risolti mediante azioni primitive

Dettagli

I numeri razionali. Specifica: la sintassi. Specifica: la semantica

I numeri razionali. Specifica: la sintassi. Specifica: la semantica Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi Che cos è un tipo di dato? Tutti i linguaggi di programmazione tipati forniscono tipi ed operatori predefiniti

Dettagli

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Descrizione delle operazioni di calcolo. Espressioni costanti semplici Descrizione delle operazioni di calcolo Come abbiamo detto l interprete è in grado di generare nuovi valori a partire da valori precedentemente acquisiti o generati. Il linguaggio di programmazione permette

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E04 Esercizi sui problemi di ordinamento C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Algoritmi di Ordinamento

Dettagli

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi Di seguito vengono riportate una serie di domande che possono essere poste durante la prova formale del corso. Le seguenti domande non sono da ritenersi esaustive ma esemplificative. 1. Architettura

Dettagli

Informatica 3. Informatica 3. LEZIONE 5: Tipi di dati. Lezione 5 - Modulo 1. Tipi predefiniti. Introduzione

Informatica 3. Informatica 3. LEZIONE 5: Tipi di dati. Lezione 5 - Modulo 1. Tipi predefiniti. Introduzione Informatica 3 Informatica 3 LEZIONE 5: Tipi di dati Lezione 5 - Modulo 1 Modulo 1: Tipi e costruttori di tipo Modulo 2: Tipi definiti dall utente e tipi di dati astratti Modulo 3: Sistemi di tipi Tipi

Dettagli

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

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi.. 2010/2011 Sommario Conversione di tipo:casting Tipo enumerativo lgebra Booleana Esercizi Conversione di tipo:casting Il casting o conversione di tipo avviene

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 3 Istruzioni di Assegnazione versione 2.0 Questolavoroè concessoin uso secondoi termini di unalicenzacreative Commons (vedi ultima pagina)

Dettagli

Programmazione Funzionale I. (Francesco Galgani -

Programmazione Funzionale I. (Francesco Galgani - Programmazione Funzionale I (Francesco Galgani - www.galgani.it) Indice Capitolo 1. Introduzione 4 1.1. La programmazione funzionale 4 1.2. Tratti salienti della programmazione funzionale 5 1.3. Installazione

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3) Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di

Dettagli

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi

Dettagli

Un elaboratore è un manipolatore di simboli (segni) intrinsecamente capace di trattare vari. caratteri char caratteri ASCII unsigned char

Un elaboratore è un manipolatore di simboli (segni) intrinsecamente capace di trattare vari. caratteri char caratteri ASCII unsigned char IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura tt fisica i di ogni elaboratore è intrinsecamente capace di trattare vari domini i di dati, detti tipi i primitivi iti

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione II Tatiana Zolo zolo@cs.unipr.it 1 IL PROGRAMMA C++ Istruzioni (espressioni terminate da ; ) istruzioni di dichiarazione (es. int x = 0;); istruzioni di assegnamento

Dettagli

Introduzione a Matlab

Introduzione a Matlab INFORMATICA B Ingegneria Elettrica Introduzione a Matlab Introduzione a Matlab Matlab (MATrix LABoratory) è uno strumento per il calcolo scientifico ed ingegneristico Matlab facilita lo sviluppo di programmi

Dettagli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER

Dettagli

Programmazione web lato client con JavaScript. Marco Camurri 1

Programmazione web lato client con JavaScript. Marco Camurri 1 Programmazione web lato client con JavaScript Marco Camurri 1 JavaScript E' un LINGUAGGIO DI PROGRAMMAZIONE che consente di inserire codice in una pagina web Sintassi simile a Java (e al C), ma NON E'

Dettagli

Strategie di programmazione

Strategie di programmazione Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie

Dettagli

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari 7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa

Dettagli

Linguaggi di Programmazione avanzati Linguaggi funzionali

Linguaggi di Programmazione avanzati Linguaggi funzionali Linguaggi di Programmazione avanzati Linguaggi funzionali Simone Martini Dipartimento di Scienze dell Informazione Università di Bologna Italy A.a. 2005-2006 1 / 45 Outline Il paradigma funzionale puro

Dettagli

Classi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array

Classi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array Classi e array Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array Si vuole definire una classe Polinomio per la rappresentazione di polinomi a

Dettagli

Programmazione 2. Introduzione al corso

Programmazione 2. Introduzione al corso Programmazione 2 Introduzione al corso Informazioni generali Sito del corso http://matematica.unipv.it/gualandi/programmazione2/ Orario lezioni: Martedi 9h00/11h00 Aula C8 o Lab. Mate Giovedi 14h00/15h00

Dettagli

Laboratorio di Informatica Lezione 1

Laboratorio di Informatica Lezione 1 Laboratorio di Informatica Lezione 1 Cristian Consonni 16 settembre 2015 Cristian Consonni Laboratorio di Informatica, Lezione 1 1 / 50 Outline 1 Intro Informazioni generali 2 Java Cos è Java Altri linguaggi

Dettagli

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica

Dettagli

Capitolo 2 Introduzione alla programmazione in C

Capitolo 2 Introduzione alla programmazione in C Capitolo 2 Introduzione alla programmazione in C Introduzione Un semplice programma C: Stampa di una linea di testo Un altro semplice programma C: Sommare due interi Concetti sulla Memoria Aritmetica in

Dettagli

Programmazione con il linguaggio LibreOffice Basic

Programmazione con il linguaggio LibreOffice Basic Programmazione con il linguaggio LibreOffice Basic L ambiente di programmazione Il software LibreOffice possiede un ambiente di programmazione in linguaggio Basic, che consente di creare procedure software

Dettagli

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

TRADUZIONE STATE AND TRANSITION DIAGRAM UML E CORRETTEZZA DEI PROGRAMMI IN TLA+ TRADUZIONE DI STATE AND TRANSITION DIAGRAM UML E CORRETTEZZA DEI PROGRAMMI IN TLA+ a cura di: Eleonora Antonelli Simone Maletta Stefano Novara INDICE 1. Grammatica di TLA+ a cura di Eleonora Antonelli

Dettagli

Laboratorio di Python

Laboratorio di Python , Input da tastiera, Iterazione incondizionata 7 marzo 2014 Sommario 1 2 3 Outline 1 2 3 Definizione di funzione import modulo Si importa il modulo specificato def nome_f(par 1,, par n ) : Si definiscono

Dettagli

Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73

Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73 Capitolo 9 Tipi enumerativi, tipi generici e interfacce c 2005 Pearson Education Italia Capitolo 9-1 / 73 Sommario: Tipi enumerativi, tipi generici e interfacce 1 Definizione di tipi enumerativi La classe

Dettagli

Logica booleana, Costrutto IF

Logica booleana, Costrutto IF Logica booleana, Costrutto IF Informatica@SEFA 207/208 - Lezione 4 Massimo Lauria http://massimolauria.net/courses/infosefa207/ Mercoledì, 4 Ottobre 207 La logica booleana 2

Dettagli

Sipser, Capitolo 0. Alfabeti, Stringhe, Linguaggi

Sipser, Capitolo 0. Alfabeti, Stringhe, Linguaggi Sipser, Capitolo 0 Alfabeti, Stringhe, Linguaggi Def. Un insieme è una collezione non ordinata di oggetti o elementi Gli insiemi sono scritti tra { } Gli elementi sono inseriti tra le parentesi Insiemi

Dettagli

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)

Dettagli

Laboratorio di Python

Laboratorio di Python Istruzione di condizione, Input da tastiera, Università di Bologna 6 e 8 marzo 2013 Sommario 1 Tipi di errore e Debugging 2 3 4 Outline Tipi di errore e Debugging 1 Tipi di errore e Debugging 2 3 4 Esercizio

Dettagli

Lezione 7: La Formalizzazione degli Algoritmi - Strutture di Controllo e Selettive La Programmazione Strutturata (3 p) Giovedì 21 Ottobre 2010

Lezione 7: La Formalizzazione degli Algoritmi - Strutture di Controllo e Selettive La Programmazione Strutturata (3 p) Giovedì 21 Ottobre 2010 Università di Salerno Corso di FONDAMENTI DI INFORMATICA Corso di Laurea Ingegneria Corso B Docente : Ing. Anno Accademico 2010-2011 Lezione 7: La Formalizzazione degli Algoritmi - Strutture di Controllo

Dettagli

Ricerca e ordinamento su array di oggetti. Corso di Programmazione 2 Esercitazione 5

Ricerca e ordinamento su array di oggetti. Corso di Programmazione 2 Esercitazione 5 Ricerca e ordinamento su array di oggetti Corso di Programmazione 2 Esercitazione 5 Sommario Ricercare in array di oggetti Interfaccia comparable Ordinare array di oggetti Problema Come ordinare, ricercare

Dettagli

VBA Principali Comandi

VBA Principali Comandi VBA Principali Comandi Sintassi Significato Esempio Dim As Dichiarazione Dim x As Integer di una variabile Dim , , ,.,

Dettagli

Specifica: la sintassi. Specifica: la semantica. Specifica: la semantica

Specifica: la sintassi. Specifica: la semantica. Specifica: la semantica Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi Che cos è un tipo di dato? Tutti i linguaggi di programmazione tipati forniscono tipi ed operatori predefiniti

Dettagli

Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi

Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147-00161 Roma Università degli Studi La Sapienza Fondamenti di

Dettagli

Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri

Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri

Dettagli

14 - Metodi e Costruttori

14 - Metodi e Costruttori 14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli