Фортран

**Фортран** (***Fortran***) бол ерөнхий зорилготой програмчлалын хэл юм. Уг хэлийг 1954 онд АНУ-ын IBM (International Business Machines) компанид эрдэмтэн Жон Бэкусын (John Backus) удирдлага дор шинжлэх ухааны болон техникийн зориулалтаар зохиосон байна. Фортран гэдэг нь Фор буюу Формула-томьёо, тран буюу транслет-орчуулга гэсэн утгатай бөгөөд томьёо орчуулах систем гэсэн нэртэйгээр гарчээ.

## Түүх
1953 оны сүүлээр John Backus IBM компанийн захирлууддаа зориулж IBM 704 оврын компьютерийг програмчлахдаа угсрах хэлний илүү ашигтай хувилбарыг санал болгосон. Backus-ийн түүхэн FORTRAN баг нь програмч Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Lois Haibt болон David Sayre нараас бүрдсэн. 1956 оны 10-р сард FORTRAN-ийн анхны гарын авлага 1956 оны 4-р сард анхны FORTRAN хөрвүүлэгчтэйгээр гарч ирсэн. John Backus 1979 онд *Think* сэтгүүлд өгсөн ярилцлагынхаа үеэр "Миний ажлын ихэнх нь залхуу байсан болохоор гарсан би програм бичих дургүй байсан тул би IBM 701 дээр ажиллаж байхдаа код бичихэд хялбар болгох програмчлалын систем дээр ажиллаж эхэлсэн."

Фортран хэлний элементүүд:
*Өгөгдөл*
Фортран хэлэнд өгөгдлийг дараах байдлаар ангилдаг. Үүнд:
Өгөгдлийн хэлбэрээр:
*Хувьсагч (Variable)
*Тогтмол (Constant)
Өгөгдлийн үндсэн төрлөөр:
*integer – бүхэл тоон
*real – бодит тоон
*complex – комплекс тоон
*logical - логик
*character - тэмдэгт (үсгэн).
Өгөгдлийн бүтцээр:
*энгийн
*нийлмэл

## Фортран
IBM 704-ийн FORTRAN-ийн анхны хувилбар нь 32 мэдэгдлийг агуулж байсан. 

Үүнд:

***DIMENSION** ба **EQUIVALENCE** мэдэгдэл
***IF** үл хамаарах зүйлсийг шалгах мэдэгдэл ба **IF** мэдэрдэг унтраалга ба мэдэрдэг гэрлийг удирдахтай холбоотой мэдэгдэл
***DO** давталт
*Форматлагдсан I / O: **FORMAT, READ, READ INPUT TAPE, WRITE, WRITE OUTPUT TAPE, PRINT, PUNCH**
*Форматлагдаагүй I / O: **READ TAPE, READ DRUM, WRITE TAPE, WRITE DRUM**
*Бусад I/O: **END FILE, REWIND, BACKSPACE**
***PAUSE, STOP, CONTINUE**

FORTRAN автомат кодлох систем:

Кодийн үндсэн нэгж нь үндсэн блок юм; үндсэн блок нь нэг цэг болон нэг гарцтай програмын сунгалт юм. Эхний FORTRAN хөрвүүлэгч нь алдааг илрүүлж, консол дээр алдаатай кодыг гарган програмыг зогсоох замаар алдааг мэдээллсэн. Энэ код нь програмчинд харагддаг ба алдааны мэдээллийг хүснэгтэнд харуулж, тэдгээрийн талаар товч тайлбараар хангадаг байна.

Диск файлууд, текст засварлагчууд болон терминалууд гархаас өмнө програмууд нь кэйупанч дээр 80-баганаар дарагдсан картуудад гардаг байв. Картуудыг карт уншигчид хийж компайлддаг байв. Картанд зориулсан кодууд нь жижиг үсэг, тусгай тэмдэгтүүдээр бичигдэхгүй байсан ба FORTRAN-д ашигладаг дахин зорилтот тусгай тэмдэгтүүдийг зөв хэвлэх IBM 026 кэйупанч-ийн тусгай хувилбарууд санал болгосон. 

## Фортран II
IBM- ийн FORTRAN II 1958 онд гарсан. Үндсэн сайжруулалт нь процедурын програмчлалийг дэмжих байв. Энгийн мэдэгдэл нь сабротинийг нийтлэг хувьсагчид хандах боломжийг олгосон. Зургаан шинэ мэдэгдлийг нэмэгдсэн:

* SUBROUTINE, FUNCTION, END 
* CALL, RETURN 
* COMMON

