Successivo: , Precedente: , Su: Fondamenti sui vettori   [Contenuti][Indice]


8.1.2 Come esaminare un elemento di un vettore

Il modo principale di usare un vettore è quello di esaminare uno dei suoi elementi. Un riferimento al vettore è un’espressione come questa:

vettore[espressione-indice]

Qui, vettore è il nome di un vettore. L’espressione espressione-indice è l’indice dell’elemento del vettore che si vuol esaminare.

Il valore del riferimento al vettore è il valore corrente di quell’elemento del vettore. Per esempio, pippo[4.3] è un’espressione che richiama l’elemento del vettore pippo il cui indice è ‘4.3’.

Un riferimento a un elemento di un vettore il cui indice non esiste ancora restituisce un valore uguale a "", la stringa nulla. Questo comprende elementi a cui non è stato assegnato un valore ed elementi che sono stati eliminati (vedi la sezione L’istruzione delete).

NOTA: Un riferimento a un elemento inesistente crea automaticamente quell’elemento di vettore, con la stringa nulla come valore. (In certi casi, ciò è indesiderabile, perché potrebbe sprecare memoria all’interno di awk.)

I programmatori principianti di awk fanno spesso l’errore di verificare se un elemento esiste controllando se il valore è vuoto:

# Verifica se "pippo" esiste in a:         Non corretto!
if (a["pippo"] != "") …

Questo è sbagliato per due motivi. Primo, crea a["pippo"] se ancora non esisteva! Secondo, assegnare a un elemento di un vettore la stringa vuota come valore è un’operazione valida (anche se un po’ insolita).

Per determinare se un elemento con un dato indice esiste in un vettore, si usi la seguente espressione:

indice in vettore

Quest’espressione verifica se lo specifico indice indice esiste, senza l’effetto collaterale di creare quell’elemento nel caso che esso non sia presente. L’espressione ha il valore uno (vero) se vettore[indice] esiste e zero (falso) se non esiste. Per esempio, quest’istruzione verifica se il vettore frequenze contiene l’indice ‘2’:

if (2 in frequenze)
    print "L'indice 2 è presente."

Si noti che questo non verifica se il vettore frequenze contiene un elemento il cui valore è 2. Il solo modo far questo è quello di passare in rassegna tutti gli elementi. Inoltre, questo non crea frequenze[2], mentre la seguente alternativa (non corretta) lo fa:

if (frequenze[2] != "")
    print "L'indice 2 è presente."

Successivo: , Precedente: , Su: Fondamenti sui vettori   [Contenuti][Indice]