Specifica, progetto e verifica della correttezza di algoritmi iterativi
|
|
- Gilda Carraro
- 4 anni fa
- Visualizzazioni
Transcript
1 Specifica, progetto e verifica della correttezza di algoritmi iterativi Il metodo delle asserzioni
2 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) costruire un algoritmo, a partire da un idea circa la soluzione, in modo che sia corretto
3 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
4 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 soddisfano ψ dopo C tripla
5 Le triple di Hoare Le triple di Hoare sono espressioni della logica formale, ma voi potete usare asserzioni informali, purché non ambigue!!!
6 Asserzioni per gli assegnamenti { x + > 0 } x x + { x > 0 } {ϕ (E)} (E può contenere x) x E {ϕ (x)} { ϕ( E) } x E { ϕ( x) } Assioma
7 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
8 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{ ψ } { ψ }
9 Asserzioni per le iterazioni while y > 0 do {??????? } z z + x 2 y y 1 Cosa mettere in un punto attraversato tante volte?
10 Asserzioni per le iterazioni {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} Qualcosa che, pur cambiando i valori delle variabili, resti sempre vero!
11 Asserzioni per le iterazioni {n = m q + r 0 r} invariante while r m do {n = m (q+1) + r m 0 r r m} r r m q q + 1 {n = m q + r 0 r r< m } {ϕ} while B do {ϕ B} C {ϕ} {ϕ B} { ϕ B} C{ ϕ} { ϕ} while B do C { ϕ B}
12 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?
13 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?
14 Gli invarianti di ciclo Un invariante è interessante se fa capire cosa avrà fatto il ciclo dopo la terminazione Quindi occorre che implichi la post-condizione del ciclo che desidero dimostrare A posteriori, trovare un invariante senza conoscere l idea su cui si basa l algoritmo è una strada in salita!
15 (Ri)-costruire un algoritmo La via maestra per trovare un invariante: partire dall idea su cui si basa l algoritmo e ricostruirlo Molto spesso l invariante non è che una formulazione precisa di quest idea
16 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)
17 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
18 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
19 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
20 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
21 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
22 Ricerca binaria 4. Definisci in quale momento la computazione si deve fermare. oppure quando il sottovettore cui limitiamo la ricerca sia ridotto al vettore vuoto Valore cercato: 23 Dovrebbe essere qui in mezzo: ma questo intervallo è vuoto
23 Ricerca binaria 5. Definisci le condizioni iniziali della ricerca Il sottovettore cui la ricerca è limitata coincide con l intero vettore Valore cercato: 25
24 Ricerca binaria 6. Stabilisci i dettagli della codifica Il sottovettore cui la ricerca è limitata è compreso tra le posizioni i e j incluse i j 2 Il punto medio ha indice: (i + j) div 2 Se i > j allora il sottovettore è vuoto
25 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 sottovettore 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
26 Costruire un algoritmo in modo che sia corretto La via maestra: formulare precisamente l idea su cui si basera l algoritmo Molto spesso la formulazione precisa di quest idea è proprio l invariante
27 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
28 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
29 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
30 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
31 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:
32 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
33 Ordinamento per selezione Passo V [1..n] i+1 Inoltre la lunghezza della porzione ordinata è aumentata, mentre la lunghezza di quella da ordinare è diminuita
34 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]
35 Ordinamento per selezione Inizializzazione V [1..n] i = 1 La parte già ordinata è vuota: V[1.. 0]
36 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
37 Ordinamento per inserzione Idea V [1..n] indice del primo elemento della parte da ordinare i parte ordinata Nessuna assunzione!
38 Ordinamento per inserzione Invariante V [1..n] i V [1.. i 1] ordinato
39 Ordinamento per inserzione Passo Cercherò il posto in cui V[i] dovrebbe stare V [1..n] i Come fare per mantenere l invariante?
40 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]
41 Ordinamento per inserzione Passo temp V[i] Salviamo il valore di V[i] V [1..n] k i
42 Ordinamento per inserzione Passo V [1..n] k i Facciamo slittare V[k..i 1] su V[k + 1..i]
43 Ordinamento per inserzione Passo V [1..n] k i V[k] temp Poniamo in V[k] il valore salvato di V[i]
44 Ordinamento per inserzione Guardia V [1..n] i Prosegui fintanto che i n
45 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
46 Ordinamento per inserzione Pseudocodifica sertsort (V) re. V[1..n] vettore di valori su un insieme linearmente ordinato (es. gli interi) ost. permuta sul posto gli elementi di V in ordine non decrescente 2 hile i n do {inv.: V[1..i 1] ordinato, sia U= V[1..i 1]} temp V[i], k I while k 2 and V[k-1] > temp do {inv.: V[1..k-1] V[k+1..i] = U, V[k+1..i] sono > di temp V[k] V[k 1], k k 1 V[k] temp {V[1..i] ordinato} i i + 1
47 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
48 Moltiplicazione per somme successive 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 =
49 Moltiplicazione per somme successive x + L+ x + x + x + L+ x z x y x + L+ x + x + x + L+ x z + x x (y 1 )
50 Moltiplicazione per somme successive cumulatore 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
51 Moltiplicazione alla russa div = Risultato = somma val. della seconda colonna quando quelli sulla prima sono dispari raddoppio
52 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
53 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
54 Riassumendo Il metodo delle asserzioni Invarianti di ciclo Come verificare la correttezza di un algoritmo iterativo Come costruire un algoritmo iterativo in modo che sia corretto Accumulatori (e contatori) in rapporto agli invarianti
55 Domande Domanda: l algoritmo di ordinamento per selezione e migliore dell algoritmo di ordinamento per inserzione? Perche? Domanda: l algoritmo MoltRussa e migliore dell algoritmo Moltiplica? Perche? Risposte: TRA QUALCHE LEZIONE
Problemi e algoritmi
Problemi e algoritmi Specifica, progetto e verifica della correttezza di algoritmi iterativi Il che cosa ed il come Problema: 1. dati x, y, z, così e così istanza Il che cosa ed il come Problema: 1. dati
DettagliSpecifica, progetto e verifica della correttezza di algoritmi iterativi. Ragionamenti su di un algoritmo. Il metodo delle asserzioni (Floyd)
Specfca, progetto e verfca della correttezza d algortm teratv Il metodo delle asserzon Ragonament su d un algortmo Ragonare sulla specfca d un algortmo data con pre e post-condzon serve a: (a posteror)
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
DettagliLogica per la Programmazione
Logica per la Programmazione Lezione 14 Sistema di Dimostrazioni per le Triple di Hoare Comando Iterativo A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione a.a. 2017/18 pag. 260 Semantica
DettagliProblemi 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
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
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
Dettaglicontiene il valore e nel range [l, u]. Funziona correttamente solo se 0 l e u a.
Linear search @pre @post bool LinearSearch(int [] a, int l, int u, int e) { for @ (int i := l;i u;i := i+1){ if (a[i] = e) return true; return false; LinearSearch ricerca il valore e all interno del range
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
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
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
DettagliLogica per la Programmazione
Logica per la Programmazione Lezione 12 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,
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
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
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
DettagliLogica per la Programmazione
Logica per la Programmazione Lezione 11 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,
DettagliOperativamente, risolvere un problema con un approccio ricorsivo comporta
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
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
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
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
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 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Tripla di Hoare soddisfatta A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione a.a.
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
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
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
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
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
Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile
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
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 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
DettagliAlgoritmi e Strutture Dati
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
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:
DettagliInformatica
Informatica 2014-09-10 Nota: Scrivete su tutti i fogli nome e matricola. Esercizio 1. Si illustrino le differenze tra gli algoritmi di ricerca lineare e ricerca binaria su un vettore. Anche senza presentarli
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
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
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
DettagliLogica per la Programmazione
Logica per la Programmazione Lezione 12 Sistema di Dimostrazioni per le Triple di Hoare Comando Vuoto, Assegnamento, Sequenza, Condizionale A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione
DettagliArray e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa 17. A. Miola Gennaio 2012
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 17 A. Miola Gennaio 2012 1 Contenuti q Array paralleli q Array e oggetti q Ricerca sequenziale q Ricerca binaria q Fusione di sequenze
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
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
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
DettagliLogica per la Programmazione
Logica per la Programmazione Lezione 15 Sistema di Dimostrazioni per le Triple di Hoare Comando Vuoto, Assegnamento, Sequenza, Condizionale A. Corradini e F. Bonchi Dip.to Informatica Logica per la Programmazione
DettagliUna 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
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
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
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
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 3 Analisi dettagliata di un programma /* commento */ Possono estendersi su più linee apparire in qualsiasi parte del programma. Alternativamente
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
DettagliOrdinamenti ricorsivi
Ordinamenti ricorsivi Selection Sort ricorsivo Algoritmi di ordinamento I Il metodo del selection sort può essere facilmente realizzato in modo ricorsivo I si definisce una procedura che ordina (ricorsivamente)
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
DettagliAlgoritmo di ordinamento sul posto che ha tempo di esecuzione :
QuickSort Algoritmo di ordinamento sul posto che ha tempo di esecuzione : - O(n 2 ) nel caso peggiore - O(n log n) nel caso medio Nonostante le cattive prestazioni nel caso peggiore, rimane il miglior
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
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
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
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
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
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
DettagliLOGICA PER LA PROGRAMMAZIONE - a.a Primo Appello - 20/01/2017 Soluzioni Proposte
LOGICA PER LA PROGRAMMAZIONE - a.a. 2016-2017 Primo Appello - 20/01/2017 Soluzioni Proposte Attenzione: Le soluzioni che seguono sono considerate corrette dai docenti. Per ogni esercizio possono esistere
DettagliIL TEOREMA DI BOEHM-JACOPINI
IL TEOREMA DI BOEHM-JACOPINI Un qualunque algoritmo può essere descritto unicamente attraverso le tre strutture: Sequenza Diramazione Ciclo o iterazione Le tre strutture sono complete. Un qualunque linguaggio
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:
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
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
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
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
DettagliINTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione
INTRODUZIONE ALLA LOGICA DI HOARE Corso di Logica per la Programmazione INTRODUZIONE Dall inizio del corso ad ora abbiamo introdotto, un po alla volta, un linguaggio logico sempre più ricco: connettivi
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
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
DettagliEsempio: quanto mi piace questo corso! qufuafantofo mifi pifiafacefe qufuefestofo coforsofo!
Esercizio 1 Scrivere un programma che acquisisca da tastiera una sequenza di caratteri terminata da! e riporti sul monitor una sequenza derivata dalla precedente secondo le regole dell alfabeto farfallino
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
DettagliDiagrammi di flusso: forme
Il linguaggio C in breve Diagrammi di flusso: forme Inizio/ Fine Istruzione Input/ Output Cond C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 18/19 pag. 57 Il linguaggio C in breve if cond
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:
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
DettagliCostrutti di iterazione
Costrutti di iterazione Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2017 2018 Iterazione Data un espressione logica e un blocco di attività
DettagliUn problema di programmazione dei lavori
Un problema di programmazione dei lavori Un lavoro unitario è un lavoro che richiede esattamente una unità di tempo per essere eseguito. Dato un insieme S di lavori unitari, una programmazione per S è
Dettaglilaboratorio di python
laboratorio di python iterazione in python 22 Marzo 2019 1/31 Correzione esercizi per oggi esercizio 1 per casa Scrivere una funzione che restituisce True se una stringa passata come parametro è palindroma
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
DettagliAlgoritmi di ordinamento
Capitolo 7 Algoritmi di ordinamento 7.1 Selection sort L algoritmo di ordinamento per selezione opera nel modo seguente: supponiamo che i primi k elementi siano ordinati; l algoritmo sceglie il minimo
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
DettagliSilvia Rossi. Algoritmi di Ricerca. Informatica. Lezione n. Parole chiave: Ricerca Lineare Ricerca Binaria. Corso di Laurea:
Silvia Rossi Algoritmi di Ricerca 22 Lezione n. Parole chiave: Ricerca Lineare Ricerca Binaria Corso di Laurea: Informatica Insegnamento: Programmazione I Email Docente: srossi@na.infn.it A.A. 2009-2010
DettagliAlgoritmi, Strutture Dati e Programmi. UD 5.a: Searching (parte 1)
Algoritmi, Strutture Dati e Programmi : Searching (parte 1) Prof. Alberto Postiglione AA 2007-2008 Ricerca di un'informazione in una tabella Determinare se una parola X è presente in un dizionario (cioè
DettagliEsercitazione 3. Espressioni booleane I comandi if-else e while
Esercitazione 3 Espressioni booleane I comandi if-else e while Esercizio Si consideri la seguente istruzione: if (C1) if (C2) S1; else S2; A quali delle seguenti interpretazioni corrisponde? if (C1) if
DettagliRicerca in una sequenza ordinata
Ricerca su array ordinata Ricerca in una sequenza ordinata Se la sequenza è ordinata posso sfruttare l ordinamento per rendere più efficiente la ricerca, terminando se l elemento corrente risulta maggiore
DettagliAnalisi asintotica. Astrazione: come il tempo di esecuzione cresce in funzione della taglia dell input asintoticamente.
Analisi asintotica Vittorio Maniezzo University of Bologna Analisi asintotica Obiettivo: semplificare l analisi del consumo di risorse di un algoritmo prescindendo dai dettagli implementativi o di altro
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
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
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
DettagliLOGICA PER LA PROGRAMMAZIONE (A,B) - a.a SOLUZIONI PROPOSTE SECONDO APPELLO - 7/02/2012
LOGICA PER LA PROGRAMMAZIONE (A,B) - a.a. 2011-2012 SOLUZIONI PROPOSE SECONDO APPELLO - 7/02/2012 ESERCIZIO 1 Si provi che la seguente proposizione è una tautologia: (P S Q R) (S R) (Q P ) 1 (P S Q R)
DettagliFondamenti di Informatica A. A. 2018/19
Fondamenti di Informatica Prof. Marco Lombardi A. A. 2018/19 AlgoBuild: Strutture Iterative e Selettive OUTLINE Blocco condizionale (Struttura selettiva IF - IF/ELSE) Esempi Cicli a condizione iniziale
DettagliALGORITMI DI ORDINAMENTO E RICERCA BINARIA. Docente: Giorgio Giacinto AA 2008/2009. problema dell ordinamento in modi diversi
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
DettagliInformatica
Informatica 2019-06-24 Nota: Scrivete su tutti i fogli nome e matricola. Esercizio 1. Si forniscano le regole della semantica delle espressioni di IMP, e si enunci il risultato di determinismo per tale
DettagliStrutture Dati per Inserimento Ordinato
Strutture Dati per Inserimento Luca Abeni Informatica Luca Abeni 1 / 28 Esempio: Ordinamento di Numeri A che servono i tipi strutturati? Non bastano gli scalari? Capiamolo con un esempio... Problema: dato
DettagliUNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi
UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Matlab: esempi ed esercizi Sommario e obiettivi Sommario Esempi di implementazioni Matlab di semplici algoritmi Analisi di codici Matlab Obiettivi
Dettagli