gfortran
Реализация языка программирования FORTRANgfortran — название проекта GNU Fortran, разрабатывающий бесплатный компилятор Fortran 95/2003 для GCC (GNU Compiler Collection). Разработчики используют открытую разработку, для привлечения большой группы разработчиков и гарантировать его работу на множестве архитектур и в различных средах. Необходимо отметить, что gfortran не g95, а отдельный проект, и проектируется как альтернатива для unix команды f95.
gfortran находится в ранней стадии разработки и в состоянии генерировать код для большинства конструкций и выражений языка Fortran, но еще многое не реализовано.
По завершению разработки gfortran планируется, что он будет обладать всеми возможностями приличного компилятора:
- обработкой программ написанных на Fortran 77, Fortran 90 или Fortran 95
- компилированием программ в эффективный машинный код
- выводом сообщений о причинах, почему компилятор не смог создать исполняемый файл, ведь при использовании Fortran очень легко допустить ошибку. Также компилятор будет выявлять сомнительные языковые конструкции
- поддержкой вывода дополнительной информации о трансляции в машинный код, что может помочь в выявлении ошибок как в программах, так и в компиляторе непосредственно
- поддержкой отладочной информации
- рядом других особенностей
gfortran состоит из следующих компонентов:
- команды gcc, которая также понимает и обрабатывает исходный текст Fortran. Команда gcc — программа для всех языков из GCC (GNU Compiler Collection); при помощи gcc можно компилировать исходный текст любого языка, который поддерживается ей
- gfortran — команда, которую можно установить также как и команду f95. Различие между gcc и gfortran в том, что вторая автоматически связывает нужные библиотеки с программой
- библиотек времени исполнения. Содержат машинный код, который обеспечивает возможности языка Fortran
- непосредственно компилятор Fortran (f951). gfortran — синтаксический анализатор и генератор приложений, связанный с GCC, а f951 преобразует исходный код к ассемблерному
Ссылки:
Примеры:
Hello, World!:
Пример для версий Intel Visual Fortran 11.1, gfortran 4.5.0program HelloWorld
print *, 'Hello, World!'
end program HelloWorld
Факториал:
Пример для версий Intel Visual Fortran 11.1, 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, gfortran 4.5.0Используется итеративное определение чисел Фибоначчи. Самое сложное в этом примере — вывод вычисленных значений в нужном формате, в одну строку и без лишних пробелов. Спецификация формата (I3, A, $) означает, что вначале выводится целое число в десятичном формате, шириной ровно три символа, затем выводится строка, и наконец, $ подавляет перевод строки, используемый командой print по умолчанию, так что все выводится в одну строку.
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
]]>