# Fortran

Appeared in:
1957
Influenced:
Paradigm:
Typing discipline:
File extensions:
.f, .for
Versions and implementations (Collapse all | Expand all):
Programming language

Fortran (name derived from “Formula Translating System”) is a high-level general-purpose programming language.

## Examples:

### Hello, World!:

Example for versions Intel Visual Fortran 11.1, gfortran 4.5.0
``````program HelloWorld

print *, 'Hello, World!'

end program HelloWorld
``````

### Factorial:

Example for versions Intel Visual Fortran 11.1, gfortran 4.5.0

This example uses iterative factorial definition. Format specifiers I and A are used for printing integers and strings, respectively. Trying to calculate 13! produces an arithmetic overflow error, so last lines of program output look like this:

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
``````

### Fibonacci numbers:

Example for versions Intel Visual Fortran 11.1, gfortran 4.5.0

This example uses iterative definition of Fibonacci numbers. The tricky part is printing the calculated values in one line, without leading or trailing spaces. Format specifier `(I3, A, \$)` means that first an integer is printed using exactly 3 positions, followed by a string. The final \$ suppresses trailing carriage return, used by default, so that everything is printed in one line.

``````    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
``````

### Quadratic equation:

Example for versions gfortran 4.5.0

This example uses built-in `complex` data type.

``````program Quadratic
integer a, b, c
real d, p1, p2
complex cp2

read (*, *) a
if (a.eq.0) then
write (*, *) "Not a quadratic equation"
stop
end if
read (*, *) b
read (*, *) c
d = b * b - 4 * a * c
p1 = - b / 2.0 / a
if (abs(d) < 1.0e-9) then
write (*, "(A, F8.3)") "x = ", p1
elseif (d > 0) then
p2 = sqrt(d) / 2.0 / a
write (*, "(2(A, F8.3))") "x1 = ", p1 + p2, char(13)//char(10)//"x2 = ", p1 - p2
else
cp2 = sqrt(cmplx(d)) / 2.0 / a
write (*, "(2(A, F8.3, F8.3), A)") "x1 = (", p1 + cp2, ")"//char(13)//char(10)//"x2 = (", p1 - cp2, ")"
end if
end
``````

## Comments

]]>

blog comments powered by Disqus

]]>

Top 10 users: