Algoritmi su Array. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Algoritmi su Array. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna"

Transcript

1 Algoritmi su Array Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

2 Algoritmi su Array 2

3 Ringraziamenti prof. Stefano Mizzaro, Università di Udine Algoritmi su Array 3

4 Passaggio di parametri di tipo array void f1( int a[5] ); /* OK, dimensione prefissata */ void f2( int a[] ); /* OK, ma devo sapere per altre vie la dimensione di a */ void f3( int a[], int n ); #define C 40 void f4( int v[][c], int r ); void f5( int v[4][3] ); /* OK, dimensioni prefissate */ Algoritmi su Array 4

5 Esempi classici con array Inversione Ricerca lineare Ricerca binaria Ordinamento Algoritmi su Array 5

6 Inversione Algoritmi su Array 6

7 Inversione di un array Scambiare di posto gli elementi di un array a[] di n elementi Il primo e l ultimo Il secondo e il penultimo... Prima Dopo Algoritmi su Array 7

8 Come (non) scambiare il valore di due variabili int a = 3, b = 5; /* modo SBAGLIATO di scambiare tra loro i valori di a e b */ a = b; b = a; Quale è il risultato del frammento di codice sopra? Algoritmi su Array 8

9 Come scambiare il valore di due variabili 3 bicchieri, a, b e tmp ("temporaneo") In a c è acqua, in b c è vino, tmp è vuoto Voglio scambiare a e b (mettere il vino in a e l acqua in b). Come faccio? /* modo CORRETTO di scambiare a e b */ a b int a = 3, b = 5, tmp; tmp Algoritmi su Array 9

10 Come scambiare il valore di due variabili 3 bicchieri, a, b e tmp ("temporaneo") In a c è acqua, in b c è vino, tmp è vuoto Voglio scambiare a e b (mettere il vino in a e l acqua in b). Come faccio? /* modo CORRETTO di scambiare a e b */ a b int a = 3, b = 5, tmp; tmp = a; /* copia a in tmp */ tmp Algoritmi su Array 10

11 Come scambiare il valore di due variabili 3 bicchieri, a, b e tmp ("temporaneo") In a c è acqua, in b c è vino, tmp è vuoto Voglio scambiare a e b (mettere il vino in a e l acqua in b). Come faccio? /* modo CORRETTO di scambiare a e b */ a b int a = 3, b = 5, tmp; tmp = a; /* copia a in tmp */ a = b; /* copia b in a */ tmp Algoritmi su Array 11

12 Come scambiare il valore di due variabili 3 bicchieri, a, b e tmp ("temporaneo") In a c è acqua, in b c è vino, tmp è vuoto Voglio scambiare a e b (mettere il vino in a e l acqua in b). Come faccio? /* modo CORRETTO di scambiare a e b */ a b int a = 3, b = 5, tmp; tmp = a; /* copia a in tmp */ a = b; /* copia b in a */ b = tmp; /* copia tmp in a */ tmp Algoritmi su Array 12

