L'interfaccia utente di Mathematica: i "notebook"

Gianluca Gorni
Università di Udine, Dipartimento di Scienze Matematiche, Informatiche e Fisiche

Ultima modifica: 5 dicembre 2017

Il programma Mathematica è diviso in due parti: l'interfaccia utente (Front End), in cui si scrive l'input e si legge l'output, e il nòcciolo (Kernel), che riceve l'input dall'interfaccia utente, esegue i calcoli, e restituisce l'output.

DynamicModule[{t0,t,omino},omino={{AbsoluteThickness[4],Line[{{(2/5),(2/3)},{(2/5),(1/3)},{(3/5),(1/3)},{(3/5),(1/20)},{(3/5)+(1/20),(1/20)}}],Line[{{(2/5),(3/5)},{(3/5),(3/5)}}]},Disk[{(2/5),(3/4)},(1/15)]};Graphics[{Translate[omino,{-12/5,-1/3}],Text[Column[{Style[\[MathematicaIcon],FontSize->100],Spacer[10],Style["FrontEnd",Large]},Center],{-1,0}],Text[Column[{Style[\[KernelIcon],FontSize->100],Spacer[10],Style["Kernel",Large]},Center],{1,0}],
Text["MathLink",{0,.1}],
Thickness[Large],Arrow[{{-.4,.4},{.4,.4}}],Arrow[{{.4,-.2},{-.4,-.2}}],Red,
BlockRandom@Dynamic[t0=Clock[Infinity];t=Mod[t0,4];SeedRandom[Floor[t0/4]];
{n,m}=RandomInteger[{0,10},{2}];
If[t≤2,{Text[Style[DisplayForm@FormBox[RowBox[{n,"+",m}],TraditionalForm],Medium],{t/2-.5,.4},{0,-2}]},{Text[Style[n+m,Medium],{2-t/2-.5,-.2},{0,-1.5}]}]]},PlotRange->{1.7{-1.3,1},.7{-1,1}}],SaveDefinitions->True]

L'interfaccia utente si basa su un formato file, quello che vedete ora, chiamato notebook. (estensione .nb). Esiste anche una variante: il notebook convertito per Wolfram cdfPlayer (estensione .cdf).

Celle e gruppi di celle

I notebook sono organizzati in una struttura gerarchica che è rappresentata sul margine destro della finestra con una serie di parentesi quadre annidate (brackets). Le parentesi quadre che non ne contengono altre sono dette celle. Questo paragrafo è contenuto in una cella di testo. Altri due sono i tipi di celle che ci interessano: le celle di input, di output e le celle grafiche.

Seguono un'esempio di cella di input con quella di output corrispondente:

1+1

L'input è scritto in carattere monospaziato grassetto, l'output in monospaziato normale, entrambi con un rientro rispetto al margine sinistro della finestra. Notate che le quadre a margine delle due celle sono racchiuse da un'ulteriore quadra (quadra di gruppo di celle). Provate per curiosità a cliccare ripetutamente due volte sulla quadra di gruppo, e poi ancora: il gruppo si chiude e si apre.

Come creare, modificare ed eseguire celle

Per creare una nuova cella di input e scrivere codice:

posizionare il cursore al di sotto dell’ultima cella, o fra una cella e l’altra; se il posto è giusto il cursore appare orizzontale;

cliccando compare una riga orizzontale da un estremo all’altro della finestra;

cominciare a scrivere.

Se si vuole aggiungere o modificare una cella di input già esistente, basta posizionarci dentro il cursore.

