Programmazione Funzionale

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Programmazione Funzionale"

Transcript

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 cosa calcola la funzione, piuttosto che come. Materiale didattico M. Cialdea Mayer, C. Limongelli. Introduzione alla Programmazione Funzionale. Esculapio. The Objective Caml system. Documentation and User s Guide. Introduzione alla logica proposizionale. Dispense (per lo sviluppo di un applicazione). Software necessario: Compilatore di OCaml Eventualmente XEmacs: un editor configurabile (se si utilizza Windows) 1

2 Objective Caml Linguaggio della famiglia ML sviluppato e distribuito dall INRIA (Francia) dal 1984 Disponibile sul sito nelle versioni per Linux, Windows, MacOS. Supporta diversi stili di programmazione: funzionale, imperativo, a oggetti. Istallazione di OCaml e programmazione in ambiente Emacs: Appendice C del libro, o su lambda/ocaml/emacs/leggimi In alternativa all uso di XEmacs: Camelia, un ambiente di sviluppo per OCaml (Mac e Windows). Entro 3 giorni: OCaml funzionante 2

3 Paradigmi di programmazione Esistono diverse tipologie di linguaggi di programmazione Sotto ogni linguaggio c è un modello di calcolo, che determina le operazioni eseguibili una classe di linguaggi uno stile di programmazione ( paradigma di programmazione) Modelli astratti e modelli rappresentati dall hardware 3

4 Esempio PROBLEMA: Dati due numeri naturali m e n maggiori di 0, trovare il massimo comun divisore (gcd) di m e n Si basa sulle seguenti proprietà: gcd(n, m) = ALGORITMO DI EUCLIDE n se n = m gcd(n m, m) se n > m gcd(n, m n) se n < m 4

5 Linguaggi imperativi Il modello di calcolo è basato sull hardware (architettura di Von Neumann) INPUT MEMORIA OUTPUT Elementi di base nei linguaggi imperativi: variabili (imitano celle di memoria) assegnazione (costrutto primitivo) Programmare = pianificare il flusso di informazioni Il modello di calcolo determina uno stile di programmazione ALGORITMO 1 Per calcolare gcd(n, m): Finché m n esegui le seguenti operazioni: se n > m, allora n n m, altrimenti m m n Riporta il valore di n Nel linguaggio C: int gcd (int n, int m) { while (n!= m) if (n>m) n=n-m; else m=m-n; return n; } 5

6 Linguaggi imperativi (II) La programmazione imperativa è basata su COMANDI, che operano sulla MEMORIA (stato del programma). Per capire il programma (e provarne la correttezza) occorre tenere traccia delle modifiche dello stato. Correttezza di un programma Un programma per risolvere il problema P è corretto se produce, per ogni suo input X un output Y tale che tra X e Y vale la relazione specificata da P 6

7 Esempio: calcolo del fattoriale di un numero n! = n 1 n ALGORITMO F1 Per calcolare fact(n): Inizializzare f = 1 Finché n > 1, esegui le seguenti operazioni: f f n n n 1 Riporta f n=4 f=1 n>1: f = 1*4 = 4 n = 4-1 = 3 n>1: f = 4*3 = 12 n = 3-1 = 2 n>1: f = 12*2 = 24 n = 2-1 = 1 n=1: return 24 Esecuzione per n=4 int fact (int n) { int f; f=1; while (n > 1) { f=f*n; n=n-1; } return f; } 7

8 LINGUAGGI DICHIARATIVI Un programma è più vicino alla descrizione di che cosa si deve calcolare, piuttosto che a come calcolare. Linguaggi di programmazione logica Linguaggi di programmazione funzionale 8

9 PROGRAMMAZIONE FUNZIONALE Un programma è un operazione che associa un input con un output UN PROGRAMMA È UNA FUNZIONE Strutture di controllo: applicazione di una funzione a un argomento composizione di funzioni: argomento f g valore I costrutti di base sono ESPRESSIONI, non comandi Le espressioni sono costruite a partire da espressioni semplici (COSTANTI), mediante APPLICAZIONE di operazioni Si calcola riducendo un espressione a un altra più semplice, fino a ottenere un VALORE (un espressione non ulteriormente semplificabile) (6 + 3) (8 2) 9 (8 2) VALUTAZIONE Le espressioni hanno un valore Non ci sono effetti collaterali (6 + 3) (8 2) viene valutato, ma il valore non è messo da nessuna parte 9

10 Esempio: calcolo del gcd gcd(n, m) = n se n = m gcd(n m, m) se n > m gcd(n, m n) se n < m ALGORITMO 2 Per calcolare gcd(n, m): Se n = m, allora riporta n, altrimenti se n > m, allora riporta gcd(n m, m), altrimenti riporta gcd(n, m n) In OCaml: let rec gcd(m,n) = if n=m then n else if n>m then gcd(n-m,m) else gcd(n,m-n) 10

