Язык фортран для чего нужен

Древнейший язык программирования восстал из мертвых и хочет стать самым популярным

Язык программирования Fortran, созданный в 1957 г., переживает резкий всплеск популярности. В рейтинге TIOBE он еще летом 2020 г. занимал самое последнее 50 место, но к апрелю 2021 г. оказался на 20 строчке. Несмотря на почтенный возраст, Fortran продолжает развиваться и использоваться в различных сферах – его самая актуальная версия вышла в конце 2018 г.

Живее всех живых

Язык программирования Fortran после многих лет забвения вновь стал интересовать разработчиков. В рейтинге языков TIOBE за апрель 2021 г. он вошел в топ-20, опередив многие известные языки, включая Objective-C и Rust.

TIOBE – это один из самых авторитетных рейтингов языков программирования. Он существует с 2003 г., и его развивает одноименная компания (The Importance Of Being Earnest, отсылка к пьесе Оскара Уайлда «Как важно быть серьезным»). Рейтинг создается на основе результатов поиска информации о тех или иных языках на популярных сайтах, включая «Википедию» и YouTube, а также на основе запросов в поисковиках Google, Bing и др.

Fortran демонстрирует взрывной рост популярности, пришедший на смену постепенному забвению. Так, если в апреле 2020 г. он занимал 34 место, то к июню 2020 г. почти выбыл из рейтинга, скатившись на 50 строчку. В итоге менее чем за год Fortran отыграл 30 позиций, но составители рейтинга TIOBE пока не прогнозируют его дальнейшие успехи или, наоборот, неудачи.

Язык фортран для чего нужен. Смотреть фото Язык фортран для чего нужен. Смотреть картинку Язык фортран для чего нужен. Картинка про Язык фортран для чего нужен. Фото Язык фортран для чего нужен

За 18 лет существования рейтинга Fortran поднимался в нем максимум до 10 места. Этот личный рекорд он поставил в марте 2002 г., 19 лет назад, после чего его популярность стала падать. В 2005 г. был зафиксирован кратковременный рост интереса к нему, но затем вплоть до 2015 г. он держался примерно на одном уровне. С 2015 по 2017 гг. популярность Fortran вновь подскочила и затем снова рухнула. Не исключено, что новый рывок этого языка окажется началом следующего длительного периода роста его востребованности.

История Fortran

Fortran входит в число старейших языков программирования – он был создан в 1957 г. специалистами компании IBM. Название 64-летнего языка расшифровывается как FORmula TRANslator (переводчик формул).

Несмотря на свой почтенный возраст, Fortran по-прежнему востребован в ряде сфер, включая инженерные вычисления. Его разработка продолжается, и на момент публикации материала самой актуальной его версией была Fortran 2018 (ISO/IEC 1539-1:2018), вышедшая в конце ноября 2018 г.

Язык фортран для чего нужен. Смотреть фото Язык фортран для чего нужен. Смотреть картинку Язык фортран для чего нужен. Картинка про Язык фортран для чего нужен. Фото Язык фортран для чего нужен

Широкое распространение Fortran в странах СССР началось спустя 10 лет с момента его создания. Толчком этому послужила разработка первого советского компилятора этого языка для ЭВМ «Минск-2», плюс через год появился компилятор «Фортран-Дубна» для ЭВМ БЭСМ-6.

Комментируя новый всплеск популярности Fortran, составители индекса TIOBE заявили: «Этот динозавр вернулся в топ-20 спустя более 10 лет. Fortran был первым коммерческим языком программирования и набирает популярность благодаря огромной потребности в научных вычислениях». «С возвращением Fortran», – добавили они.

Язык фортран для чего нужен. Смотреть фото Язык фортран для чего нужен. Смотреть картинку Язык фортран для чего нужен. Картинка про Язык фортран для чего нужен. Фото Язык фортран для чего нужен

Если Fortran сможет приблизиться к топ-10 языков программирования, ему будет непросто пробиться в него. В рейтинге TIOBE первые 10 мест почти не меняются на протяжении нескольких лет, и на апрель 2021 г их занимали, в порядке снижения популярности, следующие языки: C, Java, Python, C++, C#, Visual Basic, JavaScript, Assembly, PHP и SQL.

Конкуренты из прошлого

Fortran – не единственный язык программирования середины XX века, набирающий популярность в третьем десятилетии XXI века. В апреле 2020 г. в мире и, в особенности, в США резко взлетел спрос на разработчиков, пишущих на COBOL (COmmon Business Oriented Language).

Интерес к COBOL подхлестнула пандемия коронавируса, повлекшая за собой рост числа безработных. ПО, написанное на этом языке, используется в США в системе занятости, и в настоящее время оно требует обновления и оптимизации. COBOL младше Fortran на два года – он появился в 1959 г.