FORTRAN-ийн анхдагч хөрвүүлэгчид нь сабротинуудад ямар ч рекурс явуулдаггүй байсан. Компьютерын хуучин архитектурууд нь стекийн ойлголтгүй байхыг дэмждэг байсан ба шууд сабротиний дуудлагыг шууд дэмжиж байсан бол буцах байршил нь ихэвчлэн сабротин кодтой ойролцоо нэг газарт хадгалагддаг бөгөөд тусгай машин бүртгэлтэй байдаг ба энэ нь стакийг програм хангамж болон буцах хаяг нь дуудлага хийгдсэнээс өмнө стак дээр хадгалагдаж, дуудлага буцаж ирсний дараа сэргээгддэг. FORTRAN 77-д заагдаагүй боловч олон компайларууд нь F77-г сонголтоор дэмждэг бөгөөд рекурсийн үндсэн фрэйммүүд нь анхдагчаар хийгдсэн байдаг. Энэ нь Fortran 90-д шинэ түлхүүр үг рекурсивээр стандарт болсон.

Энгийн Фортран II Heron-ий томъёо:

```fortranfixed
C AREA OF A TRIANGLE WITH A STANDARD SQUARE ROOT FUNCTION
C INPUT - TAPE READER UNIT 5, INTEGER INPUT
C OUTPUT - LINE PRINTER UNIT 6, REAL OUTPUT
C INPUT ERROR DISPLAY ERROR OUTPUT CODE 1 IN JOB CONTROL LISTING
      READ INPUT TAPE 5, 501, IA, IB, IC
  501 FORMAT (3I5)
C IA, IB, AND IC MAY NOT BE NEGATIVE OR ZERO
C FURTHERMORE, THE SUM OF TWO SIDES OF A TRIANGLE
C MUST BE GREATER THAN THE THIRD SIDE, SO WE CHECK FOR THAT, TOO
      IF (IA) 777, 777, 701
  701 IF (IB) 777, 777, 702
  702 IF (IC) 777, 777, 703
  703 IF (IA+IB-IC) 777, 777, 704
  704 IF (IA+IC-IB) 777, 777, 705
  705 IF (IB+IC-IA) 777, 777, 799
  777 STOP 1
C USING HERON'S FORMULA WE CALCULATE THE
C AREA OF THE TRIANGLE
  799 S = FLOATF (IA + IB + IC) / 2.0
      AREA = SQRTF( S * (S - FLOATF(IA)) * (S - FLOATF(IB)) *
     +     (S - FLOATF(IC)))
      WRITE OUTPUT TAPE 6, 601, IA, IB, IC, AREA
  601 FORMAT (4H A= ,I5,5H  B= ,I5,5H  C= ,I5,8H  AREA= ,F10.2,
     +        13H SQUARE UNITS)
      STOP
      END
```

## Фортран III 
IBM нь 1958 онд FORTRAN III загварыг боловсруулсан. Гэсэн хэдий ч энэ хувилбар нь бүтээгдэхүүн хувиараа гараагүй байв. 704 FORTRAN болон FORTRAN II загвартай адил FORTRAN III машинаас хамааралтай онцлог агуулснаар үүн дээр бичсэн код нь машинаас машин хооронд дамжихааргүй болсон. Бусад вендор орсон FORTRAN-ийн эхний хувилбарууд нь адил сул талуудтай байсан.

## Фортран IV 
Хэрэглэгчийн шаардлагын үр дүнд IBM 1961 оноос эхлээд FORTRAN IV-ийг машинаас хамааралтай функцүүдийг хассан бөгөөд логик өгөгдлийн төрөл, логик бүүлийн илэрхийллүүд, логик тэмдэглэгээ гэх мэт арифметик IF мэдэгдэл гэх мэт шинэ онцлогууд нэмсэн. FORTRAN IV нь эхлээд 1962 онд IBM 7030 компьютерт зориулж дараа нь IBM 7090, IBM 7094, 1966 онд IBM 1401-т зориулж гаргажээ. 

1965 он гэхэд FORTRAN IV нь Америкийн Стандартын Ассоциацийн X3.4.3 FORTRAN Ажлын Хэсгээс боловсруулсан стандартад нийцсэн байх ёстой байв.  Энэ үеэр FORTRAN IV нь Ватерлүү Их Сургуулийн WATFOR болон WATFIV-тай адил их сургуулийн сургалтын чухал хэрэгсэл болж хөгжсөн  байв.

## Фортран 66 
FORTRAN-ийн эхэн түүхэнд хамгийн их ач холбогдолтой хөгжил бол Америкийн Стандарт Форрандыг хөгжүүлэх BEMA (Бизнесийн Тоног Төхөөрөмжийн Үйлдвэрлэгчийн Холбоо) -аас ивээн тэтгэсэн хороо байгуулах Америкийн Стандарт Ассоциациас гаргасан шийдвэр байж магадгүй юм. 1966 оны 3-р сард батлагдсаны үр дүнд гарсан хоёр стандарт нь Фортран , болон Үндсэн фортран гэсэн хоёр хэл юм. Эхний стандартаар тогтоосон FORTRAN нь FORTRAN 66 гэж нэрлэгддэг болсон. FORTRAN 66 нь FORTRAN-ийн салбарын анхны стандарт болсон.  

