Introduzione al C. Proprietà degli elementi di un insieme. Claudio Ciccotelli

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Introduzione al C. Proprietà degli elementi di un insieme. Claudio Ciccotelli"

Transcript

1 Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Proprietà degli elementi di un insieme Claudio Ciccotelli

2 Insiemi Un insieme è una collezione di oggetti detti elementi dell'insieme. In questo corso abbiamo visto alcune strutture dati C che possono rappresentare insiemi (o multi-insiemi quando gli elementi possono ripetersi): stringhe: insiemi (ordinati) di caratteri array: insiemi (ordinati) di elementi dello stesso tipo (es. array di int) matrici: possiamo vederle come insiemi di vettori (riga o colonna) argv: insieme di stringhe Pagina 2

3 Esempi Insieme di numeri interi A = {1, 4, 7, 10 int A[] = {1, 4, 7, 10; insieme: array di int elemento: int Insieme di reali B = {0, 1, 3.14, 2.72 double B[] = {0, 1, 3.14, 2.72; Pagina 3

4 Esempi (Multi-)insieme (ordinato) di caratteri "hello" char *s = "hello"; insieme: array di char (acceduto tramite un puntatore) elemento: char Pagina 4

5 Esempi Insieme di stringhe S = {"hello", "world", "C language" char *S[3]; S[0] = "hello"; S[1] = "world"; S[2] = "C language"; Es.: argv Pagina 5

6 Esempi Insieme di vettori M = {<1,2,3>, <4,5,6> Es. matrice allocata staticamente: int M[2][3] = {{1,2,3,{4,5,6; M insieme M[0] elemento 1: vettore <1,2,3> M[1] elemento 2: vettore <4,5,6> Pagina 6

7 Esempi Insieme di vettori M = {<1,2,3>, <4,5,6> Es. matrice allocata dinamicamente: M M insieme M[0] elemento 1: vettore <1,2,3> M[1] elemento 2: vettore <4,5,6> Pagina 7

8 Verifica di proprietà sugli elementi Un problema che si presenta spesso è verificare delle proprietà sugli elementi di un insieme. proprietà: si traduce in una condizione, es.: essere pari essere compreso tra 1 e 10 contenere il carattere 'A' oppure il carattere 'B' ecc. Pagina 8

9 Verifica di proprietà sugli elementi In particolare, spesso si è interessati a verificare se qualche/tutti/nessun elemento/i dell'insieme ha/hanno una certa proprietà. Possiamo identificare almeno 6 problemi Pagina 9

10 Problemi tipici Dati un insieme S e una certa proprietà P, verificare che: 1. almeno un elemento di S abbia la proprietà P. 2. tutti gli elementi di S abbiano la proprietà P. 3. nessun elemento di S abbia la proprietà P. 4. almeno N elementi di S abbiano la proprietà P. 5. esattamente N elementi di S abbiano la proprietà P. 6. non più di N elementi di S abbiano la proprietà P. Pagina 10

11 Problemi È evidente che tra i 6 problemi proposti, alcuni sono casi particolari di altri: Problema 1 = Problema 4 con N = 1 Problema 3 = Problema 6 con N = 0 Problema 2 = Problema 4 e 5 con N = numero di elementi dell'insieme Pagina 11

12 Problemi Inoltre alcuni dei problemi sono equivalenti. Per esempio, verificare che nessun elemento abbia una proprietà P, equivale a verificare che tutti gli elementi abbiano la proprietà P', dove P' è la proprietà di non avere la proprietà P Es.: verificare che nessun elemento sia pari equivale a verificare che tutti gli elementi NON siano pari. È facile dimostrare che I problemi 1,2 e 3 sono equivalenti; Il problema 4 e il problema 6 sono equivalenti; Problema 5 è equivalente a (Problema 4 && Problema 6); ecc Pagina 12

13 Problemi Ciò nonostante analizzeremo ciascuno dei 6 problemi separatamente e per ognuno vedremo una soluzione specifica. In generale la soluzione sarà un algoritmo che restituisce 1 se la verifica ha successo, 0 altrimenti. Pagina 13

14 NOTA L'intento di questa presentazione non è quello di fornire allo studente un ricettario per risolvere problemi di questo tipo, ma di farlo ragionare sulla metodologia generale che permette di risolverli. Imparare a memoria le soluzioni per ciascuno dei casi che vedremo richiederà certamente uno sforzo maggiore. Pagina 14

15 Problema 1 Verificare che almeno un elemento di un insieme S ha una proprietà P Equivale a trovare un elemento x di S che ha la proprietà P. Come risolvere il problema? Pagina 15

16 Non pensare a come risolverlo in C! Poiché noi non pensiamo in C (fortunatamente!) approcciare un problema pensando direttamente a come risolverlo in linguaggio C può risultare difficile (specie se abbiamo poca esperienza). L'ideale è descrivere la soluzione (anche solo mentalmente) con il formalismo che ci risulta più naturale/intuitivo (es.: sequenza di passi in linguaggio naturale, pseudo-codice, diagramma di flusso, ecc.) A questo punto "tradurre" la soluzione in linguaggio C sarà, il più delle volte, banale. Pagina 16

17 Problema 1 Soluzione (Flow Chart) Ho visto tutti gli elementi di S? Sì Restituisci 0 No No Considera un nuovo elemento x di S x ha la proprietà P? Sì Restituisci 1 Pagina 17

18 Problema 1 Soluzione Una volta individuata la soluzione (in questo caso come flow chart), procediamo a tradurla in codice C. Pagina 18

19 Problema 1 Soluzione Consideriamo la seguente istanza del Problema 1: "Verificare se un insieme di interi ha almeno un elemento pari" Pagina 19

20 Problema 1 Soluzione Insieme di interi: possiamo rappresentarlo in C come un array di int. Perciò la nostra funzione C prenderà in input un puntatore a int e un intero che rappresenta il numero di elementi: int almeno_un_pari(int *S, int n); La funzione restituirà 1 se la verifica ha successo, zero altrimenti. Pagina 20

21 Problema 1 Soluzione Proprietà: essere pari La proprietà si traduce in una condizione sul generico elemento x dell'insieme S: x % 2 == 0 (condizione vera se x è pari) Pagina 21

22 Problema 1 Soluzione Iniziamo a "tradurre" dobbiamo "visitare" gli elementi dell'insieme uno ad uno Ciclo int almeno_un_pari(int *S, int n) { int i; for (i = 0; i < n; i++) { Pagina 22

23 Problema 1 Soluzione se l'elemento che sto considerando ha la proprietà P restituisci 1, altrimenti vai al prossimo elemento: int almeno_un_pari(int *S, int n) { int i; for (i = 0; i < n; i++) { if (S[i] % 2 == 0) return 1; Pagina 23

24 Problema 1 Soluzione se ho visto tutti gli elementi ( non ho mai restituito 1 nessun elemento ha la proprietà P) restituisci 0: int almeno_un_pari(int *S, int n) { int i; for (i = 0; i < n; i++) { return 0; if (S[i] % 2 == 0) return 1; Pagina 24

25 Problema 1 Errore Tipico int almeno_un_pari(int *S, int n) { int i; for (i = 0; i < n; i++) { if (S[i] % 2 == 0) return 1; else return 0; Errore! Perché? Pagina 25

26 Problema 2 Verificare che tutti gli elementi di un insieme S hanno una proprietà P Equivale a non trovare un elemento di S che non ha la proprietà P. Come risolvere il problema? Pagina 26

27 Problema 2 - Soluzione Ho visto tutti gli elementi di S? Sì Restituisci 1 No Sì Considera un nuovo elemento x di S x ha la proprietà P? No Restituisci 0 Pagina 27

28 Problema 2 Soluzione Consideriamo la seguente istanza del Problema 2: "Verificare se un insieme di interi ha tutti gli elementi pari" Pagina 28

29 Problema 2 Soluzione "Traduciamo" in C insieme di interi: array di int condizione: essere pari int tutti_pari(int *S, int n); Pagina 29

30 Problema 2 Soluzione dobbiamo "visitare" gli elementi dell'insieme uno ad uno Ciclo int tutti_pari(int *S, int n) { int i; for (i = 0; i < n; i++) { Pagina 30

31 Problema 2 Soluzione se l'elemento che sto considerando NON ha la proprietà P restituisci 0, altrimenti vai al prossimo elemento: int tutti_pari(int *S, int n) { int i; for (i = 0; i < n; i++) { // se NON è pari restituisci 0 if (S[i] % 2!= 0) return 0; Pagina 31

32 Problema 2 Soluzione se ho visto tutti gli elementi ( non ho mai restituito 0 tutti gli elementi hanno la proprietà P) restituisci 1: int tutti_pari(int *S, int n) { int i; for (i = 0; i < n; i++) { return 1; if (S[i] % 2!= 0) return 0; Pagina 32

33 Problema 2 Errore Tipico int tutti_pari(int *S, int n) { int i; for (i = 0; i < n; i++) { if (S[i] % 2 == 0) return 1; else return 0; Errore! Perché? Pagina 33

34 Problema 2 Errore Tipico int tutti_pari(int *S, int n) { int i; for (i = 0; i < n; i++) { if (S[i] % 2 == 0) return 1; return 0; Errore! Perché? Pagina 34

35 Problema 3 Verificare che nessun elemento di un insieme S ha una proprietà P Equivale a non trovare un elemento x di S che ha la proprietà P. Come risolvere il problema? Pagina 35

36 Problema 3 - Soluzione Ho visto tutti gli elementi di S? Sì Restituisci 1 No No Considera un nuovo elemento x di S x ha la proprietà P? Sì Restituisci 0 Pagina 36

37 Problema 3 Soluzione Consideriamo la seguente istanza del Problema 3: "Verificare se un insieme di reali non ha elementi pari" Pagina 37

38 Problema 3 Soluzione "Traduciamo" in C insieme di reali: array di double condizione: essere pari int nessun_pari(double *S, int n); Pagina 38

39 Problema 3 Soluzione dobbiamo "visitare" gli elementi dell'insieme uno ad uno Ciclo int nessun_pari(double *S, int n) { int i; for (i = 0; i < n; i++) { Pagina 39

40 Problema 3 Soluzione se l'elemento che sto considerando ha la proprietà P restituisci 0, altrimenti vai al prossimo elemento: int nessun_pari(double *S, int n) { int i; for (i = 0; i < n; i++) { if (S[i] % 2 == 0) return 0; Pagina 40

41 Problema 3 Soluzione se ho visto tutti gli elementi ( non ho mai restituito 0 tutti gli elementi non hanno la proprietà P) restituisci 1: int nessun_pari(double *S, int n) { int i; for (i = 0; i < n; i++) { return 1; if (S[i] % 2 == 0) return 0; Pagina 41

42 Problemi 1/2/3 - Riassumendo Problema 1 (almeno uno) è sufficiente trovare un elemento che ha la proprietà P per restituire 1; NON è sufficiente trovare un elemento che NON ha la proprietà P per restituire 0; occorre aver controllato tutti gli elementi. Problema 2 (tutti) è sufficiente trovare un elemento che NON ha la proprietà P per restituire 0; NON è sufficiente trovare un elemento che ha la proprietà P per restituire 1; occorre aver controllato tutti gli elementi. Problema 3 (nessuno) è sufficiente trovare un elemento che ha la proprietà P per restituire 0; NON è sufficiente trovare un elemento che ha NON ha la proprietà P per restituire 1; occorre aver controllato tutti gli elementi. Pagina 42

43 Problemi 4/5/6 Soluzione Problema 4: 1. Conta il numero di elementi che soddisfano la proprietà P 2. Se il conteggio è >= N restituisci 1, altrimenti 0. Soluzione Problema 5: "conteggio == N" Soluzione Problema 6: "conteggio <= N" Pagina 43

44 Problema 4/5/6 - Soluzione Consideriamo la seguente istanza del Problema 4: "Verificare se un insieme di interi contiene almeno N multipli di 3" Pagina 44

45 Problemi 4/5/6 Soluzione "Traduciamo" in C insieme di interi: array di int condizione: essere multiplo di 3 (x % 3 == 0) In questo caso, poiché nella definizione del problema N è generico, introduciamo N come ulteriore parametro della funzione. int almeno_n_mult3(int *S, int n, int N); Pagina 45

46 Problemi 4/5/6 Soluzione per effettuare il conteggio dobbiamo "visitare" gli elementi dell'insieme uno ad uno Ciclo int almeno_n_mult3(int *S, int n, int N) { int i, count = 0; for (i = 0; i < n; i++) { Pagina 46

47 Problemi 4/5/6 Soluzione se l'elemento che sto considerando ha la proprietà P incrementa il puntatore: int almeno_n_mult3(int *S, int n, int N) { int i, count = 0; for (i = 0; i < n; i++) { if (S[i] % 3 == 0) count++; Pagina 47

48 Problemi 4/5/6 Soluzione se il conteggio è maggiore o uguale a N restituisci 1, altrimenti restituisci 0: int almeno_n_mult3(int *S, int n, int N) { int i, count = 0; for (i = 0; i < n; i++) { if (S[i] % 3 == 0) count++; return count >= N; Pagina 48

49 Problemi 4/5/6 Soluzione Perché? return count >= N; Non dovrebbe essere? if (count >= N) { else { return 1; return 0; Pagina 49

50 Problemi 4/5/6 Soluzione Perché? return count >= N; Sono corrette entrambe! Non dovrebbe essere? if (count >= N) { else { return 1; return 0; Pagina 50

51 Problemi 4/5/6 Soluzione Perché? return count >= N; Non dovrebbe essere? if (count >= N) { else { return 1; return 0; Sono equivalenti! Infatti, lo standard ANSI C prevede che le espressioni con operatori relazionali e di uguaglianza (>,<,>=,<=,==,!=) valgano 1 nel caso la relazione sia vera, 0 altrimenti. La prima forma è più sintetica. La seconda forma può risultare più leggibile ai meno esperti. Pagina 51

52 Problema 4 Soluzione int almeno_n_mult3(int *S, int n, int N) { int i, count = 0; for (i = 0; i < n; i++) { if (S[i] % 3 == 0) count++; return count >= N; Pagina 52

53 Problema 5 Soluzione int esattamente_n_mult3(int *S, int n, int N) { int i, count = 0; for (i = 0; i < n; i++) { if (S[i] % 3 == 0) count++; return count == N; Pagina 53

54 Problema 6 Soluzione int non_piu_di_n_mult3(int *S, int n, int N) { int i, count = 0; for (i = 0; i < n; i++) { if (S[i] % 3 == 0) count++; return count <= N; Pagina 54

55 Problema 4 Soluzione Alternativa int almeno_n_mult3(int *S, int n, int N) { int i, count = 0; for (i = 0; i < n; i++) { if (S[i] % 3 == 0) { count++; // appena ne ho trovati almeno N // restituisco 1 if (count >= N) return 1; // se non ne ho trovati almeno N restituisco 0 return 0; Pagina 55

56 Problema 6 Soluzione Alternativa int non_piu_di_n_mult3(int *S, int n, int N) { int i, count = 0; for (i = 0; i < n; i++) { if (S[i] % 3 == 0) { count++; // appena ne ho trovati più di N // restituisco 0 if (count > N) return 0; // se non ne ho trovati più di N restituisco 1 return 1; Pagina 56

57 Problema 5 Soluzione Alternativa int esattamente_n_mult3(int *S, int n, int N) { int i, count = 0; for (i = 0; i < n; i++) { if (S[i] % 3 == 0) { count++; // appena ne ho trovati più di N // restituisco 0 if (count > N) return 0; // devo verificare se ne ho contati N (non meno) return count == N; Pagina 57

58 Soluzioni alternative: quale scegliere? Per i problemi 4, 5 e 6 sono state proposte 2 soluzioni alternative. Quale scegliere? Una è meglio dell'altra? Nessuna delle 2 alternative è migliore dell'altra in tutti i casi usate quella che vi sembra più intuitiva. Pagina 58

59 Esempi

60 Esempio 1 Data una stringa s verificare che la stringa contenga almeno un'occorrenza del carattere 'A' insieme: array di caratteri elementi: caratteri proprietà: essere il carattere 'A' int contienea(const char *s); Pagina 60

61 Esempio 1 Soluzione (Flow Chart) Ho visto tutti i caratteri? Sì Restituisci 0 No No Considera il prossimo carattere c della stringa c == 'A'? Sì Restituisci 1 Pagina 61

62 Esempio 1 Soluzione dobbiamo "visitare" gli elementi dell'insieme (caratteri) uno ad uno Ciclo int contienea(const char *s) { while (*s!= '\0') { s++; Pagina 62

63 Esempio 1 Soluzione se l'elemento che stiamo considerando è il carattere 'A' restituisci 1: int contienea(const char *s) { while (*s!= '\0') { if (*s == 'A') return 1; s++; Pagina 63

64 Esempio 1 Soluzione se ho visto tutti gli elementi ( non ho mai restituito 1 nessun elemento ha la proprietà "essere 'A'") restituisci 0: int contienea(const char *s) { while (*s!= '\0') { if (*s == 'A') return 1; s++; return 0; Pagina 64

65 Esempio 2 Data una matrice di interi M con r righe e c colonne verificare che ogni riga di M ha somma nulla. insieme: matrice (insieme di vettori riga) elementi: righe proprietà: somma degli elementi == 0 int foo(int **M, int r, int c); Pagina 65

66 Esempio 2 Soluzione (Flow Chart) Ho visto tutte le righe? Sì Restituisci 1 No Sì Considera una nuova riga la riga ha somma == 0? No Restituisci 0 Pagina 66

67 Esempio 2 Soluzione dobbiamo "visitare" gli elementi dell'insieme (righe) uno ad uno Ciclo int foo(int **M, int r, int c) { int i; for (i = 0; i < r; i++) { Pagina 67

68 Esempio 2 Soluzione per verificare la proprietà sull'elemento (riga), dobbiamo sommare gli elementi della riga (Ciclo, Accumulatore) int foo(int **M, int r, int c) { int i, j, sum; for (i = 0; i < r; i++) { sum = 0; for (j = 0; j < c; j++) { sum += M[i][j]; Pagina 68

69 Esempio 2 Soluzione se la somma NON è nulla restituisci 0: int foo(int **M, int r, int c) { int i, j, sum; for (i = 0; i < r; i++) { sum = 0; for (j = 0; j < c; j++) { sum += M[i][j]; if (sum!= 0) return 0; Pagina 69

70 Esempio 2 Soluzione se ho visto tutte le righe ( non ho mai restituito 0 tutti gli elementi hanno la proprietà "somma == 0") restituisci 1: int foo(int **M, int r, int c) { int i, j, sum; for (i = 0; i < r; i++) { sum = 0; for (j = 0; j < c; j++) { return 1; sum += M[i][j]; if (sum!= 0) return 0; Pagina 70

71 Esempio 3 Data una matrice di interi M con r righe e c colonne verificare che tutte le colonne di M contengono al più 2 zeri. insieme: matrice (insieme di vettori colonna) elementi: colonne proprietà: avere al più due zeri int bar(int **M, int r, int c); Pagina 71

72 Esempio 3 Proprietà (P1): avere al più due zeri In questo esempio, la proprietà P1, che va verificata sugli elementi colonne, richiede a sua volta di verificare una proprietà P2 (essere zero) sugli elementi interi dell'insieme colonna. Cioè, l'esempio 3 è un'istanza del Problema 2. La verifica della proprietà P1 è un'istanza del Problema 6. Pagina 72

73 Esempio 3 Istanza Problema 2: insieme: matrice (insieme di vettori colonna) elementi: colonne proprietà (P1): avere al più due zeri Istanza Problema 6: insieme: colonna (insieme di interi) elementi: interi proprietà (P2): essere zero Pagina 73

74 Esempio 3 Soluzione (Flow Chart) Ho visto tutte le colonne? Sì Restituisci 1 No Sì Considera una nuova colonna la colonna ha al più due zeri? No Restituisci 0 Pagina 74

75 Esempio 3 Verifica proprietà P1 la colonna ha al più due zeri? La colonna ha al più due zeri? 1. Conta gli zeri della colonna 2. Se il conteggio è <= 2, la colonna ha la proprietà P1, altrimenti non ha la proprietà P1. Pagina 75

76 Esempio 3 - Soluzione Procediamo con la "traduzione" della soluzione in linguaggio C Pagina 76

77 Esempio 3 Soluzione dobbiamo "visitare" gli elementi dell'insieme (colonne) uno ad uno Ciclo int bar(int **M, int r, int c) { int j; for (j = 0; j < c; j++) { Pagina 77

78 Esempio 3 Soluzione verifica della proprietà P1 soluzione Problema 6 int bar(int **M, int r, int c) { int j; for (j = 0; j < c; j++) { Pagina 78

79 Esempio 3 Soluzione verifica della proprietà P1 soluzione Problema 6 conto gli zeri della colonna (Ciclo, Accumulatore) int bar(int **M, int r, int c) { int i, j, count; for (j = 0; j < c; j++) { count = 0; for (i = 0; i < r; i++) { if (M[i][j] == 0) count++; // dopo il ciclo interno count è uguale // al numero di zeri della colonna j-esima Pagina 79

80 Esempio 3 Soluzione se count > 2 la colonna j-esima non ha al più 2 zeri non è vero che tutte le colonne hanno al più 2 zeri restituisci 0 int bar(int **M, int r, int c) { int i, j, count; for (j = 0; j < c; j++) { count = 0; for (i = 0; i < r; i++) { if (M[i][j] == 0) count++; if (count > 2) return 0; Pagina 80

81 Esempio 3 Soluzione se ho visto tutte le colonne non ho mai restituito 0 tutte le colonne hanno al più 2 zeri restituisci 1 int bar(int **M, int r, int c) { int i, j, count; for (j = 0; j < c; j++) { count = 0; for (i = 0; i < r; i++) { if (M[i][j] == 0) count++; if (count > 2) return 0; return 1; Pagina 81

82 Esempio 4 Dato un insieme di stringhe (sottoforma di array di puntatori a char) verificare che tutte le stringhe abbiano un numero di 'a' pari alla somma del numero di 'b' e 'c'. insieme: insieme di stringhe (char *stringhe[]) elementi: stringhe proprietà: avere un numero di 'a' pari alla somma del numero di 'b' e 'c'. Pagina 82

83 Esempio 4 insieme: insieme di stringhe int baz(char *str[], int n); str array di puntatori a char, ogni elemento è una stringa n - lunghezza array (= numero stringhe) Pagina 83

84 Esempio 4 proprietà: avere un numero di 'a' pari alla somma del numero di 'b' e 'c'. Le proprietà viste finora, si traducevano in condizioni piuttosto semplici. Quando la condizione è sufficientemente complessa può essere conveniente creare un'apposita funzione che prende in ingresso un elemento e restituisce 1 se l'elemento ha la proprietà, 0 altrimenti. Pagina 84

85 Esempio 4 proprietà: avere un numero di 'a' pari alla somma del numero di 'b' e 'c' int ha_la_proprieta(const char *s) { int a = 0, b = 0, c = 0; while (*s!= '\0') { switch(*s) { case 'a': a++; break; case 'b': b++; break; case 'c': c++; break; s++; return a == b+c; Pagina 85

86 Esempio 4 - Soluzione int baz(char *str[], int n) { int i = 0; for (i = 0; i < n; i++) { if (!ha_la_proprieta(str[i])) return 0; return 1; Pagina 86

87 Pagina 87

Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Esercitazione 7

Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Esercitazione 7 Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Esercitazione 7 Claudio Ciccotelli NOTA Per ottenere il massimo dei punti in ogni esercizio

Dettagli

Capitolo 16 Iterazione

Capitolo 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

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

Esercitazione di Reti degli elaboratori

Esercitazione di Reti degli elaboratori Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione

Dettagli

Array. Aggragati di variabili omogenee...

Array. Aggragati di variabili omogenee... Array Aggragati di variabili omogenee... Cosa è un array È un insieme di variabili omogenee identificato da un indice, ad esempio Se devo leggere 1 numeri dallo standard input e memorizzarli all'interno

Dettagli

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

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

Dettagli

Iterazione (introduzione)

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

Dettagli

Fondamenti di Informatica

Fondamenti 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

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione 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.

Dettagli

Esercizio 1 (17 punti)

Esercizio 1 (17 punti) Esercizio 1 (17 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 1 o luglio 2014 Un file di testo è utilizzato

Dettagli

Matrici. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Matrici. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR 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

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Dettagli

PARTE

PARTE Programmazione CdS in Matematica Appello d esame 24 Settembre 2008 Nome.. Cognome... Matricola.. INDICARE SUBITO NOME, COGNOME, E MATRICOLA NON è permesso (pena espulsione) usare la calcolatrice e consultare

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile

Dettagli

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

Linguaggio C: Array Valeria Cardellini

Linguaggio C: Array Valeria Cardellini Linguaggio C: Array Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Array in C q Dichiarazione

Dettagli

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Dettagli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 18. Iterazione. Maggio Iterazione

Corso 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

Dettagli

Corso di Informatica 1 (IN110) Tutorato n. 4

Corso di Informatica 1 (IN110) Tutorato n. 4 Corso di Informatica 1 (IN110) Tutorato n. 4 Marco Liverani Esercizio n. 1 Letto in input un array di n numeri interi ed un intero k > 1, eliminare dall array tutti i multipli di k, spostando a sinistra

Dettagli

Implementazione di DFA in C

Implementazione di DFA in C Implementazione di DFA in C Dispensa di Laboratorio di Linguaggi di Programmazione Sommario Corrado Mencar, Pasquale Lops, Stefano Ferilli Questa dispensa fornisce le linee guida per l implementazione,

Dettagli

ESERCIZIO allochi staticamente un vettore V1 di 10 float e allochi dinamicamente un vettore V2 di 10 double;

ESERCIZIO allochi staticamente un vettore V1 di 10 float e allochi dinamicamente un vettore V2 di 10 double; ESERCIZIO 1 Si realizzi un programma C che: 1. allochi staticamente un vettore V1 di 10 float e allochi dinamicamente un vettore V2 di 10 double; 2. chieda all utente di inserire gli elementi dei due vettori

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione 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

Dettagli

Iterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E06. C. Limongelli Dicembre 2011

Iterazione. 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

Dettagli

Iterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E07. C. Limongelli Novembre 2007

Iterazione. 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

Dettagli

Esistono alcune tipologie di problemi riconducibili a schemi di risoluzione standard

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

Dettagli

Informatica (A-K) 5. Algoritmi e pseudocodifica

Informatica (A-K) 5. Algoritmi e pseudocodifica Vettori e matrici #1 Informatica (A-K) 5. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Dettagli

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

Introduzione al C Lez. 4

Introduzione al C Lez. 4 Introduzione al C Lez. 4 Allocazione Dinamica della memoria http://www.di.unipi.it/~rossano/algo1/lez4.pdf Allocazione dinamica memoria In C la memoria può essere anche gestita in modo dinamico, attraverso

Dettagli

Sviluppo di programmi

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

Dettagli

Esercizi Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Esercizi Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR 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

Corso di PHP. Prerequisiti. 4.1 Array sequenziali. Variabili semplici Operazioni su variabili Strutture di controllo

Corso di PHP. Prerequisiti. 4.1 Array sequenziali. Variabili semplici Operazioni su variabili Strutture di controllo Corso di PHP. Array sequenziali // Prerequisiti Variabili semplici Operazioni su variabili Strutture di controllo // Introduzione In molte situazioni reali può capitare di elaborare elenchi di dati di

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica (L-Z) Corso di Laurea in Ingegneria Gestionale Introduzione alla Programmazione Prof. Stefano Mariani Dott. Alket Cecaj Indice Il concetto di algoritmo Algoritmo vs. programma

Dettagli

Lezione 8: Stringhe ed array multidimensionali

Lezione 8: Stringhe ed array multidimensionali Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si

Dettagli

Pag. 1. La formalizzazione dell informazione: Dati e Diagrammi di Flusso. Codifica degli algoritmi

Pag. 1. La formalizzazione dell informazione: Dati e Diagrammi di Flusso. Codifica degli algoritmi 1 Università degli studi di Parma Dipartimento di Ingegneria dell Informazione Informatica a.a. 2012/13 Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni La formalizzazione

Dettagli

Linguaggio C: Stringhe Valeria Cardellini

Linguaggio C: Stringhe Valeria Cardellini Linguaggio C: Stringhe Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Argomenti q

Dettagli

Puntatori e array. Violetta Lonati

Puntatori e array. Violetta Lonati Puntatori e array Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Puntatori e array

Dettagli

Introduzione al C. Unità 7 Array. S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi

Introduzione al C. Unità 7 Array. S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 7 Array S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi Sommario Unità

Dettagli

Fondamenti di Informatica

Fondamenti 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

Dettagli

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

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

Dettagli

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

UNIVERSITÀ 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

I tipi strutturati e i record in C++

I tipi strutturati e i record in C++ I tipi strutturati e i record in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi

Dettagli

Corso di Fondamenti di Informatica Prof Aldo Franco Dragoni Prova Scritta 25/07/2011

Corso di Fondamenti di Informatica Prof Aldo Franco Dragoni Prova Scritta 25/07/2011 Corso di Fondamenti di Informatica Prof Aldo Franco Dragoni Prova Scritta 25/07/2011 La figura riporta una "matrice" di 16 x 16 pixels, di soli 4 colori differenti: "B"ianco, "G"rigio, "N"ero e "V"erde.

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017

Dettagli

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010 Quicksort e qsort() Alessio Orlandi 28 marzo 2010 Intro Quicksort è l algoritmo di ordinamento più implementato, insieme con Mergesort. Tutte le librerie standard UNIX ne prevedono una implementazione.

Dettagli

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 11 Array A. Miola Dicembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Array 1 Contenuti Il problema degli studenti da promuovere

Dettagli

Matrici.h Definizione dei tipi #define MAXROWS 10 #define MAXCOLS 10 #define ELEMENT int #define ELEMENTFORMAT "%d" Tipo degli elementi della matrice

Matrici.h Definizione dei tipi #define MAXROWS 10 #define MAXCOLS 10 #define ELEMENT int #define ELEMENTFORMAT %d Tipo degli elementi della matrice Matrici Un po di esercizi sulle matrici Semplici Lettura e scrittura Calcolo della trasposta Media difficoltà Calcolo del determinante Difficili Soluzione di sistemi lineari È veramente difficile? 1 Matrici.h

Dettagli

Formalismi per la descrizione di algoritmi

Formalismi per la descrizione di algoritmi Formalismi per la descrizione di algoritmi Per descrivere in passi di un algoritmo bisogna essere precisi e non ambigui Il linguaggio naturale degli esseri umani si presta a interpret non univoche Si usano

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

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt); Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i

Dettagli

Corso di Laurea Ingegneria Elementi di Informatica. Iterazione. C. Limongelli. Iterazione

Corso 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

Dettagli

Istruzioni Condizionali

Istruzioni 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

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018

Esercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018 Esercitazioni di Fondamenti di Informatica - Lez. 7 0/11/018 Esercizi sull allocazione dinamica della memoria in C 1. Cosa stampa il seguente programma? 1 #d e f i n e MAXLENGTH 0 4 typedef struct { char

Dettagli

I puntatori. DD Cap.7 pp KP Cap.6 pp

I puntatori. DD Cap.7 pp KP Cap.6 pp I puntatori DD Cap.7 pp.245-280 KP Cap.6 pp.219-235 Cos è un puntatore Un puntatore è una variabile che assume come valore un indirizzo di memoria. Il nome di una variabile fa quindi riferimento ad un

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Il problema di fondo Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano

Dettagli

Matrici Un po di esercizi sulle matrici Semplici Lettura e scrittura Calcolo della trasposta Media difficoltà Calcolo l del determinante t È Difficili

Matrici Un po di esercizi sulle matrici Semplici Lettura e scrittura Calcolo della trasposta Media difficoltà Calcolo l del determinante t È Difficili Matrici Un po di esercizi sulle matrici Semplici Lettura e scrittura Calcolo della trasposta Media difficoltà Calcolo l del determinante t È Difficili Soluzione di sistemi lineari È veramente difficile?

Dettagli

... b 2 X 2. . b N X N. a 11 a 12.. a 1N a 21 a 22.. a 2N A =. a N1... a NN

... b 2 X 2. . b N X N. a 11 a 12.. a 1N a 21 a 22.. a 2N A =. a N1... a NN Matrici Un po di esercizi sulle matrici Semplici Lettura e scrittura Calcolo della trasposta Media difficoltà Calcolo l del determinante t È veramente Difficili difficile? Soluzione di sistemi lineari

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algebra di Boole Stefano Cagnoni Algebra di Boole L algebra

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Tipi Strutturati Parte 1 Introduzione G. Mecca M. Samela Università della Basilicata Tipi Strutturati: Introduzione >> Sommario Sommario Panoramica Alcuni Esempi

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

Esercizi Array Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Esercizi Array Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR 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

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

Strutture. Array dei nomi degli esami (MAX ESAMI è il massimo numero degli esami). Array con i crediti degli esami.

Strutture. Array dei nomi degli esami (MAX ESAMI è il massimo numero degli esami). Array con i crediti degli esami. Consideriamo l esercizio assegnato la scorsa lezione per rappresentare il libretto di uno studente. Per memorizzare i dati si sono utilizzati tre array: char* nomiesami[max ESAMI] Array dei nomi degli

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

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

ALGORITMI E STRUTTURE DATI

ALGORITMI E STRUTTURE DATI ALGORITMI E STRUTTURE DATI Esercitazioni AndreA Orlandini http://www.dia.uniroma3.it/~orlandin/asd/ e-mail: orlandin@dia.uniroma3.it Orario di ricevimento: Martedì 14.00-16.00 Introduzione al C + Array

Dettagli

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61 Capitolo 5 Array e collezioni c 2005 Pearson Education Italia Capitolo 5-1 / 61 Sommario: Array e collezioni 1 Array Array di oggetti Lunghezza di un array Accesso agli elementi di un array Array e cicli

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

Fondamenti di Informatica T-1 Modulo 2

Fondamenti 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

Dettagli

Rappresentazione degli algoritmi

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

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algebra di Boole Stefano Cagnoni Algebra di Boole L algebra

Dettagli

Inf matica C.I. Metodologia Scientifica & Linguistica Mario&Pavone& &

Inf matica C.I. Metodologia Scientifica & Linguistica Mario&Pavone& & Programmazione+1+ + Mario&Pavone& & Dipar/mento+di+Matema/ca+ed+Informa/ca+ Università+degli+Studi+di+Catania+ mpavone@dmi.unict.it+ hap://www.dmi.unict.it/mpavone/+ Definizioni Algoritmo: una sequenza

Dettagli

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere

Dettagli

Inf matica C.I. Metodologia Scientifica & Linguistica Mario&Pavone& &

Inf matica C.I. Metodologia Scientifica & Linguistica Mario&Pavone& & Programmazione+1+ + Mario&Pavone& & Dipar/mento+di+Matema/ca+ed+Informa/ca+ Università+degli+Studi+di+Catania+ mpavone@dmi.unict.it+ hap://www.dmi.unict.it/mpavone/+ Definizioni Algoritmo: una sequenza

Dettagli

Tipi di dato strutturati: Array

Tipi di dato strutturati: 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 sono

Dettagli

C array. Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso.

C array. Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso. Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso. Non sappiamo a priori quante variabili dobbiamo definire per contenere gli interi.

Dettagli

Strutture di controllo condizionali in Matlab

Strutture di controllo condizionali in Matlab Strutture di controllo condizionali in Matlab Informatica B Le strutture condizionali A cosa servono le strutture condizionali? %Inserimento dei parametri della parabola: y=ax^2+bx+c a = input( inserire

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE

INTRODUZIONE ALLA PROGRAMMAZIONE INTRODUZIONE ALLA PROGRAMMAZIONE Prof. Enrico Terrone A. S: 2008/09 Definizioni Programmare significa risolvere problemi col computer, cioè far risolvere problemi al computer attraverso un insieme di informazioni

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Sottoprogrammi Parte 8 Dettagli e Approfondimenti versione 2.3 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima

Dettagli

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione 4 Operatori e introduzione a funzioni Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Soluzioni ad alcuni esercizi Alcuni commenti sugli

Dettagli

Strutture dati. Operatori di incremento e decremento. Strutture di dati. Strutture di dati. ++ e -- Esempi. Vettori e matrici.

Strutture dati. Operatori di incremento e decremento. Strutture di dati. Strutture di dati. ++ e -- Esempi. Vettori e matrici. Operatori di incremento e decremento ++ e -- Esempi y=x++ il contenuto della variabile x viene inizialmente usata per l assegnazione y, e solo dopo incrementata y=--x il contenuto della variabile x viene

Dettagli

Tipi di dato strutturati: Array

Tipi di dato strutturati: Array Tipi di dato strutturati: 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 sono uno dei

Dettagli

Introduzione ai puntatori in C Definizione

Introduzione ai puntatori in C Definizione Introduzione ai puntatori in C Definizione Un puntatore è una variabile che contiene l indirizzo di un altra variabile Tramite i puntatori si può quindi accedere a un oggetto indirettamente (si usa il

Dettagli

INTRODUZIONE. ALLA PROGRAMMAZIONEColonna 1. in linguaggio C

INTRODUZIONE. ALLA PROGRAMMAZIONEColonna 1. in linguaggio C 12 10 8 INTRODUZIONE 6 4 ALLA PROGRAMMAZIONEColonna 1 Colonna 2 Colonna 3 in linguaggio C 2 0 Riga 1 Riga 2 Riga 3 Riga 4 di Mauro Casula { Scopi del seminario Essere chiaro ed esauriente; Spiegare nei

Dettagli

Note sull algoritmo di Gauss

Note sull algoritmo di Gauss Note sull algoritmo di Gauss 29 settembre 2009 Generalità Un sistema lineare di m equazioni in n incognite x,..., x n è un espressione del tipo: a x + a 2 x 2 + + a n x n = b a 2 x + a 22 x 2 + + a 2n

Dettagli

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin Linguaggio C Vettori, Puntatori e Funzioni Stringhe Università degli Studi di Brescia Prof. Massimiliano Giacomin SCHEMA DELLA LEZIONE RELAZIONE TRA VETTORI E PUNTATORI (e le stringhe letterali come caso

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

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Laurea in Ingegneria Civile e Ambientale Algoritmi e Algebra di Boole Stefano Cagnoni Il problema di fondo Descrizione

Dettagli

Allocazione Dinamica della Memoria

Allocazione Dinamica della Memoria Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando

Dettagli

Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR 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

Esercitazione Fondamenti di informatica 2

Esercitazione Fondamenti di informatica 2 Esercitazione Fondamenti di informatica 2 Array ed Oggetti JAVA 13 marzo 2006 L oggetto atrice Realizzare una classe oggetto atrice. Lo stato dell oggetto Vettore, è rappresentato da un array di array

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

1 (6) 2 (7) 3 (7) 4 (7) 5 (6)

1 (6) 2 (7) 3 (7) 4 (7) 5 (6) CORSO DI LAUREA IN INGEGNERIA ELETTRICA, CHIMICA e MATERIALI Informatica B anno accademico 010-011 Prof. Danilo ARDAGNA Seconda Prova in Itinere 7.06.011 Durata 1h 30 Valutazioni 1 (6) (7) 3 (7) 4 (7)

Dettagli

Corso di Informatica Generale, I U.D. Esercizi di riepilogo delle prime quattro settimane di corso

Corso di Informatica Generale, I U.D. Esercizi di riepilogo delle prime quattro settimane di corso Corso di Informatica Generale, I U.D. Esercizi di riepilogo delle prime quattro settimane di corso Mauro Brunato Andrea Delai Questo foglio contiene esercizi risolvibili tramite le nozioni acquisite durante

Dettagli

Diagrammi di flusso (Flow Chart)

Diagrammi di flusso (Flow Chart) Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I diagrammi di flusso visualizzano graficamente i passi da cui sono formati gli algoritmi

Dettagli

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Il problema di fondo Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Algoritmi

Dettagli

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