11 Esempio: calcolo del fattoriale n! = n 1 n = (n 1)! n Per calcolare fact(n): Se n = 0 allora riporta 1 altrimenti riporta n f act(n 1) In Ocaml: let rec fact n = if n=0 then 1 else n * fact(n-1) ALGORITMO F2 La ricorsione è il costrutto di controllo fondamentale 11

12 Linguaggi funzionali La principale modalità di calcolo è l applicazione di funzioni Il calcolo procede valutando espressioni. Non ci sono effetti collaterali. Un programma è una collezione di dichiarazioni (di variabili, funzioni, tipi,...). Le funzioni sono oggetti di prima classe: possono essere componenti di una struttura dati, o costituire l argomento o il valore di altre funzioni. let sort (order,lst) =... let comp (f,g) =... 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. Nei linguaggi funzionali puri non esistono strutture di controllo predefinite per la realizzazione di cicli quali for, while, repeat, ma il principale meccanismo di controllo è la ricorsione. ML è un linguaggio interattivo ML è un linguaggio a scopo statico: determina a tempo di compilazione il valore delle variabili in una dichiarazione. ML è un linguaggio fortemente tipato: ogni espressione in ML ha un tipo che può essere determinato a tempo di compilazione 12

13 ML ha un meccanismo di inferenza di tipi che gli consente di dedurre qual è il tipo di un espressione senza bisogno di dichiarazioni esplicite. ML ha un sistema di tipi polimorfo: una funzione può accettare argomenti di vari tipi. let first (x,y) = x let Id (x) = x Tipi di dati polimorfi: in molti linguaggi: stack di interi, stack di reali,... in ML: stack of α ML ha un meccanismo per la gestione di errori ML ha un potente sistema di moduli 13

14 Perché un FPL? Perché Ocaml? EFFICIENZA: varia da migliore del C a un ordine di grandezza peggiore. PRODUTTIVITÀ: da un ordine di grandezza maggiore a un fattore 4 (il codice è più corto, più veloce da scrivere, più facile da mantenere). Esempi di applicazioni in ambito non accademico: in Ericsson (Erlang) in HP (verifica di protocolli di arbitraggio) nel dipartimento della difesa di Sydney applicazioni a data bases gestione dei voli tra gli areoporti di Parigi di Orly e Roissy... 14

15 FUNZIONI F DOMINIO CODOMINIO F associa a ogni elemento del DOMINIO un elemento del CODOMINIO Il TIPO di F è: DOMINIO CODOMINIO 15

16 COS È UN TIPO? Un tipo è un insieme di oggetti (VALORI). Se A è un tipo e x A, diciamo che x è di tipo A x : A Ad esempio: 3 : IN (2, 5) : IN IN (1, 2, 3) : IN IN IN, o anche: (1, 2, 3) : IN 3 Il tipo A B è l insieme di tutte le funzioni che hanno A come dominio e B come codominio. 16

17 ESEMPIO 1 F FORME COLORI F : FORME COLORI F si applica a un elemento di FORME (ARGOMENTO DELLA FUNZIONE) e RIPORTA un elemento di COLORI come VALORE 17

18 ESEMPIO 2 Se square è la funzione che associa a ogni numero naturale n n 2 Nella notazione del λ-calcolo: square : IN IN square(0) = 0 square(1) = 1 square(2) = 4 square(3) = 9 square(4) = 16 square(5) = square = λn.n 2 square è quella funzione che, applicata a n, riporta n 2 Nella notazione di OCaml (o quasi): square = function n -> n 2 18

19 Una funzione F è una relazione particolare: Dal punto di vista ESTENSIONALE un insieme di coppie {(x 1, y 1 ),..., (x i, y i ),...} (l estensione di F) tale che ogni x i appartiene al dominio della funzione ogni y i appartiene al codominio della funzione Per ogni x del dominio: se (x, y) e (x, y ) appartengono all estensione di F, allora y = y F(x) = y: la coppia (x, y) appartiene all estensione di F Estensione di square: {(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25),...} 19

20 FUNZIONI A PIÙ ARGOMENTI Sia times la funzione che associa (n, m) n m per ogni n, m IN. times = λ(n, m).n m oppure: times = function (n,m) -> n*m Qual è il tipo di times? Il suo codominio è IN Il suo dominio è l insieme {(n, m) n, m IN} Prodotto cartesiano di IN per se stesso: IN IN times : IN IN IN Quando si applica times a (n, m), diciamo che n è il primo argomento, m è il secondo argomento. In realtà times ha un unico argomento: una coppia di numeri 20

