Linguaggio didattico
Il linguaggio ha origine nel 1981 (Focal-81) ad opera di Dave Conroy. E’ un linguaggio molto semplice, con solo il tipo di dato numero reale, utilizzabile anche in array. Si presenta come ambiente di sviluppo, in cui ogni istruzione ha un indirizzo formato da un numero reale compreso fra 00.01 e 99.99; ogni gruppo di decine di fatto è una subroutine. Sono presenti gli usuali operatori aritmetici, ed alcune funzioni matematiche. Le istruzioni di input output sono sostanzialmente ask e type, più LIBRARY per la gestione dei programmi. DO NN.UU e RETURN permettono la scrittura di sottoprogrammi: se è presente UU, DO esegue solo le istruzioni della riga NN.UU, altrimenti prosegue sino al RETURN o al cambio di decina. FOR itera le istruzioni presenti sulla riga. L’istruzione di assegnazione è SET. L’istruzione IF impone qualche acrobazia, poiché ha una delle forma:
if
espressione indirizzo1; istruzione
if
espressione indirizzo1,indirizzo2; istruzione
if espressione indirizzo1,indirizzo2,indirizzo3
Il programma salta ad indirizzo1,indirizzo2,indirizzo3 rispettivamente per espressione < 0, = 0 e > 0.
Nell’esempio riportato, l’algoritmo di bubble sort e la sua esecuzione.
10.10 c Compilatore Hacked by Akira KIDA 10.20 c 10.30 c Bubble sort di un
vettore 10.40 c 20.10 ask "quanti
elementi da ordinare?",num 20.20 c generazione di num
numeri a caso 20.30 for i = 1, num;set vect(i) = fran(1.0);t vect(i),! 20.40 type !,"ordinati",! 20.50 for i = 1,num;do 50;type vect(i),! 20.60 quit 50.10 for j = num,i+1,-1; do 60
50.20 return 60.10 if (vect(j) - vect(j-1)) 60.40;return 60.40 c scambio elementi 60.50 set com = vect(j) 60.60 set vect(j) = vect(j - 1) 60.70 set vect(j - 1) = com 60.90 return |
condor@linux:~/focal > focal *library call bubble.foc *do quanti elementi da
ordinare?: 7 55062.5422 25846.2795 51321.1907 52326.5660 59745.7212 12946.7265 21969.1585 ordinati 12946.7265 21969.1585 25846.2795 51321.1907 52326.5660 55062.5422 59745.7212 *q |