Programmazione e Laboratorio di Programmazione

Slides:



Advertisements
Presentazioni simili
Puntatori Linguaggio C.
Advertisements

Uso avanzato di C.
PUNTATORI Introduzione
Introduzione al linguaggio C
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Process synchronization
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Le funzioni.
Programmazione di Calcolatori
Programmazione di Calcolatori
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Programmazione di Calcolatori
Programmazione di Calcolatori
Unità Didattica 3 Linguaggio C
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XVIII Le matrici Programmazione di Calcolatori: le matrici 1.
Passaggio di parametri per indirizzo
C. Gaibisso Programmazione di Calcolatori Lezione XIV I vettori Programmazione di Calcolatori: i vettori 1.
Programmazione di Calcolatori
C. Gaibisso Programmazione di Calcolatori Lezione XVI Allocazione dinamica della memoria Programmazione di Calcolatori: allocazione dinamica della memoria.
Ricerca sequenziale in un array di interi
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
1 Il linguaggio C Puntatori e dintorni. 2 Puntatori : idea di base In C è possibile conoscere e denotare l’indirizzo della cella di memoria in cui è memorizzata.
Linguaggio C: Funzioni e Puntatori Laboratorio di Programmazione Gruppo 1.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Introduzione al linguaggio C
Struct, enum, Puntatori e Array dinamici
Il linguaggio C Puntatori Moreno Marzolla
7. Strutture di controllo Ing. Simona Colucci
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Secondo Programma in C.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
APPUNTI SUL LINGUAGGIO C
Process synchronization
APPUNTI SUL LINGUAGGIO C
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Passaggio di parametri per indirizzo
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Programmazione e Laboratorio di Programmazione Lezione VIII I vettori Programmazione e Laboratorio di Programmazione: I vettori

Vettori 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: 1 2 3 4 Vettore di 5 interi 5 -1 32 -4 27 Programmazione e Laboratorio di Programmazione: I vettori

Operatore sizeof() Sintassi: Valore: 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 e Laboratorio di Programmazione: I vettori

Operatore sizeof() Esempio: // sorgente: Sizeof.c // programma che illustra il comportamento dell’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 e Laboratorio di Programmazione: I vettori

Definizione di un vettore Espressione costante intera Definizione: tipoVett nomeVett [dimVett] Modifiche allo stato della memoria: sizeof(tipoVett) dimVett * sizeof(tipoVett) tipoVett *nomeVett Programmazione e Laboratorio di Programmazione: I vettori

Accesso agli elementi di un vettore Indirizzi: int *nomeVett Contenuto: nomeVett *(nomeVett) nomeVett+1 *(nomeVett+1) nomeVett+dimVett-1 *(nomeVett+dimVett-1) Accesso all’elemento i-esimo: a) *(nomeVett+i), 0 ≤ i ≤ dimVett-1 b) nomeVett[i], 0 ≤ i ≤ dimVett-1 Programmazione e Laboratorio di Programmazione: I vettori

Accesso agli elementi di un vettore Esempio (nell’ipotesi che sizeof(int)=2): 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 ArrInt int ArrInt[6]; ArrInt ArrInt+1 ArrInt+2 ArrInt+3 ArrInt+4 ArrInt+5 1 *ArrInt = 1; *(ArrInt+3) = *ArrInt+2; ArrInt[0] = 1; ArrInt[3] = ArrInt[0]+2; 3 Programmazione e Laboratorio di Programmazione: I vettori

I vettori e le funzioni I vettori come parametri formali: a) tipofun nomefun (…, tipoVett nomeVett[], int dimVett, …) { … }; b) tipofun nomefun (…, tipoVett *nomeVett, int dimVett, …) I vettori come parametri attuali: nomefun (…, nomeVett, int dimVett, …) Programmazione e Laboratorio di Programmazione: I vettori

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

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

I/O di vettori Il codice: // sorgente: 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 e Laboratorio di Programmazione: I vettori

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 e Laboratorio di Programmazione: I vettori

I/O di vettori Il codice: // sorgente: 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 e Laboratorio di Programmazione: I vettori

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 e Laboratorio di Programmazione: I vettori

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 e Laboratorio di Programmazione: I vettori

Dimensionamento a run-time di un vettore Esiste un soluzione a questo problema? Programmazione e Laboratorio di Programmazione: I vettori