21 Se A = {0, 1, 2} e B = {rosso, verde}, Quindi: e PRODOTTO CARTESIANO A B = {(0, rosso), (0, verde), (1, rosso), (1, verde), (2, rosso), (2, verde)} IN IN = {(0, 0), (0, 1), (0, 2), (0, 3),... (1, 0), (1, 1), (1, 2), (1, 3),... (2, 0), (2, 1), (2, 2), (2, 3),......} 21

22 Estensione di una funzione a due argomenti L ESTENSIONE di times è un insieme di TRIPLE: { (0, 0, 0), (0, 1, 1), (0, 2, 2),... (1, 0, 1), (1, 1, 2), (1, 2, 3), (1, 3, 4),... (2, 0, 2), (2, 1, 3), (2, 2, 4), (2, 3, 5),......} Funzioni a n argomenti Se una funzione si applica a n argomenti, appartenenti, rispettivamente agli insiemi A 1,...,A n e riporta un valore nell insieme B, il suo tipo è A 1 A 2... A n B Il suo dominio è un insieme di tuple di n elementi: {..., (a 1, a 2,..., a n ),...} La sua estensione è un insieme di tuple, ciascuna delle quali ha n + 1 elementi: {..., (a 1, a 2,..., a n, b),...} 22

23 Sia quorem la funzione che riporta FUNZIONI CHE RIPORTANO COPPIE COME VALORI applicata a due numeri naturali n e m il quoziente intero e il resto della divisione di n per m quorem = λ(n, m).(n/m, n mod m) quorem = function (n,m) -> (n/m,n mod m) quorem(3, 2) = (1, 1) quorem(3, 3) = (1, 0) quorem(7, 2) = (3, 1) quorem(15, 6) = (2, 3) quorem : IN IN IN IN L estensione di quorem è un insieme di triple: {... (3, 2, (1, 1)),... (3, 3, (1, 0)), (7, 2, (3, 1)),... (15, 6, (2, 3)),,, } ATTENZIONE: qual è il valore di quorem(1, 0)? quorem non è definita per l argomento (1, 0) 23

24 FUNZIONI TOTALI: sono definite per ogni elemento del dominio Per ogni x nel dominio esiste una (ed unica) coppia (x, y) nell estensione di F FUNZIONI PARZIALI: possono essere indefinite per alcuni elementi del dominio Possono esistere elementi x del dominio per i quali non esiste alcuna coppia (x, y) nell estensione di F Una funzione parziale è ovviamente totale se si restringe opportunamente il suo dominio. è totale quorem : IN (IN {0}) IN IN 24

25 FUNZIONI POLIMORFE Consideriamo la funzione first, tale che first(x, y) = x first = λ(x, y).x first = function (x,y) -> x x e y potrebbero essere di qualunque tipo. f irst(0, 1) = 0 f irst(quadrato, rosso) = quadrato first(0, rosso) = 0 first(π, 0) = π first(π, 1.5) = π... first è di tipo IN IN IN FORME COLORI FORME IN COLORI IN IR IN IR IR IR IR... first ha molti tipi, tutti quelli della forma: TIPO 1 TIPO 2 TIPO 1 first è una funzione polimorfa. Possiamo identificare il suo tipo più generale utilizzando variabili di tipo first : α β α Ogni tipo di first è un istanza del suo tipo più generale. 25

26 APPLICAZIONE di funzioni x è l argomento della funzione y è il valore dell applicazione F(x) F(x) = y Se F : A B x : A (cioè x A) allora F(x) : B (cioè F(x) B) 26

27 IL CALCOLO COME RIDUZIONE Calcolare significa ridurre un espressione a un VALORE Un valore è un espressione non ulteriormente riducibile Un passo di riduzione: (λx.n)m N[M/x] Consideriamo una funzione: f = function x E x è il parametro formale della funzione E è il corpo della funzione Quando si applica la funzione a un argomento: f(m) (o semplicemente f M) M è il parametro attuale della funzione l espressione f(m) si semplifica (si avvicina a un valore) in E[M/x] che è l espressione che si ottiene da E sostituendo tutte le occorrenze del parametro formale x con il parametro attuale M Ad esempio: (function n sum(3, n)) 5 sum(3, 5) 27

28 Calcolo del valore di un espressione mediante una sequenza di riduzioni: esempi square 5 (function n n 2 ) valore di square 5 f irst(15, 20) (f unction(n, m) n)(15, 20) 15 valore di first(15, 20) quorem(square(5), f irst(15, 20)) quorem((function n n 2 )5, (function(n, m) n)(15, 20))... quorem(25, 15) (f unction(n, m) (n/m, n mod m))(25, 15) (25/15, 25 mod 15) (1, 10) valore di quorem(square(5), f irst(15, 20)) 28