13 Inversione: primi tentativi int i, tmp; for (i=0; i<n; i++) { tmp = a[n-i]; a[n-i] = a[i]; a[i] = tmp; SBAGLIATO int i, tmp; for (i=0; i<n; i++) { tmp = a[n-1-i]; a[n-1-i] = a[i]; a[i] = tmp; SBAGLIATO Algoritmi su Array 13

14 Inversione di un array int i, tmp; for (i=0; i<n; i++) { tmp = a[n-1-i]; a[n-1-i] = a[i]; a[i] = tmp; SBAGLIATO i= Algoritmi su Array 14

15 Inversione di un array int i, tmp; for (i=0; i<n; i++) { tmp = a[n-1-i]; a[n-1-i] = a[i]; a[i] = tmp; SBAGLIATO i= Algoritmi su Array 15

16 Inversione di un array int i, tmp; for (i=0; i<n; i++) { tmp = a[n-1-i]; a[n-1-i] = a[i]; a[i] = tmp; SBAGLIATO i= Algoritmi su Array 16

17 Inversione di un array int i, tmp; for (i=0; i<n; i++) { tmp = a[n-1-i]; a[n-1-i] = a[i]; a[i] = tmp; SBAGLIATO i= Algoritmi su Array 17

18 Inversione di un array int i, tmp; for (i=0; i<n; i++) { tmp = a[n-1-i]; a[n-1-i] = a[i]; a[i] = tmp; SBAGLIATO i= Algoritmi su Array 18

19 Inversione di un array int i, tmp; for (i=0; i<n; i++) { tmp = a[n-1-i]; a[n-1-i] = a[i]; a[i] = tmp; SBAGLIATO Alla fine riotteniamo l'array di partenza! Algoritmi su Array 19

20 L algoritmo Scambio il primo con l'ultimo......il secondo con il penultimo......fino a metà array! i = 0; while ("non sono arrivato a metà") { "scambia a[i] con a[n-1-i]" i = i + 1; Algoritmi su Array 20

21 L algoritmo (meglio) Scambio il primo con l'ultimo......il secondo con il penultimo......fino a metà array! i = 0; j = n-1; while ("non sono arrivato a metà") { "scambia a[i] con a[j]" i = i + 1; j = j 1; Algoritmi su Array 21

22 L'algoritmo Come decido se non sono ancora arrivato a metà? i j i j i = 0; j = n-1; while (i < j) { "scambia a[i] con a[j]" i = i + 1; j = j 1; Algoritmi su Array 22

23 Inversione di un array /* inversione.c : inverte il contenuto di un array */ #include <stdio.h> void inverti(int a[], int n) { int i = 0, j = n-1, tmp; while ( i < j ) { tmp = a[i]; a[i] = a[j]; a[j] = tmp; i++; j--; #define N 10 int main( void ) { int a[n], i; printf("digita %d valori\n", N); for (i = 0; i < N; i++) { /* Lettura dell'array */ scanf("%d", &a[i]); inverti(a, N); for (i = 0; i < N; i++) { /* Stampa l'array dopo l'inversione */ printf("%d\n", a[i]); return 0; Algoritmi su Array 23

24 Ricerca lineare Algoritmi su Array 24

25 Ricerca lineare Dati Un array a[] di int di lunghezza n Un intero k int ricerca(int a[], int n, int k) Restituisce la posizione di una occorrenza (la prima?) di k in a[] Se k non compare in a, restituisce -1 Procedimento Scorro l array partendo dall inizio Fermandomi se trovo un elemento il cui valore è uguale a k, oppure se arrivo in fondo all'array k 3 a[] Algoritmi su Array

26 Ricerca lineare Primo tentativo (sbagliato) int ricerca(int a[], int n, int k) { int i; for (i = 0; i < n; i++) { if (a[i] == k) { return i; /* trovato */ else { return -1; /* non trovato */ SBAGLIATO k 3 a[] Algoritmi su Array

27 Ricerca lineare Secondo tentativo (meglio) int ricerca(int a[], int n, int k) { int i; for (i = 0; i < n; i++) { if (a[i] == k) { return i; /* trovato */ return -1; /* non trovato */ OK k 3 a[] Algoritmi su Array

28 Ricerca lineare /* ricerca-lineare.c */ #include <stdio.h> int ricerca(int a[], int n, int k) { int i; for (i = 0; i < n; i++) { if (a[i] == k) { return i; return -1; #define N 10 Ricordare che l'istruzione return termina immediatamente l'esecuzione della funzione, restituendo il valore indicato int main( void ) { int a[n] = {7, 12, 3, -1, 8, 2, 1, 3, 2, 15; printf("ricerca 7 = %d\n", ricerca(a, N, 7)); printf("ricerca 15 = %d\n", ricerca(a, N, 15)); printf("ricerca 3 = %d\n", ricerca(a, N, 3)); printf("ricerca 17 = %d\n", ricerca(a, N, 17)); return 0; Algoritmi su Array 28

29 Una applicazione della ricerca lineare Il sindaco di Paperopoli ha deciso di tassare i residenti in base al reddito. Detto R il reddito lordo annuo, l'importo dovuto in tasse è (R x), dove x dipende da R secondo la seguente tabella Se 0 R < x = 0.05 Se R < x = 0.11 Se R x = 0.15 Scrivere un programma in C che chiede all'utente di inserire il reddito R (tipo double; se l'utente inserisce un valore negativo, richiederlo), e stampa l'importo dovuto in tasse Algoritmi su Array 29

30 Primo tentativo: funziona, ma... /* tasse-1.c */ #include <stdio.h> int main( void ) { double R, x; do { printf("inserire reddito R\n"); scanf("%lf", &R); while (R < 0); if ( R < ) { x = 0.05; else { if ( R < ) { x = 0.11; else { x = 0.15; printf("le tasse dovute ammontano a %f\n", R*x); return 0; Algoritmi su Array 30

31 Un bel giorno... Vista la situazione disastrata delle finanze di Paperopoli, il sindaco decide di introdurre nuovi scaglioni: Se 0 R < x = 0.05 Se R < x = 0.11 Se R < x = 0.15 Se R < x = 0.17 Se R < x = 0.20 Se R x = 0.25 Modificare il programma precedente per funzionare correttamente nella nuova situazione Algoritmi su Array 31

32 /* tasse-2.c */ #include <stdio.h> int main( void ) { double R, x; do { printf("inserire reddito R\n"); scanf("%lf", &R); while (R < 0); if ( R < ) { x = 0.05; else { if ( R < ) { x = 0.11; else { if ( R < ) { x = 0.15; else { if ( R < ) { x = 0.17; else { if ( R < ) { x = 0.20; else { x = 0.25; printf("le tasse dovute ammontano a %f\n", R*x); return 0; Algoritmi su Array 32

33

34 Idea Memorizzo gli scaglioni e le relative percentuali in una tabella cioè in un array Dato il reddito R, cerco nell'array lo scaglione corrispondente e da questo ricava la percentuale Se gli estremi degli scaglioni e/o le percentuali cambiano, devo cambiare solo l'array e non il programma che fa la ricerca! Algoritmi su Array 34

35 Nuova soluzione: meglio /* tasse-4.c */ #include <stdio.h> #define N 6 int main( void ) { double scaglioni[n]={ 0.0, , , , , ; double imposta[n] ={0.05, 0.11, 0.15, 0.17, 0.20, 0.25; double R, x; int i; do { printf("inserire reddito R\n"); scanf("%lf", &R); while (R < 0); scaglioni[i] è il limite inferiore dello scaglione i-esimo (inizio a contare da i = 0). imposta[i] è la percentuale di tasse per i redditi appartenenti allo scaglione i-esimo for (i=n-1; R < scaglioni[i]; i--) ; x = imposta[i]; Corpo del ciclo "for" vuoto! printf("le tasse dovute ammontano a %f (imposta=%f%%)\n", R*x, x*100); return 0; Algoritmi su Array 36

36 Ricerca Binaria Algoritmi su Array 37

37 Ricerca binaria Dati: Un array di valori interi distinti v[0], v[1], v[n-1] ordinati in senso crescente (v[0] < v[1] < < v[n-1]) Un valore intero x (arbitrario) Determinare la posizione di x nell'array (se presente) Es: Cioè determinare l'indice i, se esiste, tale che v[i] == x Se x non compare nell'array, restituire -1 v[0] v[1] v[2] v[3] v[4] v[5] Cerchiamo x = 7 La funzione restituisce 2 Algoritmi su Array 38

38 Esempio Ricerca di x = Algoritmi su Array 39

39 Esempio Ricerca di x = Algoritmi su Array 40

40 Esempio Ricerca di x = Algoritmi su Array 41

41 Esempio Ricerca di x = Algoritmi su Array 42

42 Esempio Ricerca di x = Algoritmi su Array 43

43 Esempio Ricerca di x = Trovato! Algoritmi su Array 44

44 Esempio Ricerca di x = Algoritmi su Array 45

45 Esempio Ricerca di x = Algoritmi su Array 46

46 Esempio Ricerca di x = Algoritmi su Array 47

47 Esempio Ricerca di x = Algoritmi su Array 48

48 Esempio Ricerca di x = Algoritmi su Array 49

49 Esempio Ricerca di x = Algoritmi su Array 50

50 Esempio Ricerca di x = Non trovato! Algoritmi su Array 51

51 Domande Dato un array ordinato di n elementi (con n "grande"): Quanti elementi bisogna esaminare nel caso migliore? Quanti elementi bisogna esaminare nel caso peggiore? Algoritmi su Array 52

52 Funzionamento dell'algoritmo Usiamo due valori interi i (inizio) e f (fine) per rappresentare la posizione (indice) del primo e dell'ultimo elemento della porzione di array in cui potrebbe trovarsi il valore cercato Indichiamo con m (mezzo) l'indice dell'elemento che occupa la posizione centrale nel sottovettore v[i] v[f] i=0 m=3 f=6 v[0] v[1] v[2] v[3] v[4] v[5] v[6] Algoritmi su Array 53

53 Schema di soluzione int ricbinaria(int v[], int n, int x) { int i = 0, f = n-1, m; while ( sottovettore non vuoto ) { m = posizione centrale nel sottovettore v[i..f] ; if (v[m] == x) { return m; /* trovato in posizione m */ else { aggiorna gli estremi i e f return -1; /* non trovato */ Algoritmi su Array 54

54 Raffinamento Come facciamo a "calcolare la posizione centrale nel sottovettore v[i..f]"? (f i + 1) elementi... i Circa (f i)/2 elementi m Circa (f i)/2 elementi f... m = i + (f i) / 2 = (i + f) / 2 Algoritmi su Array 55

55 Attenzione... Controlliamo se funziona anche in casi particolari i = 1 f = 2 m = (1 + 2) / 2 = 1 i = 4 f = 4 m = (4 + 4) / 2 = 4 Algoritmi su Array 56

56 Raffinamento int ricbinaria(int v[], int n, int x) { int i = 0, f = n-1, m; while ( sottovettore non vuoto ) { m = (i + f)/2; if (v[m] == x) { return m; /* trovato in posizione m */ else { aggiorna gli estremi i e f return -1; /* non trovato */ Algoritmi su Array 57

57 Secondo raffinamento Se il valore centrale non è quello cercato, come aggiornare il valore di i ed f? Caso 1: il valore centrale è troppo grande (es., cerchiamo 3, valore centrale è 12) i m f i f Algoritmi su Array 58

58 Secondo raffinamento Se il valore centrale non è quello cercato, come aggiornare il valore di i ed f? Caso 2: il valore centrale è troppo piccolo (es., cerchiamo 21, valore centrale è 12) i m f i f Algoritmi su Array 59

59 Secondo raffinamento int ricbinaria(int v[], int n, int x) { int i = 0, f = n-1, m; while ( sottovettore non vuoto ) { m = (i + f)/2; if (v[m] == x) { return m; /* trovato in posizione m */ else { if (x < v[m]) { f = m - 1; else { i = m + 1; return -1; /* non trovato */ Algoritmi su Array 60

60 Raffinamento finale L'algoritmo termina quando non ci sono più elementi da esaminare Es: cerchiamo x = 13 int ricbinaria(int v[], int n, int x) { int i = 0, f = n-1, m; while (i <= f) { m = (i + f)/2; if (v[m] == x) { return m; else { if (x < v[m]) { f = m - 1; else { i = m + 1; return -1; i = 0 m = 1 f = i = 2 m = 2 f = f = 1 i = Algoritmi su Array 61

61 /* ricerca-binaria.c */ #include <stdio.h> int ricbinaria(int v[], int n, int x) { int i = 0, f = n-1, m; while (i <= f) { m = (i + f) / 2; if (v[m] == x) { return m; /* trovato in posizione m */ else { if (x < v[m]) { f = m - 1; else { i = m + 1; return -1; /* non trovato */ #define N 10 int main( void ) { int a[n] = {-1, 1, 2, 3, 7, 15, 16, 18, 20, 21; printf("ricerca 7 = %d\n", ricbinaria(a, N, 7)); printf("ricerca -1 = %d\n", ricbinaria(a, N, -1)); printf("ricerca 17 = %d\n", ricbinaria(a, N, 17)); printf("ricerca -2 = %d\n", ricbinaria(a, N, -2)); return 0; Algoritmi su Array 62

62 /* ricerca-binaria.c */ #include <stdio.h> int ricbinaria(int v[], int n, int x) { int i = 0, f = n-1, m; while (i <= f) { m = (i + f) / 2; if (v[m] == x) { return m; /* trovato in posizione m */ else { if (x < v[m]) { f = m - 1; else { i = m + 1; return -1; /* non trovato */ valori duplicati? #define N 10 int main( void ) { int a[n] = {-1, 1, 2, 3, 7, 15, 16, 18, 20, 21; printf("ricerca 7 = %d\n", ricbinaria(a, N, 7)); printf("ricerca -1 = %d\n", ricbinaria(a, N, -1)); printf("ricerca 17 = %d\n", ricbinaria(a, N, 17)); printf("ricerca -2 = %d\n", ricbinaria(a, N, -2)); return 0; Algoritmi su Array 63 Cosa succede se la funzione ricbinaria() viene invocata su un array vuoto (n = 0)? Cosa succede se l'array contiene

63 Ordinamento Algoritmi su Array 64

64 Ordinamento Ordinare un array, ad es., in ordine crescente Problema classico Capita spesso in moltissime applicazioni Vari algoritmi Ne vediamo uno (Selection Sort) Semplice da capire Non molto efficiente Algoritmi su Array 65

65 Selection Sort Cerco il minimo in a[0]...a[n-1] e lo scambio con a[0] Cerco il minimo in a[1]...a[n-1] e lo scambio con a[1] Cerco il minimo in a[i]...a[n-1] e lo scambio con a[i] Algoritmi su Array

66 Schema di soluzione void selectionsort(int a[], int n) { int i, j; for (i=0; i<n-1; i++) { /* per ogni i=0, n-2 */ for (j=i+1; j<n; j++) { /* per ogni j=i+1, n-1 */ if (a[i] > a[j]) { "scambia a[i] con a[j]" Algoritmi su Array 67

67 Esempio Algoritmi su Array 68

68 Esempio Algoritmi su Array 69

69 Esempio Algoritmi su Array 70

70 Esempio Algoritmi su Array 71

71 Esempio Algoritmi su Array 72

72 Esempio Algoritmi su Array 73

73 Esempio Algoritmi su Array 74

74 Esempio Algoritmi su Array 75

75 Costo computazionale Quante volte viene eseguito il blocco di codice evidenziato? void selectionsort(int a[], int n) { int i, j; for (i=0; i<n-1; i++) { /* per ogni i=0, n-2 */ for (j=i+1; j<n; j++) { /* per ogni j=i+1, n-1 */ if (a[i] > a[j]) { "scambia a[i] con a[j]" Algoritmi su Array 77

76 = una iterazione del ciclo "for" interno (quello con indice j) n - 1 i n-2 Algoritmi su Array 78

77 = una iterazione del ciclo "for" interno (quello con indice j) n - 1 i n-2 Algoritmi su Array 80

78 1+2+ +(n 2)=parte grigia= n(n 1) 2 n - 1 = una iterazione del ciclo "for" interno (quello con indice j) n - 1 n i n-2 Algoritmi su Array 81

79 Il codice /* selection-sort.c */ #include <stdio.h> void selectionsort(int a[], int n) { int i, j, tmp; for (i = 0; i < n - 1; i++) { for (j = i + 1; j < n; j++) { if (a[i] > a[j]) { tmp = a[i]; /* scambio a[i] con a[j] */ a[i] = a[j]; a[j] = tmp; /* qui si ha che a[0..i] contiene i primi (i+1) elementi ordinati di a[] /* #define N 10 int main( void ) { int a[n], i; for (i = 0; i < N; i++) { scanf( %d, &a[i]); selectionsort(a, N); for (i = 0; i < N; i++) { printf( %d\n, a[i]); return 0; Algoritmi su Array 82

80 Versione alternativa /* selection-sort2.c */ #include <stdio.h> void selectionsort(int a[], int n) { int i, j, tmp; for (i = 0; i < n - 1; i++) { /* cerca la posizione del minimo in a[i..n-1] */ int imin = i; for (j = i + 1; j < n; j++) { if (a[j] < a[imin]) { imin = j; tmp = a[i]; /* scambio a[i] con a[imin] */ a[i] = a[imin]; a[imin] = tmp; /* qui si ha che a[0..i] contiene i primi (i+1) elementi ordinati di a[] /* #define N 10 int main( void ) { int a[n], i; for (i = 0; i < N; i++) { scanf( %d, &a[i]); selectionsort(a, N); for (i = 0; i < N; i++) { printf( %d\n, a[i]); return 0; Algoritmi su Array 83

81 Esempio i imin Algoritmi su Array 84

82 Esempio i imin Algoritmi su Array 85

83 Esempio i imin Algoritmi su Array 86

84 Esempio i imin Algoritmi su Array 87

85 Esempio i imin Algoritmi su Array 88

86 Esempio i imin Algoritmi su Array 89

87 Esempio i imin Algoritmi su Array 90

88 Esempio i Algoritmi su Array 91

89 Esempio Algoritmi su Array 92

Algoritmi su Array. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Algoritmi su Array. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Ringraziamenti prof. Stefano Mizzaro, Università di Udine http://users.dimi.uniud.it/~stefano.mizzaro/

Dettagli

Gli array Libro cap. 6 Moreno Marzol a Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Gli array Libro cap. 6 Moreno Marzol a Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna Gli array Libro cap. 6 Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Array 2 Ringraziamenti prof. Stefano Mizzaro, Università

Dettagli

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

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

Dettagli

Algoritmi di ordinamento

Algoritmi di ordinamento Algoritmi di ordinamento Il problema Vogliamo ordinare un array monodimensionale in modo crescente per il caso decrescente valgono le stesse considerazioni Vari algoritmi possibili Diverse caratteristiche

Dettagli

Algoritmi di ordinamento

Algoritmi di ordinamento Algoritmi di ordinamento Il problema Vogliamo ordinare un array monodimensionale in modo crescente per il caso decrescente valgono le stesse considerazioni Vari algoritmi possibili Diverse caratteristiche

Dettagli

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali MASTER Information Technology Excellence Road (I.T.E.R.) Array Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Tipi di dato stutturati In C si possono

Dettagli

Funzioni. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Funzioni. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna Funzioni Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Funzioni 2 Ringraziamenti prof. Stefano Mizzaro, Università di Udine

Dettagli

Ricerca in una sequenza ordinata

Ricerca 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

Dettagli

Cominciamo con un esempio... Utilizzando un sottoprogramma 16/12/2017

Cominciamo con un esempio... Utilizzando un sottoprogramma 16/12/2017 Cominciamo con un esempio... Franco FRATTOLILLO Dipartimento di Ingegneria Università degli Studi del Sannio Corso di "Programmazione I" Corso di Laurea in Ingegneria Informatica / ExAT 1 Franco FRATTOLILLO

Dettagli

Introduzione al C. Lez. 2 Funzioni e Puntatori

Introduzione al C. Lez. 2 Funzioni e Puntatori Introduzione al C Lez 2 Funzioni e Puntatori Esercizio 1: test primalità Scrivere un programma che prenda in input un intero n, e stampa SI se n è primo, NO altrimenti (NB: un intero n è primo se e solo

Dettagli

Algoritmi di ordinamento: Array e ricorsione

Algoritmi di ordinamento: Array e ricorsione Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Algoritmi di ordinamento: Array e ricorsione 2 1 Indice Algoritmi di ordinamento: Insertion

Dettagli

Algoritmi di Ricerca Ordinamento

Algoritmi di Ricerca Ordinamento Algoritmi di Ricerca e Ordinamento Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Appunti Di Informatica Prof. Accarino 1 Algoritmi classici In ambito informatico alcuni problemi si presentano

Dettagli

Esercizio 1: media di numeri reali (uso funzioni e struct)

Esercizio 1: media di numeri reali (uso funzioni e struct) Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 5 Esercitazione: 2 novembre 2005 Esercizi sulle funzioni Esercizio 1: media di numeri reali (uso funzioni e struct) Le

Dettagli

Ordinamenti ricorsivi

Ordinamenti 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)

Dettagli

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

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

Dettagli

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa 17. A. Miola Gennaio 2012

Array 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

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi 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

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 07/02/07 Nota Questi lucidi sono tratti

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi 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

Dettagli

ALGORITMI DI ORDINAMENTO E RICERCA BINARIA. Docente: Giorgio Giacinto AA 2008/2009. problema dell ordinamento in modi diversi

ALGORITMI 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

Dettagli

Introduzione al C. Lez. 2. Funzioni e Puntatori

Introduzione al C. Lez. 2. Funzioni e Puntatori Introduzione al C Lez 2 Funzioni e Puntatori Esercizio 1: test primalità Scrivere un programma che prenda in input un intero n, e stampa SI se n è primo, NO altrimenti (NB: un intero n è primo se è solo

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 10 novembre 2010 1 La bandiera nazionale (problema 4.7 del libro di testo). Il problema della bandiera

Dettagli

IEIM Esercitazione II Elementi di programmazione C. Alessandro A. Nacci -

IEIM Esercitazione II Elementi di programmazione C. Alessandro A. Nacci - IEIM 2017-2018 Esercitazione II Elementi di programmazione C Alessandro A. Nacci alessandro.nacci@polimi.it - www.alessandronacci.it 1 Esercizio 4 Dati un numero, stampare il primo numero successivo pari

Dettagli

Informatica (A-K) 14. Linguaggio C -4

Informatica (A-K) 14. Linguaggio C -4 Strutture Dati in C Le strutture dati sono entità che permettono di memorizzare dati in modo organizzato e funzionale a particolari esigenze Informatica (A-K) 14. Linguaggio C -4 Strutture Dati tipiche

Dettagli

Linguaggio C: strutture di controllo

Linguaggio C: strutture di controllo Linguaggio C: strutture di controllo Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C: strutture di controllo

Dettagli

Funzioni. Libro cap. 5. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Funzioni. Libro cap. 5. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna Funzioni Libro cap. 5 Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Funzioni 2 Ringraziamenti prof. Stefano Mizzaro, Università

Dettagli

Problemi di ricerca in insiemi ordinati

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

Dettagli

Esercizi su array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E08. C. Limongelli Gennaio 2012

Esercizi 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

Dettagli

Informatica B, AA 2018/2019

Informatica B, AA 2018/2019 Politecnico di Milano Informatica B, AA 2018/2019 Laboratorio 2 08/10/2018 Andrea Tirinzoni ( andrea.tirinzoni@polimi.it ) Pietro Fezzardi ( pietro.fezzardi@polimi.it ) 1. Costrutti iterativi Problema

Dettagli

Esercitazione 6. Array

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

Dettagli

ESERCIZI DI PROGRAMMAZIONE. - condizionali e cicli -

ESERCIZI DI PROGRAMMAZIONE. - condizionali e cicli - ESERCIZI DI PROGRAMMAZIONE - condizionali e cicli - Elementi di Informatica e Programmazione Università di Brescia 1 Esercizio 1: dal tema d esame ING-INF del 28 gennaio 2009 Si sviluppi un programma in

Dettagli

Esercitazione 6. Corso di Fondamenti di Informatica

Esercitazione 6. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 6 Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti

Dettagli

Informatica A (per gestionali) A.A. 2004/2005. Esercizi di programmazione C Funzioni: passaggio di parametri per indirizzo, passaggio di array.

Informatica A (per gestionali) A.A. 2004/2005. Esercizi di programmazione C Funzioni: passaggio di parametri per indirizzo, passaggio di array. Informatica A (per gestionali) A.A. 2004/2005 Esercizi di programmazione C Funzioni: passaggio di parametri per indirizzo, passaggio di array. Indice 1 Funzioni: passaggio di parametri per indirizzo; puntatori...3

Dettagli

Calcolare x n = x x x (n volte)

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

Dettagli

Programmazione di base

Programmazione di base Fondamenti di Informatica Quinto Appello 016-1 1 Luglio 01 Rispondi alle domande negli appositi spazi. I punti assegnati per ogni domanda sono indicati nel riquadro a lato. L'esame contiene 10 domande,

Dettagli

Ordinamento. Lorenzo Donatiello,Moreno Marzolla Dip. di Scienze dell'informazione Università di Bologna

Ordinamento. Lorenzo Donatiello,Moreno Marzolla Dip. di Scienze dell'informazione Università di Bologna Ordinamento Lorenzo Donatiello,Moreno Marzolla Dip. di Scienze dell'informazione Università di Bologna Original work Copyright Alberto Montresor, University of Trento (http://www.dit.unitn.it/~montreso/asd/index.shtml)

Dettagli

Il linguaggio C Strutture

Il linguaggio C Strutture Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C -- Strutture 2 Ringraziamenti Questi

Dettagli

Algoritimi. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Algoritimi. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna Algoritimi Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Algoritmi 2 Algoritmi 3 Algoritmi Un algoritmo è un procedimento

Dettagli

Manualistica 3 Le strutture di controllo

Manualistica 3 Le strutture di controllo Programmazione e Laboratorio di Programmazione Manualistica 3 Le strutture di controllo Programmazione e Laboratorio di Programmazione: Le strutture di controllo 1 Le strutture di controllo Strutture di

Dettagli

Università di Roma Tor Vergata L16-1. Ricerca: esaminare una collezione di dati, cercando un particolare valore. nome e cognome

Università di Roma Tor Vergata L16-1. Ricerca: esaminare una collezione di dati, cercando un particolare valore. nome e cognome Università di Roma Tor Vergata L16-1 Ricerca: esaminare una collezione di dati, cercando un particolare valore (per: ) reperire informazione modificarla stamparla cancellarla esempio: archivio studenti

Dettagli

Linguaggio C: strutture di controllo

Linguaggio C: strutture di controllo Linguaggio C: strutture di controllo Libro cap. 3 e 4 Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 Ringraziamenti prof.

Dettagli

Corso di Informatica 1 Esercitazione n. 2

Corso di Informatica 1 Esercitazione n. 2 Corso di Informatica 1 Esercitazione n. 2 Marco Liverani Esercizio n. 1 Letto in input un array A di n elementi, usando solo questo array, inverte l ordine degli elementi; ossia se A = (10,27,13,4), allora

Dettagli

Algoritmi e Laboratorio a.a Lezioni. prof. Elio Giovannetti

Algoritmi e Laboratorio a.a Lezioni. prof. Elio Giovannetti Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a. 2005-06 Lezioni prof. Elio Giovannetti Parte 7 Algoritmi di ordinamento

Dettagli

Programmazione di base

Programmazione di base Fondamenti di Informatica Sesto Appello 016-17 11 Settembre 017 Rispondi alle domande negli appositi spazi. I punti assegnati per ogni domanda sono indicati nel riquadro a lato. L'esame contiene 10 domande,

Dettagli

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Esercizio 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

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Gli algoritmi di base sul tipo array: ordinamento e ricerca Claudio De Stefano - Corso di Fondamenti di Informatica 1 Algoritmi di ordinamento gli algoritmi si differenziano

Dettagli

Array. Definizione e utilizzo di vettori

Array. Definizione e utilizzo di vettori Array Definizione e utilizzo di vettori Array (1/2) Un array o vettore rappresenta un insieme di elementi dello stesso tipo. Sintassi per la creazione di un array: tipo_elementi[] nome; nome = new tipo_elementi[numero_elementi];

Dettagli

Programmazione Appello d esame del 18 giugno 2010 Compito B

Programmazione Appello d esame del 18 giugno 2010 Compito B Programmazione Appello d esame del 18 giugno 2010 Compito B PARTE 0 (propedeutica) Esercizio 0.1 Descrivere il costrutto DOWHILE (sintassi e funzionamento) e darne il diagramma di flusso. Il costrutto

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 4 - Puntatori, vettori e stringhe Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti

Dettagli

Liceo B.Russell Classe 2 I VETTORI. ORDINAMENTO DI UN VETTORE: Metodo ingenuo o sequenziale

Liceo B.Russell Classe 2 I VETTORI. ORDINAMENTO DI UN VETTORE: Metodo ingenuo o sequenziale Fondamenti: I VETTORI Riempimento di un vettore con numeri acquisiti da tastiera; Riempimento di un vettore lungo N con i numeri da 0 a N; Riempimento di un vettore lungo N con i numeri da N a 0; Riempimento

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi

Dettagli

Il linguaggio C Strutture

Il linguaggio C Strutture Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Copyright Mirko Viroli Copyright 2017, 2018 Moreno

Dettagli

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

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

Dettagli

Passaggio dei parametri

Passaggio dei parametri Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sull environment

Dettagli

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 12 Array e Oggetti A. Miola Dicembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Array e Oggetti 1 Contenuti Array paralleli

Dettagli

Esercizio 1: calcolo insieme intersezione

Esercizio 1: calcolo insieme intersezione Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 3 Esercitazione: 19 ottobre 2005 Esercizi su array e matrici Esercizio 1: calcolo insieme intersezione Problema: *******************************************************************

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

Programmazione di base

Programmazione di base Fondamenti di Informatica Primo Appello 01-17 8 febbraio 017 Rispondi alle domande negli appositi spazi. I punti assegnati per ogni domanda sono indicati nel riquadro a lato. L'esame contiene 10 domande,

Dettagli

3 Costrutti while, for e switch

3 Costrutti while, for e switch Questa dispensa propone esercizi sulla scrittura di algoritmi, in linguaggio C, utili alla comprensione dei costrutti while, for e switch. I costrutti per costruire cicli in C sono il while, la variante

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 Contenuti Scopo di questa esercitazione: Comprendere la complessità del problema ordinamento cerchiamo di valutare il costo di una soluzione (confrontandola con un

Dettagli

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

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

Dettagli

Esercizi su array di array

Esercizi 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

Dettagli

Esercizi. La funzione swapint() primo tentativo

Esercizi. La funzione swapint() primo tentativo Politecnico di Milano Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio di array. #include

Dettagli

Manualistica 3 Le strutture di controllo

Manualistica 3 Le strutture di controllo Programmazione e Laboratorio di Programmazione Manualistica 3 Le strutture di controllo Programmazione e Laboratorio di Programmazione: Le strutture di controllo 1 Le strutture di controllo Strutture di

Dettagli

RICORSIONE, PUNTATORI E ARRAY. Quarto Laboratorio

RICORSIONE, PUNTATORI E ARRAY. Quarto Laboratorio RICORSIONE, PUNTATORI E ARRAY Quarto Laboratorio 16 DICEMBRE 2011 SCADENZA TERZA ESERCITAZIONE FUNZIONI RICORSIVE ESERCIZIO Scrivere una funzione ricorsiva che, assegnati due interi N1 ed N2, restituisca

Dettagli

Linguaggio C: Espressioni

Linguaggio C: Espressioni Linguaggio C: Espressioni Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 Ringraziamenti prof. Mirko Viroli, Università

Dettagli

Esercitazione 7. Soluzione:

Esercitazione 7. Soluzione: Esercitazione 7 Esercizio 1: Scrivere una funzione ricorsiva che calcoli il MCD di due numeri interi positivi. Ricordare che la funzione MCD(N,M) termina quando N == M e si ritorna N. int MCD(int N, int

Dettagli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

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

Dettagli

Esercizi C su array e matrici

Esercizi C su array e matrici Politecnico di Milano Esercizi C su array e matrici Massimo, media e varianza,, ordinamento, ricerca e merge, matrice simmetrica, puntatori Array Array o vettore Composto da una serie di celle int vett[4]

Dettagli

Gli array. impone al programma, in fase di esecuzione, di riservare dello spazio in memoria per 10 variabili di tipo int

Gli array. impone al programma, in fase di esecuzione, di riservare dello spazio in memoria per 10 variabili di tipo int Gli array Gli array rappresentano una modalità molto compatta per accedere ad un gruppo di variabili; tale gruppo è identificato dal nome dell'array; i tipi delle variabili appartenenti al gruppo devono

Dettagli

Esercitazione 11. Liste semplici

Esercitazione 11. Liste semplici Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene

Dettagli

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

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

Dettagli

Un esempio di calcolo di complessità: insertion sort

Un esempio di calcolo di complessità: insertion sort Un esempio di calcolo di complessità: insertion sort Vediamo su un esempio come si può calcolare la complessità di un algoritmo... L esempio è un metodo semplice per ordinare arrays: insertion sort, o

Dettagli

Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei paramet

Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei paramet Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sull environment esterno Per riferimento

Dettagli

ESERCIZI DI PROGRAMMAZIONE DA TEMI D ESAME - vettori -

ESERCIZI DI PROGRAMMAZIONE DA TEMI D ESAME - vettori - ESERCIZI DI PROGRAMMAZIONE DA TEMI D ESAME - vettori - Elementi di Informatica e Programmazione Università di Brescia 1 Esercizio 1 Sviluppare un programma che acquisisce dall utente al massimo 50 numeri

Dettagli

Fondamenti di Programmazione

Fondamenti 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

Dettagli

Programmazione di base

Programmazione di base Fondamenti di Informatica Testo A Secondo Appello 016-17 febbraio 017 Rispondi alle domande negli appositi spazi. I punti assegnati per ogni domanda sono indicati nel riquadro a lato. L'esame contiene

Dettagli

Esercizi. Stringhe. Stringhe Ricerca binaria

Esercizi. Stringhe. Stringhe Ricerca binaria Politecnico di Milano Esercizi Stringhe Stringhe Array di caratteri Funzioni: strcpy() strcmp() strlen() char stringaa[10], stringab[10]; strcpy(stringaa, stringab); Copia if (strcmp(stringaa, stringab)

Dettagli

Esercizi. Filtraggio

Esercizi. Filtraggio Politecnico di Milano Esercizi Preparazione alla prima prova intermedia Filtraggio L utente inserisce un array di numeri reali non negativi (un numero negativo indica la fine della fase di inserimento)

Dettagli

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol. Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: genna18@iol.it sito: users.iol.it/genna18 Risoluzione di un problema Dato

Dettagli

RICORSIONE. Informatica B - A.A. 2013/2014

RICORSIONE. Informatica B - A.A. 2013/2014 RICORSIONE Informatica B - A.A. 2013/2014 RICORSIONE Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma P richiama un altro sottoprogramma Q che comporta

Dettagli

Progetto Corda. Alberto Ferrari. Alberto Ferrari Ingegneria dell'informazione, UniPR. 18/12/2017 Progetto Corda

Progetto Corda. Alberto Ferrari. Alberto Ferrari Ingegneria dell'informazione, UniPR. 18/12/2017 Progetto Corda Progetto Corda Alberto Ferrari Alberto Ferrari Ingegneria dell'informazione, UniPR file:///e:/cordanoweb/lez/array.html#3 1/33 Array (ordinamento) 2/33 file:///e:/cordanoweb/lez/array.html#3 2/33 Sort

Dettagli

Esercitazione 7. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Esercitazione 7. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008 Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 7 Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti

Dettagli

Programmazione di base

Programmazione di base Fondamenti di Informatica Quarto Appello 016-17 4 luglio 017 Rispondi alle domande negli appositi spazi. I punti assegnati per ogni domanda sono indicati nel riquadro a lato. L'esame contiene 10 domande,

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 Contenuti Scopo di questa esercitazione: Comprendere la complessità del problema ordinamento cerchiamo di valutare il costo di una soluzione (confrontandola con un

Dettagli

Corso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione

Corso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Ricorsione DD Cap. 5, pp. 160-184 KP Cap. 5, pp. 199-208 Un esempio Problema: prendere in input un intero e calcolarne il fattoriale

Dettagli

Esercitazione 12. Esercizi di Ricapitolazione

Esercitazione 12. Esercizi di Ricapitolazione Esercitazione 12 Esercizi di Ricapitolazione Esercizio Scrivere un programma che, dato un numero intero positivo, stampa la sua rappresentazione binaria. ALGORITMO Scriviamo una procedura stampa_bin che,

Dettagli

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

public 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

Dettagli

Tipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Tipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna Tipi e Valori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Tipi e Valori 2 / 26 Ringraziamenti prof. Mirko Viroli, Università

Dettagli

3 Costrutti while, for e switch

3 Costrutti while, for e switch Questa dispensa propone esercizi sulla scrittura di algoritmi, in linguaggio C, utili alla comprensione dei costrutti while e for e switch. I costrutti per costruire cicli in C sono il while (e la variante

Dettagli

Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica B [079904]

Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica B [079904] Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale Informatica B [079904] Prof. P. Plebani Allievi Ingegneria Civile e Ambientale II prova in itinere (04 Febbraio 2009) Cognome

Dettagli

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

a.a Codice corso: 21012

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

Dettagli

I cicli. Iterazioni Calcolo della media Istruzioni break e continue

I cicli. Iterazioni Calcolo della media Istruzioni break e continue I cicli Iterazioni Calcolo della media Istruzioni break e continue Ciclo while p Vero A while() ; Falso Esegue una istruzione mentre una condizione è verificata Programmazione

Dettagli

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 3 - Array Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 5 30/10/2018

Esercitazioni di Fondamenti di Informatica - Lez. 5 30/10/2018 Esercitazioni di Fondamenti di Informatica - Lez. 30/10/018 Esercizi sulle funzioni in C I codici e le soluzioni degli esercizi sono nella cartella parte1 1. Scrivere i prototipi delle seguenti funzioni.

Dettagli

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

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

Dettagli