Язык фортран для чего нужен. Смотреть фото Язык фортран для чего нужен. Смотреть картинку Язык фортран для чего нужен. Картинка про Язык фортран для чего нужен. Фото Язык фортран для чего нужен

В середине апреля 2020 г. IBM, создатель Fortran, даже объявила о готовности провести обучающие курсы по языку COBOL, лишь бы увеличить суммарное число программистов во всем мире, знающих этот язык. В конце июля 2020 г. специалисты Института инженеров электротехники и электроники (Institute of Electrical and Electronics Engineers, IEEE) опубликовали рейтинг языков программирования в своем ежемесячном журнале IEEE Spectrum. Он включает 55 позиций, и COBOL занял в нем 43 строчку.

Язык фортран для чего нужен. Смотреть фото Язык фортран для чего нужен. Смотреть картинку Язык фортран для чего нужен. Картинка про Язык фортран для чего нужен. Фото Язык фортран для чего нужен

В рейтинге TIOBE COBOL тоже присутствует – по состоянию на апрель 2021 г. он находился в нем на 24 месте. В этом списке COBOL достигал максимум 8 места – сделать это ему удалось в августе 2011 г. Спустя ровно 11 лет, в августе 2011 г., COBOL оказался на 47 месте, и пока это наихудший его результат за все 18 лет существования рейтинга.

Источник

О бедном Фортране замолвите слово

Попробовать написать здесь свой первый пост меня подтолкнула статья о выборе первого языка программирования, где vt4a2h предлагает использовать для обучения C++. Да, на данную тему было сломано множество копий.
Язык фортран для чего нужен. Смотреть фото Язык фортран для чего нужен. Смотреть картинку Язык фортран для чего нужен. Картинка про Язык фортран для чего нужен. Фото Язык фортран для чего нужен
Я, как и наверное большинство школьников на просторах нашей необъятной Родины, начинал постигать азы через синий экран, но не смерти, а Turbo Pascal 7.0. Был конечно и Basic, с котором я впервые столкнулся в дошкольном возрасте на советском компьютере «Электроника». Тогда он казался странным текстовым редактором, ведь компьютер глазами ребенка создан для игр. Однако уже в институте я познакомился с языком Fortran, познав который, я до сих пор недоумеваю, почему он не используется для обучения.

Да, многие скажут, что язык мертвый, не соответствует современным реалиям, а учебники с названием, как на картинке, вызывают лишь улыбку. Я попробую объяснить, чем же так замечателен этот язык и почему я его рекомендую в качестве первого языка. Если заинтересовало, добро пожаловать под кат.

Я считаю, что базис по основам программирования должен закладываться еще в школьные годы, хотя бы в старших классах. Даже если в жизни компьютер будет использоваться только для набора текста в Word’е или для общения в социальных сетях, минимальные знания о том, что такое алгоритм и как структурировать последовательность действий, чтобы получить нужный результат, по крайней мере не повредят молодому отроку во взрослой жизни, а скорей всего помогут сформировать особый склад ума.

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

Чем же так замечателен Фортран?

Обратимся к истории создания этого языка. Появился он в далекие 50-е годы прошлого века, когда компьютеры еще были большие, программистов было мало, а информатика не преподавалась в школе, да и вообще считалась лженаукой. Язык фортран для чего нужен. Смотреть фото Язык фортран для чего нужен. Смотреть картинку Язык фортран для чего нужен. Картинка про Язык фортран для чего нужен. Фото Язык фортран для чего нуженНужен был простой язык, который помогал бы инженерам и ученым «скармливать» ЭВМ формулы, написанные на бумаге, пусть даже через перфокарты.

Отсюда и название самого языка: Formula Translator или же «переводчик формул». Т.е. изначально язык был ориентирован на людей без специальной подготовки, а значит должен был быть максимально простым.

Что ж, простота создателям удалась. Классическая первая программа выглядит следующим образом:

Синтаксис даже чуть проще Паскаля, нет необходимости ставить в конце строки «;» или «:» перед знаком равенства. Более того, людям, обладающих минимальным знанием английского языка, понять смысл простейшей программы не составит труда.

Тут я хочу отметить, что Фортран имеет несколько ревизий стандартов, основными из которых являются 77 и 90 (при этом сохраняется преемственность). 77 Фортран действительно архаичен, есть ограничение на длину строки, и необходимо делать отступ в начале строки, что может вызвать у молодого кандидата в программисты культурный шок. Недаром программы, написанные на 77 Фортране, получили из уст моего знакомого емкое название «Брежневский код». Поэтому весь мой текст относится к стандарту языка 90 и новее.

Для примера, приведу код для вычисления суммы неотрицательных целых чисел от 1 до n, вводимого с клавиатуры, написанный моей дипломницей при обучении её программированию с нуля. Именно на ней я испытал преподавание Фортрана в качестве первого языка. Надеюсь, что для неё это пошло на пользу, а мой экперимент удался. По крайней мере основы она усвоила за пару занятий, первое из которых ушло на лекцию про язык.

