Corso di programmazione in REXX - Lezione 2 - nozioni di base


Nota: i sorgenti descritti in questo numero sono stati raccolti nel file rxsource.zip (3 KB).


Le variabili sono il mezzo per gestire dati mutevoli rappresentandoli tramite simboli.

Gestire i dati tramite simboli: variabile, valore, assegnamento

Uno dei principali requisiti di ogni programma è la capacità di trattare informazioni variabili, sconosciute quindi nel momento in cui si scrive il programma stesso. E' certamente possibile creare dei programmi che usano solo dati precedentemente noti. Per esempio:

/* datinoti.cmd */
say "La somma di 2 + 3 è uguale a" 2 + 3
eseguendo DATINOTI.CMD potremo ottenere sempre e solo la somma di 2 e 3, mentre sarebbe molto più utile un programma in grado di gestire la somma (e altre operazioni) di due dati qualsiasi.
Per realizzare ciò e necessario ricorrere a dei simboli che rappresentino tali dati. Questi simboli sono detti varabili. Esempio:
/* somma.cmd : esempio di un programma che esegue la somma di due numeri */
say "Introduci un numero"
pull primo
say "Introduci un altro numero"
pull secondo
say "La somma di" primo "+" secondo "è:" primo + secondo
Tramite le due istruzioni pull i numeri immessi dall'utente vengono memorizzati nelle due variabili primo e secondo e mostrati sullo schermo dal'istruzione say.

L'informazione memorizzata in una variabile viene definita valore della variabile. Tale informazione può consistere in una o più parole, numeri o anche nulla. Il valore della variabile può essere cambiato ogni volta che si vuole, ma il nome della variabile rimane immutato.
E' buona pratica di programmazione usare dei nomi significativi per le variabili secondo il dato che devono memorizzare. Così dovendo memorizzare il nome di un file in una variabile sarà utile chiamarla nomefile, isultato se sarà destinata a memorizzare il risultato di un'operazione, eccetera.

L'operazione che memorizza un valore in una variabile o ne cambia il valore precedente è detta assegnamento.
La sintassi dell'assegnamento di un valore ad una variabile è del tipo:

nome_variabile = valore
dove il segno di uguale (=) è l'operatore di assegnamento e valore può essere un semplice numero, frase, un'espressione da valutare o il nome di un'altra variabile di cui si voglia copiare il valore.
Questi sono alcuni esempi di assegnamenti:
numero = 5                  /* assegna il valore 5 alla variabile numero */
password = "xyz"            /* assegna "xyz" alla variabile password     */
risultato = 5 * 7           /* assegna a risultato il valore di 5 * 7    */
numero = risultato          /* assegna a numero il valore della          */
                            /* variabile risultato                       */
Un altro modo comune di assegnare un valore ad una variabile è tramite l'istruzione pull come abbiamo visto nei precedenti esempi.

L'istruzione say ci permette di mostrare sullo schermo il valore di una variabile:

/* variabile.cmd */
ammonto = 100                    /* assegna 100 ad AMMONTO               */
valuta = "dollari"               /* assegna "dollari" a VALUTA           */
say ammonto valuta               /* mostra "100 dollari" sullo schermo   */
ammonto = ammonto + 30           /* aggiunge 30 al precedente valore di  */
                                 /* ammonto                              */
say ammonto valuta               /* ora mostra "130 dollari"             */
/* ora assegna un valore ad una variabile tramite PULL                   */
say "scrivere alcune parole e poi premere INVIO"
pull frase                       /* assegna a frase le parole scritte    */
say "hai scritto:" frase         /* mostra il contenuto di FRASE         */
Il valore di una variabile cui non è stato assegnato alcun valore è il nome della variabile stessa convertito in lettere maiuscole:
/* unassign.cmd */
say ammonto                      /* mostra sullo schermo "AMMONTO"       */
say valuta                       /* mostra sullo schermo "VALUTA"        */
say frase                        /* mostra sullo schermo "FRASE"         */
Un altro modo per mostrare il valore di una variabile durante l'esecuzione di un programma è tramite l'istruzione trace che vedremo in una delle prossime lezioni.

Nomi validi per le variabili

Ci sono alcune limitazioni riguardo la lunghezza delle variabili e i caratteri che è possibile usare, che comunque non sono tali da rendere difficile l'uso di un nome significativo per le variabili stesse.
Le regole da seguire sono:

Alcune pratiche comuni di buona programmazione suggeriscono inoltre di seguire i seguenti accorgimenti:

Assegnamento dei dati immessi dall'utente

Come abbiamo già visto, capita spesso di usare le variabili per memorizzare dei dati immessi dall'utente. Le istruzioni usate più comunemente per questo scopo sono pull e arg.
L'istruzione pull interrompe l'esecuzione del programma in attesa dei dati immessi dall'utente assegnandoli poi alla variabile che segue pull:

/* pull.cmd */
say "Scrivere un numero e premere INVIO"
pull numero
say "Il dato immesso è:" numero
Una singola istruzione pull può anche essere usata per memorizzare contemporaneamente più dati separati da spazi:
/* pull_1.cmd */
say "Scrivere 3 o più parole e premere INVIO"
pull prima seconda terza
say "la prima parola è:" prima
say "la seconda parola è:" seconda
say "la terza parola è:" terza
Se vengono immesse più di 3 parole l'ultima variabile, terza, memorizzerà tutte le parole restanti, mentre nel caso le parole immesse siano meno di 3 le ultime variabili saranno vuote.
Il procedimento di lettura e separazione delle singole informazioni viene chiamato parsing.

L'istruzione arg funziona in modo simile a pull, ma serve per recuperare i dati immessi come parametri del programma stesso:

/* test_arg.cmd */
arg prima seconda terza
say "questo programma legge i dati immessi come parametri del programma!"
say "primo dato:" prima
say "secondo dato:" seconda
say "terzo dato:" terza
Per memorizzare 3 parole nelle variabili prima, seconda e terza dovremo ora introdurli dal prompt dei comandi direttamente all'avvio del programma, per esempio:
test_arg alfa beta gamma

a cura di Alessandro Cantatore

[Pagina precedente] -- [Sommario] -- [Home Page] -- [Pagina successiva]