• Non ci sono risultati.

Vettori e matrici

N/A
N/A
Protected

Academic year: 2021

Condividi "Vettori e matrici"

Copied!
3
0
0

Testo completo

(1)

Vettori e matrici

Quando è necessario memorizzare un insieme di valori omogenei (dello stesso tipo t) è necessario definire una variabile ingrado di contenere più di un valore.

Variabili di questo tipo sono chiamate vettori o array ad una dimensione.

In c un vettore si definisce specificando tipo nome[dimensione];

 come tipo è possibile utilizzare uno dei tipi fondamentali del linguaggio C

 il nome deve seguire le regole degli identificatori del linguaggio C

 la dimensione deve essere una espressione costante, formata cioè solo da costanti assolute o simboliche, e indica il numero massimo di elementi che il vettore può contenere.

Un vettore può essere pensato come una successione di celle che occupano aree di memoria contigue, ogni cella occupa un numero di byte che dipende dallo scalare del tipo utilizzato per definire il vettore.

Le celle del vettore sono numerate a 0 a dimensione –1, quindi il riferimento alla posizione dimensione durante l’utilizzo del vettore è privo di significato.

Esempio di definizione di un vettore di interi:

int vett[20];

Esempi di inizializzazione:

int i;

for (i=0;i<20;i++) scanf(“%d”,&vett[i]);

int i,n;

printf(“Quanti valori vuoi inserire nel vettore?”);

scanf(“%d”,&n);

for (i=0;i<n;i++) scanf(“%d”,&vett[i]);

N.B.: non si può mai scrivere vett[20] perché non esiste uno scomparto nella posizione 20

Ogni elemento del vettore potrà essere utilizzato nei contesti nei quali è possibile utilizzare una variabile semplice dello stesso tipo, cioè

se per stampare il valore di una variabile intera n si scrive printf(“%d”,n);

allora per stampare l’i-esimo elemento di un vettore si scrive printf(“%d”,vett[i]);

Se si vuole fare riferimento all’indirizzo di uno specifico scomparto del vettore si usa l’operatore &

&vett[5] identifica l’indirizzo del sesto scomparto

mentre l’indirizzo di partenza del vettore e rappresentato dal suo nome, quindi il nome di un vettore è il suo l-value, di conseguenza vett coincide con &vett[0].

(2)

In C non esistono funzioni per operare su insiemi di interi o reali, quindi si deve lavorare sempre con un ciclo che permetta di riferire alle diverse componenti del vettore.

Quando è necessario memorizzare informazioni omogenee che sono concettualmente organizzate in forma tabellare, si deve definire una variabile detta matrice o array a due dimensioni.

In C la sua definizione è

tipo nome[numero_righe][numero_colonne];

 come tipo è possibile utilizzare uno dei tipi fondamentali del linguaggio C

 il nome deve seguire le regole degli identificatori del linguaggio C

 numero_righe e numero_colonne devono essere espression costanti, formate cioè solo da costanti assolute o simboliche

Esempi di inizializzazione:

int tab[10][20];

int i,j;

for (i=0;i<10;i++) for(j=0;j<20;j++) scanf(“%d”,&tab[i][j]);

int n;

printf(“Quante righe della tabella vuoi inizializzare?”);

scanf(“%d”,&n);

for (i=0;i<n;i++) for(j=0;j<20;j++) scanf(“%d”,&tab[i][j]);

N.B.: non si può mai scrivere tab[10][20] perché non esiste un elemento nella posizione 10,20

Ogni elemento della tabella potrà essere utilizzato nei contesti nei quali è possibile utilizzare una variabile semplice dello stesso tipo, cioè

se per stampare il valore di una variabile intera n si scrive printf(“%d”,n);

allora per stampare l’i-esimo elemento della j-esima riga di una tabella si scrive printf(“%d”,vett[i][j]);

Stringhe

Il tipo stringa in C non è un tipo fondamentale, si definisce a partire dal tipo carattere.

Definizione : una stringa c è una successione di caratteri terminata dal carattere ‘\0’, questo carattere è detto terminatore.

Per definire una variabile in grado di memorizzare una stringa si deve scrivere char str[20];

Questa variabile potrà contenere una stringa lunga al massimo 19 caratteri perché uno deve essere riservato per il terminatore.

Per inizializzarla

(3)

scanf(“%s”,str); oppure gets(str);

Attenzione al fatto che non è stato specificato l’operatore & prima del nome della stringa perché il nome di un vettore identifica già il suo indirizzo.

Per visualizzare il contenuto di una stringa printf(“%s”,str); oppure puts(str);

Le funzioni gets e puts possono essere utilizzate solo per le stringhe.

Una costante stringa è una successione di zero o più caratteri racchiusa tra “”.

Esempio “ciao”, “x”,””, l’ultima costante è la costante nulla.

Il fatto che per definire stringhe si usano vettori implica che gli operatori di confronto (<,>,==,!=…) e l’operatore di assegnamento (=) non si possono utilizzare perché essi opererebbero sugli indirizzi delle stringhe invece che sui valori.

Pertanto si devono usare delle funzioni per eseguire le operazioni equivalenti.

La funzione strcpy serve per l’assegnamento:

strcpy(s1,s2) assegna il valore della stringa s2 alla stringa s1

strcpy(s1,”ciao”) assegna il valore della stringa costante “ciao” alla stringa s1

La funzione strcmp serve per il confronto tra due stringhe:

strcmp(s1,s2) dà risultato 0 se se le stringhe sono uguali, <0 se la prima precede la seconda in ordine alfabetico, >0 in caso contrario

La funzione strcat serve per concatenare due stringhe:

strcat(s1,s2) aggiunge i caratteri di s2 dopo quelli di s1, sovrascrivendo il terminatore di s1

strcat(s1,”xxx”) aggiunge la stringa costante “xxx” a s1

La funzione strlen serve per conoscere il numero di caratteri che formano una stringa, escluso il terminatore.

int l;

l=strlen(s);

Riferimenti

Documenti correlati

In virt` u di questo isomorfismo, che, come si vede, `e legato alla base {ˆc k }, tutto ci`o che `e stato detto per le matrici pu`o essere tranquillamente ripetuto per gli

Definizione di quantit`a di moto, momento angolare, forza di inerzia, momento risultante delle forze di inerzia ed energia cinetica di un sistema particellare o continuo..

comprendono organismi monocellulari come protozoi, funghi, ed alcune alghe, ed organismi pluricellulari come tutte le piante e gli animali. Le cellule sono più grandi di

In un vettore di stringhe, ogni riga (ogni stringa) è intrinsecamente un vettore di caratteri ad.

Definizione dell’operazione di prodotto scalare di due vettori; osservazione sui vet- tori fondamentali; proprieta’ del prodotto scalare: commutativita’, comportamento rispetto

Per potere utilizzare questa implicazione dobbiamo scrivere la matrice associata a T rispetto a una base ortonormale, in particolare rispetto alla base canonica... Per potere

Per provare che i vettori di˚ sono linearmente indipendenti supponiamo di avere una combinazione lineare uguale al vettore nullo e proviamo che allora i coefficienti della

Universit` a degli Studi di Roma Tor Vergata.. Corso di Laurea