Нетрудно заметить, что как мы думаем, так и записываем код. Никаких сложностей у обучаемого не может возникнуть в принципе. Внимательный читатель конечно же спросит, что за implicit none и две звездочки в скобках через запятую. implicit none говорит нам, что мы явно указываем тип переменных, тогда как без данной записи компилятор будет сам угадывать тип. Первая звездочка означает, что ввод и вывод происходят на экран, а вторая говорит о том, что формат ввода-вывода определяется автоматически. Собственно, программы на Фортране выглядит не сложнее, чем написанный выше кусок кода.

А что насчет программной среды?

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

Для написания программ на Фортране подойдет любой текстовый редактор. Если хочется подсветки синтаксиса, то можно использовать Notepad++ (поддерживает синтаксис только 77 стандарта) или SublimeText. Программу написали, чем будем компилировать? Тут все просто, можно использовать свободный GNU Fotran. Если использование планируется некоммерческое, то разрешается замахнуться и на компилятор от Intel, который хорошо оптимизирован под одноименные процессоры и поставляется с минимально необходимым IDE. Т.е. порог вхождения весьма льготный.

Лучшей средой разработки под Фортран по мнению многих пользователей остается Compaq Visual Fortran 6.6, последняя версия которого увидела свет в начале 2000-х. Почему же так сложилось, что среда, основанная на Visual Studio 6.0, которая без танцев с бубном заводится максимум на Windows XP 32 bit, и имеет ограничение на используемую память, снискала такую популярность среди фортранщиков. Ответ приведен на рисунке ниже.

Язык фортран для чего нужен. Смотреть фото Язык фортран для чего нужен. Смотреть картинку Язык фортран для чего нужен. Картинка про Язык фортран для чего нужен. Фото Язык фортран для чего нужен

Это Compaq Array Visualizer, который представляет собой очень удобный инструмент по визуализации 1, 2 и 3-х мерных массивов в процессе отладки программы непосредственно из дебаггера. Как говорится, попробовав раз, ем и сейчас. Дело в том, что Фортран сейчас используется в основном в науке (о чем будет сказано позже), в частности в той области, с которой я имею дело, а именно в физике атмосферы. При отладке программ массивы представляют собой различные метеорологические поля, такие как температура, давление, скорость ветра. Искать ошибку в графических полях гораздо проще, чем в наборе цифр, тем более, обычно известно, как примерно должно выглядеть поле, поэтому очевидные ошибки отсекаются моментально.

К сожалению, все наработки по компилятору перешли от Compaq к Intel. Intel первоначально поддерживала Array Visualizer, правда, уже те версии были бледным отражением продукта от Compaq, работать с ними было не так удобно, как прежде, но хотя бы минимальная работоспособность поддерживалась. Увы, Intel перестала разрабатывать новые версии Array Visualizer’а, поставив крест на этом удобнейшем инструменте. Именно поэтому фортрановское сообщество в основной своей массе пишет программы и занимается их отладкой под Compaq Visual Fortran на Windows, а боевые расчеты запускает на серверах под Linux, используя Intel-овские компиляторы. Интел, пожалуйста, услышь мольбы пользователей, верни нормальный инструмент для визуализации массивов в свой дебаггер!

Место Фортрана в современном мире

А сейчас мы подошли к той самой теме, которая обычно вызывает бурную дискуссию с моими коллегами, использующими Matlab, которые утверждают, что описанный в данном посте раритетный язык ни на что не годится. Тут я с ними не соглашусь. Язык фортран для чего нужен. Смотреть фото Язык фортран для чего нужен. Смотреть картинку Язык фортран для чего нужен. Картинка про Язык фортран для чего нужен. Фото Язык фортран для чего нуженДело в том, что Фортран исторически использовался в инженерных или научных расчетах, а потому со временем обрастал множеством готовых библиотек и кодами программ решения той или иной задачи.

Код в буквальном смысле передается из поколения в поколение, да еще и хорошо документируется. Можно найти множество готовых решений уравнений математической физики, линейной алгебры (здесь следует отметить удачную реализацию работы с матрицами), интегральных и дифференциальных уравнений и многого-многого другого. Наверное тяжело найти задачу из области физмат наук, для которой не был бы реализован алгоритм на языке Фортран. А если учесть отличную оптимизацию интеловских компиляторов под интеловские же процессоры, поддержку параллельных вычислений на высокопроизводительных кластерах, то становится понятно почему в научной среде этот язык занимает заслуженное первое место. Думаю, на любом суперкомпьютере можно найти установленный фортрановский компилятор.