29 COMPOSIZIONE DI FUNZIONI DOMINIO DI F CODOMINIO DI F C DOMINIO DI G COMPOSTA CON F A DOMINIO DI G B CODOMINIO DI G CODOMINIO DI G COMPOSTA CON F Composizione di G con F: G F Se G : A B e F : C A allora G F : C B e, se x : C (G F)(x) = G(F(x)) Quindi (G F)(x) : B 29

30 Sia sommauno = λn.n + 1 di tipo IN IN Esempio square sommauno : IN IN e per ogni n IN: (square sommauno) n = square(sommauno n) = square(n + 1) = (n + 1) 2 30

31 Cos è la composizione di funzioni? È un operazione che prende in ingresso una coppia di funzioni, di tipo, rispettivamente A B e C A, e riporta una funzione di tipo C B La composizione è una funzione Il suo dominio è (A B) (C A) Il suo codominio è C B Quindi è una funzione polimorfa. Il suo tipo più generale è: per ogni tipo A, B e C (α β) (γ α) (γ β) Funzioni che hanno funzioni come argomenti e/o riportano funzioni come valori si dicono FUNZIONI DI ORDINE SUPERIORE 31

32 FUNZIONI DI ORDINE SUPERIORE: ESEMPI Applicazione di funzioni: apply = λ(f, x).f x Tipo di apply: apply(square, 5) square nel corpo della funzione, f è applicato a x, quindi deve essere: Sotto queste ipotesi, fx : β f : α β x : α l argomento della funzione è la coppia (f, x), che è di tipo quindi il tipo della funzione è (α β) α (α β) α β 32

33 Il funzionale costante K Una funzione costante è una funzione che riporta lo stesso valore per tutti i suoi argomenti λx.0 Funzione costante x: λy.x Se x : β, allora λy.x : α β K è una funzione che, applicata a un argomento x, riporta la funzione costante x K = λx.λy.x K0 (λx.λy.x)0 (K0)1 = K0 1 (λx.λy.x)0 1 λy.0 (λy.0)1 0 Tipo di K: dominio: β, codominio: α β K : β (α β) 33

34 plus = λn.λm.n + m Funzioni in forma currificata Funzione che, applicata a n, riporta una funzione che, applicata a m, riporta il valore n + m (plus 3) 5 = plus 3 5 (λn.λm.n + m)3 5 (λm.3 + m) plus, applicata a n IN, riporta una funzione di tipo IN IN plus : IN (IN IN) Che relazione c è tra sum = λ(n, m).n + m e plus? sum : IN IN IN plus : IN (IN IN) e per ogni n, m IN: sum(n, m) = plus n m plus è la forma currificata di sum 34

35 Ogni funzione su tuple si può riscrivere in forma currificata: mult = λ(n, m).n m mult : IN IN IN times = λn.λm.n m times : IN (IN IN) e per ogni n, m IN mult(n, m) = times n m. 35

36 Applicazione parziale di funzioni Le funzioni in forma currificata consumano un argomento alla volta. plus e times possono essere applicate anche solo parzialmente: plus 10 : IN IN è la funzione che somma 10 al suo argomento times 5 : IN IN è la funzione che moltiplica per 5 il suo argomento Qual è il valore delle seguenti espressioni? apply(times 2, 10) (plus 5) (times 3) 5 36

37 Forma currificata di una funzione su tuple In generale, se: f : t 1... t n t f c : t 1 (t 2... (t n t)...) f c è la forma currificata di f se per ogni a 1,..., a n f(a 1,..., a n ) = (((f c a 1 )a 2 )...a n ) Le parentesi possono essere omesse: sia nel tipo di f c (si associa a destra); sia nell applicazione di f c (si associa a sinistra). plus : IN IN IN times : IN IN IN 37

38 Composizione di funzioni (forma currificata) Come possiamo scrivere un espressione λ che denoti l operazione di composizione di funzioni? f g è quella funzione che, applicata a un argomento x (del tipo appropriato), riporta il valore f(g x): f g = λx.f(g x) La composizione è quell operazione che, applicata a una coppia di funzioni (f, g) (di tipi appropriati) riporta la funzione λx.f(g x) = λ(f, g).λx.f(g x) Possiamo anche considerare la composizione in versione currificata: tale che, per ogni funzione f e g: comp : (α β) (γ α) (γ β) comp f g = f g comp = λf.λg.λx.f(g x) 38

39 Esercizi 1. Sia sommadue = λn.n + 2 di tipo IN IN. Qual è il tipo di sommadue square? Calcolare il valore dell espressione (sommadue square)3 2. Si consideri la funzione F = square (plus 5). Qual è il suo tipo? Dare una descrizione di F (la funzione F, applicata a... riporta...). Calcolare il valore dell espressione square (plus 5) 2 3. Si consideri la funzione max, che applicata a una coppia di naturali (n, m), riporta il maggiore tra i due (come caso particolare, max(n, n) = n). Qual è il tipo di max? Qual è il tipo di square max? Che cosa calcola? 4. Si consideri la relazione < sui naturali, di tipo 5. IN IN Bool dove Bool = {T rue, F alse} è l insieme dei valori booleani. Sia greaterthan = λn.λm.m > n. Scrivere il tipo di greaterthan. Che relazione c è tra < e greaterthan? Determinare il tipo dell espressione greaterthan 0. Come si può descrivere la funzione denotata da tale espressione? È possibile applicare l operazione di composizione di funzioni alla coppia di funzioni (max, greaterthan)? 39

