f2c 20090411
Версия реализации f2c языка программирования FORTRANПоследняя версия конвертера f2c.
Примеры:
Hello, World! - FORTRAN (530):
Этот пример написан в фиксированном формате (стиль FORTRAN 77); первые шесть символов каждой строки зарезервированы под служебную информацию — отметки о том, что строка является комментарием или продолжением предыдущей, метки и номера строк. Стандартный набор символов Fortran не содержит символов нижнего регистра, поэтому все программы пишутся в верхнем регистре. Исключением из этого правила являются символьные константы — они могут содержать любые символы, которые поддерживаются системой.
Первая строка дает этому фрагменту кода имя HELLO
и указывает на то, что он является основной программой. Имя программы подчиняется тем же правилам, что и любые имена идентификаторов, т.е. должно начинаться с буквы и содержать не более 6 символов.
Команда WRITE
реализует вывод на печать. В скобках передается список управляющих параметров, настраивающих вывод: UNIT
выбирает файл вывода (по умолчанию — консоль), FMT
— формат вывода. Звездочки означают параметры по умолчанию. Имена параметров передавать не обязательно, сокращенно эта же команда выглядела бы как WRITE (*, *) ...
.
В большинстве реализаций строковая константа может заключаться как в одинарные кавычки, так и в двойные.
! A simple Hello, World! program
PROGRAM HELLO
WRITE (UNIT=*, FMT=*) 'Hello, World!'
END
Факториал - FORTRAN (531):
Этот пример написан в фиксированном формате (стиль FORTRAN 77) и использует итеративное вычисление факториала.
Fortran позволяет пропускать объявления переменных; в таком случае он выводит их типы сам, но, в отличие от более поздних языков, не по контексту использования переменной, а по ее имени — если первая буква названия I..N, выбирается тип INTEGER
, иначе — REAL
. В данном случае обе переменные целые.
Цикл DO
в данном случае соответствует циклу FOR
более поздних языков: счетчик цикла N
последовательно пробегает все значения от 0 до 16. Тело цикла заканчивается на строке с меткой 1
, которая указана в заголовке цикла.
Команда PRINT
использует формат вывода по умолчанию, который варьируется в зависимости от используемого компилятора.
PROGRAM FACTOR
NF = 1
DO 1,N = 0,16
PRINT *, N, "! =", NF
1 NF = NF * (N + 1)
END
Числа Фибоначчи - FORTRAN (532):
Этот пример демонстрирует использование массивов в Fortran. Индексация элементов начинается с 1.
PROGRAM FIBONACCI
INTEGER FIB(20)
FIB(1) = 0
FIB(2) = 1
DO 1,N = 2,17
PRINT "(I3, A, $)", FIB(N), ", "
1 FIB(N + 1) = FIB(N) + FIB(N - 1)
PRINT *, "..."
END
CamelCase - FORTRAN (533):
Строки в Fortran имеют фиксированную длину, задаваемую при объявлении строки. Если длина фактического содержимого строки меньше, чем размер строки, ее остаток дополняется пробелами или “мусорными” символами. Кроме того, в Fortran нет символа “конца строки”, как в C. Из-за этого после посимвольного заполнения строки CC
, содержащей результат, остаток строки приходится заполнять пробелами вручную.
Проверка того, что очередной символ исходной строки является буквой, слишком длинна, чтобы поместиться в одну строку (все символы строки программы, начиная с 73-ей позиции, игнорируются), поэтому ее приходится разбивать на две строки и отмечать вторую как продолжение первой (любым символом в 6 позиции).
Операторы сравнения в FORTRAN 77 записываются как .LE.
, .GE.
и т.д. из-за того, что символы >
и <
не входят в набор символов языка; они были добавлены только в Fortran 90.
PROGRAM CAMELC
CHARACTER TEXT*30, CC*30
LOGICAL LSPACE
READ (*, '(A)') TEXT
NCC = 0
LSPACE = .TRUE.
DO 1, I = 1,LEN(TEXT)
NC = ICHAR(TEXT(I:I))
IF (NC .GE. 65 .AND. NC .LE. 90 .OR.
> NC .GE. 97 .AND. NC .LE. 122) THEN
IF (LSPACE) THEN
IF (NC .GE. 97 .AND. NC .LE. 122) THEN
NC = NC - 32
END IF
ELSE
IF (NC .GE. 65 .AND. NC .LE. 90) THEN
NC = NC + 32
END IF
END IF
NCC = NCC + 1
CC(NCC:NCC) = CHAR(NC)
LSPACE = .FALSE.
ELSE
LSPACE = .TRUE.
END IF
1 CONTINUE
DO 2, I = NCC + 1,LEN(CC)
2 CC(I:I) = " "
WRITE (*, *) CC
END
Комментарии
]]>blog comments powered by Disqus
]]>