Per mandare in esecuzione (o "valutazione") una cella di input si posiziona (se non c'è già) il cursore in un qualsiasi punto della cella (o si clicca sulla quadra a margine) e poi una delle tre azioni equivalenti:

si va al menu Evaluation > Evaluate Cells, (si possono eseguire più celle in un colpo, selezionando le bracket)

l’⌤ del tastierino numerico (per chi ce l’ha),

terza alternativa: premere insieme ⇧|⌤.

Maggiori informazioni si possono leggere sull'aiuto on line: Notebook Basics (cliccare).

Le tavolozze

Utilissime al principiante per decollare sono le tavolozze (Palettes), che si trovano nel menu apposito:

Aprite per esempio Basic Math Assistant:

Potete usare il Basic Calculator come un semplice calcolatore per fare le quattro operazioni: dopo aver posizionato il cursore in una cella di input,  potete cliccare sulla tavolozza per fare semplici calcoli, per esempio

1+9

L'output si ottiene cliccando su ⌤.

Un altro esempio: per disegnare il grafico di una funzione andate su Basic Commands, 2D, Visualizing Functions:



premete su Plot e vi viene questo schema:

Plot[function,{var,min,max}]

Potete riempire lo schema con la tavolozza soltanto, senza toccare la tastiera (il tasto di tabulazione viene comunque comodo per passare alla locazione seguente), per esempio

Plot[2x^2,{x,-1,1}]

Passate un po' di tempo a farvi un'idea della ricchezza del Basic Math Assistant, e delle altre tavolozze!

Input nel linguaggio naturale tramite Wolfram|Alpha

Quando il primo carattere di una cella di input è = il resto viene trattato come se fosse una domanda a Wolfram|Alpha, ed è ammesso il linguaggio naturale (inglese):

Naturalmente, è richiesta la connessione internet.

Si può chiamare Wolfram|Alpha anche all’interno di una cella, con Ctrl-=

g=9.8*LinguisticAssistant

9.8*LinguisticAssistant

Il centro di documentazione

All'inizio si rimane intimiditi, ma bisogna almeno sapere da sùbito che Mathematica ha un grosso apparato di documentazione. Guardate il menu Help:


Provate per esempio ad aprire il Documentation Center:

Inizializzazione

Osservate delle quadre a margine e lo sfondo delle seguenti due celle di input:

2+2

3+3

Le due quadre sono diverse: la prima è una quadra di input normale, mentre la seconda segnala una cella di inizializzazione. Se apriamo un file contenente una o più celle di inizializzazione (come questo) e mandiamo in esecuzione (per la prima volta) un qualsiasi input del file, si aprirà una finestra che chiede se vogliamo eseguire le celle di inizializzazione:

Se rispondiamo "sì", le celle di inizializzazione verranno eseguite per prime. Di solito chi scrive il notebook raccoglie nelle celle di inizializzazione dei comandi o definizioni "preliminari" a tutto il resto, che l'utente tipico può ignorare, almeno in prima lettura.

L'esempio di sopra, 3+3, è abbastanza sciocco come inizializzazione, ma il seguente no:

SetOptions[$FrontEnd,CommonDefaultFormatTypes->{"Output"->TraditionalForm}];

I file di questa serie contengono tutti questa inizializzazione: serve per avere degli output in formato "tradizionale", di solito più bello da vedere. Per chi è interessato, si può cambiare il formato di output anche andando sul pannello delle preferenze, a Evaluation>Format type of new output cells.

Se volete l’output in formato standard date il comando

SetOptions[$FrontEnd,CommonDefaultFormatTypes->{"Output"->StandardForm}]

Esercizi

Mandate in esecuzione la seguente cella di input già pronta:

(12+15)/9

Creare di seguito una nuova cella di input, scriverci 2*4 (l'asterisco sta per moltiplicazione), e mandare in esecuzione.

Cambiare qualcosa in una cella di input già eseguita, e rieseguire. Osservare la barra del titolo della finestra mentre si manda in esecuzione. È uno dei pochi segni di vita del nòcciolo.

Confrontare l'estremità in alto della quadre a margine di una cella di testo, di input e di output. Sono diverse.

Fare doppio clic ripetutamente sulle quadre a margine di gruppi di celle, compreso quello più esterno che racchiude tutto il file, e vedere cosa succede.

Aprire la tavolozza Basic Math Assistant e cliccando su questa, senza usare la tastiera, riprodurre le seguenti celle di input (comprese le parentesi), e poi per trovare il risultato:

1+(2+(3+4))

x+2/3x-x^2

x-(x^3)

Familiarizzarsi con il Documentation Center (nel menu Help>Documentation Center).