Большинство серьезных моделей, по крайней мере из области физики атмосферы, написаны именно на Фортране. Да-да, прогноз погоды, которым каждый интересуется время от времени, получается в ходе расчетов моделей, написанных на этом языке. Более того, язык не находится в стагнации, а постоянно совершенствуется. Так, после описанных раннее стандартов 77 и 90, появились новые редакции 95, 2003, 2008, поддержка которых внедрена в актуальные компиляторы. Последние версии Фортрана несколько освежили старый проверенный временем язык, превнеся поддержку современного стиля, добавив объектно-ориентированное программирование, отсутствие которого было чуть ли не самым главным козырем противников этого языка. Более того, The Portland Group выпустила PGI CUDA Fortran Compiler, позволяющий проводить высокопараллельные расчеты на видеокартах. Таким образом, пациент более чем жив, а значит программисты на Фортран остаются востребованными до сих пор.

Вместо послесловия

А теперь я хотел бы вернуться к изначально затронутой теме об обучении программированию, и попытаться тезисно сформулировать основные плюсы Фортрана при выборе его в качестве первого языка.

Источник

Основы языка Fortran

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

Фортран был первым в истории языком программирования высокого уровня. Работа над Fortran началась в 1950 — х годах в IBM, и с тех пор было много версий. По соглашению, версия Fortran обозначается двумя последними цифрами года, когда был предложен стандарт. Таким образом, мы имеем:

Наиболее распространенной версией Фортран сегодня по-прежнему является Fortran 77, хотя Fortran 90 набирает все большую популярность. Fortran 95-это пересмотренная версия Fortran 90. Существует также несколько версий Fortran, предназначенных для параллельных компьютеров. Наиболее важным из них является высокопроизводительный Fortran (HPF), который является стандартом де-факто.

Пользователи должны знать, что большинство компиляторов Fortran 77 допускают надмножество Fortran 77, то есть допускают нестандартные расширения. В этом уроке мы подчеркнем стандарт ANSI Fortran 77.

Зачем изучать Фортран?

Fortran является популярным языком программирования, используемым в инженерных приложениях. Поэтому выпускникам инженерных специальностей важно уметь читать и изменять фортранский код. Время от времени так называемые эксперты предсказывают, что Фортран быстро угаснет в популярности и вскоре исчезнет. Эти предсказания всегда проваливались. Фортран-самый прочный язык программирования в истории. О

дна из главных причин, по которой Fortran выжил и выживет — это программная инерция. После того, как компания потратила много человеко-лет и, возможно, миллионы долларов на программный продукт, она вряд ли попытается перевести программное обеспечение на другой язык. Надежный перевод программного обеспечения — очень сложная задача.

Основным преимуществом Fortran является то, что он стандартизирован ANSI и ISO (см. сноски). Следовательно, если ваша программа написана на ANSI Fortran 77, не используя ничего, выходящего за рамки стандарта, то она будет работать на любом компьютере, имеющем компилятор Fortran 77. Таким образом, программы Fortran переносимы на разные платформы машин. (Если вы хотите ознакомиться с некоторыми документами по стандартам Fortran, нажмите здесь.)

Основы Fortran 77

Программа Fortran — это просто последовательность строк текста. Текст должен следовать определенной структуре, чтобы быть действительной программой Fortran. Начнем с простого примера:

program circle
real r, area
с Эта программа считывает действительное число r
с печатает площадь окружности с радиусом r.

write (*,*) ‘Give radius r:’
read (*,*) r
area = 3.14159*r*r
write (*,*) ‘Area = ‘, area

Строки, начинающиеся с буквы «с», являются комментариями и не имеют иной цели, кроме как сделать программу более читаемой для людей. Первоначально все программы на Фортране должны были быть написаны заглавными буквами. Большинство людей теперь пишут строчными буквами, так как это более разборчиво, и мы тоже. Вы можете смешать регистр, но Fortran не чувствителен к регистру, поэтому «X» и «x»-это одна и та же переменная.

Организация программы

Программа Fortran обычно состоит из основной программы (или драйвера) и, возможно, нескольких подпрограмм (процедур или подпрограмм). Пока мы поместим все утверждения в основную программу; подпрограммы будут рассмотрены позже. Структура основной программы такова:

В этом учебнике слова, выделенные курсивом, следует воспринимать не как буквальный текст, а скорее как описание того, что находится на их месте.

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

Правила расположения столбцов

Fortran 77 не является языком свободного формата, но имеет очень строгий набор правил форматирования исходного кода. Наиболее важными правилами являются правила расположения столбцов:

Большинство строк в программе Fortran 77 начинается с 6 пробелов и заканчивается перед столбцом 72, то есть используется только поле оператора.

Комментарии

Строка, начинающаяся с буквы «с» или звездочки в первом столбце, является комментарием. Комментарии могут появляться в любом месте программы. Хорошо написанные комментарии имеют решающее значение для удобочитаемости программы. Коммерческие коды Fortran часто содержат около 50% комментариев.