## Фортран 77 
FORTRAN 66 стандартын хувилбарыг гаргасны дараа компайлар вендор нь Фортранд хэд хэдэн өргөтгөлүүдийг нэвтрүүлсэн. 1977 онд шинэчилсэн стандартын эцэст 1978 оны дөрөвдүгээр сард шинэ FORTRAN стандартыг албан ёсоор батлуулжээ. FORTRAN 77 хэмээх шинэ стандартыг албан ёсоор X3.9-1978 -аа хандивлсан ба шинэ стандарт нь олон тооны онцлог шинж чанаруудаар FORTRAN 66-ийн дутагдалыг нөхөн.

* **DO** давталтын өргөтгөл, параметрийн илэрхийллүүд
* I / O чадавхийг сайжруулах **OPEN, CLOSE,** болон **INQUIRE** мэдэгдлүүд
* Шууд хандах файл I / O
* параметр тодорхойлолтыг тогтмолжуулахыг зааж өгнө
* Дотоод функцүүдийн ерөнхий нэр
* Жагсаалтыг индексүүдээр нь хязгаарлах

Мэдээллийн Корпорацийн компьютерууд нь FORTRAN 77 загварын өөр нэг хувилбар болох FORTRAN (MNF) гэж бий энэ нь ялангуяа оюутны хэрэглээнд зориулагдсан ба гаралтын бүтэц, түгээмэл хэрэглээ болон өгөгдөл мэдээллүүд, компайлах кодын түвшний оновчлол, нарийвчилсан алдааны жагсаалт, анхааруулах мессеж, алдаа харах үйлдлүүдтэй. Дараахь шинж чанарууд эцэст нь Fortran 90 стандартад багтах болно:

* **DO WHILE** ба **END DO** мэдэгдлүүд
* **INCLUDE** мэдэгдэл
* **IMPLICIT NONE** ба **IMPLICIT** мэдэгдлийн хэсэг

## Фортран 90 
1991 онд ISO / IEC 1539: 1991 стандартаар FORTRAN 77-ийн залгамжлагч Fortran 90 нь албан ёсоор гарсан. албан ёсны нэрийг  FORTRAN-аас Fortran-руу солихоос гадна 1978 оны стандартаас хойш гарсан програмчлалын практикт гарсан томоохон өөрчлөлтүүдийг тусгасан олон шинэ боломжуудыг нэмж оруулсан:

* Чөлөөт хэлбэрийн хэл ба Фортранын  жижиг үсгүүдтэй түлхүүр үгнүүд
* 31 хүртэл тэмдэгтийг танигч (Өмнөх стандартад зөвхөн зургаан тэмдэгт байсан).
* Код нь дундах сэтгэгдэл үг
* Өгөгдлийг хамтад нь бүлэглэн модуль үүсгээд, тэдгээрийг бусад програмын нэгжүүдэд ашиглах боломжтой болгох
* Өгөгдлийн төрөл болон хувьсагчдын бусад шинж чанарыг тодорхойлохын тулд өгөгдлийн шинэ төрлийн мэдэгдлийг зарлах синтакс

**Хуучралт болон хасалт**

Өмнөх хувилбараас ялгаатай нь Fortran 90 ямар ч зүйлийг хассаагүй. Гэвч зарим үйлдлүүдийг "хуучин" гэж тодорхойлсон бөгөөд ирээдүйн стандартад хасахаар төлөвлөж байна. Өмнөх загваруудын бүх үйлдлүүд нь шинэ Фортран 95- аар хийгдэнэ. Зарим нь хуучин програмуудыг хөрвүүлэхэд хялбар байдаг боловч эцэстээ устгагдах байх.

"Hello world" жишээ

```fortran
program helloworld
     print *, "Hello world!"
end program helloworld
```

## Фортран 95 
Форран 95 нь албан ёсоор ISO / IEC 1539-1: 1997 хэмээн гарсан бөгөөд энэ нь Fortran 90 стандартын зарим асуудлыг шийдэх талаар чиглэсэн. Гэсэн хэдий ч, Fortran 95 нь өндөр гүйцэтгэлтэй Fortran-ийн тодорхойлолтоос хэд хэдэн өргөтгөлийг нэмсэн:
* Үүссэн төрөлийн бүрэлдэхүүн хэсгүүдийн анхны утга, үүнд заагчийг эхлүүлэх
* Өгөгдлийн объектод зориулсан эхлүүлэх илэрхийлэлийг ашиглах боломжийг өргөтгөсөн
*DO мэдэгдэл REAL ба DOUBLE PRECISION индексийн хувьсагчийн хувилбарыг ашиглах
*Блокын гаднаас END IF мэдэгдэлдүү салбарлах 
*PAUSE мэдэгдэл
*H дескриптор засагч

