Problemi e algoritmi
|
|
- Virginia Colombo
- 5 anni fa
- Visualizzazioni
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 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
DettagliProblemi 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
DettagliCicli 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
DettagliUn 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
DettagliRisoluzione 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
DettagliProgetto 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
DettagliLa 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
DettagliFondamenti 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
DettagliTRIPLE 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
DettagliIntroduzione 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
DettagliInformatica (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
DettagliFondamenti 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
DettagliInformatica 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
DettagliLogica 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
DettagliPaolo 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
DettagliRappresentazione 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
DettagliNell 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
DettagliFondamenti 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
DettagliLinguaggi 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
DettagliProblemi 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
DettagliDiagramma 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
DettagliEsistono 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
Dettagli10 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
DettagliPseudo 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
DettagliIstruzioni 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
DettagliPROGRAMMAZIONE STRUTTURATA
PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:
DettagliDati 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
DettagliL 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
DettagliStrutture 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
DettagliCorso 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
DettagliVerifica 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
DettagliESEMPI 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
DettagliELEMENTI 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
Dettaglicome 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
DettagliInformatica 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
DettagliIstruzioni 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
Dettaglia.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
Dettagliin 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
DettagliLinguaggio 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
DettagliLA 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
DettagliProgrammazione. 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
DettagliAlgoritmi. 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,
DettagliLogica 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
DettagliFONDAMENTI 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
DettagliVerifica 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
DettagliCalcolare 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
DettagliLaboratorio 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
DettagliProgrammazione 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
DettagliProgrammazione 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
DettagliESEMPI 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
DettagliIng. Lorenzo Vismara
Ing. Lorenzo Vismara ! "# #!$#%&# '(!)&!*)&#*$# +!, +$-.(( #!((%&#, #!& %&) /$#01&! 0#( 3452 $ 6#( 1 2 &## #!7 #89): #;##( 1? )#&)< $9): #@82 #)AA)#&#&$( #7)& @B && ##@A&#C 7 $C#&7 @B A&#)@#7&#
DettagliLaboratorio 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
DettagliEsercizi 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
DettagliProblemi, 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
DettagliDati 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
DettagliDati 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
DettagliAlgoritmi 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
DettagliNUMERI 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
DettagliINTRODUZIONE 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:
DettagliIntroduzione 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):
DettagliRappresentazione 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
DettagliL 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
DettagliAgent 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
DettagliInformatica 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
DettagliMatematica 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
DettagliAlcuni 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
DettagliIterazione (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
DettagliLaboratorio 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:
DettagliAnalisi 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
DettagliFondamenti 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
DettagliLA 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
DettagliLezione 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
DettagliStrutture 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
DettagliAlgoritmi 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
DettagliLA 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
DettagliLogica 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
DettagliLo 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
DettagliEsercitazioni 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
DettagliL 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
DettagliCosa 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
Dettagliliceo 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:
DettagliAltrimenti, 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
DettagliLezione 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
DettagliCrittografia. 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:
DettagliProgrammazione 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
DettagliLaboratorio 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
DettagliELEMENTI 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
DettagliLaboratorio 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
DettagliLA 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
DettagliEsercitazione 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
DettagliINFORMATICA. 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
DettagliCorso 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
DettagliSviluppo 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
DettagliAlgoritmi 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