Home / Indice sezione
 www.icosaedro.it 

M2 Report

<= Espressioni realiEspressioni tra tipi strutturati =>
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
 

Espressioni stringa

Le stringhe si possono concatenare con l'operatore "+". Se tutte le stringhe concatenate sono NIL, il risultato è NIL.

"A" + "B" + NIL + "" + "C" ==> "ABC"

L'ordine di valutazione dei termini nella espressione di concatenamento di stringhe va da sinistra a destra, sicché se i termini del concatenamento sono funzioni, queste verranno invocate nell'ordine in cui appaiono.

Nota implementativaLa versione attuale del compilatore non soddisfa quest'ultimo requisito, e l'ordine di valutazione dei termini della espressione di concatenamento di stringhe risulta essere da destra verso sinistra. Occorre pertanto evitare che i termini della espressione producano effetti collaterali il cui esito finale dipende dall'ordine di valutazione.

Accade spesso di dover comporre una stringa che include anche dei numeri. Il modulo m2runtime fornisce le funzioni itos() e rtos() che convertono numeri interi e numeri reali in stringhe. Ad esempio, se n è un numero intero potremo scrivere:

"Trovati " + itos(n) + " record.\n"

e similmente per i numeri reali. Il modulo fmt fornisce delle funzioni di formattazione più sofisticate che permettono di incolonnare i dati, utilizzare basi di rappresentazione diverse e controllare il numero delle cifre significative.

Vista la frequenza con la quale compaiono espressioni di stringhe di questo tipo, il compilatore M2 consente di omettere la conversione a stringa per i numeri INTEGER e REAL e utilizza per default le funzioni del modulo m2runtime. Si può allora usare la forma abbreviata:

"Trovati " + n + " record.\n"

Ci sono però due restrizioni all'uso della forma abbreviata:

  • E' possibile includere una espressione di numeri interi o reali, ma questa deve essere inclusa tra parentesi tonde:

    "Il record " + (i+1) + "-esimo è vuoto."

  • Il primo termine del concatenamento di stringhe deve essere una stringa. Per mettere un numero all'inizio dovremo prima includere la stringa vuota, come in questo esempio:

    "" + n_err + " errori, " + n_warn + " avvertimenti"

 
<= Espressioni realiEspressioni tra tipi strutturati =>

Umberto Salsi

Contatto
Mappa
Home / Indice sezione