Home / Indice sezione
 www.icosaedro.it 

M2 Report

<= Funzioni predefiniteIstruzione per la chiamata di funzione =>
Frontespizio
Introduzione
Caratteristiche
Un semplice esempio
Moduli
Sezione IMPORT
Sezione CONST
Sezione TYPE
Tipo FORWARD
Sezione VAR
Sezione FUNCTION
Sezione BEGIN
Stringhe letterali
Sottostringhe
Commenti
Costanti predefinite
Variabili predefinite
Funzioni predefinite
Istruzione di assegnamento
Istruzione per la chiamata di funzione
Ordine di valutazione degli argomenti attuali
Istruzione IF
Istruzione SWITCH
Istruzione FOR
Istruzione WHILE
Istruzione REPEAT
Istruzione LOOP
Istruzione TRY
Istruzione RAISE ERROR
Istruzione RETURN
Espressioni logiche
Espressioni intere
Espressioni reali
Espressioni stringa
Espressioni tra tipi strutturati
Regole di scope
M2 per programmatori C
M2 per programmatori Java
Rappresentazione dei dati in memoria
Keywords
Messaggi di errore a runtime
Sintassi
 

Istruzione di assegnamento

Permette di assegnare un valore ad una variabile. Il LHS (left hand side) deve essere una variabile eventualmente corredata dei selettori di campo (per i RECORD) o dei selettori di elemento (per gli ARRAY). Il RHS (right hand side) deve essere una espressione che genera un valore di typo compatibile con la variabile selezionata. Due valori sono compatibili in assegnamento se hanno la stessa struttura (v. la sezione TYPE per i dettagli sul criterio di compatibilità).

Esempi:

VAR
    i1, i2: INTEGER
    s1, s2: STRING
    ia1, ia2: ARRAY OF INTEGER
    sa1, sa2: ARRAY OF STRING
    r1, r2: RECORD
        i: INTEGER
        s: STRING
        a: ARRAY OF STRING
    END
    ...
BEGIN
    i1 = i2
    i1 = i1+2
    ia1 = ia2
    sa1 = sa2
    r1 = r2
    r1[s] = s1
    r1[a] = sa1
    sa1 = r1[a]
    ...

Le variabili allocate dinamicamente (STRING, ARRAY e RECORD) sono implementate come puntatori, e negli assegnamenti viene copiato solo l'indirizzo; di conseguenza, l'assegnamento del valore di una variabile allocata dinamicamente ad un'altra variabile allocata dinamicamente comporta che entrambe le variabili si riferiscano agli stessi dati. Esempi:

s1 = "ciao"
s2 = s1       # adesso s1,s2 puntano alla stessa stringa "ciao"
s1 = "salve"  # adesso s1="salve", s2="ciao"

sa1[0] = "pippo"
sa1[1] = "pluto"
r1[a] = sa1        (* sa1 e r1[a] puntano allo stesso array *)
r1[a][0] = "topo"  (* adesso anche sa1[0]="topo" *)

Tutte le variabili dinamiche STRING, ARRAY, RECORD e le variabili di tipo FUNCTION e FORWARD sono compatibili per assegnamento col valore NIL.

 
<= Funzioni predefiniteIstruzione per la chiamata di funzione =>

Umberto Salsi

Contatto
Mappa
Home / Indice sezione