1 / 18

Programmazione di Calcolatori

Programmazione di Calcolatori. Lezione XIV I vettori. Vettori. 0. 5. - 1. 1. Vettore di 5 interi. 2. 32. - 4. 3. 4. 27. Vettore (monodimensionale) di n elementi:.

karli
Download Presentation

Programmazione di Calcolatori

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programmazione di Calcolatori Lezione XIV I vettori Programmazione di Calcolatori: i vettori

  2. Vettori 0 5 -1 1 Vettore di 5 interi 2 32 -4 3 4 27 • Vettore (monodimensionale) di n elementi: definisce una corrispondenza biunivoca tra un insieme omogeneo di n elementi e l’insieme di interi {0, 1, …, n-1} • Esempio: Programmazione di Calcolatori: i vettori

  3. Operatore sizeof() • Sintassi: • sizeof(tipo_di_dato) • con tipo_di_dato identificatore di tipo predefinito o non • Valore: • numero delle locazione utilizzate per rappresentare un valore di tipo tipo_di_dato Programmazione di Calcolatori: i vettori

  4. Operatore sizeof() • Esempio: // sorgente: Lezione_XIV\Sizeof.c // programma che illustra il comportamento dello // operatore sizeof() #include <stdio.h> int main () { printf ("\nDimensione int: %d\n", sizeof(int)); printf ("\nDimensione char: %d\n", sizeof(char)); printf ("\nDimensione double: %d\n", sizeof(double)); printf ("\nDimensione int *: %d\n", sizeof(int *)); printf ("\nDimensione char *: %d\n", sizeof(char *)); printf ("\nDimensione double *: %d\n", sizeof(double *)); return(1); } Programmazione di Calcolatori: gli operatori

  5. Operatore sizeof() • Compilazione: • Esecuzione: Programmazione di Calcolatori: i vettori

  6. Definizione di un vettore sizeof(tipoVett) tipoVett *nomeVett sizeof(tipoVett) dimVett * sizeof(tipoVett) sizeof(tipoVett) Espressione costante intera • Definizione: tipoVett nomeVett [dimVett] • Modifiche allo stato della memoria: Programmazione di Calcolatori: i vettori

  7. Accesso agli elementi di un vettore int *nomeVett • Indirizzi: • Contenuto: nomeVett *(nomeVett) nomeVett+1 *(nomeVett+1) *(nomeVett+dimVett-1) nomeVett+dimVett-1 • Accesso all’elemento i-esimo: • a) *(nomeVett+i) • b) nomeVett[i] Programmazione di Calcolatori: i vettori

  8. Accesso agli elementi di un vettore ArrInt 2834 ArrInt 2834 2835 ArrInt+1 2836 2837 ArrInt+2 2838 2839 ArrInt+3 2840 2841 ArrInt+4 2842 2843 ArrInt+5 2844 2845 • Esempio: int ArrInt[6]; 1 *ArrInt = 1; *(ArrInt+3) = *ArrInt+2; ArrInt[0] = 1; ArrInt[3] = ArrInt[0]+2; 3 Programmazione di Calcolatori: i vettori

  9. I vettori e le funzioni • I vettori come parametri formali: • a) tipofunnomefun (…, tipoVett nomeVett[], …) • { … }; • b) tipofunnomefun (…, tipoVett *nomeVett, …) • { … }; • I vettori come parametri attuali: • nomefun (…, nomeVett, …) Programmazione di Calcolatori: i vettori

  10. I/O di vettori Start Nome: AcqVett Variabili: int index, int vett[K] • I diagrammi di flusso: Acquisizione del contenuto di un vettore di K interi index  0 false index < K End index  index+1 true vett[index] Programmazione di Calcolatori: i vettori

  11. I/O di vettori Start Nome: AcqVett Variabili: int index, int vett[K] • I diagrammi di flusso: Restituzione del contenuto di un vettore di K interi index  0 false index < K true End index  index+1 vett[index] Programmazione di Calcolatori: i vettori

  12. I/O di vettori • Il codice: // sorgente: Lezione_XIV\VettIOInd.c // programma che illustra le modalita' di acquisizione // e di restituzione del contenuto di un vettore di // interi utilizzando l'indirizzo dei suoi elementi // direttive per il preprocessore #include <stdio.h> #define DIM_VETT 5 // funzione per l'acquisizione del contenuto di un vettore di interi void AcqVettInt(int *Vett, int dim) { // definizione della variabile per la scansione del vettore int pos; // scansione del vettore e acquisizione del suo contenuto for (pos = 0; pos < dim; pos++) { printf("\nVett[%d]? ", pos); scanf("%d", Vett+pos); }; }; Programmazione di Calcolatori: i vettori

  13. I/O di vettori // funzione per la restituzione del contenuto di un vettore di interi void ResVettInt(int *Vett, int dim) { // definizione della variabile per la scansione del vettore int pos; // scansione del vettore e restituzione del suo contenuto for (pos = 0; pos < dim; pos++) printf("\nVett[%d]: %d", pos, *(Vett+pos)); }; // Chiamante int main() { // definizione di un vettore di interi int prova[DIM_VETT]; // acquisizione del contenuto del vettore AcqVettInt(prova, DIM_VETT); // restituzione del contenuto del vettore ResVettInt(prova, DIM_VETT); return(1); } Programmazione di Calcolatori: i vettori

  14. I/O di vettori • Compilazione: • Esecuzione: Programmazione di Calcolatori: i vettori

  15. I/O di vettori • Il codice: // sorgente: Lezione_XIV\VettIONome.c // programma che illustra le modalita' di acquisizione e di restituzione del // contenuto di un vettore di interi utilizzando il nome dei suoi elementi ... // funzione per l'acquisizione del contenuto di un vettore di interi void AcqVettInt(int Vett[], int dim) { // definizione della variabile per la scansione del vettore int pos; // scansione del vettore e acquisizione del suo contenuto for (pos = 0; pos < dim; pos++) { printf("\nVett[%d]? ", pos); scanf("%d", &Vett[pos]); }; }; Programmazione di Calcolatori: i vettori

  16. I/O di vettori • Il codice: // funzione per la restituzione del contenuto di un vettore di interi void ResVettInt(int Vett[], int dim) { // definizione della variabile per la scansione del vettore int pos; // scansione del vettore e restituzione del suo contenuto for (pos = 0; pos < dim; pos++) printf("\nVett[%d]: %d", pos, Vett[pos]); }; … // Chiamante … Programmazione di Calcolatori: i vettori

  17. Dimensionamento a run-time di un vettore • La dimensione di un vettore può essere definita a run time? • // definizione della variabile per la dimensione del vettore • int dim; • // definizione di un vettore di dimensione nota a run-time • int Vett [dim]; • // acquisizione della dimesione di un vettore • scanf(“%d”, &dim); • Assolutamente no!!!! • nella definizione di un array la sua dimensione deve essere specificata tramite una espressione costante • Conseguenza: • se le dimensioni dell’array cambiano il codice deve essere modificato e ricompilato Programmazione di Calcolatori: i vettori

  18. Dimensionamento a run-time di un vettore • Esiste un soluzione a questo problema? Programmazione di Calcolatori: i vettori

More Related