Problemi e algoritmi

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Problemi e algoritmi"

Transcript

1 Problemi e algoritmi Specifica, progetto e verifica della correttezza di algoritmi iterativi

2 Il che cosa ed il come Problema: 1. dati x, y, z, così e così istanza

3 Il che cosa ed il come Problema: 1. dati x, y, z, così e così 2. trovare u, v, w.. tali che criterio per riconoscere la risposta

4 Il che cosa ed il come Esempio (Massimo comun divisore: MCD). Dati due interi positivi non entrambi nulli n ed m, determinare un intero positivo k tale che: 1. k divide sia n che m; 2. per ogni divisore comune h di n ed m, h divide k. istanza criterio per riconoscere la risposta

5 Multipli e Divisori Sugli interi sono definite le relazioni: n è multiplo di m se esiste k tale che n = mk m divide n se n è multiplo di m: m n m n n m n = mk m = nh n = nhk h = k = 1 quindi m n e n m implica n = m.

6 Il che cosa ed il come Esempio (Ordinamento: Sorting) Dato un intero positivo n ed una sequenza a1,..., a n di n elementi di un insieme A linearmente ordinato, trovare una permutazione π di ordine n tale che: istanza a a A L a π ( 1) π (2) π ( n) criterio per riconoscere la risposta

7 Ordini parziali e lineari Un ordine parziale su un insieme A è una relazione binaria riflessiva, simmetrica e transitiva. { a,b} {} a { b} b, b { a} { }{ } { a} 0 < 1< 2 < L Ordine lineare (tricotomico): elementi tutti confrontabili Ordine non lineare: esistono elementi non confrontabili

8 Il che cosa ed il come Esempio (Cammino minimo) istanza Date una mappa stradale che riporti località, strade e lunghezze dei percorsi, ed una coppia di località raggiungibili l una dall altra, trovare un percorso che renda minima la lunghezza. criterio per riconoscere la risposta

9 Il che cosa ed il come Quindi un problema è una relazione (binaria) R, ossia una collezione di coppie istanza, risposta R Le cui istanze sono in { x : x, y R per qualche y} dom ( R) = R è sempre univoca?

10 Univocità R A B è univoca se per ogni a A, b, 1 b2 B a, b b R b = b 1, a, a R b c

11 La relazione R è: MCD: univoca, perché se k h e h k, allora h = k. Sorting: univoca solo se non ci sono ripetizioni. Ci sono due risposte per l istanza 7, 5, 22, 5: { 1 a 3,2 a 1,3 a 4,4 a 2} e { 1a 3,2 a 2,3 a 4,4 a 1} anche se producono lo stesso 5, 5, 7, 22. Cammini minimi: in generale non univoca. Ci possono essere più percorsi di lunghezza minima.

12 Il che cosa ed il come Algoritmo: è un metodo automatico di calcolo, che indica passo passo come ottenere un risultato (output) date certe informazioni di partenza (input).

13 Il che cosa ed il come Un algoritmo è deterministico: se eseguito più volte sullo stesso input, fornisce sempre lo stesso output. Dunque ad ogni algoritmo possiamo associare una funzione input-output: F ( input) = output

14 Il che cosa ed il come Un algoritmo risolve un problema R se la su funzione input-output F associa una risposta ad ogni istanza di R: x, F( x) R per ogni x dom( R) F sceglie una risposta per ogni istanza (ma le risposte possono essere più d una se R non è univoca).

15 La codifica di un algoritmo Un algoritmo si descrive in molti modi: 1. In una lingua naturale: dati n ed m, siano a = max (n, m) e b = min (n, m); dividi progressivamente a per b, e se il resto è nullo ritorna b, altrimenti poni a = b, b = a mod b e calcola il nuovo resto. Pro: per capire mi basta conoscere l italiano Contro: potenzialmente ambiguo, non mostra la sua struttura

16 La codifica di un algoritmo Un algoritmo si descrive in molti modi: 2. Con diagrammi di flusso: Pro: intuitivo e preciso a max (n, m), b min (n, m) b = 0 r a mod b + return a Contro: non strutturato, non adatto per la ricursione Si usava un tempo a b, b r r = 0 + return b

17 La codifica di un algoritmo Un algoritmo si descrive in molti modi: 3. Usando un linguaggio di programmazione: int MCD (int n, int m) { int a, b, r; if (n > m) {a = n, b = m;}; else {a = m, b = n;} Pro: lo posso provare su un computer } if (b == 0) return a; r = a % b; while (r!= 0) { a = b; b = r; r = a % b;} return b; Contro: criptico; molti dettagli oscurano la struttura dell algoritmo; dipende dalla scelta del linguaggio

18 La codifica di un algoritmo Un algoritmo si descrive in molti modi: 4. Con uno pseudocodice: MCD (n, m) a max (n, m) b min (n, m) if b = 0 then return a else r a mod b while r 0 do a b b r r a mod b Pro: informale ma preciso, posso usare notazioni matematiche, evitando la definizione di strutture dati Contro: può essere lontano dalla realizzazione return b

