| Home / Indice sezione | www.icosaedro.it | ![]() |
|
| |||
| 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 | Un semplice esempioPrima di analizzare nel dettaglio tutti gli aspetti del linguaggio, presentiamo qui un semplice esempio per comprendere lo spirito con il quale M2 è stato concepito. L'esempio è breve ma non troppo banale: vengono dati al programma una parola e un elenco di files, e il programma deve riportare sullo schermo i nomi dei files che contengono questa parola. Battezziamo il programma "cerca". Quello che vogliamo, in definitiva, è poter battere sulla tastiera un comando del tipo "cerca pippo file1 file2 file3 e ottenere in risposta i nomi dei file che contengono la parola "pippo". Il sorgente è corredato di commenti che dovrebbero consentirne la comprensione, almeno a grandi linee.
MODULE cerca
IMPORT m2 # utilita' generali: print().
IMPORT io # accesso al file system: Open(), ReadLine(), Close().
IMPORT str # manipolazione stringhe: find()
FUNCTION trovata(p: STRING, fn: STRING): BOOLEAN
(*
Ritorna TRUE se il file fn contiene la parola p.
*)
VAR
f: FILE
linea: STRING
BEGIN
f->Open(fn, "r")
LOOP
linea = ReadLine(f)
IF linea = NIL THEN # fine del file
f->Close()
RETURN FALSE
ELSIF find(linea, p) >= 0 THEN # trovata!
f->Close()
RETURN TRUE
END
END
f->Close()
RETURN FALSE
END
VAR
a: ARRAY OF STRING
i: INTEGER
BEGIN
# acquisisci parametri da linea di comando: a[0] e' il nome del
# programma, a[1] e' il primo argomento, ecc.
a = get_args()
# assicura che ci sia almeno la parola da cercare:
IF count(a) < 2 THEN
error("Indica una parola da cercare e una lista di files\n")
exit(1)
END
# cerca la parola a[1] in tutti i file:
FOR i=2 TO count(a)-1 DO
IF trovata(a[1], a[i]) THEN
print(a[i] + "\n")
END
END
END
Il sorgente di questo programma viene scritto nel file
$ m2 cerca.mod
che produce il codice eseguibile $ ./cerca unaparola qUeStoFileNonEsisTe
Questo è il comportamento conservativo e orientato alla sicurezza di M2. C'è poi l'istruzione TRY che permette di controllare gli errori ed intraprendere azioni alternative quando essi si presentano. | |||
| ||||
| Umberto Salsi | Contatto | Mappa | Home / Indice sezione |