Вы также можете столкнуться с программами Fortran, которые используют восклицательный знак (!) для комментариев. Это не стандартная часть Fortran 77, но поддерживается несколькими компиляторами Fortran 77 и явно разрешена в Fortran 90. При понимании восклицательный знак может появиться в любом месте строки (кроме позиций 2-6).

Продолжение

Иногда оператор не помещается в 66 доступных столбцов одной строки. Затем можно разбить оператор на две или более строк и использовать метку продолжения в позиции 6. Пример:

c23456789 (Это демонстрирует положение столбца!)

c Следующее утверждение идет по двум физическим линиям
площадь = 3,14159265358979
+ * r * r

Любой символ может быть использован вместо знака плюс в качестве символа продолжения. Хорошим стилем программирования считается использование знака плюс, амперсанда или цифр (2 для второй строки, 3 для третьей и т. Д.).

Исходный код, объектный код, компиляция и связывание

Программа Fortran состоит из простого текста, который следует определенным правилам (синтаксису). Это называется исходным кодом. Вам нужно использовать редактор для написания (редактирования) исходного кода. Наиболее распространенными редакторами в Unix являются emacs и vi, но они могут быть немного сложными для начинающих пользователей. Возможно, вы захотите использовать более простой редактор, например xedit, который работает под управлением X-windows.

Выход из компиляции по умолчанию имеет несколько загадочное имя a.out, но при желании вы можете выбрать другое имя. Чтобы запустить программу, просто введите имя исполняемого файла, например a.out. (Это объяснение несколько упрощено.На самом деле компилятор переводит исходный код в объектный код, а компоновщик/загрузчик превращает его в исполняемый файл.)

Примеры:

В каталоге классов есть небольшая программа Fortran под названием circle.f. Вы можете скомпилировать и запустить его, выполнив следующие действия:

(Обратите внимание, что там есть несколько точек (точек), которые легко пропустить!) Если вам нужно иметь несколько исполняемых файлов одновременно, рекомендуется дать им описательные имена. Это можно сделать с помощью опции-o.

В предыдущих примерах мы не проводили различия между компиляцией и связыванием. Это два разных процесса, но компилятор Fortran выполняет их оба, поэтому пользователю обычно не нужно знать об этом. Но в следующем примере мы будем использовать два файла исходного кода.

Компиляция отдельных файлов, подобных этому, может быть полезна, если существует много файлов и только некоторые из них должны быть перекомпилированы. В Unix есть полезная команда make, которая обычно используется для обработки больших пакетов программного обеспечения с большим количеством исходных файлов. Эти пакеты поставляются с файлом makefile, и все, что нужно сделать пользователю, — это ввести make. Написание makefiles немного сложно, поэтому мы не будем обсуждать это в этом уроке.

Переменные, типы и объявления

Имена переменных

Имена переменных в Фортран должны быть из 1-6 символов(допустимые буквы a-z и цифры 0-9).Кроме того, первый символ должен быть буквой. Fortran 77 не различает верхний и нижний регистр, фактически, он предполагает, что все входные данные являются верхним регистром. Однако почти все компиляторы Фортран 77 принимают нижний регистр. Если вы когда-нибудь столкнетесь с компилятором Fortran 77, который настаивает на верхнем регистре, обычно легко преобразовать исходный код во все верхние регистры.

Слова, составляющие язык Фортран, называются зарезервированными словами и не могут использоваться в качестве имен переменных. Некоторые из зарезервированных слов, которые мы видели до сих пор, — это «program», «real», «stop» и «end».

Типы и объявления

Каждая переменная должна быть определена в объявлении. Это устанавливает тип переменной. Наиболее распространенными декларациями являются:

Список переменных должен состоять из имен переменных, разделенных запятыми. Каждая переменная должна быть объявлена ровно один раз. Если переменная не объявлена, Fortran 77 использует набор неявных правил для установления типа. Это означает, что все переменные, начинающиеся с букв i-n, являются целыми числами, а все остальные-вещественными.

Многие старые программы Fortran 77 используют эти неявные правила, но вы не должны! Вероятность ошибок в вашей программе резко возрастает, если вы не будете последовательно объявлять свои переменные.

Целые числа и переменные с плавающей запятой

Фортран 77 имеет только один тип для целочисленных переменных. Целые числа обычно хранятся в виде 32-битных (4 байта) переменных. Поэтому все целочисленные переменные должны принимать значения в диапазоне [-m, m], где m приблизительно равно 2*10^9.

Fortran 77 имеет два различных типа переменных с плавающей запятой, называемых вещественной и двойной точностью. Хотя реальное часто является адекватным, некоторые численные вычисления требуют очень высокой точности, и следует использовать двойную точность.

