Concludiamo il discorso sugli array, introducendo
una funzione molto potente, ma allo stesso tempo molto semplice da
implementare nei nostri script, e cioè la funzione foreach, in
pratica questa istruzione non fa altro che creare un blocco di
istruzioni interne ad un programma, un po' come si fa per le
funzioni if che vedremo in futuro. Per adesso accontentiamoci di
vedere alcuni esempi:
@settimana =('lunedì','martedì','mercoledì','giovedì','venerdì','sabato');
$festa=domenica;
foreach $festa (@settimana)
{
print "$festa\n giorno feriale\n"
}
print "$festa\n giorno di riposo";
Con questo semplice esempio è possibile processare ogni singolo
elemento di @settimana applicando la funzione foreach alla variabile
scalare $festa la quale si occuperà di processare i valori
dell'array al solo interno del blocco foreach, rappresentato tra le
parentesi graffe, e non anche all'esterno, dove la variabile $festa
riprende il suo valore predefinito. Il risultato dovrebbe
assomigliare a questo:
lunedì
giorno feriale
martedì
giorno feriale
mercoledì
giorno feriale
giovedì
giorno feriale
venerdì
giorno feriale
sabato
giorno feriale
domenica
giorno di riposo
Vediamo ancora qualche altro esempio pratico:
#Esempio 1
@num=(2,3,4);
foreach $num(@num)
{
$num **=2
# eleva al quadrato ogni elemento dell'array
}
print "@num\n";
# @num varrà "4 9 16"
#Esempio 2
@num=(2,3,4);
foreach $num(@num)
{
$num *=2
# moltiplica per 2 ogni elemento dell'array
}
print "@num\n";
# @num varrà "4 6 8"
#Esempio 3
@num=(2,3,4);
foreach $num(@num)
{
$num /=2
# divide per 2 ogni elemento dell'array
}
print "@num\n";
# @num varrà "1 1,5 4"
#Esempio 4
@num=(2,3,4);
foreach $num(@num)
{
$num +=2
# addiziona 2 ad ogni elemento dell'array
}
print "@num\n";
# @num varrà "4 5 6"
#Esempio 5
@num=(2,3,4);
foreach $num(@num)
{
$num -=2
# sottrae 2 ad ogni elemento dell'array
}
print "@num\n";
# @num varrà "0 1 2"
#Esempio 6
@num=(2,3,4);
foreach $num(@num)
{
$num %=2
# individua il resto nella divisione per 2 di ogni elemento dell'array
}
print "@num\n";
# @num varrà "0 1 0"
#Esempio 7
@num=(2,3,4);
foreach $num(@num)
{
$num **=-2
# eleva alla potenza di -2 ogni elemento
dell'array
}
print "@num\n";
# @num varrà "0.25
0.111111111111111 0.0625"
#Esempio 8
@num=(2,3,4);
$num = 0;
foreach $numeri(@num)
{
$num = $numeri + $num
}
print "$num\n";
# $num vale 9
Vista così questa istruzione non rappresenta un gran ché ma
vedremo in futuro la sua utilità nel proseguire delle lezioni.
Questa lezione chiude il nostro ciclo sulle array, provate ora con
le informazione acquisite a risolvere i seguenti esercizi:
Trovate almeno tre modi distinti di calcolare la somma numerica
degli elementi interni a @somma avente i seguenti valori: "33
trentini, 118, 916, perl5,00xx, ore 13.00, fine"
Scrivere un programma che chieda all'utente di inserire da
tastiera tre valori per l'array @a e due valori per l'array @b, e
poi calcoli la somma degli array, attacchi @a in testa a @b ed
ordini i valori in modo ascendente.