Fortran учебник
Начало работы с Fortran
Поиск…
замечания
Фортран - это язык, широко используемый в научном сообществе из-за его пригодности для численного расчета. Особенно привлекательной является его интуитивная запись в виде массива, которая упрощает запись быстрых векторизованных вычислений.
Несмотря на свой возраст, Fortran по-прежнему активно развивается с многочисленными реализациями, включая GNU, Intel, PGI и Cray.
Версии
Версия | Заметка | Релиз |
---|---|---|
ФОРТРАН 66 | Первая стандартизация ASA (теперь ANSI) | 1966-03-07 |
ФОРТРАН 77 | Фиксированная форма, историческая | 1978-04-15 |
Фортран 90 | Бесплатная форма, стандарт ISO, операции с массивом | 1991-06-15 |
Фортран 95 | Чистые и элементарные процедуры | 1997-06-15 |
Fortran 2003 | Объектно-ориентированное программирование | 2004-04-04 |
Fortran 2008 | Co-Массивы | 2010-09-10 |
Установка или настройка
Fortran - это язык, который может быть скомпилирован с использованием компиляторов, поставляемых многими поставщиками. Различные компиляторы доступны для разных аппаратных платформ и операционных систем. Некоторые компиляторы являются свободным программным обеспечением, некоторые могут использоваться бесплатно, а некоторые требуют покупки лицензии.
Наиболее распространенным свободным компилятором Fortran является GNU Fortran или gfortran. Исходный код доступен из GNU в составе GCC, сборника компиляторов GNU. Бинарные файлы для многих операционных систем доступны по адресу https://gcc.gnu.org/wiki/GFortranBinaries . Распределения Linux часто содержат gfortran в своем диспетчере пакетов.
Другие компиляторы доступны, например:
- EKOPath by PathScale
- LLVM (бэкэнд через DragonEgg)
- Oracle Developer Studio
В HPC-системах часто доступны специализированные компиляторы, доступные системному провайдеру, например, компиляторы IBM или Cray .
Все эти компиляторы поддерживают стандарт Fortran 95. Обзор состояния Fortran 2003 и статуса Fortran 2008 различными компиляторами предлагается Форумом ACM Fortran и доступен в Вики-версии Fortran.
Привет, мир
Любая программа Fortran должна включать end
качестве последнего оператора. Поэтому простейшая программа Fortran выглядит так:
end
Вот несколько примеров программ «привет, мир»:
print *, "Hello, world"
end
С помощью оператора write
:
write(*,*) "Hello, world"
end
Для ясности теперь принято использовать инструкцию program
для запуска программы и присвоения ей имени. Затем оператор end
может ссылаться на это имя, чтобы сделать его очевидным, о чем идет речь, и дать компилятору проверить правильность кода. Кроме того, все программы Fortran должны содержать implicit none
оператор. Таким образом, минимальная программа Fortran должна выглядеть следующим образом:
program hello
implicit none
write(*,*) 'Hello world!'
end program hello
Следующий логический шаг от этого момента - это увидеть результат приветственной мировой программы. В этом разделе показано, как добиться этого в среде Linux. Мы предполагаем, что у вас есть некоторые основные понятия команд оболочки , в основном вы знаете, как добраться до терминала оболочки. Мы также предполагаем, что вы уже настроили среду fortran
. Используя предпочтительный текстовый редактор (блокнот, блокнот ++, vi, vim, emacs, gedit, kate и т. Д.), Сохраните программу приветствия выше (скопируйте и вставьте) в файл с именем hello.f90
в вашем домашнем каталоге. hello.f90
- ваш исходный файл. Затем перейдите в командную строку и перейдите в каталог (домашний каталог?), Где вы сохранили исходный файл, затем введите следующую команду:
>gfortran -o hello hello.f90
Вы только что создали свою исполняемую программу hello world. В техническом плане вы просто скомпилировали свою программу. Чтобы запустить его, введите следующую команду:
>./hello
На вашем терминале оболочки вы должны увидеть следующую строку.
> Hello world!
Поздравляем, вы только что написали, скомпилировали и запустили программу Hello World.
Квадратное уравнение
Сегодня Fortran в основном используется для численного расчета. Этот очень простой пример иллюстрирует основную программную структуру для решения квадратичных уравнений:
program quadratic
!a comment
!should be present in every separate program unit
implicit none
real :: a, b, c
real :: discriminant
real :: x1, x2
print *, "Enter the quadratic equation coefficients a, b and c:"
read *, a, b, c
discriminant = b**2 - 4*a*c
if ( discriminant>0 ) then
x1 = ( -b + sqrt(discriminant)) / (2 * a)
x2 = ( -b - sqrt(discriminant)) / (2 * a)
print *, "Real roots:"
print *, x1, x2
! Comparison of floating point numbers for equality is often not recommended.
! Here, it serves the purpose of illustrating the "else if" construct.
else if ( discriminant==0 ) then
x1 = - b / (2 * a)
print *, "Real root:"
print *, x1
else
print *, "No real roots."
end if
end program quadratic
Нечувствительность к регистру
Прописные и строчные буквы алфавита эквивалентны в наборе символов Fortran. Другими словами, Fortran нечувствителен к регистру . Такое поведение контрастирует с чувствительными к регистру языками, такими как C ++ и многие другие.
Как следствие, переменные a
и A
являются a
и той же переменной. В принципе можно написать программу следующим образом
pROgrAm MYproGRaM
..
enD mYPrOgrAM
Это хороший программист, чтобы избежать таких уродливых выборов.