3 заметки с тегом

фортран

Игра «Ровно в полдень»

Как я писал вчера, по не совсем ясной причине мне захотелось посмотреть что из себя представляет «Фортран» — язык программирования, придуманный ещё в 50-е. Как по мне, нет лучше способа познакомиться с языком, чем попробовать на нём что-то написать.

Крупное писать не хотелось, из мелочи ничего в голову не пришло, поэтому пошёл по лёгкому пути — портировал небольшую текстовую игру «HIGH NOON» («High noon» — очень известный в своё время фильм-вестерн, вышедший в 1952 году, в русском переводе называется «Ровно полдень»).

Игра написана неким Крисом Гейло, учеником средней школы Сайассет на Лонг-Айленде в начале 1970 года на каком-то раннем диалекте «Бейсика». Её уже набранные кем-то исходники вместе со сканами лежат на «Гитхабе».

Часть оригинального листинга игры «Ровно в полдень»

Игре уже около полувека и сейчас она, разумеется, кажется крайне незамысловатой. Дело происходит на Диком Западе, вы стоите на ста шагах от Чёрного Барта, который вызвал вас на перестрелку. На каждом шаге игрок может продвинуться вперёд, отступить, прыгнуть в укрытие, сдаться или выстретить. Чем ближе удасться подобраться к оппоненту, тем выше точность выстрела, причём и игрока, и его виртуального противника.

На портирование ушло около часа (на результат можно полюбоваться в моём репозитории), больше всего времени пришлось потратить на написание функции, которая переводит числа в строки (если ею не пользоваться, а просто выводить числа как есть, «Фортран» очень неуместно форматирует их пробелами).

Ещё никак не мог понять в чём смысл части оригинального листинга с 460 по 520 строки, сначала мне показалось, что он просто не дописан:

460 PRINT "WHAT IS YOUR LUCKY NUMBER FOR TODAY";
470 INPUT A
480 A = 1E4 * ABS(SIN(A))
490 A = (A - INT(A)) * 1000
500 FOR I = 1 TO A
510 B = RND(0)
520 NEXT I

У игрока спрашивается какое сегодня его счастливое число, потом делается некое вычисление и по результату прокручивается цикл с RND(0) внутри. В дальнейшем полученные в этом куске кода значения ни на что как будто бы не влияют.

Это место из своей портированной версии я просто выкинул, но позже мне пришло в голову объяснение. По всей видимости, это попытка инициализировать генератор псевдослучайных чисел. Видимо в «Бейсике», на котором писал автор, не было другого хорошего способа это сделать.

 2 комментария    345   1 мес   программирование   фортран

Счётчик цикла и Фортран

Что-то захотелось на Фортран поближе взглянуть, не знаю уж чем он меня заинтересовал, возможно тем, что во времена учёбы в Университете постоянно про него слышал (всё-таки язык для научных вычислений, а я на математика учился), но использовать не довелось.

Пока только-только начинаю знакомиться, для практики переписал с Бейсика на Фортран одну из версий игры 1970 года «Highnoon», наверное выложу её попозже на «Гитхаб».

У языка много особенностей, но больше всего интересна следующая. Фортран — язык со статической типизацией, то есть для каждой переменной требуется указать тип, но в некоторых случаях компилятор может вывести тип самостоятельно. Правда, думаю, правило вывода этого типа сильно вас удивит.

В этой простой программе тип переменной I не указан, но компилятор знает, что её тип — integer.

DO I = 99, 1, -1
    PRINT *, I
END DO

END

Дело в том, что по-умолчанию (это поведение можно отключить) Фортран считает все переменные, имена которые начинаются с букв I, J, K, L, M или N целыми (integer), а все остальные — типом real.

Есть мнение, что отсюда и пошла привычка называть переменные цикла буквами из «целого» ряда.

 6 комментариев    332   1 мес   программирование   фортран

Архив программ

Честно сказать, я считаю проект «Архив Интернета» более важным проектом, чем «Википедия», жаль что ему достаётся незаслуженно мало внимания. За 20 лет существования моего сайта, в старых заметках поумирало 100% ссылок и только «Архив Интернета» позволяет понять что когда-то по ним было.

В нём же я нередко ищу старые книги, подшивки газет и прочие бумажные материалы — некоторые издания можно найти в интернете только там. Но кроме этого, как оказалось, там бывают старые компьютерные программы, причём запускаемые прямо в окне браузера!

Препроцессор Ратфора в Фортран, запущенный в ДОСБоксе

Я тут заинтересовался препроцессором «Ратфор», который был разработан в 1970-х — он транслировал си-подобный синтаксис в популярный тогда язык программирования «Фортран». Кстати, Фортран до сих пор встречается в современных математических библиотеках, возможно поэтому и он сам, и «Ратфор» без проблем ставятся из «брю» на «Мак».

Пока гуглил информацию по «Ратфору» (литературы не так уж и много), в «Архиве Интернета» нашёл реализацию, запускаемую в окне браузера под портированным ДОСБоксом. Очень здорово придумано — можно сразу бегло посмотреть требуемое.