Percorso: ilMac.net > Scuola di Mac > Corsi > "Vivisezione" di uno Script


"Vivisezione" di uno Script

Analizziamo la struttura di uno script

Riprendiamo, dopo un lungo periodo, a parlare di Apple Script, il linguaggio per l'automazione di alcuni processi fornito di serie sul MacOS. Dopo un discreto numero di articoli dall'approccio soprattutto teorico, passiamo alla pratica. A mio parere, il metodo migliore per imparare a programmare, non è tanto quello di impazzire su manuali da centinaia di pagine provando tutte le possibili varianti di un'istruzione, ma piuttosto quello di utilizzare un approccio pratico. Aprite i listati già pronti, ne trovate alcuni nella cartella degli script del MacOS, ma soprattutto ne trovate in Rete, provateli, capite qual è la loro funzione e poi analizzatene bene le istruzioni che li compongono. Fate modifiche per vedere cosa cambia, provate, riprovate, in una parola: smanettate! ;-) É così che, spinti da un desiderio di curiosità sarete motivati ad apprendere la programmazione. Ma bando alle ciance, passiamo subito a mettere le mani su FileSize, uno scriptuccio da me realizzato circa due anni fa, e che potete scaricare cliccando qui. FileSize è uno script abbastanza semplice, che ha la funzione di calcolare la dimensione di due o più files. Questo può apparire banale, ma in realtà non è poi così raro voler conoscere quanto "pesano" in totale 7-8 files di una cartella che magari ne contiene 30. Bisognerebbe creare una nuova cartella, trascinarli all'interno, premere mela-i, poi rimetterli a posto, cancellare la cartella... FileSize semplifica questa operazione. Lasciando la sua icona sulla scrivania, quando si vuole conoscere la dimensione totale di alcuni file, è sufficiente selezionare questi ultimi con shift-click e trascinarli sopra la sua icona. Una finestra di dialogo vi comunicherà la dimensione totale.




Ora che avete capito a cosa serve, possiamo passare alla "vivisezione" dello script. Armatevi di bisturi (ovvero Script Editor, che trovate nella cartella Apple Extra) ed esplorate le viscere di FileSize. La versione che trovate nella sezione ilSoftware, non è però editabile, non vi sarà cioè possibile leggerne il codice sorgente. Lo ho così riportato qui sotto. Se volete scaricarvi la versione editabile (6 KB) cliccate qui.



on open theList
set totalSize to 0
tell application "Finder"
repeat with x in theList
set totalSize to (totalSize + (size of x))
end repeat



if totalSize > 1000000 then -- mostra dimensionein MB
set totalSize to (totalSize / 1000000)
set totalSize to (round totalSize rounding down)
beep
display dialog ("The total size is: " & (totalSize as string) & " MB") with icon 1 buttons {"Yeah!"} default button 1
end if



if totalSize < 1000000 then -- mostra dimensione in KB
set totalSize to (totalSize / 1000)
set totalSize to (round totalSize rounding to nearest)
beep
display dialog ("The total size is " & (totalSize as string) & " KB") with icon 1 buttons {"Yeah!"} default button 1
end if

end tell

end open



Quello che vedete qui sopra è esattamente ciò che vi apparirà nella finestra di Script Editor, una volta aperto aperto FileSize.

A questo punto analizziamone le istruzioni. Dò per scontato che abbiate già letto gli articoli precendenti e abbiate acquisito una certa familiarità con il linguaggio.



on open theList
set totalSize to 0
tell application "Finder"
repeat with x in theList
set totalSize to (totalSize + (size of x))
end repeat



Queste 6 righe di codice, tradotte in linguaggio umano significano : "quando lavori su un elenco di files (theList), poni la dimensione totale (totalSize) uguale a zero. Poi utilizza l'applicazione Finder. In seguito ripeti la seguente istruzione per ogni file (with x) nell'elenco: ripeti cioè: poni dimensioneTotale (totalSize) uguale a dimensione Totale + la dimensione di x. Fine delle istruzioni da ripetere".
Probabilmente dovrete rileggere quanto sopra alcune volte attentamente, dato che è una traduzione un po' macchinosa (in tutti i sensi :-) ma in fondo non è difficile, vero?

A questo punto il nostro Mac sa che deve considerare la dimensione (size) dei files trascinati sull'icona di FileSize, deve scansirli uno a uno e aggiungere la dimensione di ogni file al totale (totalSize). Il file generico è indicato con "x" nel listato. Dopo aver eseguito queste 6 linee di codice, il Mac conoscerà la dimensione totale dei files in questione, e la memorizzerà nella variabile "totalSize".

Siccome ho voluto rendere preciso il programma, a questo punto ci saranno due casi: quello in cui il totale sarà inferiore a 1 MegaByte, e allora verrà mostrato in KB, e viceversa.

Primo caso: mostrare dimensione in MegaByte



if totalSize >= 1000000 then -- mostra dimensionein MB
set totalSize to (totalSize / 1000000)
set totalSize to (round totalSize rounding down)
beep
display dialog ("The total size is: " & (totalSize as string) & " MB") with icon 1 buttons {"Yeah!"} default button 1
end if


É chiaramente un costrutto "if", il cui blocco di istruzioni verrà eseguito solo al verificarsi di una certa condizione, cioè: totalSize (la dimensione totale) deve essere maggiore o uguale a 1.000.000 di bytes, cioè a 1 MegaByte. Da notare che AppleScript lavora con le dimensioni espresse in byte. Ora con l'istruzione "set totalSize to (totalSize / 1000000)" , viene impartito l'ordine di dividere totalSize per 1.000.000, in modo da ottenere la dimensione in MB.
Con l'istruzione "set totalSize to (round totalSize rounding down)" viene ordinato poi di arrotondare il numero in questione per difetto.
E infine, dopo un "beep" di avviso, eccoci a che fare con il comando che permetterà al computer di mostrare a video i dati che ci interessano:
"display dialog ("The total size is: " & (totalSize as string) & " MB")".



Secondo caso: mostrare dimensione in KiloByte



if totalSize < 1000000 then -- mostra dimensione in KB
set totalSize to (totalSize / 1000)
set totalSize to (round totalSize rounding to nearest)
beep
display dialog ("The total size is " & (totalSize as string) & " KB") with icon 1 buttons {"Yeah!"} default button 1
end if

end tell

end open



Le istruzioni del secondo caso sono sostanzialmente uguali a quelle del primo, tranne per il fatto, naturalmente, che è diversa la condizione che si deve verificare: totalSize deve essere minore di 1.000.000 di bytes, cioè di un MegaByte. E ovviamente, per ottenere la grandezza in KiloByte, questa dovrà essere divisa per 1.000 : "set totalSize to (totalSize / 1000)".


É tutto. Il mio consiglio ora è quello di divertirvi a modificare questo piccolo script a vostro piacimento, provate ad esempio a crearne una versione in italiano...

Data di pubblicazione 25-03-2001


Data di pubblicazione: 22-05-2001

L'intero contenuto di questo sito dal 1998 del Team di ilMac.net, vietata ogni riproduzione senza il consenso scritto da parte degli autori.