Обычно real — это 4-байтовая переменная, а двойная точность-8 байт, но это зависит от машины. Некоторые нестандартные версии Fortran используют синтаксис real*8 для обозначения 8-байтовых переменных с плавающей запятой.

Оператор параметра

Некоторые константы появляются в программе много раз. Поэтому часто желательно определить их только один раз, в начале программы. Для этого и существует оператор parameter. Это также делает программы более удобочитаемыми. Например, программа circlearea должна была быть написана примерно так:

program circle
real r, area, pi
parameter (pi = 3.14159)
c Эта программа считывает действительное число r и печатает
c площадь окружности с радиусом r.

write (*,*) ‘Give radius r:’
read (*,*) r
area = pi*r*r
write (*,*) ‘Area = ‘, area

Синтаксис оператора parameter таков

Правила для оператора parameter следующие:

Вот некоторые веские причины для использования оператора parameter:

Выражения и присвоение

Константы

Простейшей формой выражения является константа. Существует 6 типов констант, соответствующих 6 типам данных. Вот некоторые целочисленные константы:

Тогда у нас есть реальные константы:

Обозначение Е означает, что вы должны умножить константу на 10, возведенную в степень, следующую за буквой «Е». Следовательно, 2.0E6-это два миллиона, а 3.333 E-1-примерно одна треть.

Для констант, которые больше наибольшего допустимого реального значения или требуют высокой точности, следует использовать двойную точность. Обозначение такое же, как и для вещественных констант, за исключением того, что «Е» заменено на «D». Примеры:

Здесь 2.0 D-1-это двойная точность одна пятая, в то время как 1D99-это единица, за которой следуют 99 нулей. Следующий тип — комплексные константы. Это обозначается парой констант (целочисленных или вещественных), разделенных запятой и заключенных в круглые скобки. Примеры таковы:

Первое число обозначает действительную часть, а второе-мнимую. Пятый тип — логические константы. Они могут иметь только одно из двух значений:

Обратите внимание, что точки, заключающие буквы, обязательны. Последний тип — символьные константы. Они чаще всего используются в виде массива символов, называемого строкой. Они состоят из произвольной последовательности символов, заключенных в апострофы (одинарные кавычки):

Строки и символьные константы чувствительны к регистру. Проблема возникает, если вы хотите иметь апостроф в самой строке. В этом случае вам следует удвоить апостроф:

Выражения

Простейшие непостоянные выражения имеют вид operandoperatoroperand и пример:

Результат выражения сам по себе является операндом, поэтому мы можем вложить выражения вместе, например:

В связи с этим возникает вопрос о приоритете: означает ли последнее выражение x + (2*y) или (x+2)*y? Приоритет арифметических операторов в Фортран 77 (от самого высокого до самого низкого):

Все эти операторы вычисляются слева направо, за исключением оператора возведения в степень **, который имеет приоритет справа налево. Если вы хотите изменить порядок оценки по умолчанию, вы можете использовать круглые скобки.

Все вышеперечисленные операторы являются бинарными операторами.существует также унарный оператор — для отрицания, который имеет приоритет над другими. Следовательно, выражение типа-x+y означает то, что вы ожидаете.

Необходимо соблюдать крайнюю осторожность при использовании оператора деления, который имеет совершенно другое значение для целых и вещественных чисел. Если оба операнда являются целыми числами, выполняется целочисленное деление, в противном случае выполняется действительное арифметическое деление. Например, 3/2 равно 1, а 3./2. равно 1,5 (обратите внимание на десятичные точки).

Назначение

Интерпретация заключается в следующем: Вычислите правую часть и назначьте полученное значение переменной слева. Выражение справа может содержать другие переменные, но они никогда не изменяют значения! Например, площадь = pi * r**2 не изменяет значения pi или r, только площадь.

Преобразование типов

Когда в одном и том же выражении встречаются разные типы данных, преобразование типов должно происходить явно или неявно. Fortran будет выполнять некоторое преобразование типов неявно. Например,

преобразует целое число один в действительное число один и имеет желаемый эффект увеличения x на единицу. Однако в более сложных выражениях хорошей практикой программирования является явное принудительное преобразование необходимых типов. Для чисел доступны следующие функции:

Первые три имеют очевидный смысл. ichar берет символ и преобразует его в целое число, в то время как char делает прямо противоположное.

Пример: Как умножить две вещественные переменные x и y с помощью двойной точности и сохранить результат в переменной двойной точности w:

Обратите внимание, что это отличается от

Логические выражения

Логические переменные и присвоение

Истинностные значения могут храниться в логических переменных. Задание аналогично арифметическому заданию. Пример:

Логические переменные редко используются в Fortran. Но логические выражения часто используются в условных операторах, таких как оператор if.

Операторы if