19 Che cosa calcola un algoritmo? Che cosa calcola un algoritmo? La risposta è una specifica dell algoritmo. Vorrei calcolare valori con la proprietà ψ Post-condizione Posso farlo purché i dati soddisfino ϕ Sig. Utente Pre-condizione Sig. Algoritmo

20 Specifica di un algoritmo Pre-condizioni: ipotesi sull ingresso Post-condizioni: proprietà dell uscita Esempio: MCD (n, m) Pre: n, m interi positivi non entrambi nulli Post: ritorna k che divide sia n che m e t.c. per ogni divisore comune h di n ed m, h divide k.

21 Specifica di un algoritmo Pre-condizioni: ipotesi sull ingresso Post-condizioni: proprietà dell uscita Una pre-condizione ϕ ed una post-condizione ψ definiscono una relazione: x, y P x sodd. ϕ y sodd. ψ Se R è un problema ed R P, allora ogni algortimo che soddisfi la specifica Pre. ϕ, Post. ψ, risolve R.

22 La correttezza Fissato un certo algoritmo siano: 1. F la funzione input-output 2. ϕ pre-condizione, ψ post-condizione x soddisfa ϕ F( x) soddisfaψ F(x) è sempre definita?

23 La correttezza Fissato un certo algoritmo siano: 1. F la funzione input-output 2. ϕ pre-condizione, ψ post-condizione x soddisfa ϕ F( x) soddisfaψ F(x) non è definita se l algoritmo non termina in x!

24 La correttezza Correttezza parziale. Un algoritmo si dice parzialmente corretto rispetto ϕ e ψ, se x soddisfa ϕ & F( x) è definita F( x) soddisfaψ Correttezza totale. Un algoritmo si dice totalmente corretto rispetto ϕ e ψ, se x soddisfa ϕ F( x) è definita & F( x) soddisfaψ

25 Ragionamenti su di un algoritmo Ragionare sulla specifica di un algoritmo data con pre e post-condizioni serve a: (a posteriori) verificare la correttezza dell algoritmo (a priori) (re)-inventare un algoritmo a partire da un idea circa la soluzione

26 Il metodo delle asserzioni (Floyd) Divisione (n, m) Pre. n 0, m > 0 Post. ritorna q, r t.c. n = m q + r, 0 r < m r n q 0 { n = m q + r, 0 r } while r m do { n = m (q+1) + r m, 0 r m} r r m q q + 1 { n = m q + r, 0 r < m} return q, r Asserzioni: descrivono relazioni tra i valori delle variabili, che devono valere quando il controllo raggiunge un certo punto del codice

27 Le triple di Hoare Un comando ha la forma C ::= x E C ; C if B then C if B then C else C while B do C Se ϕ e ψ sono asserzioni allora ϕ Cψ se i valori delle variabili soddisfano ϕ prima di C e C termina, allora tripla soddisfano ψ dopo C

28 Le triple di Hoare Le mie triple sono espressioni della logica formale, ma voi potete usare asserzioni informali, purché non ambigue

29 Asserzioni per gli assegnamenti { x + > 0 } x x + { x > 0 } {ϕ (E)} (E può contenere x) x E {ϕ (x)} { ϕ( E) } x E { ϕ( x) } Assioma

30 Asserzioni per le sequenze {y z} y y z {y 0} x y {x 0} {ϕ} C 1 {χ} (oppure χ se χ χ ) C 2 {ψ} premesse { ϕ} C1{ χ} { ϕ} C 1 { χ} C2{ ψ } ; C { ψ } 2 ϕ ϕ { ϕ } C{ ψ } { ϕ} C{ ψ} ψ ψ conclusioni

31 Asserzioni per la selezione if x 0 then z x {z = x } else {x < 0} z x {z = x } {z = x } {ϕ} if B then {ϕ B} C 1 {ψ} else {ϕ B} C 2 {ψ} {ψ} { ϕ B } C1{ ψ } { ϕ B} { ϕ} if B then C else C 1 2 C 2{ ψ } { ψ }

32 Asserzioni per le iterazioni while y > 0 do {??????? } z z + x 2 y y 1 Cosa mettere in un punto attraversato tante volte?

33 Asserzioni per le iterazioni {x 1 x 2 = x 2 y + z} while y > 0 do {x 1 x 2 = x 2 y + z y > 0} z z + x 2 y y 1 {x 1 x 2 = x 2 y + z y = 0} {z = x 1 x 2 } Qualcosa che, pur cambiando i valori delle variabili, resti sempre vero!

34 Asserzioni per le iterazioni {x 1 x 2 = x 2 y + z} while y > 0 do {x 1 x 2 = x 2 y + z y > 0} z z + x 2 y y 1 {x 1 x 2 = x 2 y + z y = 0} {z = x 1 x 2 } invariante {ϕ} { ϕ B} C{ ϕ} { ϕ} while B do C { ϕ B} while B do {ϕ B} C {ϕ} {ϕ B}

