Action! (linguaggio di programmazione)

Da Wikipedia, l'enciclopedia libera.
Action!
Autore Optimized Systems Software
Data di origine 1983
Ultima versione 3.6
Utilizzo general-purpose
Paradigmi Programmazione strutturata
Tipizzazione Forte
Influenzato da ALGOL, Pascal, C, Ada
Implementazione di riferimento
Licenza Copyright 1994 Fine Tooned Engineering

L'Action! è un linguaggio di programmazione per gli home computer della Famiglia Atari 8-bit. Integra un editor, un debugger ed un compilatore per il processore MOS 6502. L'Action! fu sviluppato da Clinton Parker e distribuito su cartuccia dalla Optimized Systems Software nel 1983. La sua sintassi è simile a quella dell'ALGOL 68.

L'Action! era un linguaggio prestante che permetteva la scrittura di videogiochi e di demo grafiche in un linguaggio di alto livello senza l'uso di codice scritto in linguaggio Assembly.

Era disponibile anche una libreria separata di funzioni chiamata Action! Toolkit. L'Action! fu utilizzato per creare almeno due prodotti commerciali: La suite di produttività Homepak ed il programma Games Computers Play. Del linguaggio non ne fu mai fatto un porting per altri sistemi.

Tipi di dati[modifica | modifica sorgente]

Action! ha 3 tipi di dati fondamentali, tutti numerici.

BYTE[modifica | modifica sorgente]

Rappresentato internamente come un intero a 8 bit privo di segno. I valori vanno da 0 a 255.

 BYTE age=[21]      ; dichiara la variabile age e la inizializza con il valore 21
 BYTE leftMargin=82 ; dichiara la variabile leftmargin e la memorizza all'indirizzo 82

CARDinal[modifica | modifica sorgente]

Rappresentato come un intero a 16 bit privo di segno. Valori da 0 a 65535.

 CARD population=$600             ; dichiara la variabile e la memorizza agli indirizzi 1536 e 1537
 CARD prevYear, curYear, nextYear ; si utilizza la virgola per dichiarare più variabili

INTeger[modifica | modifica sorgente]

Rappresentato con un intero a 16 bit con segno. Valor da -32768 a 32767.

 INT veryCold = [-10]
 INT profitsQ1, profitsQ2,  ; la dichiarazione di più variabili può spaziare su 
     profitsQ3, profitsQ4   ; più linee di codice


Action! ha anche i tipi di dato ARRAY, POINTER ed i tipi di dato definiti dall'utente (user-defined TYPEs). Non sono presenti tipi di dati floating point.

Un esempio di tipo di dato definito dall'utente:

 TYPE CORD=[CARD x,y]
 CORD point
 point.x=42
 point.y=23

Parole chiave[modifica | modifica sorgente]

Una parola chiave o keyword è ogni stringa o simbolo che il compilatore ACTION! riconosce come speciale. Può essere un operatore, un nome di tipo di dato, uno statement oppure una direttiva di compilazione.

 AND       FI         OR         UNTIL    =     (
 ARRAY     FOR        POINTER    WHILE    <>    )
 BYTE      FUNC       PROC       XOR      #     .
 CARD      IF         RETURN     +        >     [
 CHAR      INCLUDE    RSH        -        >=    ]
 DEFINE    INT        SET        *        <     "
 DO        LSH        STEP       /        <=    '
 ELSE      MOD        THEN       &        $     ;
 ELSEIF    MODULE     TO         %        ^
 EXIT      OD         TYPE       !        @

Esempio di codice[modifica | modifica sorgente]

Il seguente esempio rappresenta il codice dell'algoritmo del Crivello di Eratostene scritto in Action!. Per aumentare le prestazioni viene disabilitato il coprocessore grafico ANTIC.

BYTE RTCLOK=20, ; addr of sys timer
     SDMCTL=559 ; DMA control

BYTE ARRAY FLAGS(8190)

CARD COUNT,I,K,PRIME,TIME

PROC SIEVE()

  SDMCTL=0 ; shut off Antic
  RTCLOK=0 ; only one timer needed

  COUNT=0         ; init count
  FOR I=0 TO 8190 ; and flags
    DO
    FLAGS(I)='T ; "'T" is a compiler-provided constant for True
    OD

  FOR I=0 TO 8190 ; and flags
    DO
    IF FLAGS(I)='T THEN
      PRIME=I+I+3
      K=I+PRIME
      WHILE K<=8190
        DO
        FLAGS(K)='F ; "'F" is a compiler-provided constant for False
        K==+PRIME
        OD
      COUNT==+1
    FI
    OD
  TIME=RTCLOK ; get timer reading
  SDMCTL=34   ; restore screen

  PRINTF("%E %U PRIMES IN",COUNT)
  PRINTF("%E %U JIFFIES",TIME)
RETURN

Voci correlate[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica