FOCAL

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