35 Gli invarianti di ciclo invariante: asserzione vera prima di ogni esecuzione del corpo dell iterazione l invariante deve essere vero anche prima di entrare nel ciclo, dopo ogni esecuzione del corpo, all uscita dal ciclo L invariante è unico?

36 Gli invarianti di ciclo Un ciclo ha molti (infiniti) invarianti, per lo più triviali: {0 = 0} è invariante di ogni ciclo Qual è allora quello che mi serve?

37 Gli invarianti di ciclo Un invariante è interessante se mi fa capire cosa avrà fatto il ciclo dopo la terminazione Quindi occorre che implichi la post-condizione del ciclo che desidero dimostrare Trovare un invariante senza conoscere l idea su cui si basa l algoritmo è una strada in salita!

38 Ricostruire un algoritmo La via maestra parte dall idea su cui si basa l algoritmo e consiste nel ricostruirlo Molto spesso l invariante non è che una formulazione precisa di quest idea

39 Ricerca binaria 1. Definisci il problema Pre-condizioni: il vettore è ordinato Input: il valore cercato è Post-condizioni: ritorna l indice del valore cercato (se presente)

40 Ricerca binaria 2. Individua l invariante, pensando alla generica iterazione: Inv. : La ricerca è limitata ad un sottovettore t.c. se il valore cercato è presente, allora si trova in quel sottovettore Valore cercato: 25

41 Ricerca binaria 3. Cerca un modo per avvicinare la soluzione mantenendo vero l invariante Passo: dividi il sottovettore in due parti (quasi) uguali; Se si trova nel punto intermedio: stop Valore cercato: 43 Punto intermedio

42 Ricerca binaria 3. Cerca un modo per avvicinare la soluzione mantenendo vero l invariante Passo: dividi il sottovettore in due parti (quasi) uguali; Se il valore cercato è < di quello nel punto intermedio, può essere solo nella parte sinistra Valore cercato: 25 Punto intermedio

43 Ricerca binaria 3. Cerca un modo per avvicinare la soluzione mantenendo vero l invariante Passo: dividi il sottovettore in due parti (quasi) uguali; Se il valore cercato è > di quello nel punto intermedio, può essere solo nella parte destra Valore cercato: 54 Punto intermedio

44 Ricerca binaria 4. Definisci in quale momento la computazione si deve fermare Quando si sia trovato il valore nel punto intermedio, Valore cercato: 25 Punto intermedio

45 Ricerca binaria 4. Definisci in quale momento la computazione si deve fermare. ovvero quando il sottovettore cui limitiamo la ricerca sia ridotto al vettore vuoto Valore cercato: 23 Dovrebbe essere qui in mezzo: ma questo intervallo è vuoto

46 Ricerca binaria 5. Definisci le condizioni iniziali della ricerca Il sottovettore cui la ricerca è limitata coincide con l intero vettore Valore cercato: 25

47 Ricerca binaria 6. Stabilisci i dettagli della codifica Il sottovettore cui la ricerca è limitata è compreso tra le posizioni i e j incluse i j 20 Il punto medio ha indice: (i + j) div 2 Se i > j allora il sottovettore è vuoto

48 Ricerca binaria 7. Procedi alla pseudocodifica, usando le asserzioni, e principalmente l invariante, come commenti RicercaBinaria (V, n) Pre. V è un vettore ordinato, n il valore cercato Post. Ritorna m in [1..lunghezza(V)] se V[m] = n, 0 altrimenti i 1, j lunghezza(v) trovato false while i j and not trovato do {Inv. Se n in V allora n in V[i..j], se trovato = true allora V[m] = n } m (i+j) div 2 semivettore considerato if n = V[m] then trovato true else if n < V[m] then {considero V[i.. m 1]} j m 1 else {n > V[m]} {considero V[m + 1..j]} i m + 1 if trovato then return m else return 0

49 Come si inventa un ciclo? 1 inizializzazione 2 while condizione do corpo dell iterazione 3 L ordine giusto è l opposto! 1. Per scrivere l inizializzazione si deve sapere cosa deve fare il ciclo 2. Per scrivere la condizione (guardia) si deve conoscere cosa farà il corpo

50 La generica iterazione Per individuare correttamente l invariante non ci si deve porre agli estremi (inizio o fine del ciclo) ma in un ideale punto medio: la generica iterazione

51 Ordinamento per selezione Idea V [1..n] indice del primo elemento della parte da ordinare i parte ordinata tutti gli el. di questa parte sono maggiori di quelli nella parte ordinata

52 Ordinamento per selezione Invariante V [1..n] i V [1.. i 1] ordinato se x in V [i.. n] ed y in V [1.. i 1] allora x y

53 Ordinamento per selezione Passo V [1..n] V [k] sia il minimo valore in V [i.. n] i k Scambiando V[i] con V[k] l invariante si mantiene con i i + 1:

54 Ordinamento per selezione Passo V [1..n] V [k] sia il minimo valore in V [i.. n] i k Scambiando V[i] con V[k] l invariante si mantiene con i i + 1: V [1.. i] ordinato se x in V [i n] ed y in V [1.. i ] allora x y

55 Ordinamento per selezione Passo V [1..n] i+1 Inoltre la lunghezza della porzione ordinata è aumentata, mentre la lunghezza di quella da ordinare è diminuita

56 Ordinamento per selezione Guardia (test di controllo) V [1..n] i L iterazione deve proseguire fintanto che i < n. Quando i = n, V[i] è il massimo in V[1..n]

57 Ordinamento per selezione Inizializzazione V [1..n] i = 1 La parte già ordinata è vuota: V[1.. 0]

58 Ordinamento per selezione Pseudocodifica SelectSort (V) Pre. V[1..n] vettore di valori su un insieme linearmente ordinato (es. gli interi) Post. permuta sul posto gli elementi di V in ordine non decrescente i 1 while i < n do {inv. V[1..i 1] ordinato, gli el. in V[i..n] maggiorizzano quelli in V[1..i 1]} k indice del minimo in V[i..n] scambia V[i] con V[k] i i + 1

59 Ordinamento per inserzione Idea V [1..n] indice del primo elemento della parte da ordinare i parte ordinata Nessuna assunzione!

60 Ordinamento per inserzione Invariante V [1..n] i V [1.. i 1] ordinato

61 Ordinamento per inserzione Passo Cercherò il posto in cui V[i] dovrebbe stare V [1..n] i Come fare per mantenere l invariante?

62 Ordinamento per inserzione Passo V [1..n] k i V[1] V[i], V[2] V[i], V[k 1] V[i] V[k] > V[i] quindi k in 2..i è il massimo indice t.c. V[k 1] V[i] & k < i V[k] > V[i]

63 Ordinamento per inserzione Passo temp V[i] Salviamo il valore di V[i] V [1..n] k i

64 Ordinamento per inserzione Passo V [1..n] k i Facciamo slittare V[k..i 1] su V[k + 1..i]

65 Ordinamento per inserzione Passo V [1..n] k i V[k] temp Poniamo in V[k] il valore salvato di V[i]

66 Ordinamento per inserzione Guardia V [1..n] i Prosegui fintanto che i n

67 Ordinamento per inserzione Inizializzazione V [1..n] i = 2 Il vettore V[1..1] è trivialmente ordinato i è l indice del primo elemento della parte da ordinare: dunque i = 2

68 Ordinamento per inserzione Pseudocodifica InsertSort (V) Pre. V[1..n] vettore di valori su un insieme linearmente ordinato (es. gli interi) Post. permuta sul posto gli elementi di V in ordine non decrescente i 2 while i n do {inv. V[1..i 1] ordinato} temp V[i], k i while k 2 and V[k] > temp do {inv. V[k..i 1] sono maggioranti di V[i]} V[k] V[k 1], k k 1 V[k] temp i i + 1

69 Accumulatori ed invarianti Quello iterativo è un metodo di calcolo incrementale: ci si avvicina al risultato un passo dopo l altro Un accumulatore è una variabile il cui valore rappresenta l approssimazione corrente L invariante deve allora spiegare in che senso l accumulatore approssima il risultato

70 Accumulatori ed invarianti Moltiplicazione (x, n) Pre. n intero positivo Post. ritorna x n z 0, y n while y > 0 do z z + x y y 1 return z A scuola: moltiplicandi e moltiplicatori 2 X 3 =

71 Accumulatori ed invarianti x + L+ x + x + x + L+ x z x y x + L+ x + x + x + L+ x z + x x (y 1 )

72 Accumulatori ed invarianti accumulatore Moltiplicazione (x, n) Pre. n intero positivo Post. ritorna x n z 0, y n while y > 0 do {inv. x n = z + x y} z z + x z + x y = (z + x) + x (y 1) y y 1 return z contatore

73 Moltiplicazione alla russa div raddoppio + + = Risultato = somma val. della seconda colonna quando quelli sulla prima sono dispari

