Matrici. Unità 7. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
|
|
- Giuliana Poggi
- 5 anni fa
- Visualizzazioni
Transcript
1 Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi
2 Docenti Metodi Numerici prof. Vittoria Bruni Programmazione prof. Domenico Daniele Bloisi Sito del corso Nota: %7E corrisponde alla tilde ~ Pagina 2
3 Orario delle Lezioni Lunedì Martedì Giovedì Venerdì Aula 15, Via Scarpa 14 Pagina 3
4 Informazioni Generali Ing. Domenico Daniele Bloisi, PhD Dipartimento di Ingegneria Informatica Automatica e Gestionale Via Ariosto 25 (adiacente Piazza Dante, A fermate Manzoni, Vittorio Emanuele, Tram 3 fermata via Labicana) mailto:bloisi@dis.uniroma1.it Pagina 4
5 Ricevimento Martedì DIS via Ariosto 25 Aula docenti adiacente aula A4 Si consiglia di inviare una per conferma e di controllare preventivamente la bacheca degli avvisi Pagina 5
6 Sommario Array come collezione di elementi Dichiarazione di variabili array Creazione di oggetti array Accesso agli elementi di un oggetto array Espressioni che rappresentano oggetti array Ricerca sequenziale di un elemento in un array Array come risultato di una funzione (come array di array) Pagina 6
7 Variabili array e puntatori const int N=4; int A[N] = {1,2,3,4; int *B; B = A; for (int i=0; i < N; i++) cout << B[i] << endl; B[0] = 10; cout << "A[0] = " << A[0] << endl; La variabile array A può essere assegnata ad una variabile puntatore ad interi B. Dopo l assegnazione B può essere usata come una variabile array. Pagina 7
8 Esecuzione Il frammento di codice precedente, se eseguito, produce il seguente output A[0] = 10 Nota: una variabile array non può essere assegnata ad un altra variabile array. Pagina 8
9 Ricerca sequenziale di un elemento in un array Scriviamo una funzione cercaarray che prende come parametri un array di interi v, un intero n corrispondente alla dimensione dell array ed un intero e da cercare nell array. La funzione restituisce true se il valore e è presente nell array, false altrimenti: bool cercaelemarray(int v[], int n, int e) { for (int i=0; i < n; i++) if (e == v[i]) return true; return false; Pagina 9
10 Esempio d uso int main () { const int n = 4; int x[n] = {1, 2, 3, 4; cout << "Array-x: " << endl; for(int i = 0; i < n; i++) cout << x[i] << endl; // cerca il valore 3 nell array x if(cercaelemarray(x, n, 3)) cout << "trovato" << endl; else cout << "non trovato" << endl; Pagina 10
11 Esecuzione Array-x: trovato Pagina 11
12 Ricerca del valore massimo in un array Scriviamo una funzione massimoarray che prenda come parametro un array a e la sua lunghezza n e restituisca il massimo valore in a (si assuma che l array contenga almeno un elemento). Una possibile realizzazione è la seguente: long massimoarray(long a[], int n) { long max = a[0]; int i; for (i = 1; i < n; i++) if (a[i] > max) max = a[i]; return max; Pagina 12
13 Esempio d uso int main () { const int n=5; long x[n] = { 5, 3, 9, 5, 12 ; // creazione array // x di 5 long for (int i=0; i<n; i++) cout << x[i] << endl; cout << "massimo = " << massimoarray(x,n) << endl; Output massimo = 12 Pagina 13
14 Rovesciare i valori di un array Scriviamo una funzione rovesciaarray che prenda come parametro un array e ne modifichi il contenuto mettendo gli elementi in ordine inverso, dall ultimo al primo. void scambia(int &i, int &j) { int t=i; i=j; j=t; void rovesciaarray(int v[], int n) { for (int i=0; i < n/2; i++) scambia(v[i], v[n-i-1]); return; Pagina 14
15 Esempio d uso int main () { const int n=5; int x[n] = { 5, 3, 9, 5, 12 ; // creazione array //x di 5 int for (int i=0; i<n; i++) // stampa cout << x[i] << " "; cout << endl; rovesciaarray(x,n); // rovescia l array x for (int i=0; i<n; i++) // stampa cout << x[i] << " "; cout << endl; return EXIT_SUCCESS; Pagina 15
16 Esecuzione Si noti che il meccanismo di passaggio dei parametri fornisce come parametro attuale al metodo rovesciaarray il riferimento ad array contenuto in x, che viene copiato nel parametro formale v. Quindi v ed x si riferiscono al medesimo array. Pagina 16
17 Array come risultato di una funzione La funzione copiainversa prende come parametro un array e restituisce un array con gli elementi in ordine inverso, dall ultimo al primo. int* copiainversa(int v[], int n) { int* temp = new(int[n]); for (int i=0; i<n; i++) { temp[n-1-i] = v[i]; return temp; In questo caso, poiché si vuole restituire un array, l array viene creato dinamicamente all interno della funzione. Pagina 17
18 Esempio d uso int main () { const int n=5; int x[n] = { 5, 3, 9, 5, 12 ; for (int i=0; i<n; i++) // stampa cout << x[i] << " "; cout << endl; int* y = copiainversa(x,n); // restituisce un // array con gli // elementi in ordine inverso for (int i=0; i<n; i++) // stampa cout << y[i] << " "; cout << endl; return EXIT_SUCCESS; Pagina 18
19 Nota Il risultato di una funzione può essere un riferimento ad un array, ma occorre usare esplicitamente il puntatore, cioè non si può scrivere int [] come risultato della funzione. In alternativa, si sarebbe potuto usare un parametro di tipo array anche per il risultato, con la relativa dichiarazione fatta (staticamente) nel main. Pagina 19
20 Nota Array allocati staticamente non devono essere deallocati esplicitamente. L array x nell esempio precedente sarà deallocato automaticamente al termine del blocco di codice in cui è definito (cioè nel main). Invece, quando si alloca dinamicamente un array, al termine del suo uso bisogna deallocare la memoria occupata esplicitamente, tramite l operatore delete. Nell esempio presedente si può aggiungere nella funzione main la seguente istruzione per rilasciare la memoria allocata nella funzione copiainversa delete(y); Pagina 20
21 Una matrice è una collezione in forma tabellare di elementi dello stesso tipo, ognuno dei quali è indicizzato da una coppia di numeri che identificano riga e colonna dell elemento. Una matrice può essere rappresentata in C++ mediante un array multidimensionale. Pagina 21
22 Esempi Dichiarazione di una matrice 3x5 accessibile mediante la variabile m: int m[3][5]; Dichiarazione di una matrice NxM mat int mat[n][m]; Pagina 22
23 Accesso agli elementi della matrice Per accedere ai singoli elementi della matrice si può procedere come segue: // assegnazione dell elemento della matrice m // alla riga 1, colonna 2 m[1][2] = 39; // assegnazione dell elemento della matrice m // alla riga 0, colonna 0 m[0][0] = 4; cout << m[1][2]; // stampa 39 Pagina 23
24 Rappresentazione grafica Pagina 24
25 Espressioni che denotano oggetti matrice Poiché una matrice è semplicemente un array i cui elementi sono a loro volta array, nella definizione di matrici è possibile utilizzare espressioni che denotano matrici come nel seguente esempio: int m[][2] = { { 3, 5, { 9, 12 ; Nota: solo la prima dimensione dell array può essere non specificata. Pagina 25
26 Esempio int main () { int m[][2] = { { 3, 5, { 9, 12 programma? ; int i, j; for(i = 0; i < 2; i++) { for(j = 0; j < 2; j++) { cout << m[i][j] << " "; cout << endl; { 3, 5, Cosa stampa questo Pagina 26
27 Esecuzione La definizione di matrice int m[][2] = { { 3, 5, { 9, 12 ; è equivalente a: int m[2][2]; m[0][0] = 3; m[0][1] = 5; m[1][0] = 9; m[1][1] = 12; Pagina 27
28 Numero di righe e colonne di una matrice Usando l operatore sizeof è possibile risalire al numero di elementi dell array, anche nel caso multidimensionale. int x[][2]= {{ 3, 5, {9, 12; cout << "dimensione array " << sizeof(x) << " bytes" << endl; stampa il valore 16, che corrisponde al numero di byte per memorizzare 4 int (4 byte ciascuno) Pagina 28
29 Stampa di una matrice per righe stampa di una matrice per righe for (int i=0; i<n; i++) { for (int j=0; j<m; j++) cout << m[i][j] << " "; cout << endl; Si noti che per accedere a tutti gli elementi della matrice m usiamo due cicli for annidati: quello esterno scandisce le righe (i), quello interno scandisce gli elementi di ogni riga (j). Quando tutti gli elementi di una riga sono stati stampati, viene scritto un ritorno a capo. Pagina 29
30 Stampa di una matrice per colonne Stampa di una matrice per colonne for (int j=0; j<m; j++) { for (int i=0; i<n; i++) cout << m[i][j] << " "; cout << endl; Esercizio 7.5 Scrivere un programma che stampi prima per righe e poi per colonne la matrice Pagina 30
31 Somma di matrici Si assuma che A e B abbiano le stesse dimensioni (stesso numero di righe e stesso numero di colonne). Vogliamo definire i valori di una nuova matrice C ottenuta sommando gli elementi corrispondenti di A e B. for (i = 0; i < N; i++) for (j = 0; j < M; j++) C[i][j] = A[i][j] + B[i][j]; Per accedere a tutti gli elementi della matrice A (e a quelli di B) usiamo due cicli for annidati: quello esterno scandisce le righe (i), quello interno scandisce gli elementi di ogni riga (j). Pagina 31
32 Prodotto di matrici Scriviamo un frammento di codice che definisca i valori di una nuova matrice C ottenuta come prodotto di A e B. Si assuma che 1. Le matrici siano quadrate, cioè abbiano lo stesso numero di righe e colonne 2. Le matrici abbiano le stesse dimensioni. Pagina 32
33 Prodotto di matrici Ogni elemento C[i][j] del prodotto di matrici A B è ottenuto come prodotto scalare della riga i di A con la colonna j di B, cioè per ogni coppia di indici i,j, si ha: Pagina 33
34 Esecuzione for (i = 0; i < N; i++) for (j = 0; j < N; j++) { C[i][j] = 0; for (k = 0; k < N; k++) C[i][j] += A[i][k] * B[k][j]; Si noti che per calcolare il prodotto delle matrici C = A x B usiamo tre cicli for annidati: quello esterno scandisce le righe (i) di C, quello intermedio scandisce le colonne (j) di C, mentre quello più interno calcola il prodotto scalare della riga i di A con la colonna j di B, che viene assegnato a C[i][j]. Pagina 34
35 Passaggio di parametri matrice Nel passaggio dei parametri per le matrici (e in generale per array multi-dimensionali) è necessario specificare nell intestazione della funzione tutte le dimensioni dell array, eccetto la prima. Per le matrici, è quindi necessario specificare il numero di colonne. void stampamatrice (int A[][3],...) {... Pagina 35
36 Passaggio di parametri matrice La funzione stampamatrice stampa solo matrici con 3 colonne! Il meccanismo quindi non consente di scrivere una funzione che stampi matrici di qualsiasi dimensione. Per risolvere questi problemi possono essere utilizzate altre strutture di dati che rappresentano matrici, oppure apposite librerie matematiche (e.g., gsl). Pagina 36
37 Esercizi Esercizio 7.6 Scrivere una funzione bool arrayuguali(int[] A, int[] B, int n) che restituisca true se gli array A e B sono uguali (cioè hanno tutti gli elementi corrispondenti uguali) false altrimenti. Pagina 37
38 Esercizi Esercizio 7.7 Una matrice M si dice diagonale se tutti gli elementi M[i][j] con i diverso da j (cioè che non appartengono alla diagonale principale) valgono zero. Scrivere una funzione che restituisca true se la matrice M è diagonale e false altrimenti. Pagina 38
39 Allocazione dinamica di matrici In C++ è possibile creare una matrice allocando memoria dinamicamente. A tale scopo utilizzeremo un puntatore a puntatore. Esempio int **m; L idea è quella di creare dinamicamente un array di puntatori che rappresenti le righe della matrice. Ogni riga punterà ad una colonna, rappresentata da un array allocato dinamicamente. Pagina 39
40 Allocazione dinamica di matrici int i; int** m; m = new (int*[rows]); for(i = 0; i < ROWS; i++) { m[i] = new (int[columns]); ROWS = 3 COLUMNS = 2 array di puntatori array di int Pagina 40
41 Allocazione dinamica di matrici m[0][1] = 5; m[2][0] = 6; ROWS = 3 COLUMNS = 2 5 array di puntatori 6 array di int Pagina 41
42 Esercizio Si scriva una funzione creamat che presi in ingresso due interi r e c, restituisca una matrice creata dinamicamente. Si realizzi un programma di prova che utilizzi creamat per creare la matrice stampandone il contenuto Pagina 42
43 Funzione creamat int** creamat(int r, int c) { int i; int** m; m = new (int*[r]); if(m == NULL) return NULL; for(i = 0; i < r; i++) { m[i] = new (int[c]); if(m[i] == NULL) return NULL; return m; Pagina 43
44 Main int main() { int r = 2, c = 4; int i, j; int **m = creamat(r, c); if(m == NULL) return EXIT_FAILURE; m[0][0] = 3; m[0][1] = 6; m[0][2] = 8; m[0][3] = 9; m[1][0] = 12; m[1][1] = 54; m[1][2] = 6; m[1][3] = 89; for(i = 0; i < r; i++) { for(j = 0; j < c; j++) { cout << m[i][j] << " "; cout << endl; return EXIT_SUCCESS; Pagina 44
45 Deallocazione di una matrice allocata dinamicamente Cosa accade se si esegue delete(m)? Pagina 45
46 Deallocazione di una matrice allocata dinamicamente Prima di eseguire delete(m) è necessario effettuare una delete su ogni riga delete(m[0]); Pagina 46
47 Deallocazione di una matrice allocata dinamicamente Deallocazione corretta for(i = 0; i < r; i++) { delete(m[i]); delete(m); Pagina 47
48 Modifica main precedente for(i = 0; i < r; i++) { for(j = 0; j < c; j++) { cout << m[i][j] << " "; cout << endl; for(i = 0; i < r; i++) { delete(m[i]); delete(m); for(i = 0; i < r; i++) { for(j = 0; j < c; j++) { cout << m[i][j] << " "; cout << endl; Pagina 48
49 Esecuzione Pagina 49
50 Accesso ad una matrice tramite aritmetica dei puntatori Sia A una matrice 5x4 allocata dinamicamente. Se si vuole accedere all elemento A[3][2] è possibile utilizzare l aritmetica dei puntatori nel seguente modo: *(*(A+3)+2) (A+3) è il quarto puntatore dell array che rappresenta le righe *(A+3) è l indirizzo del primo elemento della quarta riga *(A+3)+2 è l indirizzo del terzo elemento della quarta riga *(*(A+3)+2) è il contenuto della cella puntata dal puntatore al terzo elemento della quarta riga Pagina 50
51 Accesso ad una matrice tramite aritmetica dei puntatori A(0,0) A(3,2) 3 4 Pagina 51
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
DettagliMatrici. Unità 7. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliEsercizi 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
DettagliEsercizi 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
DettagliArray. Unità 7. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliEsercizi con Array. Unità 7. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliIntroduzione 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à
DettagliDefinizione di classi
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliIstruzioni Condizionali
Istruzioni Condizionali Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione
DettagliVariabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliFunzioni. Unità 1. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliArray. 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
DettagliChar e bool. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliIstruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliEreditarietà. Unità 9. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliParte II ing. Domenico Daniele Bloisi, PhD
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Unità 5-6 Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliSwitch. Unità 3. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliFile. Unità 8. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliPassaggio parametri puntatore
Passaggio parametri puntatore Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it
DettagliFor e do. Unità 4. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliVariabili. Unità 2. 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
DettagliEsercizi Esame. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi
Corso di Laboratorio di Informatica Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale
DettagliChar. Parte 2. 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
DettagliEsercitazione 6. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliVariabili. Unità 2. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi
Corso di Laboratorio di Informatica Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale
DettagliChar. Unità 2. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliIEIM Esercitazione X Ripasso: array, puntatori, ricorsione. Alessandro A. Nacci -
IEIM 2015-2016 Esercitazione X Ripasso: array, puntatori, ricorsione Alessandro A. Nacci alessandro.nacci@polimi.it - www.alessandronacci.it 1 Ripasso su array e puntatori 1 Ripasso su array e puntatori
DettagliEsercitazione 5. Unità Domenico Daniele Bloisi
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Unità 6-7-8 Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliFondamenti di Informatica Ing. Biomedica
Fondamenti di Informatica Ing. Biomedica Esercitazione n.8 Matrici Antonio Arena antonio.arena@ing.unipi.it Fondamenti di Informatica - Esercitazione n.8 2 Matrici In C++ viene trattata come array multi-dimesionale.
DettagliEsercitazione 6. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR. 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
DettagliFunzioni. Unità 1. 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
DettagliVariabili. Unità 2. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliTipi di dato. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliUnità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliPreprocessore. Unità 9. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi Si ringrazia Raffaele Nicolussi
Corso di Laboratorio di Informatica Ingegneria Clinica BCLR Domenico Daniele Bloisi Si ringrazia Raffaele Nicolussi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica,
DettagliUnità 11 Allocazione dinamica
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 11 Allocazione dinamica S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi
DettagliPuntatori. Unità 6. 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
DettagliControllo del flusso
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
DettagliIstruzioni Condizionali
Istruzioni Condizionali 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
DettagliStringhe 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
DettagliIstruzioni Condizionali
Istruzioni Condizionali 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
DettagliGestione della memoria
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliStrutture. 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
DettagliEsercitazioni Fondamenti di Informatica
Esercitazioni Fondamenti di Informatica Marco Biagi Esercitazione 4 Email: marco.biagi@unifi.it Bool Tipo dati che può assumere i valori true o false Contenuto nella libreria standard stdbool.h Esempio:
DettagliPassaggio parametri puntatore 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
DettagliOperazioni sulle stringhe 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
DettagliL Allocazione Dinamica della Memoria
L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento
DettagliPuntatori. Unità 6. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliOgni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
DettagliLezione 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
DettagliOperazioni sulle stringhe
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliFor e do. Parte 4. 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
DettagliAllocazione 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
DettagliVariabili dinamiche. Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free
Variabili dinamiche Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free 1 Tipi di variabili in C In C è possibile classificare le variabili in
DettagliIstruzioni Condizionali
Istruzioni Condizionali Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio
DettagliIntroduzione 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
DettagliStringhe. Unità 8. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori
DettagliIntroduzione 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! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente
! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente!!la loro esistenza deve essere prevista e dichiarata a priori! Questo può rappresentare un problema soprattutto per variabili
DettagliPassaggio parametri puntatore
Passaggio parametri puntatore Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale
DettagliLezione 12: Allocazione Dinamica della Memoria
Lezione 12: Allocazione Dinamica della Memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 17 Aprile 2013 Puntatori e vettori Puntatori ed indirizzi Semplificando, la memoria di un computer
DettagliArray di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa Array di array A. Miola Febbraio 8 http://www.dia.uniroma.it/~java/fondinf/ Array di array Contenuti Array bidimensionali creazione
DettagliL'Allocazione Dinamica della Memoria nel linguaggio C
L'Allocazione Dinamica della Memoria nel linguaggio C Prof. Rio Chierego riochierego@libero.it http://www.riochierego.it/informatica.htm Sommario Questo documento tratta l'allocazione dinamica della memoria
DettagliLaboratorio di Algoritmi e Strutture Dati. Esercizi
Laboratorio di Algoritmi e Strutture Dati Esercizi Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro 1 Operatori Indispensabili Ogni Classe che
DettagliPer quanto sappiamo finora, in C le variabili sono sempre definite staticamente. per variabili di tipo array, in cui dover
ALLOCAZIONE STATICA: LIMITI Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente la loro esistenza deve essere prevista e dichiarata a priori Questo può rappresentare un problema
DettagliGestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.
DettagliEsercitazione 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
DettagliParte 3. Puntatori. [S. Dalí The temptation of St. Anthony, 1946] - AA. 2015/16 3.1
Parte 3 Puntatori [S. Dalí The temptation of St. Anthony, 1946] 3.1 3.2 Puntatori Approfondimento rispetto alla trattazione vista nel corso precedente Finora come avete utilizzato i puntatori? Principalmente
DettagliEsercitazioni 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
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati
DettagliINFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti
INFORMATICA A Titolo presentazione sottotitolo A.A. 2018-19 Milano, XX mese 20XX Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti Ricorsione La ricorsione è un approccio per la risoluzione
DettagliIntroduzione al C. Unità Gestione Dinamica della Memoria
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità Gestione Dinamica della Memoria D. Bloisi, A. Pennisi, S. Peluso, S. Salza Gestione
DettagliIntroduzione al C Lez. 4. Allocazione Dinamica della memoria
Introduzione al C Lez. 4 Allocazione Dinamica della memoria Allocazione dinamica memoria In C la memoria può essere anche gestita in modo dinamico, attraverso l allocazione esplicita di blocchi di memoria
DettagliEsercizio 2: Algebra dei Puntatori e Puntatori a Puntatori
Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori Salvatore Mandrà 7 Ottobre 2008 1 Esercizio L esercizio prevede l implementazione di funzioni per il prodotto di una matrice per un vettore, attraverso
DettagliCorso di Informatica A.A
Corso di Informatica A.A. 2009-2010 Lezione 12 Corso di Informatica 2009-2010 Lezione 12 1 Allocazione dinamica della memoria La funzione calloc() La funzione calloc() alloca memoria dinamicamente. Numero
DettagliARRAY DI PUNTATORI. ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori
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
DettagliC: 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
DettagliIntroduzione al C. Lezione 4 Allocazione dinamica della memoria. Rossano Venturini. Pagina web del corso
Introduzione al C Lezione 4 Allocazione dinamica della memoria Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Lezioni di ripasso
DettagliProgrammazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Array Array monodimensionali Array bidimensionali Esercizi 16/01/2013 2 ARRAY Gli array sono oggetti utilizzati in Java per memorizzare
Dettaglicout << "Inserisci un numero:" << endl; cin >> n; ris = n*2; cout << "Il doppio di " << n << " e " << ris << endl;
Funzioni int n, ris; cout n; ris = n*2; cout
DettagliIngegneria Elettronica Ingegneria delle Telecomunicazioni (J-Z) Ing. Antonio Monteleone A.A. 2001/02 3 ciclo
Ingegneria Elettronica Ingegneria delle Telecomunicazioni (J-Z) Ing. Antonio Monteleone A.A. 2001/02 3 ciclo In C++ è possibile distinguere due aree distinte di memoria: memoria stack e memoria heap E
DettagliAllocazione Dinamica. Allocazione Statica. malloc() La funzione malloc()
Allocazione Statica Finora abbiamo visto che le variabili sono sempre definite staticamente. Questo è un limite perché la loro esistenza deve essere prevista e dichiarata a priori. In particolare per variabili
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Una funzione per i numeri di Fibonacci
DettagliUniversità degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria
di Cassino e del Lazio Meridionale Corso di Informatica Allocazione dinamica di memoria Anno Accademico 2015/2016 Francesco Tortorella Allocazione dinamica di memoria Finora abbiamo considerato variabili
DettagliIntroduzione 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 2016
DettagliGestione della memoria
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
DettagliLezione 6: Array e puntatori
Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Una funzione per i numeri di Fibonacci
DettagliCorso di Fondamenti di Informatica II
Corso di Fondamenti di Informatica II Allocazione dinamica della memoria a.a. 2009/2010 Francesco Fontanella La Funzione Transfer void transfer(char in[], char voc[], char con[]) { char *pi, *pv, *pc;
Dettagli