Fortran 95-д чухал нэмэлт нь ОУСБ-ын техникийн тайлангийн(ISO technical report) TR-15581: Өгөгдлийн сайжруулсан төхөөрөмжийн төрөл юм. Энэ тодорхойлолт нь ALLOMATABLE массивыг сайжруулсан Fortran 2003-ийн бүрэн дүүрэн Форраны хөрвүүлэгчийг ашиглахаас өмнө тодорхойлсон. Энэ тодорхойлолт нь ALLOMATABLE функцыг сайжруулсан ба Fortran 2003-ийн бүрэн дүүрэн Фортраны компайлэрийг ашиглах юм.

"Base language" -ээс гадна Fortran 95 хэл нь хоёр нэмэлт модулийг агуулдаг:

* Олон төрлийн урт тэмдэгтийн стринг (ISO / IEC 1539-2: 2000)
* Нөхцлийн эмхэтгэл (ISO / IEC 1539-3: 1998)

## Фортран 2003 
Fortran 2003, албан ёсоор ISO / IEC 1539-1: 2004 гэж гарсан ба энэ нь олон шинэ боломжуудыг нэвтрүүлсэн томоохон засвар юм. Fortran 2003-ийн шинэ функцуудыг олон нийтэд танилцуулсан нь Fortran Working Group (ISO / IEC JTC1 / SC22 / WG5) албан ёсны вэбсайт дээр байгаа.

энэ загварын гол сайжруулалтууд гэвэл:

* Төрөлжүүлсэн хэлбэрийн сайжруулалт: параметржүүлсэн олшруулсан төрлүүд, хүртээмжийн хяналт сайжирч, бүтэц байгуулагчдын сайжруулалт, эцсийн боловсруулагчид
* Объект хандалтат програмчлалын дэмжлэг: төрөл өргөтгөл, өв залгамжлал, полиморфизм, динамик төрлийн хуваарилалт, төрөл хэлбэрийн процедур, хийсвэр мэдээллийн төрлийг бүрэн хангах
* Өгөгдлийн боловсруулалтын сайжруулалт: хуваарилагдах бүрэлдэхүүн хэсэг, хойшлуулсан төрлийн параметрүүд, VOLATILE шинж чанар, массив байгуулагч дахь төрөл хэлбэрийн тодорхойлолтын тодорхойлолт, заагчийн өргөтгөл, өргөтгөсөн эхлүүлэх илэрхийлэл, дотоод үйл явцын сайжруулалт
* Оролт / гаралтын сайжруулалт: асинхрон дамжуулалт, урсгал нэвтрэх, төрөлжсөн төрлүүдийн хэрэглэгчийн тодорхойлсон шилжүүлгийн үйл ажиллагаа, формат хөрвүүлэгчийн үед эргэлт хийх хэрэглэгчийн тодорхойлсон хяналт, давтагдсан нэгжийн тогтмол нэр, FLUSH мэдэгдэл, түлхүүр үгсийн зохицуулалт, алдааны мэдэгдлийн хандалт
* IEEE хөвөгч цэг арифметик болон хөвөгч цэгээс гадна дэмжлэг (TR 15580)
* C програмчлалын хэлтэй харилцан ажиллах боломж
* Олон улсын хэрэглээнд дэмжлэг үзүүлэх: ISO 10646-ийн 4 байт тэмдэгт, аравтын бутархай сонголтоор тоон хэлбэрт оролт / гаралтын сонголт

Fortran 2003 нь ОУСБ-ын техникийн тайлан TR-19767: Фортран дахь сайжруулсан модулийн тоног төхөөрөмж байсан. Энэ тайланд Modular-2 модулиудтай төстэй Fortran модулиудыг бий болгох дэд модулиудыг өгсөн. Тэд Адад хувийн хүүхдийн дэд салбартай төстэй. Энэ нь модулийг тодорхойлж, хэрэгжүүлэхийг тусдаа програмын нэгжээр илэрхийлэх боломжийг олгодог бөгөөд энэ нь томоохон номын сангуудыг сайжруулж, тодорхой төрлийн интерфэйсийг гаргах, нууцлалыг хадгалах боломжийг олгодог.

* 

Ангилал:Программчлалын хэл  Ангилал:Үйлдлийн систем