F
Диалект языка программирования FORTRANF (не путать с F#) — тщательно отобранное подмножество Fortran 95. Создатели языка рекомендуют использовать его для обучения программированию по двум причинам:
- FORTRAN широко используется вне образовательных учреждений, и его знания являются полезным профессиональным навыком.
- Другие популярные языки сложнее для начинающих программистов.
Кроме того, этот язык может использоваться программистами FORTRAN 77 для перехода к новым возможностям Fortran 95.
F сохраняет современные возможности FORTRAN, например, модульность и абстракцию данных, но отбрасывает ряд других, сложных для понимания и отладки. Программы на F могут вызывать программы на FORTRAN 77, что позволяет использовать уже существующие библиотеки при разработке новых программ.
Кроме того, существующие реализации F имеют некоторые дополнительные особенности: возможность доступа к параметрам командной строки и переменным среды окружения и выполнения команд операционной системы, а также некоторые возможности Fortran 2003.
Отличия от Fortran 95
- Любая программа на F также будет программой на Fortran 95, но не наоборот.
- F не требует фиксированного формата программы (фактически, некоторые реализации, в т.ч. G95, запрещают его использовать).
-
В F отсутствуют: неявный вывод типов, метки (за одним исключением), блочные данные, внешние процедуры, цикл
do ... while
, однострочныеif
,forall
иwhile
и ряд других элементов. - Все типы в программе должны быть объявлены в явном виде, и все атрибуты — явно заданы в объявлении.
- Опциональные ключевые слова становятся обязательными.
-
Переменные циклов
do
иforall
должны быть локальными. -
Модули бывают только
public
иprivate
. - Атрибуты доступа всех переменных, типов и процедур модуля должны быть объявлены в явном виде.
- Функции не могут иметь побочных эффектов, кроме операций ввода-вывода.
Ссылки:
Примеры:
Hello, World!:
Пример для версий Intel Visual Fortran 11.1, g95 0.93, gfortran 4.5.0Этот пример написан в свободном формате, поддерживаемом Fortran 90 и последующими стандартами, а также диалектом F.
! Fortran 90-style comment
program HelloWorld
print *, "Hello, World!"
end program HelloWorld
Факториал:
Пример для версий Intel Visual Fortran 11.1, g95 0.93, gfortran 4.5.0Используется итеративное определение факториала и свободный формат программы. Спецификации формата I и A используются для вывода чисел в десятичном формате и строк, соответственно. При вычислении факториалов 13-16 возникает арифметическое переполнение, не вызывающее ошибку, поэтому выводятся неправильные значения:
13! = 1932053504
14! = 1278945280
15! = 2004310016
16! = 2004189184
program Factorial
integer :: f,n
f = 1
n = 0
do
print "(I2, A, I10)", n, "! = ", f
n = n + 1
f = f * n
if (n == 17) then
exit
end if
end do
end program Factorial
Числа Фибоначчи:
Пример для версий Intel Visual Fortran 11.1, g95 0.93, gfortran 4.5.0Используется итеративное определение чисел Фибоначчи. Самое сложное в этом примере — вывод вычисленных значений в нужном формате, в одну строку и без лишних пробелов. Спецификация формата (I3, A, $)
означает, что вначале выводится целое число в десятичном формате, шириной ровно три символа, затем выводится строка, и наконец, $
подавляет перевод строки, используемый командой print
по умолчанию, так что все выводится в одну строку. Отметим, что в диалекте F спецификатор формата $
не является стандартным; программа работает, но при компиляции выводит предупреждение об этом.
program Fibonacci
integer :: f1,f2,f3,i
i = 1
f1 = 0
f2 = 1
do
f3 = f2 + f1
f1 = f2
f2 = f3
i = i + 1
if (f1 < 10) then
print "(I1, A, $)", f1, ", "
elseif (f1 < 100) then
print "(I2, A, $)", f1, ", "
else
print "(I3, A, $)", f1, ", "
end if
if (i == 17) then
exit
end if
end do
print *, "..."
end program Fibonacci
Комментарии
]]>blog comments powered by Disqus
]]>