[successivo] [precedente] [inizio] [fine] [indice generale]


Sezione 15.   Espressioni, variabili e assegnamenti

Un numero è ovviamente un'espressione valida.(1) La notazione decimale è legittima; in GNU Gpic è anche legittima la notazione scientifica nello stile del linguaggio C (come 5e-2).

Ovunque si può utilizzare un numero, il linguaggio accetta anche una variabile. Le variabili possono essere variabili di stile predefinite (vedi sezione 14), oppure nuove variabili create da un assegnamento.

DWB Pic prevede solamente l'assegnamento ordinario mediante il simbolo di uguaglianza (=), il quale definisce la variabile (a primo membro) nel blocco corrente, a meno che non sia già stata ivi definita, e poi ne cambia il valore (che si trova a secondo membro) nel blocco corrente. La variabile non è visibile al di fuori del blocco.(2)

GNU Gpic prevede anche un tipo di assegnamento alternativo, mediante l'operatore :=. In tal caso la variabile deve essere già stata definita, e il valore viene assegnato alla variabile senza creare una variabile locale al blocco corrente. Si consideri la seguente sessione interattiva (vedi anche sezione 17.2):

cat x.pic[Invio]

.PS
x=5
y=5
[
  x:=3
  y=3
]
print x " " y
.PE

cat x.pic | pic > /dev/null[Invio]

3 5

Nelle espressioni si possono utilizzare l'altezza, la larghezza, il raggio e le coordinate cartesiane di qualsiasi oggetto o vertice. Se A è un'etichetta associata a un oggetto, le espressioni elencate nel listato 15.3 sono tutte valide.

Listato 15.3. Espressioni valide a partire dall'etichetta A.

      1 ...
      2 A.x                  # ascissa del centro di A
      3 A.ne.y               # ordinata del vertice nordest di A
      4 A.wid                # larghezza di A
      5 A.ht                 # la sua altezza
      6 2nd last circle.rad  # raggio del penultimo cerchio
      7 ...

Si noti in particolare l'espressione in riga 3 del listato 15.3, la quale mostra come estrarre le coordinate di un vertice.

Sono disponibili le espressioni aritmetiche fondamentali, con una sintassi simile al linguaggio C: +, *, -, / e %. Inoltre c'è ^ per l'elevamento a potenza. Si possono associare i termini in modo tradizionale mediante parentesi. GNU Gpic permette inoltre l'uso di operatori logici e di confronto: !, &&, ||, ==, !=, >=, <=, >, <.

Sono previste diverse funzioni predefinite: sin(x), cos(x), log(x), exp(x), sqrt(x), max(x,y), atan2(x,y), min(x,y), int(x), rand() e srand(). Sia exp che log si intendono in base 10; int produce il troncamento all'intero precedente; rand restituisce un numero pseudocasuale nell'intervallo [0..1) mentre srand(3) imposta il seme per una nuova successione di valori restituiti da rand.

GNU Gpic prevede anche una funzione ad un argomento rand(x), che restituisce un numero pseudocasuale nell'intervallo [0..x), ma si tratta di una funzione deprecata che potrebbe venir rimossa nelle future versioni del programma.

La funzione sprintf è simile all'omonima funzione della libreria standard del linguaggio C, ma prevede solamente le metavariabili di formato %, %e, %f e %g.


Informatica per sopravvivere 2006.01.30 --- Copyright © 2004-2006 Massimo Piai -- <pxam67 (ad) virgilio·it>


1) Tutti i numeri sono conservati internamente come in virgola mobile

2) La situazione è simile al linguaggio C, in cui una variabile in un blocco impedisce di accedere alla variabile omonima esterna al blocco.

3) Estensione GNU.


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome espressioni_variabili_e_assegnamenti.html

[successivo] [precedente] [inizio] [fine] [indice generale]

Valid ISO-HTML!

CSS validator!