2.40   PILOT

Pilot ha origine nel 1962 alla IBM come strumento per la gestione di corsi a terminale. E’ un linguaggio rudimentale, anche per gli standard dell’epoca, ma sufficiente per lo scopo per cui era utilizzato, tant’è che è sopravvissuto fino agli anni 90, ricevendo anche una standardizzazione (IEEE Std. 1154-1991).

Ogni linea è o un comando o un’etichetta. I comandi sono formati da un nome di istruzione, un’eventuale condizione, che se verificata permette l’esecuzione dell’istruzione stessa, e l’operando dell’istruzione; questo é separato dai campi precedenti tramite il carattere “:”. Le etichette sono stringhe alfanumeriche che iniziano con *.

Le istruzioni sono limitate, il linguaggio accetta queste anche in modo abbreviato, al limite è sufficiente la prima lettera, esse sono:

·  REM: commento .

·  TYPE: l’operando è inviato sul terminale.

·  ACCEPT: acquisisce un input da tastiera, eventualmente lo inserisce in una variabile numerica o stringa, ciò è indicato prefissando la variabile rispettivamente con # o $.

·  MATCH: esegue un confronto fra l’operando e quanto è stato immesso da tastiera. E’ forse l’istruzione più complessa: l’operando può contenere caratteri jolly, o occorrenze multiple. Il MATCH è verificato anche se l’operando compare parzialmente nella risposta.

·  JUMP: predispone l’esecuzione del programma a partire dalle istruzioni che seguono l’etichetta indicata nell’operando.

·  USE: predispone l’esecuzione del programma a partire dalle istruzioni che seguono l’etichetta indicata nell’operando, e memorizza l’indirizzo dell’istruzione successiva.

·  COMPUTE: assegna un valore ad una variabile

·  END: ritorna all’indirizzo memorizzato dalla USE o esce dal programma.

·  YES: come TYPE, ma eseguita se l’istruzione MATCH precedente è risultata verificata.

·  NO: come TYPE, ma eseguita se l’istruzione MATCH precedente è risultata non verificata.

·  Spazio: eredita l’istruzione precedente

La parte condizione è o un’espressione fra variabili e costanti valutabile in vera o falsa o i caratteri “Y” o “N” che condizionano l’istruzione in base al risultato dell’istruzione MATCH precedente:

TYPE:Rispondere S o N

A:

M:S,s

JY:*ESEGUI

Dagli originari grandi sistemi PILOT è migrato anche sui sistemi più piccoli, acquisendo alcune nuove funzionalità, come le istruzioni per gestire i video (PILOT Nevada per CP/M), quali CH per pulire il video e posizionarsi sulla prima riga..

L’esempio che segue è un semplice giochino, l’interprete PILOT, peraltro largamente incompleto, è stato scritto in LUA (v. par. 2.25).

C :Numero = 44

C :Tot = 0

R :Esempio di programma PILOT

*GIOCA

CH:

C :conta = 0

T :Benvenuto, cerca di indovinare il numero che ho nascosto fra 0 e 100.

  :

*RIPROVA

A :#Num

C :Tot = Tot + Num

C :conta = conta + 1

T(Num < Numero):Modesto! Numero troppo piccolo.

T(Num > Numero):Esagerato! Numero troppo grande.

J(Num <> Numero):*RIPROVA

T :Indovinato!

T(conta > 6):Ma hai fatto troppi tentativi.

T(conta < 4):Meno di 4 tentativi, Sei stato fortunato.

C :Numero = 97 + Tot + conta

*SOTTRAI

C:Numero = Numero - 99

J(Numero > 100):*SOTTRAI

T :Vuoi riprovare?

A :

M :s,S

JY:*GIOCA  

E :

L’esecuzione di questo è:

Benvenuto, cerca di indovinare il numero che ho nascosto fra 0 e 100.

 

50

Esagerato! Numero troppo grande.

25

Esagerato! Numero troppo grande.

12

Modesto! Numero troppo piccolo.

18

Modesto! Numero troppo piccolo.

21

Indovinato!

Vuoi riprovare?

n

 

Arrivederci!