vuoi
o PayPal
tutte le volte che vuoi
Scrittura corretta e test efficaci
Durante la scrittura si deve capire quali blocchetti usare e scrivere in maniera corretta con una buona grammatica ed elegantemente. Infine bisogna fare test efficaci di correttezza. Si passa ora alla parte complicata. Array sono un gruppo di celle consecutive con lo stesso nome e tipo, e si indicano con Var[N] (var può essere qualunque scrittura, come prima, anche Pippo, N un qualsiasi numero che indica il...)numero
di
elementi
presenti
nell’array,
il
primo
elemento
ha
sempre
indice
0,
pertanto
i
valori
degli
indici
vanno
da
0
a
N-‐1).
Per
riferirsi
a
un
elemento
bisogna
specificarne
il
nome
dell’array
(Var)
e
la
posizione
in
cui
si
trova
[N].
Gli
array
sono
vettori
di
elementi
indicizzati,
omogenei,
memorizzati
in
celle
di
memoria
consecutive.
Si
usano
per
scrivere
delle
stringhe
di
caratteri,
quindi
delle
parole:
basta
definire
un
array
di
tipo
char:
parola[12]
è
una
parola
di
12
lettere.
Mai
usare
una
variabile
per
charspecificare
la
lunghezza
di
un
array,
sempre
una
costante
o
ancora
meglio
la
funzione
#define.
Per
inizializzare
un
array
si
definisce
e
poi
si
mette
un
uguale
seguito
dalle
graffe
all’interno
delle
quali
ci
sono
i
valori
che
corrispondono
ad
ogni
posizione
i
dell’array.
Per
esempio:
int n[5] =2}.
A
questo
punto
n[0]=3
e
{3,
6, 9, 23, n[4]=2.
Gli elementi di un array sono normali variabili ( ).
àprintf("%d", n[2]) 9
Per inizializzare un vettore si può fare: - for (i=0; i<20; i++) a[i]=0; &a[i]); in questo caso lo si inizializza - for (i=0; i<20; i++) scanf("%d",da terminale e può essere utile per le matrici.
Può essere utile sapere la ricerca del massimo, del minimo e della media in un array: Massimo: Minimo: - max=a[0]; min=a[0];for (i=1; i<20; i++) for (i=1; i<20; i++)if (a[i]>max); if
(a[i]<min)max=a[i]; min=a[i]; Media: - media=0For (i=1; i<20; i++)media=media+a[i];media=media/20 Invertire una sequenza: - #define L 100int main () {int i=0;int a[L];while (i<100) {printf(“dare un valore intero”);scanf(“%d”, a[i]);i++;}i--;while (i>=0) {printf(“%d\n”, a[i]);i--;}} 5 Operazioni sugli array: si opera sui singoli elementi uno per volta; non è possibile operare sull’intero array, agendo su tutti gli elementi simultaneamente. Per copiare un array in un altro array: int array1[10], array2[10];int i;for (i=0; i<10; i++) {array1[i] = array2[i];} Ricerca di un
elemento
in
un
array:
int n, dato, risultato=-1; int array[N]; for (n=0; n<=N-1; n++){ if (array[n]==dato) risultato=n; break; } printf(“risultato=%d\n”, risultato);
Gli
array
a
due
dimensioni
( array[M][N])
servono
per
realizzare
le
matrici
MxN
(righe
x
colonne).
I
vettori
sono
matrici
di
una
riga.
Somma:
due
matrici
possono
essere
sommate
solo
se
hanno
le
stesse
dimensioni,
e
si
sommano
i
vari
indici
che
si
trovano
nelle
stesse
posizioni.
Moltiplicazione
per
uno
scalare:
se
si
moltiplica
una
matrice
per
un
numero,
si
ottiene
una
matrice
che
ha
le
dimensioni
della
prima
e
i
numeri
all’interno
moltiplicati
per
lo
scalare.
Moltiplicazione
righe
per
colonne:
la
moltiplicazione
tra
due
matrici
AxB
può
avvenire
solo
se
A
ha
un
numero
di
colonne
pari
al
numero
di
righe
di
B.
Si
parla
di
prodotto
righe
per
colonne
perché
si
moltiplicano
le
righe
di
A
per
le
colonne
di
B.
Le
matrici
quadrate
hanno
stesso
numero
di
righe
e
colonne.
Stringhe
Come
si
accennava
prima
sono
array
di
caratteri.
Ogni
stringa
è
terminata
da
il
carattere
nullo
\0
che
occupa
una
cella,
quindi
una
stringa
di
una
parola
di
4
lettere,
in
realtà
occupa
uno
spazio
di
5
(char “word”;
equivale
a
stringa[]= char stringa[]={‘w’, ‘o’, ‘r’, ‘d’,‘\0’};).
Pertanto,
ricordando
la
differenza
tra
’
e
‘x’
è
un
carattere
che occupa uno spazio ‘ “ ”, mentre “x” è una stringa che ne occupa due (x e \0). Per quanto riguarda le stringhe si introducono tre operazioni: stringa2): leggere “string copy”; serve per copiare una stringa - strcpy(stringa1,di caratteri in un’altra stringa: se si ha str1[5]=“ciao”; e char char str2[5]; str2 assume “ciao”; àstrcpy (str1, str2) strlen(): leggere “string length”; all’interno delle parentesi si
mette
una
stringa,
questa
- funzione
ne
calcola
la
lunghezza.
Strlen(str2)=4
(c-‐i-‐a-‐o).
stringa2):
leggere
“string
compare”;
si
usa
per
confrontare
- strcmp(stringa1,due
stringhe:
le
confronta
fino
allo
\0,
e
restituisce
un
intero,
che
se
è
0
vuol
dire
che
sono
uguali,
se
invece
sono
diverse
è
minore
di
0
(nel
qual
caso
la
prima
stringa
precede
la
seconda)
oppure
maggiore
di
0
(la
prima
segue
la
seconda).
Quando
con una scanf ci si vuole riferire ad una stringa, non bisogna mettere il simbolo : & 6 stringa); questo scanf legge i caratteri contenuti in questo array fino a che scanf(“%s”,non incontra \0. Se perciò si inserisce una stringa troppo lunga in input, essa è memorizzata oltre la fine dell’array, errore gravissimo.
Strutture di dati (Struct) Se gli array (o vettori) sono aggregazioni di variabili omogenee,
Glistruct
(o record) sono aggregazioni di variabili disomogenee.