11.04.2013 Views

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

# 3) Aggiungete una verifica d’errore nelle funzioni principali che<br />

# + restituisca un co<strong>di</strong>ce d’errore corrispondente al riuscito o<br />

# + fallito completamento dell’operazione, facendo eseguire<br />

# + un’azione appropriata.<br />

Capitolo 26. Array<br />

# 4) Utilizzando questo script come base <strong>di</strong> partenza, scrivete un programma<br />

# + per una calcolatrice a 4 funzioni basate sullo stack.<br />

# N.d.T. - Si è preferito lasciare inalterati i termini, in quanto<br />

#+ appartenenti al linguaggio <strong>di</strong> programmazione Assembly. La traduzione è<br />

#+ stata posta tra parentesi o nei commenti.<br />

--<br />

Elaborate manipolazioni dei “subscript” 1 degli array possono richiedere l’impiego <strong>di</strong> variabili<br />

interme<strong>di</strong>e. In progetti dove questo è richiesto, si consideri, una volta ancora, l’uso <strong>di</strong> un linguaggio <strong>di</strong><br />

programmazione più potente, come Perl o C.<br />

Esempio 26-15. Applicazione complessa <strong>di</strong> array: Esplorare strane serie matematiche<br />

#!/bin/bash<br />

# I celebri "numeri Q" <strong>di</strong> Douglas Hofstadter:<br />

# Q(1) = Q(2) = 1<br />

# Q(n) = Q(n - Q(n-1)) + Q(n - Q(n-2)), per n>2<br />

# È una successione <strong>di</strong> interi "caotica" con comportamento strano e<br />

#+ non preve<strong>di</strong>bile.<br />

# I primi 20 numeri della serie sono:<br />

# 1 1 2 3 3 4 5 5 6 6 6 8 8 8 10 9 10 11 11 12<br />

# Ve<strong>di</strong> il libro <strong>di</strong> Hofstadter, "Goedel, Escher, Bach: un’Eterna Ghirlanda<br />

#+ Brillante", p. 149, ff. (Ed. italiana Adelphi - terza e<strong>di</strong>zione - settembre<br />

#+ 1985 [N.d.T.])<br />

LIMITE=100 # Numero <strong>di</strong> termini da calcolare.<br />

AMPIEZZARIGA=20 # Numero <strong>di</strong> termini visualizzati per ogni riga.<br />

Q[1]=1 # I primi due numeri della serie corrispondono a 1.<br />

Q[2]=1<br />

echo<br />

echo "Numeri Q [$LIMITE termini]:"<br />

echo -n "${Q[1]} " # Visualizza i primi due termini.<br />

echo -n "${Q[2]} "<br />

for ((n=3; n 2<br />

498

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!