Разнообразие от езици за програмиране
Здравейте! Днес, както ви обещах в първия брой, ще говоря за Fortran.
Както знаете, това е първият "истински" език за програмиране. Името Fortran е съкращение отFOR mulaTRAN slator, т.е. преводач на формули. Fortran се използва широко предимно за научни и инженерни изчисления. Едно от предимствата на съвременния Fortran е голям брой програми и библиотеки от подпрограми, написани в него. Съвременният Fortran (Fortran 95 и Fortran 2003) е придобил характеристиките, необходими за ефективно програмиране за нови компютърни архитектури; ви позволява да прилагате съвременни технологии за програмиране, по-специално OOP.
Fortran е силно стандартизиран език, поради което е лесно преносим към различни платформи. Има няколко международни езикови стандарта:
- FORTRAN IV (известен още катоFORTRAN 66 ) (1966)
- FORTRAN 77 (1978) Много подобрения: низов тип данни и функции за обработката им, блокови IF изрази, ELSE IF, ELSE, END IF, INCLUDE израз за включване на програмен фрагмент и т.н.
- Fortran 90 (1991) Основно преразглеждане на езиковия стандарт. Въведе безплатен формат за писане на код. Добавени са допълнителни описания за IMPLICIT NONE, TYPE, ALLOCATABLE, POINTER, TARGET, NAMELIST; контролни структури DO … END DO, DO WHILE, CYCLE, SELECT CASE, WHERE; работа с динамична памет (РАЗПРЕДЕЛЯНЕ, ОТМЕНЯНЕ, НУЛИРАНЕ); софтуерни компоненти МОДУЛ, ЧАСТЕН, ПУБЛИЧЕН, СЪДЪРЖА, ИНТЕРФЕЙС, ИЗПОЛЗВАНЕ, НАМЕРЕНИЕ. Има нови вградени функции, предимно за работа с масиви. ООП елементи се появиха в езика. Беше обявен отделен списък с остарели езикови функции, които ще бъдат премахнати в бъдеще.
- Fortran 95 (1997) Корекцияпредишен стандарт.
- Fortran 2003 (2004) По-нататъшно развитие на поддръжката на ООП в езика. Взаимодействие с операционната система.
GNU Free Software Foundation издава компилатора с отворен код g77 Fortran 77, който е достъпен за почти всяка платформа и е напълно съвместим с GCC, но не поддържа всички езикови конструкции на съвременните стандарти Fortran. Същоима проект g95 за създаване на компилатор Fortran-95, базиран на GCC.
Ето защо стандартът Fortran, започвайки с Fortran 90, в допълнение към фиксирания формат на изходния текст има безплатен формат, който не регулира позицията на реда, а също така ви позволява да пишете повече от един оператор на ред. Въвеждането на безплатния формат направи възможно създаването на код, който е толкова четим и ясен, колкото кодът, създаден с помощта на други модерни езици за програмиране като C или Java.
Един вид "визитна картичка" на стария Fortran е огромен брой етикети, които се използват както в операторите за безусловен скок GOTO, така и в операторите за цикъл и в операторите за описание на вход / изход във формат FORMAT. Големият брой етикети и оператори GOTO често правят Fortran програмите трудни за разбиране.
Именно този негативен опит се превърна в причината, поради която в редица съвременни езици за програмиране (например Java) изобщо няма етикети и свързани безусловни оператори за прескачане.
Съвременният Fortran обаче се отърва от излишъка от етикети, като въведе оператори като DO ... END DO, DO WHILE, SELECT CASE
Също така положителните характеристики на съвременния Fortran включват голям брой вградени операции с масиви и гъвкава поддръжка за масиви с необичайно индексиране. Пример:
real,dimension(. ) :: V . разпределяне(V(-2:2,0:10))! Разпределете памет за масив, чиито индекси могат ! промяна от -2 на 2 (първи индекс) ! и от 0 до 10 - вторият . V(2,2:3)=V(-1:0,1) ! Завъртете част от масив write(*,*)V(1,:) ! Отпечатайте всички елементи от масив V, чийто първи индекс е 1. deallocate(V) Пример на програма
Програмата "Здравей, свят!"
Фиксиран формат (интервалите в позиции от 1 до 6 на реда са маркирани с "ˆ"): ^^^^^^PROGRAM hello ^^^^^^PRINT*, 'Hello, World!' ^^^^^^END Свободен формат: program hello print *, "Hello, World!" край
Операторът PROGRAM не е задължителен. Строго погледнато, единственият задължителен израз в програмата на Fortran е изразът END. Изборът на главни или малки букви за писане на изрази на програмата е произволен. От гледна точка на съвременните езикови стандарти Fortran, много главни и много малки букви са еднакви при писане на езикови оператори.
Примерът демонстрира използването на модули и външни функции.
Функцията CALC_AVERAGE се съдържа в отделен файл и зависи от модула ARRAY_CALCULATOR, който е деклариран там.
! Файл: main.f90 ! Тази програма изчислява средната стойност на 5 числа PROGRAM MAIN USE ARRAY_CALCULATOR REAL, DIMENSION(5) :: A = 0 REAL :: AVERAGE PRINT *, 'Въведете 5 числа: ' READ (*,'(F10.3)') A AVERAGE = CALC_AVERAGE(A) PRINT * , 'Ari средно от 5 числа: ', СРЕДНО КРАЙ НА ПРОГРАМАТА ОСНОВНА
! Файл: array_calc.f90. ! Модулът съдържа различни изчисления върху масиви. MODULE ARRAY_CALCULATOR INTERFACE FUNCTION CALC_AVERAGE(D) REAL :: CALC_AVERAGE REAL, INTENT(IN) :: D(:) END FUNCTION CALC_AVERAGE END INTERFACE ! други подпрограмни интерфейси. КРАЙЕН МОДУЛ ARRAY_CALCULATOR
По-долу е даден списък на декларираната функция, извикана от основната програма
! Файл: calc_aver.f90. ! Външна функция, която връща средноаритметичната стойност на стойностите на масива. FUNCTION CALC_AVERAGE(D) REAL :: CALC_AVERAGE REAL, INTENT(IN) :: D(:) CALC_AVERAGE = SUM(D) / UBOUND(D, DIM = 1) END FUNCTION CALC_AVERAGE
Файлове, съдържащигорните редове могат да бъдат компилирани отделно и след това свързани един към друг с помощта на следните команди: ifort -c array_calc.f90 ifort -c calc_aver.f90 ifort -c main.f90 ifort -o calc main.o array_calc.o calc_aver.o В този набор от команди: Опцията -c предотвратява компилирането и оставя .o файлове. Първата команда създава файловете array_calculator.mod и array_calc.o (името в оператора MODULE указва името на файла на модула array_calculator.mod). Файлът на модула се записва в текущата директория. Втората команда създава файла calc_aver.o. Третата команда създава файл main.o и използва файла на модула array_calculator.mod. Последната команда събира всички обектни файлове в изпълним файл, наречен calc. За свързване ifort се използва вместо командата ld.
Редът, в който са дадени файловете, е важен В тази ifort команда: Компилирайте array_calc.f90, който съдържа описанието на модула, и създайте негов обектен файл и файл array_calculator.mod. Компилиране на calc_aver.f90, който съдържа външната функция CALC_AVERAGE. Компилиране на main.f90 (основна/основна програма). Изявлението USE се отнася до файла array_calculator.mod. Използвайте ld, за да създадете основната програма и всички обектни файлове в изпълним файл с име calc. Стартиране на програмата Ако е указан пътят до директорията, съдържаща програмата calc, за да я изпълните, просто въведете нейното име: calc Когато се изпълни, операторите PRINT и READ от главната програма ще доведат до следния диалог между потребителя и програмата:
Въведете 5 числа: 55.5 4.5 3.9 9.0 5.6 Средно аритметично от 5 числа: 15.70000