Esercizi proposti. Problema 3: Calcolare il numero di occorrenze del valore massimo in una sequenza di interi Stato iniziale:? Stato finale:?
|
|
- Claudia Basile
- 6 anni fa
- Visualizzazioni
Transcript
1 Esercizi proposti Problema 1: Calcolare il numero di occorrenze di un valore dato in una sequenza data Stato iniziale: {dim K, val V, c[0] V 0,..., c[k-1] V K-1 } K > 0 Stato finale: {occ #{ j j 2 [0,K-1] ^ V j =V}} Problema 2: Calcolare contemporaneamente il massimo e il minimo di una sequenza data di interi Stato iniziale: {dim K, c[0] V 0,..., c[k-1] V K-1 } con K > 0 Stato finale: {massimo max({v 0,...,V K-1 }), minimo min({v 0,...,V K-1 })} Problema 3: Calcolare il numero di occorrenze del valore massimo in una sequenza di interi Stato iniziale:? Stato finale:? Problema 4: Calcolare la media di una sequenza data di interi Stato iniziale:? Stato finale:? C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 20
2 Soluzione problema 1: Stato iniziale: {dim K, val V, c[0] V 0,..., c[k-1] V K-1 } K > 0 Stato finale: {occ #{ j j 2 [0,K-1] ^ V j =V}} occ = 0; i = 0; while (i <= dim-1) { if (c[i] == val) occ = occ + 1; i = i + 1; } Ad ogni iterazione del ciclo vale la proprietà: occ = #{ j j 2 [0,i-1] ^ c[j] = val} C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 21
3 Variazione problema 1: Stato iniziale: {dim K, val V, c[0] V 0,..., c[k-1] V K-1 } K > 0 Stato finale: {occ #{ j j 2 [0,K-1] ^ V j =V}, pos min(j) V j =V} occ = 0; pos = -1; i = 0; while (i <= dim-1) { if (c[i] == val) {occ = occ + 1; if (occ == 1) pos = i;} i = i + 1; } C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 22
4 Soluzione alternativa alla variazione problema 1: Dato che la sequenza è memorizzata, posso scorrerla anche a partire dal fondo. Ad ogni iterazione aggiorno la posizione dell occorrenza corrente (scandendo da destra a sinistra) del valore cercato: alla fine rimarrà la posizione dell ultima occorrenza (sempre scandendo da destra a sinistra), che corrisponde alla prima (scandendo da sinistra a destra). occ = 0; pos = -1; i = dim-1; while (i >= 0) { if (c[i] == val) {occ = occ + 1; pos = i;} i = i + 1; } Se dovessi invece elaborare una sequenza di dati in ingresso senza prima memorizzarli, dovrei usare la prima soluzione. C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 23
5 Soluzione problema 2 Stato iniziale: {dim K, c[0] V 0,..., c[k-1] V K-1 } con K > 0 Stato finale: {massimo max({v 0,...,V K-1 }), minimo min({v 0,...,V K-1 })} I Come calcolare il massimo è ormai noto, e calcolare il minimo è del tutto analogo (basta invertire il confronto). Per calcolare entrambi possiamo procedere nel modo seguente. I massimo = c[0]; minimo = c[0]; i = 1; while (i <= dim-1) { if (c[i] > massimo) massimo = c[i]; if (c[i] < minimo) minimo = c[i]; i = i + 1; } calcolo del massimo calcolo del minimo C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 24
6 I Ottimizzando: massimo = c[0]; minimo = c[0]; i = 1; while (i <= dim-1) { if (c[i] > massimo) massimo = c[i]; if (c[i] < minimo) minimo = c[i]; i = i + 1; } calcolo del massimo calcolo del minimo C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 25
7 Soluzione problema 3 Stato iniziale: dim K, c[0] V 0,..., c[k-1] V K-1 Stato finale: occ #{j j 2 [0,K-1] ^ V j = max{v 0,...,V K-1 }} I Un algoritmo ingenuo: I Calcoliamo il valore massimo come nel problema 2 I Scandiamo nuovamente la sequenza per contare il numero di occorrenze del massimo I Comporta una duplice scansione della sequenza I Un algoritmo che comporta una singola scansione si ottiene adattando quello visto per il calcolo del massimo C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 26
8 massimo = c[0]; i = 1; occ = 1; while (i < = dim-1) { if (c[i] > massimo) { massimo = c[i]; occ = 1; } if (c[i] == massimo) occ = occ + 1; ; i = i + 1; } C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 27
9 Soluzione problema 4: Stato iniziale: {dim K, c[0] V 0,..., c[k-1] V K-1 } con K > 0 K-1 P Stato finale: {somma V j,media ( K-1 P V j )/K } j=0 media = 0; somma = c[0]; i = 1; while (i <= dim -1) { somma = somma + c[i]; i = i + 1; } media = somma/dim; Ad ogni iterazione del ciclo vale la proprietà: somma = X 0apple japple i-1 c[j] j=0 C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 28
10 Schemi di programma: ricerca e verifica I Molti problemi riguardano la ricerca di elementi in intervalli o la verifica di proprietà. I Sviluppiamo schemi di programma (dimostrabilmente corretti) che realizzano la ricerca e la verifica. I La soluzione di problemi concreti consiste poi nella sostituzione di alcuni parametri degli schemi con valori specifici dei problemi in esame. I Distinguiamo due tipi di ricerca: ricerca certa e ricerca incerta. I I ricerca certa: si vuole determinare il minimo elemento di un intervallo [a,b) per il quale vale una certa proprietà P, sapendo che almeno un elemento dell intervallo soddisfa P. ricerca incerta: si vuole determinare, se esiste, il minimo elemento di un intervallo [a,b) per il quale vale una certa proprietà P. C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 29
11 Ricerca certa I Intervallo di ricerca: [a,b) I Proprietà: P( ) I Ipotesi di certezza: 9 i 2 [a,b). P(i) I Stato finale: x=min { i2 [a,b) P(i)}. I Lo schema generale per risolvere il problema è il seguente: int x; x=a; while (!P(x)) x=x+1; I Nota: l estremo destro dell intervallo non serve. I Si assume che la proprietà P sia esprimibile nel linguaggio. C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 30
12 Ricerca certa: esempio 1 I Calcolare la radice intera di un numero naturale. I Si può esprimere come problema di ricerca certa: b p Nc= min x2 [0,N+1) x 2 apple N < (x+1) 2 I Dunque l estremo sinistro dell intervallo di ricerca, a nello schema, in questo caso è 0, mentre l estremo destro, b nello schema, è N. I Infine la proprietà P(x) dello schema è N < (x+1) 2 int x; x=0; while ((x+1)*(x+1) <= N) x=x+1; C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 31
13 Ricerca certa: esempio 2 I Determinare la posizione della prima occorrenza di un dato elemento in un array, sapendo che tale elemento vi occorre almeno una volta. I Indichiamo con vet l array e con DIM la sua dimensione I Vogliamo determinare: x=mini2 [0,DIM) vet[i] = el I Possiamo istanziare lo schema come segue: int x; x=0; while (vet[x]!=el) x=x+1; C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 32
14 Ricerca incerta I Si vuole determinare, se esiste, ilminimoelementodiun intervallo [a,b) per il quale vale una certa proprietà P. I Perché lo schema di ricerca certa non va bene? x=a; while (!P(x)) x=x+1; I Se l elemento non c è si vanno ad esaminare valori di x che sono al di fuori dell intervallo di ricerca e per i quali la la proprietà P potrebbe addirittura non essere definita (errore a tempo di esecuzione). Esempio: Nel caso della ricerca incerta di un elemento in un array di dimensione DIM si andrebbero ad esaminare elementi del tipo vet[x] con x >= DIM. I Abbiamo bisogno di modificare lo schema in modo che l analisi degli elementi avvenga solo all interno dell intervallo di ricerca e che la ricerca venga interrotta una volta esaurito l intervallo (e non individuato alcun elemento). C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 33
15 Ricerca incerta I Intervallo di ricerca: [a,b) I Proprietà: P( ) I Stato finale: x=min i2 [a,b) P(i) dobbiamo stabilire se min b 9i 2 [a, b) :P(i) =) dobbiamo stabilire quale valore calcolare se nessun elemento dell intervallo soddisfa P: una buona scelta è il valore b, che sicuramente non fa parte dell intervallo. C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 34
16 Ricerca incerta I Utilizziamo una variabile booleana trovato (oppure esiste) che fa da sentinella =) impone l uscita dal ciclo non appena si individua un elemento che soddisfa la proprietà I in congiunzione con la sentinella, la guardia del ciclo assicura che l intervallo di ricerca non sia esaurito int trovato = FALSE; /* inizialmente false */ int x=a; while (x<b &&!trovato) if (P(x)) trovato = TRUE; /*x soddisfa P */ x=x+1; I Si suppone che le costanti TRUE e FALSE siano state definite opportunamente, ad esempio mediante le direttive #define FALSE 0 #define TRUE 1 C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 35
17 All uscita dal ciclo abbiamo due possibilità: 1. trovato ^ x 2 [a,b) ^ x=min i2 [a,b) P(i) I x è l i n d i c e c e r c a t o I il valore di verità di trovato è TRUE 2. trovato ^ x=b ^8 i2 [a,b). P(i) I nessun elemento nell intervallo di ricerca soddisfa P I il valore di x è b (fuori dell intervallo) I il valore di verità di trovato è FALSE C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 36
18 Ricerca incerta: esempio I Determinare la prima occorrenza di un elemento in un array. I È un problema di ricerca incerta: min x2 [0,DIM) vet[x] = el min DIM int trovato = FALSE; int x=0; while ( x<dim &&!trovato) if (vet[x]==el) trovato = TRUE; x=x+1; C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 37
19 I Vi sono situazioni in cui la proprietà P della ricerca (certa o incerta) non è direttamente esprimibile nel linguaggio. Esempio: Determinare (se c è) la posizione del primo elemento di un array di interi che è uguale alla somma degli elementi che lo precedono. I Si tratta di un problema di ricerca incerta in cui 1. l intervallo [a,b] è [0,DIM] 2. la proprietà P(x) è vet[x]= x P 1 vet[j] j=0 int trovato = FALSE; int x=0; while (x<dim &&!trovato) if (vet[x]== x P 1 vet[j]) j=0 trovato = TRUE; x=x+1; C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 38
20 I In questi casi si utilizza la seguente tecnica: 1. si rimpiazzano le espressioni critiche con variabili 2. si impone l uguaglianza tra le variabili introdotte in questo modo e le corrispondenti espressioni critiche, aggiungendo quanto necessario al corpo del ciclo per mantenere vere tali uguaglianze I Nell esempio: int trovato = FALSE; int x=0; int sommaprecedenti = 0; while (x<dim &&!trovato) if (vet[x]==sommaprecedenti) trovato = TRUE; { sommaprecedenti = sommaprecedenti + vet[x]; x=x+1; } C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 39
21 Verifica di una proprietà I Vogliamo verificare che tutti gli elementi di un intervallo soddisfano una certa proprietà P. 8i 2 [a, b) :P(i) 1. Facciamo una ricerca incerta del minimo elemento dell intervallo per il quale non vale la proprietà P 2. Se non lo troviamo,esito positivo, altrimenti negativo. I Lo schema generale per risolvere questo problema. int trovato = FALSE; int x=a; while (x<b &&!trovato) if (!P(x)) trovato = TRUE; x=x+1; if (trovato) /* esito negativo */ /* esito positivo */ C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 40
22 Alternativamente Possiamo ipotizzare che la proprietà sia valida per tutti gli elelmenti, e verificare se esiste un elemento per cui non lo sia. int tutti = TRUE; int x=a; while (x<b && tutti) if (!P(x)) tutti = FALSE; x=x+1; if (tutti) /* esito positivo */ /* esito negativo */ C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 41
23 Esempio: Sono dispari tutti gli elementi di un array? Cerchiamo il primo elemento pari! int trovato=false; int i=0; while (i<dim &&!trovato) if (vet[i] % 2 == 0) trovato=true; i=i+1; if (trovato) printf("il controllo ha dato esito negativo" ); printf("il controllo ha dato esito positivo" ); C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 42
24 Esercizio: Ricerche incerte più complesse I Si vogliono determinare, se esistono il minimo elemento di un intervallo [a,b) eilminimoelementodiunintervallo[c,d) per i quali vale una certa proprietà P, ovvero se: I Analogamente determinare se: I Analogamente determinare se: I Analogamente determinare se: 9i 2 [a, b), 9j 2 [c, d) :P(i, j) 9i 2 [a, b), 8j 2 [c, d) :P(i, j) 8i 2 [a, b), 9j 2 [c, d) :P(i, j) 8i 2 [a, b), 8j 2 [c, d) :P(i, j) L uscita da ogni ciclo va controllata con apposite guardie booleane, possibilmente distinte tra un ciclo e l altro. C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 43
25 Soluzione quesito 1 I Si vogliono determinare, se esistono il minimo elemento di un intervallo [a,b) eilminimoelementodiunintervallo[c,d) per i quali vale una certa proprietà P, ovvero se: 9i 2 [a, b), 9j 2 [c, d) :P(i, j) int esiste = FALSE; int i = a; while (i<b &&!esiste) {int j = c; while (j<d &&!esiste) if (P(i,j)) esiste = TRUE; j=j+1; if (!esiste) i = i+1; } C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 44
26 Soluzione quesito 2 I Si vuole determinare se: 9i 2 [a, b), 8j 2 [c, d) :P(i, j) int esiste = FALSE; int i = a; while (i<b &&!esiste ) {int tutti = TRUE; int j = c; while (j<d && tutti) if (!P(i,j)) tutti= FALSE; j =j+1; } if (tutti) esiste = TRUE; i = i+1;} C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 45
27 Soluzione quesito 3 I Si vuole determinare se: 8i 2 [a, b), 9j 2 [c, d) :P(i, j) int tutti = TRUE; int i = a; while (i<b && tutti) {int esiste = FALSE; int j = c; while (j<d &&!esiste) if (P(i,j)) esiste= TRUE; j =j+1; } if (!esiste) tutti = FALSE; i = i+1;} C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 46
28 Soluzione quesito 4 I Si vuole determinare se: int tutti = TRUE; int i = a; while (i<b && tutti) {int j = c; while (j<d && tutti) if (!P(i,j)) tutti = FALSE; j=j+1; if (tutti) i = i+1; } 8i 2 [a, b), 8j 2 [c, d) :P(i, j) C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE a.a. 17/18 pag. 47
Schemi di programma: ricerca e verifica
Schemi di programma: ricerca e verifica I Molti problemi riguardano la ricerca di elementi in intervalli o la verifica di proprietà. I Sviluppiamo schemi di programma (dimostrabilmente corretti) che realizzano
DettagliTipi di dato strutturati: Array
Array Tipi di dato strutturati: Array I tipi di dato visti finora sono tutti semplici: int, char, float,... ma i dati manipolati nelle applicazioni reali sono spesso complessi (o strutturati) Gli array
Dettagliusiamo lettere minuscole per i nomi simbolici utilizzati nello stato e negli algoritmi; usiamo lettere maiuscole per indicare costanti generiche
Lo stato Insieme di associazioni tra nomi e valori. x 5 Nelle specifiche, si vogliono spesso indicare valori costanti ma generici. Utilizziamo le seguenti convenzioni: usiamo lettere minuscole per i nomi
DettagliFONDAMENTI DI PROGRAMMAZIONE ESERCITAZIONI Corso di Laurea in MATEMATICA a.a. 2018/19
FONDAMENTI DI PROGRAMMAZIONE ESERCITAZIONI Corso di Laurea in MATEMATICA a.a. 2018/19 Chiara Bodei 1 Dipartimento di Informatica email: chiara.bodei@unipi.it C. Bodei Dip.to Informatica FONDAMENTI DI PROGRAMMAZIONE
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
DettagliCapitolo 16 Iterazione
Capitolo 16 Accesso a sequenze I problemi esaminati in questo capitolo hanno lo scopo di accedere ed elaborare delle sequenze sequenze immesse dall utente lette dalla tastiera di lunghezza nota con un
DettagliCorso di Laurea Ingegneria Elementi di Informatica. Iterazione. C. Limongelli. Iterazione
Corso di Laurea Ingegneria Elementi di Informatica C. Limongelli 1 Contenuti Si vogliono formalizzare diverse tecniche per la risoluzione di problemi di: Accumulazione Conteggio Verifica esistenziale Verifica
DettagliINFORMATICA - CdL in FISICA. COMPITO del 28/05/2003 SOLUZIONI PROPOSTE
INFORMATICA - CdL in FISICA COMITO del 28/5/23 SOLUZIONI ROOSTE ESERCIZIO 1 Indicare i valori stampati dal seguente programma C. #include main() int *p, **q, x=, y=; p = &x; q = &p; *q = &y;
DettagliProgrammazione ricorsiva: cenni
: cenni In quasi tutti i linguaggi di programmazione evoluti è ammessa la possibilità di definire funzioni/procedure ricorsive: durante l esecuzione di una funzione F è possibile chiamare la funzione F
DettagliCorso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 18. Iterazione. Maggio Iterazione
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 18 Maggio 2010 1 Contenuti Si vogliono formalizzare diverse tecniche per la risoluzione di problemi di: Accumulazione Conteggio Verifica
DettagliIterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E07. C. Limongelli Novembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E07 Iterazione C. Limongelli Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Iterazione 1 Contenuti Si vogliono formalizzare
DettagliIterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E06. C. Limongelli Dicembre 2011
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E06 C. Limongelli Dicembre 2011 1 Contenuti q Si vogliono formalizzare diverse tecniche per la risoluzione di problemi di: Accumulazione
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
DettagliCorso di Fondamenti di Informatica Algoritmi su array / 1
Corso di Informatica Algoritmi su array / Anno Accademico 200/20 Francesco Tortorella Algoritmi su array Quando si usano gli array, si eseguono frequentemente alcune operazioni tipiche : inizializzazione
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
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
Dettaglipublic static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;
Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i
DettagliTipi di dato strutturati: Array
Tipi di dato strutturati: Array I dati visti finora sono: numeri (interi o razionali), booleani le stringhe (sequenze di caratteri) ma i dati manipolati nelle applicazioni reali sono spesso complessi (o
DettagliAlgoritmi di Ricerca. Esempi di programmi Java. Prof. Angela Bonifati
Passaggio dei parametri in Java Nel seguente esempio public class parametri2 public static void main(string args[]) int x = 1; int y; double d[] = new double[2]; d[0] = 25; y= metodo1(d, x); System.out.println("Il
DettagliIstruzioni Condizionali
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 10 Istruzioni Condizionali Carla Limongelli Novembre 2011 http://www.dia.uniroma3.it/~java/fondinf/ Istruzioni condizionali 1 Contenuti
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
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
DettagliIn C i sottoprogrammi si realizzano attraverso le funzioni. Una funzione può essere vista come una scatola nera:
Funzioni Modularizzazione Quando abbiamo a che fare con un problema complesso spesso lo suddividiamo in problemi più semplici che risolviamo separatamente, per poi combinare insieme le soluzioni dei sottoproblemi
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
DettagliTesting, correttezza e invarianti
Testing, correttezza e invarianti Capitolo 3.2 dispensa Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 Harvard Mark II
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
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
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
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
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
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
Dettaglidel Linguaggio C Istruzioni di iterazione
Istruzioni i Iterative ti del Linguaggio C Istruzioni di iterazione Le istruzioni di iterazione forniscono strutture di controllo che esprimono la necessità di ripetere una certa istruzione durante il
Dettagli6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
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
DettagliCompitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A
Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare
DettagliEsercizi su array di array
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E10 C. Limongelli Gennaio 2010 1 Contenuti Fusione di due array ordinati, con eliminazione di duplicati Verifica array bidimensionale
DettagliEsercizi su Array di Stringhe
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E10 Esercizi su Array di Stringhe A. Miola Gennaio 2012 1 Problema su array di stringhe... q Dato un array di stringhe, verificare
DettagliSintassi e semantica delle istruzioni strutturate in Java
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 14 Sintassi e semantica delle istruzioni strutturate in Java Carla Limongelli Aprile 2010 1 Contenuti Classificazione delle istruzioni
DettagliCorso di Laurea in Informatica Modulo di Laboratorio di Programmazione I (a.a ) Docente: Prof. M. Nesi
Corso di Laurea in Informatica Modulo di Laboratorio di Programmazione I (a.a. 2009-10) Docente: Prof. M. Nesi Esercizi su Algoritmi e Diagrammi di Flusso (Versione preliminare) Dati i seguenti problemi,
DettagliEsercizi su Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E09. C. Limongelli Novembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E09 Esercizi su Array C. Limongelli Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Esercizi su array 1 Contenuti Esercizi:
DettagliStrutture di controllo in C++
Strutture di controllo in C++ Fondamenti di Informatica R. Basili a.a. 2006-2007 Il controllo: selezione Spesso la sequenza delle istruzioni non e prevedibile a priori ma dipende strettamente dalle configurazioni
DettagliEsercizi su array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E08. C. Limongelli Gennaio 2012
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E08 Esercizi su Array C. Limongelli Gennaio 2012 1 Contenuti q Esercizi: Lettura e stampa di un array Massimo elemento di un array
DettagliLa programmazione nel linguaggio C
Cancellazione : versione ricorsiva Sfruttiamo la visione ricorsiva della struttura dati per realizzare la cancellazione in modo ricorsivo 1. la cancellazione della vuota non richiede alcuna azione 2. la
DettagliRichiami di Fondamenti di Informatica - 1
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 2 Richiami di Fondamenti di Informatica - 1 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Richiami di FdI-1
DettagliSemplici Algoritmi di Ordinamento
Fondamenti di Informatica Semplici Algoritmi di Ordinamento Fondamenti di Informatica - D. Talia - UNICAL 1 Ordinamento di una sequenza di elementi Esistono molti algoritmi di ordinamento. Tutti ricevono
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
Dettaglia + 2b + c 3d = 0, a + c d = 0 c d
SPAZI VETTORIALI 1. Esercizi Esercizio 1. Stabilire quali dei seguenti sottoinsiemi sono sottospazi: V 1 = {(x, y, z) R 3 /x = y = z} V = {(x, y, z) R 3 /x = 4} V 3 = {(x, y, z) R 3 /z = x } V 4 = {(x,
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
DettagliCorso di Laurea Ingegneria Informatica. Dispensa E11. Esercizi su array e. Gennaio 2012
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E11 Esercizi su array e array di array C. Limongelli Gennaio 2012 1 Contenuti Fusione di due array ordinati, con eliminazione di
DettagliCosa intendiamo per programmazione
Cosa è? Cosa intendiamo per programmazione I calcolatori sono macchine in grado di eseguire velocemente e con precisione sequenze di operazioni elementari. A differenza di altre macchine automatiche (es.
DettagliLa programmazione nel linguaggio JavaScript. Il programma
Il programma Nei linguaggi di programmazione il programma è una funzione che ha come argomento i dati digitati in input e opportunamente convertiti. la descrizione della funzione (ovvero il programma)
DettagliIterazione indeterminata
Iterazione indeterminata In alcuni casi il numero di iterazioni da effettuare non è noto prima di iniziare il ciclo, perché dipende dal verificarsi di una condizione. Esempio: Leggere una sequenza di interi
DettagliLaboratorio di informatica Ingegneria meccanica
C: costanti introdotte con #define Laboratorio di informatica Ingegneria meccanica Lezione 4 22 ottobre 2007 Forma: #define nome valore Effetto: ogni occorrenza successiva di nome sarà rimpiazzata con
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
DettagliCorso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Simulazione del Questionario a Risposte Multiple.
Domanda n. 1 Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Simulazione del Questionario a Risposte Multiple 8-Nov-2004 Argomento: Rappresentazione dell'informazione
DettagliLezione 6 programmazione in Java
Lezione 6 programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Le costanti I vettori Cos è un vettore Come si usa I vari tipi di vettori Esempi
DettagliCorso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4
Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4 Domanda n. 1 Argomento: Rappresentazione dell'informazione Domanda: Il numero binario
DettagliEsercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);
Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di
DettagliFondamenti di Informatica T-1 Modulo 2
Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Array e funzioni 2. Array e funzioni ricorsive 3. Array e confronto di array 2 Esercizio 1 Creare un programma che legga da
DettagliEspressioni booleane. Esempio: temperatura <= 0 velocita > velocita max
Espressioni booleane Espressioni booleane il linguaggio deve consentire di descrivere espressioni booleane cioé espressioni che ritornino come risultato valori di verit : vero o falso (guardie di condizionali
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
Dettaglir 2 r 2 2r 1 r 4 r 4 r 1
SPAZI R n 1. Esercizi Esercizio 1. Stabilire quali dei seguenti sottoinsiemi sono sottospazi: V 1 = {(x, y, z) R 3 /x = y = z} V = {(x, y, z) R 3 /x = 4} V 3 = {(x, y, z) R 3 /z = x } V 4 = {(x, y, z)
DettagliFondamenti di Informatica
Fondamenti di Informatica AlgoBuild: Strutture selettive, iterative ed array Prof. Arcangelo Castiglione A.A. 2016/17 AlgoBuild : Strutture iterative e selettive OUTLINE Struttura selettiva Esempi Struttura
Dettagliosservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1
Esempio: Leggere due interi positivi e calcolarne il massimo comun divisore. MCD(12, 8) = 4 MCD(12, 6) = 6 MCD(12, 7) = 1 Sfruttando direttamente la definizione di MCD osservazione: 1 MCD(m,n) min(m,n)
DettagliMoltiplicazione veloce di interi
Moltiplicazione veloce di interi Ogni numero intero w di n cifre può essere scritto come 10 n/2 w s + w d w s indica il numero formato dalle n/2 cifre più significative di w w d denota il numero formato
DettagliTesting, correttezza e invarianti
Testing, correttezza e invarianti Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Copyright 2018 Moreno Marzolla, Università
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
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Strutture di Dati Conclusioni parte b versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G.
DettagliApprofondimenti sul ciclo while
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione In questa lezione... Mostriamo semplici esempi di uso dei cicli Ciascuno di
DettagliFondamenti Teorici e Programmazione
Fondamenti Teorici e Programmazione Modulo A Elementi di Programmazione Claudio Gallicchio, Ph.D. Array 2 Dati Strutturati I tipi di dati visti finora sono numeri (interi o razionali) booleani (valori
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.
Dettagliosservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1
Esempio: Leggere due interi positivi e calcolarne il massimo comun divisore. MCD(12, 8) = 4 MCD(12, 6) = 6 MCD(12, 7) = 1 Sfruttando direttamente la definizione di MCD osservazione: 1 MCD(m,n) min(m,n)
DettagliDue osservazioni sulle variabili
Due osservazioni sulle variabili Dichiarazione: cosa succede se non dichiaro una variabile e la uso? provare... Le costanti: sono utilizzate nei linguaggi di programmazione rendere simbolici dei valori
DettagliPer gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.
Fondamenti di Informatica - A. Fantechi Raccolta di esercizi Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.
DettagliSilvia Rossi. Cenni sulla complessità. Informatica. Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Programmazione I
Silvia Rossi Cenni sulla complessità 23 Lezione n. Parole chiave: Corso di Laurea: Informatica Insegnamento: Programmazione I Email Docente: srossi@na.infn.it A.A. 2009-2010 Abbiamo visto che dato un problema
DettagliCOMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI
COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.200.2005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Confronto di algoritmi Uno stesso problema può essere risolto in modi diversi,
DettagliElementi di Informatica e Programmazione
Università degli Studi di Brescia Elementi di Informatica e Programmazione ESERCITAZIONE Docente: A. Saetti Esercitatori: M. Sechi, A. Bonisoli Vers. 04/10/2017 Docente: Alessandro Saetti Elementi di informatica
DettagliPROGRAMMAZIONE I (A,B) - a.a I Verifica Intermedia 3 Novembre 2017
Esercizio 1 PROGRAMMAZIONE I (A,B) - a.a. 2017-18 I Verifica Intermedia 3 Novemre 2017 Dato il seguente linguaggio sull alfaeto Σ = {a, L = { a k m k%3 = m k 0 si verifichi se è regolare o meno e si dia
DettagliFondamenti di Informatica
Fondamenti di Informatica AlgoBuild: Strutture iterative e selettive Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 AlgoBuild: Strutture iterative
DettagliPASCAL LA SELEZIONE: IF TRATTO DA CAMAGNI-NIKOLASSY, CORSO DI INFORMATICA, VOL. 1, HOEPLI. Informatica
PASCAL LA SELEZIONE: IF TRATTO DA CAMAGNI-NIKOLASSY, CORSO DI INFORMATICA, VOL. 1, HOEPLI Informatica La selezione semplice: if..then La selezione semplice: if..then L istruzione di selezione semplice
DettagliDott. R. Gori, Dott. A. Rama INFORMATICA 242AA a.a. 2011/12 pag. 1. Le istruzioni iterative permettono di ripetere determinate azioni più volte:
Leggere 5 interi, calcolarne la somma e stamparli. Variante non accettabile: 5 variabili, 5 istruzioni di lettura, 5... int i1, i2, i3, i4, i5; scanf("%d", &i1):... scanf("%d", &i5); printf("%d", i1 +
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Strutture di Dati Parte 4 Conclusioni G. Mecca M. Samela Università della Basilicata Strutture di Dati: Conclusioni >> Sommario Sommario Ricapitolazione Alcune
DettagliLab 04 Programmazione Strutturata"
Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 04 Programmazione Strutturata" Lab04 1 Valutazione in cortocircuito (1)" In C, le espressioni booleane sono valutate
DettagliFondamenti di Programmazione
A.A. 08/09 Fondamenti di Programmazione (canale E-O) Docente: Prof.ssa Tiziana Calamoneri calamo@di.uniroma1.it Esercitatore: Dott. Roberto Petroccia petroccia@di.uniroma1.it Pagina del corso: http://twiki.di.uniroma1.it/twiki/view/programmazione1/eo/webhome
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,
DettagliPROGRAMMAZIONE 1 e LABORATORIO (A,B) - a.a Prova scritta del 10/01/2012 SOLUZIONI PROPOSTE
PROGRAMMAZIONE 1 e LABORATORIO (A,B) - a.a. 2011-2012 Prova scritta del 10/01/2012 SOLUZIONI PROPOSTE ESERCIZIO 1 (punti 5) Un albero discendente a destra (dad) è: una foglia un nodo con n figli ordinati
DettagliIl primo programma C++
Il primo programma C++ Un programma in qualsiasi linguaggio evoluto è una sequenza di istruzioni che la CPU dopo opportune conversioni esegue. La sintassi dei linguaggi di programmazione è molto piu rigida
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&#
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E03 Esempi di algoritmi e programmi A. Miola Novembre 2011 1 Contenuti q Progettazione di algoritmi q Problemi di ingresso - uscita
DettagliSTRUTTURE DI CONTROLLO DEL C++
STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto
Dettagli