COBOL è un linguaggio di programmazione oggi quasi obsoleto e utilizzato solamente in ambiti specifici (finanza, banca). Per via della sua impostazione, specialmente la valutazione di un'operazione alla volta, è sconsigliato per l'ingegneria (calcolo irraggiamento termico in COBOL), per la chimica (calcolo potere calorifico superiore in COBOL) e matematica (calcolo integrali definiti in COBOL, metodo di Netwon-Raphson in COBOL, equazione della diffusione - FTCS - in COBOL).

Oggi vediamo un altro ambito in cui COBOL è controindicato e per tale ragione noi lo usiamo 😀 essendo vicino al linguaggio macchina, certamente non si presta per la programmazione ad oggetti, quindi... Definiamo proprio una classe macchina, automobile!
Abbiamo questo ipotetico veicolo che viaggia a velocità iniziale di 100 km/h e:

  • accelera: con la possibilità di raggiungere al massimo V=Vmax=200 km/h
  • rallenta: dalla velocità attuale fino eventualmente a fermarsi
  • frena e si ferma: raggiunge V=0
  • calcolo consumo totale di carburante: con l'approssimazione di andamento lineare in funzione della velocità con riferimento 20 km/l a 100 km/h e ogni tratto di 1 km

Si riporta il codice COBOL di questo programma, realizzato tramite tutorialspoint.com.

IDENTIFICATION DIVISION.
PROGRAM-ID. AUTOMOBILE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 V PIC 999 VALUE 100.
01 Vmax PIC 999 VALUE 200.
01 x1 PIC 999 VALUE 10.
01 x2 PIC 999 VALUE 50.
01 consumo PIC 99V999 VALUE 0.
01 TEMP PIC 99V999 VALUE 0.
PROCEDURE DIVISION.
INIT.
DISPLAY "V(0) = " V " km/h |velocità iniziale".
ACCELERA.
IF V+x1<Vmax
ADD x1 TO V GIVING V
ELSE
MOVE Vmax TO V
END-IF
DISPLAY "V(1) = " V " km/h |accelera".
COMPUTE consumo=0.0005*V.
RALLENTA.
IF x2<V
SUBTRACT x2 FROM V
ELSE
MOVE 0 TO V
END-IF
DISPLAY "V(2) = " V " km/h |rallenta".
COMPUTE TEMP=0.0005*V.
ADD TEMP to consumo GIVING consumo.
FRENA.
MOVE 0 TO V.
DISPLAY "V(3) = " V " km/h |frena e fermati".
DISPLAY "Consumo totale = " consumo " l".
STOP RUN.

Infine un'immagine di come compare l'output.
COBOL automobile classe

Powered by: FreeFlarum.
(remove this footer)