40 6. È possibile applicare l operazione di composizione di funzioni alla coppia di funzioni (greaterthan, max)? 7. Qual è il tipo di (greaterthan 100) max? Dare una descrizione di tale funzione ((greaterthan 100) max, applicata a... riporta...). 8. Un predicato è una funzione particolare. Come si può caratterizzare? 40

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 Programmazione Funzionale Linguaggi funzionali http://cialdea.dia.uniroma3.it/teaching/pf/ di alto livello: un programma è una funzione. di tipo dichiarativo: il programmatore specifica che cosa calcola

Dettagli

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

ML è un linguaggio interattivo La modalità interattiva di OCaml Ciclo: LETTURA, VALUTAZIONE, STAMPA. Objective Caml version 3.06 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

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

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione!paradigmi linguistici, costrutti!semantica!implementazione, strutture a tempo di esecuzione 1 Linguaggi di programmazione e astrazione! i linguaggi di programmazione ad alto

Dettagli

Introduzione alla Programmazione Funzionale

Introduzione alla Programmazione Funzionale Introduzione alla Programmazione Funzionale April 27, 2017 Paradigmi di Programmazione Programmi sviluppabili usando diversi paradigmi Imperativo: computazione come modifica di stato Funzionale: computazione

Dettagli

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice, Paolo Bison, FI06, 2007-01-10 p.1 Pseudo codice linguaggio testuale mix di linguaggio naturale ed elementi

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

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

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3 Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2007/08 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

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

Introduzione alla programmazione strutturata

Introduzione alla programmazione strutturata FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Prof. ELIO TOPPANO Facoltà di Ingegneria Università degli Studi di Udine Introduzione alla programmazione strutturata 2001 Pier Luca Montessoro, Elio

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

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali Paolo Bison Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali, Paolo Bison, FI08, 2008-09-29 p.1 Linguaggi procedurali classe

Dettagli

Linguaggi di programmazione. Paradigmi di programmazione

Linguaggi di programmazione. Paradigmi di programmazione Linguaggi di programmazione Paradigmi di programmazione Linguaggi: un po di storia Albori: Macchine a programma memorizzato, Programmi come dati Linguaggio Macchina Assemblatore FORTRAN (calcolo scientifico)

Dettagli

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica FODAMETI DI IFORMATICA Prof. PIER LUCA MOTESSORO Prof. ELIO TOPPAO Facoltà di Ingegneria Università degli Studi di Udine Introduzione alla programmazione strutturata 2001 Pier Luca Montessoro, Elio Toppano

Dettagli

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

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare

Dettagli

Problemi e algoritmi. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)

Problemi e algoritmi. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Problemi e algoritmi Il che cosa e il come Il che cosa ed il come Problema: descrive che cosa si deve calcolare Specifica (di un algoritmo): descrive che cosa calcola un algoritmo Algoritmo: descrive come

Dettagli

Problemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come

Problemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come Problemi e algoritmi Il che cosa e il come Problema: descrive che cosa si deve calcolare Specifica (di un algoritmo): descrive che cosa calcola un algoritmo Algoritmo: descrive come effettuare un calcolo

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,

Dettagli

Introduzione alla Programmazione Funzionale con Objective Caml

Introduzione alla Programmazione Funzionale con Objective Caml Introduzione alla Programmazione Funzionale con Objective Caml Dispense del corso di Programmazione funzionale Marta Cialdea Mayer Anno accademico 2017/2018 Indice 1 Il nucleo di un linguaggio funzionale

Dettagli

Problema: stampa degli interi compresi tra n e m

Problema: stampa degli interi compresi tra n e m Costrutti imperativi Problema: stampa degli interi compresi tra n e m http://caml.inria.fr/pub/docs/manual-ocaml/libref/pervasives.html Output functions on standard output val print_string: string -> unit

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 11 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,

Dettagli

Risoluzione di un problema

Risoluzione di un problema Algoritmi Risoluzione di un problema Descrizione di un problema! Individuazione di un ALGORITMO! Metodo risolutivo (progetto) Introduzione 2 Algoritmo Sequenza finita di mosse che risolve in un tempo finito

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

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 04 Introduzione ai Tipi astratti di dato A. Miola Febbraio 2007 http://www.dia.uniroma3.it/~java/fondinf2/ Introduzione ADT 1

Dettagli

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX Indice Prefazione Gli Autori Ringraziamenti dell Editore La storia del C XVII XXIX XXXI XXXIII PARTE A Capitolo 1 Computer 1 1.1 Hardware e software 2 1.2 Processore 3 1.3 Memorie 5 1.4 Periferiche di

Dettagli

Linguaggi, Traduttori e le Basi della Programmazione

Linguaggi, Traduttori e le Basi della Programmazione Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi

Dettagli

Informatica 3. LEZIONE 9: Introduzione ai linguaggi funzionali. Modulo 1: Introduzione ai linguaggi funzionali Modulo 2: LISP

Informatica 3. LEZIONE 9: Introduzione ai linguaggi funzionali. Modulo 1: Introduzione ai linguaggi funzionali Modulo 2: LISP Informatica 3 LEZIONE 9: Introduzione ai linguaggi funzionali Modulo 1: Introduzione ai linguaggi funzionali Modulo 2: LISP Informatica 3 Lezione 9 - Modulo 1 Introduzione ai linguaggi funzionali Linguaggi

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algebra di Boole Stefano Cagnoni Algebra di Boole L algebra

Dettagli

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) 1 LEZIONE 9 ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) Laboratorio di Informatica per l Educazione A. A. 2014/2015 IN SINTESI (ELABORAZIONE) Con i COMPUTER, le macchine diventano

Dettagli

Sommario. I Uso degli oggetti 39

Sommario. I Uso degli oggetti 39 Questo è l'indice del libro, in cui sono evidenziati i paragrafi corrispondenti agli argomenti trattati nel corso e che costituiranno il programma d'esame. Alcuni argomenti sono stati trattati nelle lezioni

Dettagli

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p.

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p. Pseudo codice Paolo Bison Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova Pseudo codice, Paolo Bison, A.A. 2003-04, 2003-09-30 p.1/38 Pseudo codice linguaggio testuale mix di linguaggio naturale

Dettagli

CENNI MINIMI DI PROGRAMMAZIONE FUNZIONALE IN PYTHON - V. 0.3

CENNI MINIMI DI PROGRAMMAZIONE FUNZIONALE IN PYTHON - V. 0.3 CENNI MINIMI DI PROGRAMMAZIONE FUNZIONALE IN PYTHON - V. 0.3 MATTEO PRADELLA 1. Introduzione e concetti base La programmazione funzionale è uno stile di programmzione che enfatizza la valutazione di espressioni,

Dettagli

Università degli Studi di Ferrara

Università degli Studi di Ferrara Università degli Studi di Ferrara Corso di Laurea in Matematica - A.A. 2018 2019 Programmazione Lezione 19 Controllo di Flusso in MATLAB Docente: Michele Ferrari - michele.ferrari@unife.it Nelle lezioni

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

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 / 95 Il paradigma funzionale puro Un lambda-calcolo

Dettagli

Il concetto di calcolatore e di algoritmo

Il concetto di calcolatore e di algoritmo Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica

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

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione INTRODUZIONE ALLA LOGICA DI HOARE Corso di Logica per la Programmazione INTRODUZIONE Dall inizio del corso ad ora abbiamo introdotto, un po alla volta, un linguaggio logico sempre più ricco: connettivi

Dettagli

Scaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1

Scaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1 Scaletta Cenni di computabilità Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 23 27 novembre 2013

Dettagli

! Problemi, domande, risposte. ! Algoritmi che calcolano funzioni. ! Funzioni computabili e non. ! Problema = insieme di domande omogenee. !

! Problemi, domande, risposte. ! Algoritmi che calcolano funzioni. ! Funzioni computabili e non. ! Problema = insieme di domande omogenee. ! Scaletta Cenni di computabilità Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 24 26 maggio 2015!

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

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Tripla di Hoare soddisfatta A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione a.a.

Dettagli

Linguaggi di programmazione e astrazione

Linguaggi di programmazione e astrazione Linguaggi di programmazione e astrazione i linguaggi di programmazione ad alto livello moderni sono il più potente strumento di astrazione messo a disposizione dei programmatori che possono, con un solo

Dettagli

int main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0;

int main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0; Problema: CALCOLARE LA SOMMA DEI FATTORIALI DEI PRIMI 100 NUMERI NATURALI 0!+1!+2! + 99! #include int fattoriale(int); Calcolo fattoriale int main(){ int numero; /* numero di cui voglio calcolare

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Istruzioni Condizionali

Istruzioni Condizionali Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 10 Istruzioni Condizionali Carla Limongelli Novembre 2011 http://www.dia.uniroma3.it/~java/fondinf/ Istruzioni condizionali 1 Contenuti

Dettagli

Matematica e Statistica per Scienze Ambientali

Matematica e Statistica per Scienze Ambientali per Scienze Ambientali Insiemi e Combinatoria - Appunti 1 1 Dipartimento di Matematica Sapienza, Università di Roma Roma, 23 - Ottobre 2012 Il concetto di insieme Non tratterò la teoria assiomatica degli

Dettagli

Problemi, algoritmi, calcolatore

Problemi, algoritmi, calcolatore Problemi, algoritmi, calcolatore Informatica e Programmazione Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Problemi, algoritmi, calcolatori Introduzione

Dettagli

Il linguaggio di programmazione Python

Il linguaggio di programmazione Python Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Valutazione Lazy. Prefazione alla lezione

Valutazione Lazy. Prefazione alla lezione Valutazione Lazy Aniello Murano Università degli Studi di Napoli Federico II 1 Prefazione alla lezione Nella lezione precedente abbiamo introdotto i linguaggi (funzionali) con tipi di ordine superiore.

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

Fondamenti dell informatica

Fondamenti dell informatica Fondamenti dell informatica Funzioni ricorsive e linguaggi funzionali Rosario Culmone rosario.culmone@unicam.it 16/4/2008 UNICAM - p. 1/21 Funzioni ricorsive Metodo di definizione di algoritmi introdotto

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile

Dettagli

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Dettagli

Programmazione C Massimo Callisto De Donato

Programmazione C Massimo Callisto De Donato Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE

Dettagli

Pattern matching e tipi di dato strutturati

Pattern matching e tipi di dato strutturati Capitolo 3 Pattern matching e tipi di dato strutturati Per il momento abbiamo considerato un linguaggio funzionale (denominato SimpleCaml ) i cui unici tipi di dato sono interi, float, booleani e funzioni.

Dettagli

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Il problema di fondo Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Algoritmi

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Il problema di fondo Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano

Dettagli

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! = 1 n( n 1)! se se n n = > 0 0 dove n è un numero intero non negativo Il calcolo del fattoriale

Dettagli

Uso delle liste per rappresentare tipi astratti di dati

Uso delle liste per rappresentare tipi astratti di dati Uso delle liste per rappresentare tipi astratti di dati Il tipo astratto di dati dizionario Il tipo astratto dizionario è una collezione di elementi, ciascuno dei quali è costituito da una coppia (chiave,

Dettagli

La programmazione nel linguaggio JavaScript. Il programma

La programmazione nel linguaggio JavaScript. Il programma Il programma Nei linguaggi di programmazione il programma è una funzione che ha come argomento i dati digitati in input e opportunamente convertiti. la descrizione della funzione (ovvero il programma)

Dettagli

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2013/14

INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2013/14 INTRODUZIONE ALLA LOGICA DI HOARE Corso di Logica per la Programmazione A.A. 2013/14 INTRODUZIONE Dall inizio del corso ad ora abbiamo introdotto, un po alla volta, un linguaggio logico sempre più ricco:

Dettagli

Le funzioni in C++ Fondamenti di Informatica. R. Basili. a.a

Le funzioni in C++ Fondamenti di Informatica. R. Basili. a.a Le funzioni in C++ Fondamenti di Informatica R. Basili a.a. 2006-2007 Sintesi Motivazioni Uso delle funzioni Un esempio Dichiarazione e Definizione Uso dei parametri Passaggio per valore Passaggio per

Dettagli

ITI M. FARADAY. Programmazione a. s

ITI M. FARADAY. Programmazione a. s ITI M. FARADAY Programmazione a. s. 2018-2019 Disciplina: INFORMATICA Indirizzo: INFORMATICA E TELECOMUNICAZIONI Classi: Terza A Terza B Ore settimanali previste: 6 (3 ora Teoria - 3 ore Laboratorio) Docenti:

Dettagli

Assegnazione di una variabile

Assegnazione di una variabile Assegnazione di una variabile Per scrivere un valore dentro una variabile si usa l operatore di assegnazione, che è rappresentato dal simbolo =. Quindi, se scrivo int a; a = 12; assegno alla variabile

Dettagli

Di cosa parliamo oggi?

Di cosa parliamo oggi? Di cosa parliamo oggi? Oggi parliamo di Analisi di Algoritmi Analisi di Algoritmi = valutazione delle risorse usate da algoritmi per risolvere un dato problema Risorse = Tempo impiegato dall algoritmo

Dettagli

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output F = { (s, s ) } per ogni s esiste una e una sola coppia (s, s ). Esempio: un algoritmo che calcola il quadrato di

Dettagli

Informatica (A-K) 5. Algoritmi e pseudocodifica

Informatica (A-K) 5. Algoritmi e pseudocodifica Vettori e matrici #1 Informatica (A-K) 5. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

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

Semantica operazionale e denotazionale

Semantica operazionale e denotazionale Semantica operazionale e denotazionale Abbiamo definito la semantica di tre linguaggi di programmazione in termini operazionali, cioé in termini di sequenze di computazione Abbiamo assegnato un algoritmo

Dettagli

Contenuti. Elementi di semantica denotazionale ed operazionale. Sintassi astratta. Sintassi e semantica. ! sintassi astratta e domini sintattici

Contenuti. Elementi di semantica denotazionale ed operazionale. Sintassi astratta. Sintassi e semantica. ! sintassi astratta e domini sintattici Elementi di semantica denotazionale ed operazionale Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Dettagli

L ELABORATORE ELETTRONICO

L ELABORATORE ELETTRONICO L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su dati in ingresso (input) per produrre uno

Dettagli

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl Approfondimento 2.1 Non è questo il testo dove trattare esaurientemente queste tecniche semantiche. Ci accontenteremo di dare un semplice esempio delle tecniche basate sui sistemi di transizione per dare

Dettagli

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica Programmazione Dipartimento di Matematica Ing. Cristiano Gregnanin Corso di laurea in Matematica 29 febbraio 2016 1 / 33 INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, bisogna conoscere

Dettagli

Esercizi di programmazione ricorsiva. Appunti per gli studenti di Programmazione I e Laboratorio (corsi A-B)

Esercizi di programmazione ricorsiva. Appunti per gli studenti di Programmazione I e Laboratorio (corsi A-B) Esercizi di programmazione ricorsiva Appunti per gli studenti di Programmazione I e Laboratorio (corsi A-B) Corso di Laurea in Informatica Università di Pisa A.A. 2008/09 1. Dare il tipo delle funzione

Dettagli

L ELABORATORE ELETTRONICO

L ELABORATORE ELETTRONICO L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA 1 Struttura di un programma Java Un programma Java consiste in un insieme di definizioni di classi. In genere

Dettagli

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 02/07/2015/ Foglio delle domande /VERSIONE 1 Matricola Cognome Nome

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 02/07/2015/ Foglio delle domande /VERSIONE 1 Matricola Cognome Nome Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 02/07/2015/ Foglio delle domande /VERSIONE 1 Matricola Cognome Nome 1) Il termine informatica viene dalla fusione delle seguenti parole a) informazione

Dettagli

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch Esercitazione 5 Procedure e Funzioni Il comando condizionale: switch Comando: switch-case switch (espressione) { /* espressione deve essere case costante1: istruzione1 di tipo int o char */ [break]; case

Dettagli

ELEMENTI DI INFORMATICA L. Ing. Claudia Chiusoli

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

Dettagli

Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione

Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione Sommario Problemi e soluzioni Definizione informale di algoritmo e esempi Proprietà degli algoritmi Input/Output, Variabili Algoritmi senza input o output 1 2 Problema Definizione (dal De Mauro Paravia):

Dettagli

Introduzione al Corso

Introduzione al Corso Introduzione al Nicu Sebe Informatica Nicu Sebe 1 / 12 Informazioni Scopo Contatti Nicu Sebe (niculae.sebe@unitn.it) Per informazioni/ricevimento, email http://www.disi.unitn.it/ sebe/info Materiale per

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

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano Cagnoni Il problema

Dettagli

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1 Esempio: Leggere due interi positivi e calcolarne il massimo comun divisore. MCD(12, 8) = 4 MCD(12, 6) = 6 MCD(12, 7) = 1 Sfruttando direttamente la definizione di MCD osservazione: 1 MCD(m,n) min(m,n)

Dettagli

Tela (Teaching Language)

Tela (Teaching Language) Tela (Teaching Language) Paradigma imperativo Dichiarazioni di variabili, costanti, moduli Programma strutturato in moduli innestati Scope statico Passaggio dei parametri per valore Corpo del modulo =

Dettagli

Esempi di programmi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E01. A. Miola Settembre 2007

Esempi di programmi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E01. A. Miola Settembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E01 Esempi di programmi A. Miola Settembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di programmi - 1 1 Contenuti

Dettagli

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica Array in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: array DIS - Dipartimento di informatica e sistemistica 1 / 25 Cosa vedremo

Dettagli

Ad ogni problema computazionale possiamo associare una misura della sua complessità.

Ad ogni problema computazionale possiamo associare una misura della sua complessità. Problema computazionale: Descrizione dell input, Compito da svolgere. Esempio: SOMMA: INPUT: 2 numeri x e y, COMPITO: stampare x+y. Ad ogni problema computazionale possiamo associare una misura della sua

Dettagli

Caratteristiche di un calcolatore elettronico

Caratteristiche di un calcolatore elettronico Prof. Emanuele Papotto Caratteristiche di un calcolatore elettronico È una macchina, costituita da circuiti elettronici digitali e da componenti elettromeccaniche, ottiche e magnetiche. È velocissimo,

Dettagli