Важной частью любого языка программирования являются условные операторы. Наиболее распространенным таким утверждением в Fortran является утверждение if, которое на самом деле имеет несколько форм. Самым простым из них является логическое утверждение if:

if (логическое выражение) исполняемый оператор

Это должно быть написано в одной строке. В этом примере найдено абсолютное значение x:

Если внутри if должно быть выполнено более одного оператора, то следует использовать следующий синтаксис:

if (логическое выражение) then операторы

Наиболее общая форма оператора if имеет следующий вид:

if (логическое выражение) then операторы

elseif (логическое выражение)
, then операторы
:
:
else
заявления
endif

Поток выполнения идет сверху вниз. Условные выражения вычисляются последовательно до тех пор, пока одно из них не окажется истинным. Затем соответствующие операторы выполняются, и управление возобновляется после end if.

Вложенные операторы if

операторы if могут быть вложены в несколько уровней. Чтобы обеспечить читабельность, важно использовать правильный отступ. Вот пример:

Вам следует избегать вложенности многих уровней операторов if,так как за ними становится трудно следить.

Циклы

Для повторного выполнения подобных вещей используются циклы. Если вы знакомы с другими языками программирования, вы, вероятно, слышали о for-loops, while-loops и until-loops. Фортран 77 имеет только одну конструкцию цикла, называемую do-loop. Цикл do соответствует тому, что в других языках называется циклом for. Другие конструкции цикла должны быть построены с использованием операторов if и goto.

Цикл do

Цикл do-loop используется для простого подсчета. Вот простой пример, который выводит кумулятивные суммы целых чисел от 1 до n (предположим, что n было присвоено значение в другом месте):

sum = 0
do 10 i = 1, n
sum = sum + i
write(*,*) ‘i =’, i
write(*,*) ‘sum =’, sum
10 continue

Число 10 — это метка оператора. Как правило, в одной программе будет много циклов и других операторов, требующих метки оператора. Программист отвечает за присвоение уникального номера каждой метке в каждой программе (или подпрограмме).

Напомним, что позиции столбцов 1-5 зарезервированы для меток операторов. Числовое значение меток операторов не имеет значения, поэтому можно использовать любые целые числа в любом порядке. Как правило, большинство программистов используют последовательные кратные 10.

Переменная, определенная в операторе do, по умолчанию увеличивается на 1. Однако вы можете определить шаг как любое число, кроме нуля. Этот сегмент программы печатает четные числа от 1 до 10 в порядке убывания:

Общая форма цикла do выглядит следующим образом:

do label var = expr1, expr2, expr3

var — это переменная цикла (часто называемая индексом цикла), которая должна быть целочисленной. expr1 задает начальное значение var, expr2 — конечную границу, а expr3 — инкремент (шаг).

Примечание: Переменная do-loop никогда не должна изменяться другими операторами внутри цикла! Это вызовет большую путаницу.

Индекс цикла может иметь тип real, но из-за ошибок округления может не принимать точно ожидаемую последовательность значений.

Многие компиляторы Fortran 77 позволяют закрывать циклы do с помощью оператора enddo. Преимущество этого заключается в том, что метка оператора может быть опущена, поскольку предполагается, что enddo закрывает ближайший предыдущий оператор do. Конструкция enddo широко используется, но она не является частью ANSI Фортран 77.

Следует отметить, что в отличие от некоторых языков программирования, Fortran вычисляет выражения start, end и step только один раз, перед первым прохождением тела цикла. Это означает, что следующий цикл do-loop будет умножать неотрицательный j на два (трудный путь), а не работать вечно, как эквивалентный цикл на другом языке.

read (*,*) j
do 20 i = 1, j
j = j + 1
20 continue
write (*,*) j

while-циклы

Самый интуитивный способ написать цикл while — это:

while (logical expr) do
заявления
anddo
или альтернативно,

dowhile (логическое выражение)
заявления
and do

Программа будет чередовать тестирование условия и выполнение операторов в теле до тех пор, пока условие в операторе while истинно. Несмотря на то, что этот синтаксис принят многими компиляторами, это не ANSI Fortran 77. Правильный способ использовать if и goto:

label if (logical expr) затем
заявление
gotolabel
endif

Вот пример, который вычисляет и печатает все степени двух, которые меньше или равны 100:

Цикл until

Если критерий завершения находится в конце, а не в начале, его часто называют циклом до. Псевдокод выглядит так:

Опять же, это должно быть реализовано в Fortran 77 с помощью if и goto:

метка continue
заявление
if (logicalexpr) gotolabel

Обратите внимание, что логическое выражение в последней версии должно быть отрицанием выражения, данного в псевдокоде!

Массивы

Многие научные вычисления используют векторы и матрицы. Тип данных, используемый Fortran для представления таких объектов, — массив. Одномерный массив соответствует вектору, а двумерный-матрице. Чтобы полностью понять, как это работает в Фортран 77, вам нужно знать не только синтаксис использования, но и то, как эти объекты хранятся в памяти в Fortran 77.

