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

Slides:



Advertisements
Presentazioni simili
File Linguaggio C.
Advertisements

Puntatori Linguaggio C.
Corso di Fondamenti di Programmazione canale E-O
Vettori A. Stefanel - Vettori.
Uso avanzato di C.
Introduzione al linguaggio C
Array multidimensionali
PUNTATORI Introduzione
Introduzione al linguaggio C
Funzioni definite dall’utente
PROGRAMMI DI RICERCA E ORDINAMENTO
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 4 Aprile 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e Puntatori Marco D. Santambrogio – Ver. aggiornata al 18 Marzo 2013.
Process synchronization
Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
nome: sequenza di caratteri usata per denotare un oggetto
memoria gestita staticamente:
A.A. 2010/2011Ambienti di Programmazione per il Software di Base1 (Es. – 6) Ambienti di Programmazione per il Software di Base Le Stringhe in C Input.
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
Strutture di controllo in C -- Flow Chart --
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Algebra Lineare Esercizi assegnati.
Le funzioni.
Programmazione di Calcolatori
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
Programmazione di Calcolatori
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XII Le funzioni Programmazione di Calcolatori: le funzioni 1.
Programmazione di Calcolatori
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1.
C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di Calcolatori: Il modello di memoria 1.
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
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1.
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione X Ingresso/Uscita di Interi Programmazione di Calcolatori: Ingresso/Uscita 1.
Unità Didattica 3 Linguaggio C
Programmazione di Calcolatori
Programmazione di Calcolatori
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XVIII Le matrici Programmazione di Calcolatori: le matrici 1.
Programmazione di Calcolatori
C. Gaibisso Programmazione di Calcolatori Lezione XXII La struttura di dati lista di variabili strutturate Programmazione di Calcolatori: le liste di.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
C. Gaibisso Programmazione di Calcolatori Lezione XVI Allocazione dinamica della memoria Programmazione di Calcolatori: allocazione dinamica della memoria.
2000 Prentice Hall, Inc. All rights reserved. Attivazione di funzioni La chiamata/attivazione di funzione viene indicata citando il nome della funzione.
Complessità di un algoritmo
1 Esempi domande di esame. 2 Dato il seguente programma #include int main(){ int *p,j=9,i=5; p=&j; *p=i; printf("%d %d %d\n", i,j,*p); scanf("%d",p);/*
GLI ARRAY MONODIMENSIONALI. Utilizzando le nostre attuali conoscenze, proviamo a risolvere il seguente problema: Calcolare la media dei voti conseguiti.
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.
Vettori, indirizzi e puntatori Finora abbiamo usato gli indirizzi nel chiamare  la funzione scanf()  le altre funzioni per riferimento Tuttavia la vera.
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.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Marzo 2014.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Il linguaggio C Un primo programma C : un primo programma (2) /* Programma che calcola il massimo fra tre numeri inseriti da tastiera */ #include #define.
Linguaggio C: Funzioni e Puntatori Laboratorio di Programmazione Gruppo 1.
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
Transcript della presentazione:

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

C. Gaibisso Vettori Programmazione di Calcolatori: i vettori2 Vettore (monodimensionale) di n elementi: definisce una corrispondenza biunivoca tra un insieme omogeneo di n elementi e linsieme di interi {0, 1, …, n-1} Esempio: Vettore di 5 interi

C. Gaibisso Operatore sizeof() Programmazione di Calcolatori: i vettori3 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

C. Gaibisso Operatore sizeof() Programmazione di Calcolatori: gli operatori4 // sorgente: Lezione_XIV\Sizeof.c // programma che illustra il comportamento dello // operatore sizeof() #include 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); } Esempio:

C. Gaibisso Operatore sizeof() Programmazione di Calcolatori: i vettori5 Compilazione: Esecuzione:

C. Gaibisso Definizione di un vettore Programmazione di Calcolatori: i vettori6 Definizione: tipo Vett nome Vett [dim Vett ] Espressione costante intera Modifiche allo stato della memoria: sizeof(tipo Vett ) dim Vett * sizeof(tipo Vett ) tipo Vett *nome Vett

C. Gaibisso Accesso agli elementi di un vettore Programmazione di Calcolatori: i vettori7 Indirizzi: nome Vett nome Vett +1 *(nome Vett ) *(nome Vett +1) Accesso allelemento i-esimo: a)*(nome Vett +i) b)nome Vett [i] Contenuto: int *nome Vett nome Vett +dim Vett -1 *(nome Vett +dim Vett -1)

C. Gaibisso Accesso agli elementi di un vettore Programmazione di Calcolatori: i vettori8 Esempio: int ArrInt[6]; *ArrInt = 1; *(ArrInt+3) = *ArrInt+2; ArrInt ArrInt+1 ArrInt+2 ArrInt+3 ArrInt+4 ArrInt ArrInt ArrInt[0] = 1; ArrInt[3] = ArrInt[0]+2;

C. Gaibisso I vettori e le funzioni Programmazione di Calcolatori: i vettori9 I vettori come parametri formali: a)tipo fun nome fun (…, tipo Vett nome Vett [], …) { … }; b)tipo fun nome fun (…, tipo Vett *nome Vett, …) { … }; I vettori come parametri attuali: nome fun (…, nome Vett, …)

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

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

C. Gaibisso I/O di vettori Programmazione di Calcolatori: i vettori12 // 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 #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); }; Il codice:

C. Gaibisso I/O di vettori Programmazione di Calcolatori: i vettori13 // 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); }

C. Gaibisso I/O di vettori Programmazione di Calcolatori: i vettori14 Compilazione: Esecuzione:

C. Gaibisso I/O di vettori Programmazione di Calcolatori: i vettori15 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]); };

C. Gaibisso I/O di vettori Programmazione di Calcolatori: i vettori16 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 …

C. Gaibisso Dimensionamento a run-time di un vettore Programmazione di Calcolatori: i vettori17 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 dellarray cambiano il codice deve essere modificato e ricompilato

C. Gaibisso Dimensionamento a run-time di un vettore Programmazione di Calcolatori: i vettori18 Esiste un soluzione a questo problema?