|  |  |
| --- | --- |
|    | **Šiam straipsniui ar jo daliai trūksta išnašų į šaltinius.**Jūs galite padėti Vikipedijai pridėdami tinkamas išnašas su šaltiniais. |

Fortran sakinys, užkoduotas perfokortoje. Sakinys taip pat užrašytas ranka perfokortos viršuje
**FORTRAN** (iš angl. '**'For**mula **Tran**slator*) – viena pirmųjų algoritminių kalbų, savo istoriją skaičiuojanti[reikalingas šaltinis] nuo 1957 m. Ją sukūrė amerikiečių firmos IBM tyrinėtojų grupė, kuriai vadovavo Džonas Bekus (*John W. Backus*). Kalba išsiskyrė tuo, kad matematinės formulės joje labai panašios į formules matematiniame tekste.*

„Sveikas pasauli" **FORTRAN** atrodytų maždaug taip:

```
 C       *Tai pirmoji programavimo kalba,* 
 C       *kurioje buvo galimi komentarai.*
         **WRITE** (6,7000)
   7000  **FORMAT**(19H Sveikas, pasauli!)      
         **STOP**
         **END**
```

Pirmasis WRITE operatoriaus parametras (6) yra standartinis terminalo išvedimo kanalo numeris (skaityti reikdavo iš penkto kanalo). Antrasis parametras, 7000, nurodo į žemiau esančią, tuo pačiu skaičiumi pažymėtą formato eilutę (kuri nėra vykdoma ir programoje gali būti bet kur). 19H reiškia jog *Sveikas, pasauli!* ir du tarpai aplink užima lygiai devyniolika simbolių. Vėlesnės **FORTRAN** versijos simbolių skaičiuoti nebereikalavo, tačiau tai buvo laikoma geru programavimo stiliumi. 

Pirmiausia kurta matematiniams apskaičiavimams, **FORTRAN** turi kompleksinių skaičių tipą kurio neturi daugelis naujesnių programavimo kalbų. Ankstyvose versijose buvo daug vėliau neįprastų konstrukcijų. Pavyzdžiui, su EQUIVALENCE buvo galima tą pačią lentelę pasiekti tiek kai vienmatį, tiek ir kaip dvimatį ar daugiamatį masyvą, su ENTRY - perduoti valdymą į funkcijos kodo vietą bet kur (nebūtinai į funkcijos pradžią). Pirmojoje FORTRAN versijoje procedūrų bei funkcijų nebuvo, jos pirmąkart pasiūlytos FORTRAN II.

Dabartinė padėtis
-----------------

FORTRAN anaiptol nėra pasenusi ir nenaudojama kalba. Ji pakankamai gerai tinka įvairiems sudėtingiems matematiniams apskaičiavimams ir šioje srityje tebėra plačiai naudojama. Naujausios versijos (FORTRAN 2003 ir pan) turi dinaminį atminties paskirstymą, abstrakčius duomenų tipus, išimtis ir net objektinio programavimo galimybes. Yra sukurti specializuoti lygiagrečiajam programavimui skirti FORTRAN dialektai.

Voyager 1 bei Voyager 2 programinė įranga iš pradžių buvo parašyta FORTRAN 5, vėliau perrašyta FORTRAN 77. Dalis jos dabar perrašyta C.

Naujo FORTRAN dialekto pavyzdys
-------------------------------

```
 **program** cilindras
*!!! Programa cilindro plotui skaičiuoti*
 **implicit** none *! Šis sakinys nurodo, jog visi kintamieji turi būti deklaruoti*
 **integer** ierr
 **character** yn
 **real** spindulys,aukstis,plotas
 **real**, **parameter** :: pi = 3.14159
 ciklas: **do**
    *! Klausk vartotojo apie cilindro matmenis*
    **write** (*,*) 'Įveskite pagrindo spindulį ir cilindro aukštį.'
    **read** (*,*,iostat=ierr) spindulys,aukstis
    *! Jei duomenų perskaityti nepavyko, pakartoti ciklą.*
    **if** (ierr /= 0) then
       **write**(*,*) 'Klaidingi duomenys.'
       **cycle** ciklas
    **end if**
    *! Skaičiuojame plotą. \*\* žymi kėlimo laipsniu operaciją.*
    plotas = 2*pi*(spindulys**2 + spindulys*aukstis)
    *! Spausdiname cilindro matmenis (spindulys, aukstis)*
    *! ir apskaičiuotą plotą (plotas)*
    **write** (*,'(1x,a7,f6.2,5x,a7,f6.2,5x,a5,f6.2)') &
         'spindulys=',spindulys,'aukštis=',aukstis,'plotas=',plotas
    yn = ' '
    taip_ne_ciklas: **do**
       **write**(*,*) 'Skaičiuoti kitam cilindrui? t[n]'
       **read**(*,'(a1)') yn
       **if** (yn=='y' **.or.** yn=='Y') **exit** yn_loop
       **if** (yn=='n' **.or.** yn=='N' .or. yn==' ') **exit** ciklas
    **end do** taip_ne_ciklas
 **end do** ciklas
**end program** cilindras
```

Išnašos
-------

1. ↑  Wetherell, Etudes for Programmers, 1978
2. ↑  „Interstellar 8-Track: How Voyager's Vintage Tech Keeps Running". *WIRED*. Nuoroda tikrinta 2018-09-17.

Nuorodos
--------

* Fortran istorija anglų kalba