74 Moltiplicazione alla russa + = dispari se 1 2 pari se 2 a k a k a ) ( 2 2 b b k b k b a k a + = = = b b b k b k b a k a + + = + = + = ) ( 1) ( = + dispari ) ( div 2) ( ) ( pari ) ( div 2) ( a b b a b z a b b a z b a z

75 Moltiplicazione alla russa MoltRussa (m, n) Pre. n, m interi positivi Post. ritorna n m a n, b m, z 0 while a > 0 do {inv. n m = z + a b} if a dispari then z z + b a a div 2 b b + b return z contatore accumulatore

76 Riassumendo Problema e algoritmo (il cosa ed il come) Specifica: pre e post-condizioni Correttezza parziale e totale Il metodo delle asserzioni Invarianti di ciclo Come (ri)-costruire un algoritmo iterativo Accumulatori (e contatori) in rapporto agli invarianti

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

Cicli ed asserzioni. Ordinamento. Dato un intero positivo n ed una sequenza di n elementi a 1,...,a n

Cicli ed asserzioni. Ordinamento. Dato un intero positivo n ed una sequenza di n elementi a 1,...,a n Cicli ed asserzioni 1. Problemi, algoritmi e specifiche Un algoritmo è un metodo di calcolo per risolvere un problema computazionale. Come una ricetta di cucina, descrive il processo che conduce dagli

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

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

Progetto e analisi di algoritmi

Progetto e analisi di algoritmi Progetto e analisi di algoritmi Roberto Cordone DTI - Università degli Studi di Milano Polo Didattico e di Ricerca di Crema Tel. 0373 / 898089 E-mail: cordone@dti.unimi.it Ricevimento: su appuntamento

Dettagli

La ricorsione. Induzione nel progetto e nella verifica di programmi ricorsivi. Le forme della ricorsione

La ricorsione. Induzione nel progetto e nella verifica di programmi ricorsivi. Le forme della ricorsione La ricorsione Induzione nel progetto e nella verifica di programmi ricorsivi. Le forme della ricorsione Circoli viziosi Se in una definizione ciò che viene definito (definiendum) è usato per definire (nel

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

TRIPLE DI HOARE: ESEMPI ED ESERCIZI. Corso di Logica per la Programmazione A.A. 2012/13

TRIPLE DI HOARE: ESEMPI ED ESERCIZI. Corso di Logica per la Programmazione A.A. 2012/13 TRIPLE DI HOARE: ESEMPI ED ESERCIZI Corso di Logica per la Programmazione A.A. 2012/13 RICORDIAMO LA REGOLA PER IL COMANDO ITERATIVO P Inv def(e) Inv E Q Inv t 0 {Inv E} C {Inv def(e)} {P} while E do C

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

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

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

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi Informatica Generale Andrea Corradini 13 - Gli algoritmi e la risoluzione di problemi Sommario Passi per la risoluzione di problemi Problemi di ricerca e ordinamento Algoritmi iterativi: la ricerca lineare

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 13 Comando Iterativo Sequenze (array) ed Aggiornamento Selettivo pag. 1 Regole di Inferenza per Triple di Hoare: Comando Iterativo Semantica informale del Comando Iterativo

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

Rappresentazione con i diagrammi di flusso (Flow - chart)

Rappresentazione con i diagrammi di flusso (Flow - chart) Rappresentazione con i diagrammi di flusso (Flow - chart) Questo tipo di rappresentazione grafica degli algoritmi, sviluppato negli anni 50, utilizza una serie di simboli grafici dal contenuto evocativo

Dettagli

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: Pag 24 3) Il problema della ricerca Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: si incontrano in una grande varietà di situazioni reali; appaiono come sottoproblemi

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

Linguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: Semantica spesso data in modo informale

Linguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: Semantica spesso data in modo informale LOGICA DI HOARE INTRODUZIONE Linguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: es. grammatica in BNF Semantica spesso data in modo informale di stile operazionale

Dettagli

Problemi di ricerca in insiemi ordinati

Problemi di ricerca in insiemi ordinati Problemi di ricerca in insiemi ordinati Abbiamo visto che, per trovare un elemento in un insieme ordinato, con l algoritmo della ricerca binaria restringiamo l intervallo della ricerca alla metà in ogni

Dettagli

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra

Dettagli

Esistono alcune tipologie di problemi riconducibili a schemi di risoluzione standard

Esistono alcune tipologie di problemi riconducibili a schemi di risoluzione standard Classi di algoritmi Esistono alcune tipologie di problemi riconducibili a schemi di risoluzione standard una volta individuato lo schema opportuno si dovrà solo adattarlo al caso particolare per poter

Dettagli

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 10 STRUTTURE DI CONTROLLO REPEAT E WHILE Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II

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

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

PROGRAMMAZIONE STRUTTURATA

PROGRAMMAZIONE STRUTTURATA PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi sul Text Processing

Dati e Algoritmi I (Pietracaprina) Esercizi sul Text Processing Dati e Algoritmi I (Pietracaprina) Esercizi sul Text Processing Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T un testo di n caratteri e P un pattern di m n caratteri e si supponga che

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

Strutture di Controllo

Strutture di Controllo Strutture di Controllo Istruzioni condizionali e cicli http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Introduzione Fino ad ora, il nostro

Dettagli

Corso di Informatica di Base

Corso di Informatica di Base Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere

Dettagli

Verifica dei programmi

Verifica dei programmi Verifica dei programmi Consiste nella specifica e nella dimostrazione delle proprietà dei programmi. Per specificare le proprietà utilizzeremo la logica del I ordine. Per dimostrare che le proprietà specificate

Dettagli

ESEMPI DI TRIPLE DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella

ESEMPI DI TRIPLE DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella ESEMPI DI TRIPLE DI HOARE Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella ESEMPIO DI SEQUENZA DI COMANDI Verificare la tripla: Per la Regola per la Sequenza, dobbiamo

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

come segue: data una collezione C di elementi e una un elemento che verifica la proprietà P

come segue: data una collezione C di elementi e una un elemento che verifica la proprietà P Problemi di Ricerca Carla Binucci e Walter Didimo Il problema della Ricerca In generale, il Problema della Ricerca è definito come segue: data una collezione C di elementi e una proprietà P, determinare

Dettagli

Informatica e Bioinformatica: Algoritmi

Informatica e Bioinformatica: Algoritmi Informatica e Bioinformatica: Algoritmi 20 Marzo 2014 Programmi Applicativi Programmi Applicativi Sistema Operativo (lezione 3) Macchina Hardware (lezione 1 e 2) La macchina hardware permette l esecuzione

Dettagli

Istruzioni di controllo: SEQUENZA

Istruzioni di controllo: SEQUENZA Istruzioni di controllo: SEQUENZA Negli esempi visti in precedenza gli algoritmi sono stati descritti come sequenze di passi elementari del tipo Passo 1. azione 1 Passo 2. azione 2... Abbiamo utilizzato

Dettagli

a.a Codice corso: 21012

a.a Codice corso: 21012 ESERCIZIO 1 Scrivere un programma in linguaggio C che lette dallo standard input due sequenze vettoriali ordinate di interi V1[n], V2[m] ne crei una terza V3[n+m] anch essa ordinata, che contenga tutti

Dettagli

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico Click to edit Algoritmo Master title style algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito

Dettagli

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato»

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato» Linguaggio Testuale E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato» Delle volte viene chiamato metalinguaggio, e l algoritmo scritto tramite

Dettagli

LA RICORSIONE LA RICORSIONE LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO

LA RICORSIONE LA RICORSIONE LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa La ricorsione consiste nella possibilità di definire una funzione in termini

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

Algoritmi. Andrea Passerini Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile

Algoritmi. Andrea Passerini Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile Algoritmi Andrea Passerini passerini@dsi.unifi.it Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile Elaboratore Un elaboratore o computer è una macchina digitale, elettronica,

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 13 Sistema di Dimostrazioni per le Triple di Hoare Comando Vuoto, Assegnamento, Sequenza, Condizionale pag. 1 Tripla di Hoare Soddisfatta: richiamo Data una Tripla

Dettagli

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Prof. Venturino Taggi

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Prof. Venturino Taggi FONDAMENTI DI INFORMATICA Prof. Alfredo Accattatis Prof. Venturino Taggi accattatis@ing.uniroma2.it taggi@ing.uniroma2.it 2 Fondamenti di Informatica 2015/16 V.Taggi taggi@ing.uniroma2.it Algoritmi di

Dettagli

Verifica di programmi

Verifica di programmi Verifica di programmi Informalmente, un programma è corretto se l output prodotto è quello atteso rispetto all input. La correttezza dei programmi può essere espressa mediante formule per la correttezza

Dettagli

Calcolare x n = x x x (n volte)

Calcolare x n = x x x (n volte) Calcolare x n = x x x (n volte) Abbiamo bisogno di: una variabile ris in cui ad ogni iterazione del ciclo si ha un risultato parziale, e che dopo l ultima iterazione contiene il risultato finale; una variabile

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione Laurea in Bioinformatica Docente: Carlo Drioli Web: www.scienze.univr.it/fol/main?ent=oi&id=39990 Programmazione: Dati Strutture di controllo Algoritmi Materiale tratto dai

Dettagli

Programmazione I. Fondamenti di programmazione. Problemi, Algoritmi, Diagrammi di flusso

Programmazione I. Fondamenti di programmazione. Problemi, Algoritmi, Diagrammi di flusso Programmazione I Fondamenti di programmazione ( Lezione I ) Problemi, Algoritmi, Diagrammi di flusso Fabrizio Messina messina@dmi.unict.it www.dmi.unict.it/~messina Algoritmo Dato un problema, un algoritmo

Dettagli

Programmazione I - corso B a.a prof. Viviana Bono

Programmazione I - corso B a.a prof. Viviana Bono Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 15 Algoritmi su array: selection sort, insertion sort, fusione

Dettagli

ESEMPI DI TRIPLE DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella

ESEMPI DI TRIPLE DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella ESEMPI DI TRIPLE DI HOARE Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella ESEMPIO DI SEQUENZA DI COMANDI Verificare la tripla: Per la Regola per la Sequenza, dobbiamo

Dettagli

Ing. Lorenzo Vismara

Ing. Lorenzo Vismara Ing. Lorenzo Vismara ! "# #!$#%&# '(!)&!*)&#*$# +!, +$-.(( #!((%&#, #!& %&) /$#01&&#2! 0#( 3452 $ 6#( 1 2 &## #!7 #89): #;##( 1? )#&)< $9): #@82 #)AA)#&#&$( #7)&#7& @B && ##@A&#C 7 $C#&7 @B A&#)@#7&#

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 Laurea in Ingegneria Civile e Ambientale Algoritmi e Algebra di Boole Stefano Cagnoni Il problema di fondo Descrizione

Dettagli

Esercizi vari. Alberto Montresor. 19 Agosto, 2014

Esercizi vari. Alberto Montresor. 19 Agosto, 2014 Esercizi vari Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle rispettive soluzioni

Dettagli

Problemi, istanze, soluzioni

Problemi, istanze, soluzioni lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T una stringa arbitraria di lunghezza n 1 su un alfabeto Σ. È sempre possibile

Dettagli

Dati e Algoritmi 1: A. Pietracaprina. Text Processing

Dati e Algoritmi 1: A. Pietracaprina. Text Processing Dati e Algoritmi 1: A. Pietracaprina Text Processing 1 Campi Applicativi text editing web searching computational biology (e.g., DNA analysis) vision... 2 Definizioni Stringa P P P[0]P[1]... P[m 1] (lunghezza

Dettagli

Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione

Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione Algoritmi greedy Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione Gli algoritmi greedy sono algoritmi basati sull idea

Dettagli

NUMERI PRIMI E CRITTOGRAFIA

NUMERI PRIMI E CRITTOGRAFIA NUMERI PRIMI E CRITTOGRAFIA Parte I. Crittografia a chiave simmetrica dall antichità all era del computer Parte II. Note della Teoria dei Numeri concetti ed algoritmi a supporto della Crittografia Parte

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

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

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti

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

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica.

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica. Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Algoritmi Michele Tomaiuolo Algoritmo Il termine algoritmo deriva

Dettagli

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi Informatica Generale Andrea Corradini 12 - Gli algoritmi e la risoluzione di problemi Sommario Che significa risolvere un problema? Algoritmi e programmi Rappresentazione di algoritmi Lo pseudocodice Primitive

Dettagli

Matematica con Python

Matematica con Python Matematica con Python e-mail: maurosaita@tiscalinet.it Versione provvisoria. Dicembre 2016. 1 Lezione n. 3 Numeri primi fino a 1000. Indice 1 Funzioni 2 1.1 Trasformazione di un intervallo di tempo da

Dettagli

Alcuni Soluzioni. Fornire la specifica di un algoritmo risolutivo utilizzando lo pseudocodice visto a lezione.

Alcuni Soluzioni. Fornire la specifica di un algoritmo risolutivo utilizzando lo pseudocodice visto a lezione. Alcuni Soluzioni ESERCIZIO 1 Data una sequenza di interi di dimensione dim, determinare se esistono esattamente cont occorrenze del valore val, utilizzando per questo una variabile booleana check. Stato

Dettagli

Iterazione (introduzione)

Iterazione (introduzione) Fondamenti di informatica Oggetti e Java (introduzione) Capitolo 17 (estratto) ottobre 2015 1 Contenuti Accesso a sequenze Accumulazione Conteggio Altre aggregazioni Verifica esistenziale Verifica universale

Dettagli

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Alessandra Raffaetà Università Ca Foscari Venezia Corso di Laurea in Informatica Ricerca binaria Assunzione:

Dettagli

Analisi strutturata 1

Analisi strutturata 1 Gli algoritmi Analisi e programmazione Gli algoritmi Proprietà ed esempi Costanti e variabili, assegnazione, istruzioni, proposizioni e predicati Vettori e matrici I diagrammi a blocchi Analisi strutturata

Dettagli

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento

Dettagli

LA METAFORA DELL UFFICIO

LA METAFORA DELL UFFICIO LA METAFORA DELL UFFICIO Lavagna di lavoro Lavagna di programma Sportello utenti Impiegato Capo Ufficio LAVAGNA DI LAVORO Chiamiamo variabili le posizioni sulla lavagna, identificate ognuna da un nome

Dettagli

Lezione 4: La Formalizzazione degli Algoritmi - Strutture di Controllo e Selettive (2p) Venerdì 7 Ottobre 2009

Lezione 4: La Formalizzazione degli Algoritmi - Strutture di Controllo e Selettive (2p) Venerdì 7 Ottobre 2009 Università di Salerno Corso di FONDAMENTI DI INFORMATICA Corso di Laurea Ingegneria Meccanica & Ingegneria Gestionale Mat. Pari Docente : Ing. Secondulfo Giovanni Anno Accademico 2009-2010 Lezione 4: La

Dettagli

Strutture di controllo iterative

Strutture di controllo iterative Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione Problema Scrivere un programma che acquisisca da standard input un intero

Dettagli

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet   francesc Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet http://www.sci.unich.it/ francesc m.franceschet@unich.it Algoritmi e Strutture di Dati I 2 Problema dell ordinamento

Dettagli

LA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella

LA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella LA LOGICA DI HOARE Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella INTRODUZIONE Dall inizio del corso ad ora abbiamo introdotto, un po alla volta, un linguaggio logico

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Sistema di Dimostrazioni per le Triple di Hoare Comando Vuoto, Assegnamento, Sequenza, Condizionale pag. 1 Tripla di Hoare Soddisfatta: richiamo Data la tripla di

Dettagli

Lo sviluppo di un semplice programma e la dimostrazione della sua correttezza

Lo sviluppo di un semplice programma e la dimostrazione della sua correttezza Il principio di induzione Consideriamo inizialmente solo il principio di induzione per i numeri non-negativi, detti anche numeri naturali. Sia P una proprietà (espressa da una frase o una formula che contiene

Dettagli

Esercitazioni del Corso di Fondamenti di Informatica ARRAY. Prof. Giuseppe Manco. A cura di Ing. Andrea Tagarelli

Esercitazioni del Corso di Fondamenti di Informatica ARRAY. Prof. Giuseppe Manco. A cura di Ing. Andrea Tagarelli Esercitazioni del Corso di Fondamenti di Informatica ARRAY Prof. Giuseppe Manco A cura di Ing. Andrea Tagarelli ESERCIZIO 1 public static int[] elaboravettore (int[] v) che verifica che gli elementi di

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

Cosa si intende con stato

Cosa si intende con stato Il concetto di stato Cosa si intende con stato I una particolare configurazione delle informazioni di una macchina, che in qualche modo memorizza le condizioni in cui si trova, e che cambia nel tempo passando

Dettagli

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE BIENNIO: SECONDA DISCIPLINA: INFORMATICA

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE BIENNIO: SECONDA DISCIPLINA: INFORMATICA INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE PROGRAMMAZIONE BIENNIO: SECONDA DISCIPLINA: INFORMATICA PIANO DI LAVORO DEL DOCENTE / RELAZIONE FINALE Anno scolastico 2014/2015 DOCENTE Prof. PAOLO ARMANI CLASSE:

Dettagli

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.) Elaboratore Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni sui dati digitale l informazione è rappresentata in forma numerica

Dettagli

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione Lezione 5 e 6 - Concetto di blocco - Controllo del flusso di un programma - Costrutti per la scelta if e switch - Costrutti while e for - Operatori in C Fabio Scotti (2004-2009) Laboratorio di programmazione

Dettagli

Crittografia. Nozioni di Algebra. Corso di Laurea Specialistica. in Informatica

Crittografia. Nozioni di Algebra. Corso di Laurea Specialistica. in Informatica Crittografia Corso di Laurea Specialistica in Informatica Nozioni di Algebra Alberto Leporati Dipartimento di Informatica, Sistemistica e Comunicazione Università degli Studi di Milano Bicocca e-mail:

Dettagli

Programmazione in Java (I modulo) Lezione 11: Metodi della classe Math

Programmazione in Java (I modulo) Lezione 11: Metodi della classe Math Programmazione in Java (I modulo) Lezione 11: Metodi della classe Math Dalla lezione scorsa... Ricordiamo cosa sono e come si definiscono i metodi statici Metodi static o metodi di classe Sono metodi che

Dettagli

Laboratorio di Python

Laboratorio di Python Documentare il codice,, Comprendere cosa calcola una funzione 21 marzo 2014 Sommario 1 2 3 4 Lunedì il numero di studenti che avevano consegnato gli esercizi era 15. Martedì il numero di esercizi ricevuti

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

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

LA RICORSIONE. Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa

LA RICORSIONE. Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa LA RICORSIONE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa La ricorsione consiste nella possibilità di definire una funzione in termini

Dettagli

Esercitazione 6. Array

Esercitazione 6. Array Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione

Dettagli

INFORMATICA. Strutture iterative

INFORMATICA. Strutture iterative INFORMATICA Strutture iterative Strutture iterative Si dice ciclo (loop) una sequenza di istruzioni che deve essere ripetuta più volte consecutivamente. Si consideri ad esempio il calcolo del fattoriale

Dettagli

Corso di Informatica Modulo T1 C1-Sequenza e selezione

Corso di Informatica Modulo T1 C1-Sequenza e selezione Corso di Informatica Modulo T C-Sequenza e selezione Prerequisiti Analizzare un problema Scrivere un algoritmo Istruzioni semplici Espressione logica 2 Introduzione La programmazione a salti crea diverse

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi FASE 1: Dare un nome al problema partendo dall analisi del problema FASE 2: Scrivere la specifica funzionale FASE 3: Scrittura dell algoritmo FASE 3.1: Introduzione delle variabili

Dettagli

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento Algoritmi e Strutture Dati Capitolo 4 Ordinamento Ordinamento Dato un insieme S di n oggetti presi da un dominio totalmente ordinato, ordinare S Esempi: ordinare una lista di nomi alfabeticamente, o un

Dettagli