Одномерные массивы

Простейшим массивом является одномерный массив, который представляет собой просто последовательность элементов, последовательно хранящихся в памяти. Например, декларация realа(20) объявляет a как реальный массив длины 20. То есть а состоит из 20 вещественных чисел, непрерывно хранящихся в памяти.

По соглашению массивы Fortran индексируются от 1 и выше. Таким образом, первое число в массиве обозначается a(1), а последнее-a(20). Однако вы можете определить произвольный диапазон индексов для ваших массивов, используя следующий синтаксис:

Здесь b точно похож на a из предыдущего примера, за исключением того, что индекс проходит от 0 до 19. weird-это массив длины 237-(-162)+1 = 400. Тип элемента массива может быть любым из основных типов данных. Примеры:

Каждый элемент массива можно рассматривать как отдельную переменную. Вы ссылаетесь на i-й элемент массива a через a(i). Вот сегмент кода, который хранит 10 первых квадратных чисел в массиве sq:

do 100 i = 1, 10
sq(i) = i**2
100 continue

Распространенная ошибка в Fortran заключается в том, что программа пытается получить доступ к элементам массива, которые находятся вне границ или не определены. Это ответственность программиста, и компилятор Fortran не обнаружит таких ошибок!

Двумерные массивы

Матрицы очень важны в линейной алгебре. Матрицы обычно представляются двумерными массивами. Например, декларация Real A(3,5) определяет двумерный массив из 3*5=15 вещественных чисел. Полезно думать о первом индексе как о индексе строки, а о втором-как об индексе столбца. Отсюда мы получаем графическую картину:

Двумерные массивы также могут иметь индексы в произвольном определенном диапазоне. Общий синтаксис объявлений таков:

name (low_index1 : hi_index1, low_index2 : hi_index2)
Тогда общий размер массива будет равен
size = (hi_index1-low_index1+1)*(hi_index2-low_index2+1)

В Fortran довольно часто объявляются массивы, которые больше, чем матрица, которую мы хотим сохранить. (Это связано с тем, что Fortran не имеет динамического распределения памяти.) Это совершенно законно.

Пример:

Real А(3,5)
Integer i,j
c
c Мы будем использовать только верхнюю часть этого массива размером 3 на 3.
c
do 20 j = 1, 3
do 10 i = 1, 3
a(i,j) = real(i)/real(j)
10 continue
20 continue

Элементы подматрицы А(1:3,4:5) не определены. Не предполагайте, что эти элементы инициализируются компилятором до нуля (некоторые компиляторы сделают это, но не все).

Формат хранения для 2-мерных массивов

Fortran хранит многомерные массивы как непрерывную последовательность элементов. Важно знать, что 2-мерные массивы хранятся по столбцам. Таким образом, в приведенном выше примере элемент массива (1,2) будет следовать за элементом (3,1). Затем следует остальная часть второго столбца, затем третий столбец и так далее.

Рассмотрим еще раз пример, где мы используем только верхнюю подматрицу 3 на 3 массива 3 на 5 A(3,5). 9 интересных элементов будут затем сохранены в первых девяти ячейках памяти, в то время как последние шесть не используются. Это работает аккуратно, потому что ведущее измерение одинаково как для массива, так и для матрицы, которую мы храним в массиве.

Однако часто ведущее измерение массива будет больше, чем первое измерение матрицы. Тогда матрица не будет храниться непрерывно в памяти, даже если массив является непрерывным. Например, предположим, что объявление было A(5,3) вместо этого. Тогда между концом одного столбца и началом следующего будут две «неиспользуемые» ячейки памяти (опять же мы предполагаем, что матрица равна 3 на 3).

Это может показаться сложным, но на самом деле это довольно просто, когда вы привыкнете. Если вы сомневаетесь, может быть полезно посмотреть, как вычисляется адрес элемента массива. Каждый массив будет иметь некоторый адрес памяти, назначенный началу массива, то есть элементу (1,1). Адрес элемента (i,j) затем задается addr[A(i,j)] = addr[A(1,1)] + (j-1)*lda + (i-1) где lda — ведущее (т. е. строковое) измерение A. Обратите внимание, что lda в целом отличается от фактического матричного измерения. Многие ошибки Фортрана вызваны этим, поэтому очень важно, чтобы вы поняли различие!

Многомерные массивы

Fortran 77 допускает массивы до семи измерений. Синтаксис и формат хранения аналогичны двумерному случаю, поэтому мы не будем тратить на это время.

Существует альтернативный способ объявления массивов в Fortran 77.

Это заявление об измерении сегодня считается старомодным стилем.

Заключение

В этой статье вы узнали основы языка Фортнан! Всем начинающим программистам удачи в написании к

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *