Язык программирования фортран. Ходячие мертвецы. Фортран. Правила позиции столбца

Алфавит - в программировании – система неразложимых, уверенно отличимых друг от друга символов (букв, цифр, знаков препинания и др. символов), используемых для построения языков программирования.

Синтаксис - сторона языка программирования, которая описывает структуру программ как наборов символов. Синтаксису языка противопоставляется его семантика. Синтаксис языка описывает «чистый» язык, в то же время семантика приписывает значения различным синтаксическим конструкциям.

Сема́нтика - в программировании - система правил определения поведения отдельных языковых конструкций. Семантика определяет смысловое значение предложений алгоритмического языка.

Языки программирования низкого уровня – Автокод, Ассемблер,

Языки программирования высокого уровня -Фортран, Алгол, Кобол, Паскаль, Бейсик, Си++, Пролог

Языки программирования сверхвысокого уровня – APL, Алгол-68

Вычислительные Языки программирования - Фортран, Паскаль, Алгол, Бейсик, Си

Языки символьной обработки – Лисп, Пролог, Снобол и др.

Языки первого поколения:

Машинные коды были языком программирования первого поколения

Языки второго поколения:

Ассемблер

Языки третьего поколения:

эти языки часто обозначаются как языки «высокого» уровня.

Языки четвертого поколения:

Бейсик, Кобол, Си и Паскаль

Языки программирования пятого поколения:

Пролог, ЛИСП, Си++, Visual Basic, Delphi.

Язык программирования Фортра́н (Fortran)

Первый язык программирования высокого уровня, имеющий транслятор. Создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса в корпорации IBM. Название Fortran является акронимом от FORmula TRANslator (переводчик формул). Фортран широко используется в первую очередь для научных и инженерных вычислений. Одно из преимуществ современного Фортрана - большое количество написанных на нём программ и библиотек подпрограмм. Большинство таких библиотек является фактически достоянием человечества: они доступны в исходных кодах, хорошо документированы, отлажены и весьма эффективны. Поэтому изменять, а тем более переписывать их на других языках программирования накладно, несмотря на то, что регулярно производятся попытки автоматического конвертирования FORTRAN-кода на современные языки программирования.

Современный Фортран (Fortran 95 и Fortran 2003) приобрёл черты, необходимые для эффективного программирования для новых вычислительных архитектур, позволяет применять современные технологии программирования, в частности, ООП.

Эволюция стандартов языка

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

FORTRAN 77 (1980)

Введено множество улучшений:

Введены операторы открытия и закрытия файла (OPEN, CLOSE) и вывода на стандартное устройство - PRINT.

Добавлены строковый тип данных и функции для его обработки.

Введён блочный оператор IF и конструкция IF THEN - ELSE IF THEN - END IF, а также оператор включения фрагмента программы INCLUDE.

Введена возможность работы с файлами прямого доступа.

Увеличена максимальная размерность массива с 3 до 7. Сняты ограничения на индексы массива.

Усовершенствованы и расширены возможности работы с процедурами.

Введено понятие внутреннего файла (каковыми являются массивы, числовые и строковые переменные). Внутренние файлы позволяют, в частности, осуществлять преобразование число-строка и строка-число стандартным операторами чтения и записи READ и WRITЕ.

Fortran 90 (1991)

Значительно переработан стандарт языка.

Введён свободный формат написания кода. Появились дополнительные описания IMPLICIT NONE, TYPE, ALLOCATABLE, POINTER, TARGET, NAMELIST.

Введены управляющие операторы и конструкции. Добавлены DO … END DO (вместо завершения цикла меткой), DO WHILE, оператор передачи управления на начало цикла CYCLE, конструкция выбора SELECT CASE (для замены громоздких конструкций IF и операторов GOTO), а также заключительный оператор программной единицы, модульной или внутренней процедуры END.

Введён инструментарий указателей и функции для работы с оперативной памятью (по аналогии с языком С).

Введены операторы работы с динамической памятью (ALLOCATE, DEALLOCATE, NULLIFY).

Добавлены программные компоненты MODULE, PRIVATE, PUBLIC, CONTAINS, INTERFACE, USE, INTENT.

Введено маскирование присваивания массивов (присваивание при выполнении наложенного на элементы массива логического условия без использования операторов условия), а также работа с сечениями массивов. Введён оператор и конструкция WHERE для частичной замены циклов (правая часть оператора присваивания не изменяется). Маскирование присваивания распространяется практически на все операторы, конструкции и функции, оперирующие с массивами.

Стандартные операции присваивания, сложения, вычитания, а также деления и умножения на число распространены на массивы и их секции, определяемые сечениями. В этом случае осуществляется поэлементное присваивание.

Появились новые встроенные функции, в первую очередь для работы с массивами. Функции для вычислений в массивах: ALL(лог. произведение) и MASK(логическое сложение), COUNT(число истинных элементов), PRODUCТ(произведение элементов массива), SUM(сложение элементов массива), DOT_PRODUCT (скалярное произведение), MATMUL (умножение матриц). Добавились справочные функции, а также функции переформирования и свёртки массивов.

В языке появились элементы ООП. Введены производные типы данных. Отдельно объявлен список устаревших черт языка, предназначенных для удаления в будущем.

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

Fortran 95 (1997)

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

Fortran 2003 (2004)

Дальнейшее развитие поддержки ООП в языке. Взаимодействие с операционной системой. Добавлены также следующие возможности:

Асинхронный ввод-вывод данных.

Средства взаимодействия с языком C

Усовершенствование динамического размещения данных

Стандартом предполагается поддержка средствами языка параллельных вычислений (Co-Arrays Fortran). Также предполагается увеличить максимальную размерность массивов до 15, добавить встроенные специальные математические функции и др.

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

Большинство таких библиотек является фактически достоянием человечества: они доступны в исходных кодах, хорошо документированы, отлажены и весьма эффективны. Поэтому изменять, а тем более переписывать их на других языках программирования накладно, несмотря на то, что регулярно производятся попытки автоматического конвертирования FORTRAN-кода на современные языки программирования.

Современный Фортран (Fortran 95 и Fortran 2003) приобрёл черты, необходимые для эффективного программирования для новых вычислительных архитектур, позволяет применять современные технологии программирования, в частности, ООП .

Эволюция стандартов языка

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

FORTRAN 66 (1972) На базе стандарта фирмы IBM FORTRAN IV FORTRAN 77 (1980) Введено множество улучшений: Fortran 90 (1991) Значительно переработан стандарт языка. Fortran 95 (1997) Коррекция предыдущего стандарта. Введён оператор и конструкция FORALL, позволяющие более гибко, чем оператор и конструкция WHERE, присваивать массивы и заменять громоздкие циклы. FORALL позволяет заменить любое присваивание сечений или оператор и конструкцию WHERE, в частности, обеспечивает доступ к диагонали матрицы. Данный оператор считается перспективным в параллельных вычислениях, способствуя более эффективному, чем циклы, осуществлению распараллеливания . Fortran 2003 (2004) Дальнейшее развитие поддержки ООП в языке. Взаимодействие с операционной системой. Добавлены также следующие возможности: Fortran 2008 (2010) Стандартом предполагается поддержка средствами языка параллельных вычислений (Co-Arrays Fortran) . Также предполагается увеличить максимальную размерность массивов до 15, добавить встроенные специальные математические функции и др.

Компиляторы

С момента первоначальной разработки языка, компиляторы Фортрана производит фирма IBM. В настоящее время фирмой IBM поставляется оптимизирующий компилятор VS Fortran для мэйнфреймов IBM System z , история развития различных версий которого восходит ещё к 1964 году , а также компилятор XL Fortran для платформ на базе архитектуры PowerPC - AIX , Linux и суперкомпьютера Blue Gene (выпускалась также версия для Mac OS X , когда компьютеры Macintosh использовали процессоры PowerPC). Оба этих компилятора содержат очень сложные оптимизаторы, являющиеся результатом непрерывной научной работы специалистов IBM на протяжении полувека. На базе компилятора IBM Fortran XL фирмой Absoft, бизнес-партнёром IBM, создан и поставляется компилятор Absoft Pro Fortran для систем на базе процессоров PowerPC (Linux, Mac OS X) и Intel (Linux, Mac OS X, Windows) .

Фонд свободного программного обеспечения GNU выпускал открытый компилятор Фортрана-77 g77, доступный практически для любой платформы и полностью совместимый с GCC . Сейчас ему на смену пришел компилятор GFortran , в котором реализованы практически все конструкции стандарта Фортран-95 и многие конструкции стандартов Фортран-2003 и Фортран-2008. Он также полностью обратно совместим с Фортран-77. Также существует независимый проект g95 по созданию на основе GCC компилятора Фортран-95.

Возможности и структура программы

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

Перфокарта с разметкой колонок для Фортрана.

Структура программ изначально была ориентирована на ввод с перфокарт и имела ряд удобных именно для этого случая свойств. Так, 1-я колонка служила для маркировки текста как комментария (символом C ), с 1-й по 5-ю располагалась область меток, а с 7-й по 72-ю располагался собственно текст оператора или комментария. Колонки с 73-й по 80-ю могли служить для нумерации карт (чтобы восстановить случайно рассыпавшуюся колоду) или для краткого комментария, транслятором они игнорировались. Если текст оператора не вписывался в отведённое пространство (с 7-й по 72-ю колонку), в 6-ой колонке следующей карты ставился признак продолжения, и затем оператор продолжался на ней. Расположить два или более оператора в одной строке (карте) было нельзя. Когда перфокарты ушли в историю, эти достоинства превратились в серьёзные неудобства.

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

Своего рода «визитной карточкой» старого Фортрана является огромное количество меток, которые использовались как в операторах безусловного перехода GOTO , так и в операторах циклов, и в операторах описания форматного ввода/вывода FORMAT. Большое количество меток и операторов GOTO часто делало программы на Фортране трудными для понимания.

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

Однако современный Фортран избавлен от избытка меток за счёт введения таких операторов, как DO … END DO, DO WHILE, SELECT CASE. Более того, в современных стандартах языка оставлен лишь классический оператор GOTO, применяемый во многих языках и поныне. Вычисляемый оператор GOTO, а также конструкция ENTRY - множественного входа в процедуры, были исключены.

Также к положительным чертам современного Фортрана стоит отнести большое количество встроенных операций с массивами и гибкую поддержку массивов с необычной индексацией. Пример:

Real ,dimension (: ,: ) :: V ... allocate (V(- 2 : 2 ,0 : 10 ) ) ! Выделить память под массив, индексы которого могут ! меняться в пределах от -2 до 2 (первый индекс) ! и от 0 до 10 - второй ... V (2 ,2 : 3 ) = V(- 1 : 0 ,1 ) ! Повернуть кусочек массива write(* ,* ) V(1 ,: ) ! Напечатать все элементы массива V, первый индекс которых равен 1. deallocate (V)

Hello, World!

Фиксированный формат (символами «␣» выделены пробелы в позициях строки с 1 по 6):

␣␣␣␣␣␣PROGRAM hello ␣␣␣␣␣␣PRINT* , "Hello, World!" ␣␣␣␣␣␣END

Свободный формат:

Program hello print * , "Hello, World!" end

Замечания.

  • Оператор PROGRAM не является обязательным. Строго говоря, единственный обязательный оператор Фортран-программы - оператор END .
  • Выбор прописных или строчных букв для написания операторов программы произволен. С точки зрения современных стандартов языка Фортран, множество прописных букв и множество строчных букв при написании операторов языка совпадают.

Взаимодействие с другими языками

Многие системы программирования позволяют компоновать полученные в результате трансляции фортрановской программы объектные файлы с объектными файлами, полученными от компиляторов с других языков, что позволяет создавать более гибкие и многофункциональные приложения. Для языка Фортран также доступно большое количество библиотек, содержащих как подпрограммы решения классических вычислительных задач (LAPACK , IMSL, BLAS), задач организации распределённых вычислений (MPI , pvm), так и задач построения графических интерфейсов (Quickwin , FORTRAN/TK) или доступа к СУБД (Oracle).

Фортран в СССР

Примечания

  1. См., например: Netlib Repository at UTK and ORNL
  2. А. М. Горелик . Эволюция языка программирования Фортран (1957-2007) и перспективы его развития//Вычислительные методы и программирование, 2008, Т. 9, с. 53-71
  3. Бартеньев О.В. Современный Фортран . - М .: Диалог МИФИ, 2005. - ISBN 5-86404-113-0
  4. А. М. Горелик. объектно-ориентированное программирвание на современном Фортране
  5. С. Д. Алгазин, В. В. Кондратьев. Программирование на Visual Fortran. - М .: «Диалог МИФИ », 2008. - 448 с. - ISBN 5-8243-0759-8
  6. Горелик А. М.Новости
  7. VS FORTRAN
  8. XL Fortran for Linux
  9. Absoft Pro Fortran Compiler Suites General Overview
  10. Sun Studio - Benchmarks
  11. Очерк Александра Расторгуева о появлении Фортрана в Дубне
  12. История компьютерной графики в России

Литература

  • Fortran. Programmer"s Reference Manual. The Fortran Automatic Coding System for the IBM 704 EDPM . - IBM Corp., 1956. - 51 с.
  • ISO/IEC 1539-2:2000 Information technology - Programming languages - Fortran - Part 2: Varying length character strings
  • Роберт У. Себеста. 2.3. Компьютер IBM 704 и язык Фортран // Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. - 5-е изд. - М .: Вильямс, 2001. - С. 63-69. - 672 с. - 5000 экз. - ISBN 5-8459-0192-8 (рус.), ISBN 0-201-75295-6 (англ.)

Ссылки

  • gfortran - Компилятор Фортрана 95/2003/2008, часть Коллекции компиляторов GNU
  • в Прогопедии - энциклопедии языков программирования (рус.)

Лекция 3. Структура программы. Реализация алгоритма линейной структуры на Фортране.

Структура программы на Фортране

Программа в общем случае состоит из головной (MAIN) программы и подпрограмм (SUBROUTINE и (или) FUNCTION).

    В головной программе запрограммирован весь алгоритм решения задачи.

    Программа всегда начинает и завершает выполнение в головной программе .

    В подпрограмме запрограммирована логически законченная часть алгоритма.

    Подгрограмма выполняется только при ее вызове и после исполнения управление передается назад.

    Подпрограммы облегчают программирование, разбивая алгоритм на части (структурное программирование).

    Подпрограммы позволяют создать заготовки наиболее часто решаемых типовых задач.

    Библиотеки стандартных программ состоят из подпрограмм, написанных профессионалами.

СТРУКТУРА ФОРТРАН - ПРОГРАММЫ

Общая структура основной (головной) Фортран - программы (MAIN PROGRAM ):

[ PROGRAM имя программы ]

[ ! КОММЕНТАРИИ ]

[ неисполняемые операторы - объявления ]

[ исполняемые операторы ]

END [ PROGRAM [имя программы ] ]

    – НЕОБЯЗАТЕЛЬНАЯ ЧАСТЬ КОНСТРУКЦИИ

    ТЕКСТ, ИЗОБРАЖЕННЫЙ ЗДЕСЬ КРАСНЫМ КУРСИВОМ ИМЕЕТ ВПОЛНЕ ОПРЕДЕЛЕННЫЙ СМЫСЛ И ЗАПИСЫВАЕТСЯ В СООТВЕТСТВИИ С ТРЕБОВАНИЯМИ ЯЗЫКА

    END ОПЕРАТОР ОБЯЗАТЕЛЬНО ЗАВЕРШАЕТ ПРОГРАММУ

Определение. Операторы – последовательность символов, которая задает определенные действия. Операторы делятся на: исполняемые и неисполняемые.

Исполняемые операторы задают действия над данными. Различают следующие типы таких операторов:

1. Операторы обработки информации.

    Операторы присваивания

    Операторы чтения (ввода)

    Операторы записи (вывода)

2. Операторы, управляющие работой программы во времени.

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

Комментарии предназначены человеку для документирования программы и для улучшения понимания алгоритма и операторов.

Алгоритм линейной структуры

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

Рассмотрим возможныев таких алгоритмах действия (шаги алгоритма и соответствующие им операторы Фортрана).

Операторы начала и конца программы

Первая строка программы рассматривается как начало программы. В современных версиях Фортрана принято оформлять программу оператором начала программы, за которым указывается имя программы:

PROGRAM {имя программы}

Обычно имя программы выбирают так, чтобы оно отражало назначение (содержание) программы. Например, PRIMER, SUMMA и т.д.:

PROGRAM PRIMER_1 ! имя программы PRIMER_1

PROGRAM POISK ! имя программы указывает на ее содержание

Оператор начала программы не обязателен, а вот заканчиваться программа должна обязательно оператором конца программы – END (см. раздел «Структура Фортран-программы). В Фортране-90 каждый оператор обычно занимает отдельную строку. Если в строке записывается несколько операторов, они разделяются точкой с запятой «; ».

Операторы ввода/вывода

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

Рассмотрим простой ввод данных с клавиатуры, для которого используется оператор READ, для вывода результатов на экран – оператор PRINT.

Общий вид операторов и правила работы с ними приведены ниже. Например, требуется ввести значения четырех переменных t, y, k и f:

READ* , t, y, k, f ! В списке ввода имена переменных отделяются запятыми

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

0.56 -2.756 100 0.003 ! Числа отделяются пробелом или

0.56, -2.756, 100, 0.003 ! Числа отделяются запятой или

0.56 ! Числа отделяются клавишей ENTER

В результате выполнения оператора ввода, переменная t получит значение 0.56, y получит значение -2.756, k будет равно 100, а f – 0.003. В списке ввода можно использовать только имена переменных, констант, и вводятся они в той же последовательности с клавиатуры, как было задано в операторе.

Для вывода результатов в алгоритме предусматривается специальный шаг – вывод:

ВЫВОД список вывода

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

Список вывода также может содержать поясняющие результат текстовые строки, например, вывод ′q=′, q, ′ масса m=′, m

В фортран – программе этот шаг алгоритма в простейшем случае заменяется оператором

PRINT* , список вывода

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

PRINT *,’x=’,x,’ y=’,y

Пусть в результате выполнения некоторых вычислений программы, x стало равным 3.09, а y = 5.01. Тогда на экране компьютера появится следующая строка:

Таким образом, текст, взятый в апострофы в операторе вывода, будет напечатан без изменения, а на месте имен переменных будут отображены их значения.

Наличие звездочки и запятой после слова READ/PRINT обязательны! Звездочка * означает, что значения переменных вводятся/выводятся на экран «по умолчанию», в том стандартном виде, который закодирован в Фортране.

Список вывода оператора PRINT может содержать:

    имена переменных,

    строковые константы (записываются в одиночных или двойных кавычках) для пояснения результатов и вывода текста,

    арифметические выражения. В этом случае сначала вычисляется значение арифметического выражения, а затем вычисленное значение выводится на экран.

Примеры:

PRINT*, ″WWOD M,N ″ ! вывод на экран текстовой подсказки для ввода

PRINT*, z, y ! Вывод только значений переменных z и y

PRINT*, ″ Z= ″, z, ″ Y= ″, y ! Вывод значений переменных z и y с пояснением

Вывод значения корня квадратного из числа 2 с пояснением:

PRINT*, " SQRT(2.0) =" , SQRT(2.0)

    Каждый оператор вывода формирует одну запись.

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

Оператор присваивания

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

Для записи операции присваивания будем в дальнейшем использовать символ = (не следует путать его с обычным знаком равенства).

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

Шаг алгоритма, в котором описывается вычисление по формулам или осуществляется явное задание значений, будем называть присваиванием. В блок-схеме такой шаг алгоритма изображается с помощью блока обработки. В Фортран – программе его заменяет арифметический оператор присваивания.

Арифметический оператор присваивания

Это выполняемый оператор, с помощью которого проводятся вычисления по формулам, задаются начальные значения, осуществляется «пересылка» значений из одной ячейки памяти в другую (переприсваивание значений).

Общий вид этого оператора: x = АВ,

где x – имя переменной (простой или с индексами), АВ - арифметическое выражение (правая часть формулы), = знак присваивания.

Для компьютера этот оператор - указание о выполнении следующих действий:

1) вычислить значение арифметического выражения (АВ) в правой части оператора при текущих значениях входящих в него переменных;

2) привести значение полученного результата к типу переменной, находящейся в правой части оператора;

3) присвоить переменой, находящейся в правой части оператора, вычисленное и приведенное к типу переменной значение результата.

Примеры

REAL:: A=3.4, F=5.25, B=9.7

A=F ! значение переменной F присваивается переменной A

J=B ! значение переменной B присваивается переменной J

PRINT*, “A=”,A,” F=”,F,” J=”,J ! вывод результатов на экран

A=5.25 F=5.25 J=9

INTEGER:: J=2, I

REAL:: A=3.3, F=5.25, B

Переменной B присваивается результат вычисления! выражения J*A+F , преобразованного к вещественному типу

PRINT*, “B=”, B ! вывод результата на экран

Переменной I присваивается результат вычисления! выражения J*A+F , преобразованного к целому типу

PRINT*, “ I=”, I ! вывод результата на экран

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

Рассмотрим примеры программ, составленных на основе линейного алгоритма.

Для значений x=0.2, , , d = x + b .

Блок-схема алгоритма:

Программа примера 3 :

T=(B*Z-SIN(Z)) / (Y+C*D*(Y*Z)**(1./7.))

PRINT*,” T=”,T

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

Пример 4. Составить программу вычисления площади вписанной в треугольник окружности , радиус , где –периметр треугольника.

Исходными данными задачи являются стороны треугольника a, b, c. Составьте блок-схему алгоритма самостоятельно.

Программа примера 4 :

program primer_4

parameter (pi=3.14159) !оператор задания констант

print*, “ Vvedite a, b, c” ! вывод поясняющего текста на экран

read*, a,b,c ! ввод длин сторон треугольника

p=a+b+c ! вычисление периметра треугольника

r=sqrt((p – a)*(p – b)*(p – c))/p) ! вычисление радиуса, вписанной окружности

s=pi*r**2 ! определение площади окружности

print*,” s=”,s ! вывод результата

В указанном примере число π имеет имя pi , поскольку в Фортране можно использовать только латинские буквы.

Вопросы к Лекции 3:

    Какова структура программы на Фортране?

    Для чего используются подпрограммы?

    Что содержит основная Фортран-программа (MAIN)?

    Изобразите схематично общую структуру программы на Фортране.

    Что такое подпрограмма?

    Что хранится в библиотеках стандартных программ?

    Дайте определение оператора.

    Что называется исполняемыми операторами?

    Какие операторы называют неисполняемыми?

    Какие операторы относятся к операторам обработки информации?

    Для чего нужны комментарии в программе?

    Что называют алгоритмом линейной структуры?

    Какая последовательность действий характерна для программы, реализующей линейный алгоритм?

    Как записывается оператор начала программы? Обязателен ли он?

    Запишите оператор конца программы в общем виде. Обязателен ли этот оператор при написании программы?

    Для чего используется оператор ввода? Как правильно он записывается?

    Как выглядит общий вид оператора вывода на экран?

    Для чего в записи операторов ввода/вывода используется символ звездочка *?

    Как можно разделять переменные при вводе их значений с клавиатуры?

    Какой порядок ввода переменных должен соблюдаться?

    Какие данные можно выводить с помощью оператора ввода?

    Для каких целей предназначен оператор вывода?

    Как можно вывести текст на экран компьютера?

    Запишите оператор вывода двух переменных a=4.5, k=3.

    Как оформить оператор вывода двух переменных a=4.5, k=3 с пояснительным текстом?

    Что называется оператором присваивания?

    Что представляет собой арифметический оператор присваивания?

    Запишите общий вид оператора присваивания.

    Какие действия должен выполнить компьютер в результате выполнения оператора присваивания?

    К какому типу приводится результирующее значение переменной, полученное в результате вычисления арифметического выражения?

    Почему в программе часто заменяют, где возможно, операцию возведения в степень операцией умножения?

  • gfortran
    • gfortran 4.5.0
  • Язык программирования

    Фортран (Fortran) - первый реализованный язык программирования высокого уровня (после ), правда, с одной небольшой оговоркой - для машин, построенных по классической схеме фон Неймана. Создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса (John Backus) в корпорации IBM. Через пару лет начались его коммерческие поставки. До этого программирование велось либо непосредственно в машинных кодах, либо на символических ассемблерах. Название Fortran является аббревиатурой от FORmula TRANslator, то есть, переводчик формул.

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

    Большинство таких библиотек является фактически достоянием человечества: они доступны в исходных кодах, хорошо документированы, отлажены и весьма эффективны. Поэтому изменять, а тем более переписывать их на других языках программирования накладно, несмотря на то, что регулярно производятся попытки автоматического конвертирования FORTRAN-кода на современные языки программирования.

    Своего рода «визитной карточкой» старого Fortran является огромное количество меток, которые использовались как в операторах безусловного перехода GOTO , так и в операторах циклов, и в операторах описания форматного ввода/вывода FORMAT . Большое количества меток и операторов GOTO часто делало программы на Фортране трудными для понимания.

    Именно этот негативный опыт стал причиной, по которой в ряде современных языков программирования (например, Java) метки и связанные с ними операторы безусловного перехода вообще отсутствуют.

    Однако современный Fortran избавлен от избытка меток за счет введения таких операторов, как DO … END DO, DO WHILE, SELECT CASE. Также к положительным чертам современного Fortran стоит отнести большое количество встроенных операций с массивами и гибкую поддержку массивов с необычной индексацией.

    Взаимодействие с другими языками

    Многие системы программирования позволяют компоновать полученные в результате трансляции программы на Fortran объектные файлы с объектными файлами, полученными от компиляторов с других языков, что позволяет создавать более гибкие и многофункциональные приложения. Для языка Фортран также доступно большое количество библиотек, содержащих как подпрограммы решения классических вычислительных задач (LAPACK, IMSL, BLAS), задач организации распределенных вычислений (MPI, pvm), так и задач построения графических интерфейсов (Quickwin, FORTRAN/TK) или доступа к СУБД (Oracle).

    Наследие Fortran

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

    Переносимость

    Поначалу переносимость для Fortran была весьма насущной проблемой, потому что не существовало ни одного единого стандарта и даже справочной информации от IBM. И компьютерные фирмы соперничали между собой, обеспечивая несовместимость для разных компиляторов. Исправило дело появление стандартов. Стандарт 1966 года устанавливал синтаксис и семантику, но продавцы продолжали внедрять несовместимые расширения. Осмотрительные программисты понимали, что использование несовместимых расширений вызовет проблемы переносимости и зачастую использовали программы наподобие «The PFORT Verifier» для выявления несовместимых расширений.

    Несовместимые расширения были не единственной проблемой. Существовал ряд проблем с численными вычислениями. Позже была развита и внедрена практически универсальная идея двоичной арифметики с плавающей запятой.

    Доступ к исполняемой среде (например, к командной строке, переменным среды) был весьма затруднителен, пока на это не обратили на это внимание в стандарте 2003 года.

    Сейчас относительно просто реализовать полностью переносимую программу на Fortran.

    Элементы синтаксиса:

    Комментарий до конца строки ! или * в первом символе строки
    Регистрозависимость Нет
    Регулярное выражение идентификатора переменной [_a-zA-Z0-9]{0-n}
    Присваивание значения переменной =
    Объявление переменной type:: variable
    Объявление переменной с присваиванием значения type:: variable = value
    Группировка выражений ()
    Блок do ... end do
    Равенство = или.EQ.
    Неравенство /= или.NE.
    Сравнение == < > <= >= <> или.LT. .GT. .LE. .GE.
    Вызов функции CALL f(a,b...)
    Вызов функции без параметров CALL f
    Последовательность конец строки
    Если - то if condition then ... end if
    Если - то - иначе if condition then ... else ... endif
    Цикл с постусловием DO ... WHILE (condition)
    Цикл for - next для диапазона целых чисел с инкрементом на 1 do label i = 1, 10
    Цикл for - next для диапазона целых чисел с декрементом на 1 do label i = 10, 1, -1

    Примеры:

    Hello, World!:

    Пример для версий Intel Visual Fortran 11.1 , g95 0.93 , gfortran 4.5.0

    Этот пример написан в свободном формате, поддерживаемом Fortran 90 и последующими стандартами, а также диалектом .

    Fortran 90-style comment program HelloWorld print * , "Hello, World!" end program HelloWorld

    Факториал:

    Пример для версий Intel Visual Fortran 11.1 , g95 0.93 , gfortran 4.5.0

    Используется итеративное определение факториала и свободный формат программы. Спецификации формата I и A используются для вывода чисел в десятичном формате и строк, соответственно. При вычислении факториалов 13-16 возникает арифметическое переполнение, не вызывающее ошибку, поэтому выводятся неправильные значения:

    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

    Числа Фибоначчи:

    Пример для версий Intel Visual Fortran 11.1 , g95 0.93 , gfortran 4.5.0

    Используется итеративное определение чисел Фибоначчи. Самое сложное в этом примере — вывод вычисленных значений в нужном формате, в одну строку и без лишних пробелов. Спецификация формата (I3, A, $) означает, что вначале выводится целое число в десятичном формате, шириной ровно три символа, затем выводится строка, и наконец, $ подавляет перевод строки, используемый командой print по умолчанию, так что все выводится в одну строку. Отметим, что в диалекте спецификатор формата $ не является стандартным; программа работает, но при компиляции выводит предупреждение об этом.

    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

    Квадратное уравнение:

    Пример для версий g95 0.93 , gfortran 4.5.0

    В примере используется встроенный тип данных complex . // — оператор конкатенации строк. Число перед скобками в описании формата означает количество раз, которые повторяется формат в скобках (в данном случае дважды — для первого и второго корней).

    program Quadratic integer :: a , b , c real :: d , p1 , p2 complex :: cp2 read (* , * ), a if (a == 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

    Hello, World!:

    Пример для версий f2c 20090411 , g95 0.93 , gfortran 4.5.0

    FORTRAN 77); первые шесть символов каждой строки зарезервированы под служебную информацию — отметки о том, что строка является комментарием или продолжением предыдущей, метки и номера строк. Стандартный набор символов Fortran не содержит символов нижнего регистра, поэтому все программы пишутся в верхнем регистре. Исключением из этого правила являются символьные константы — они могут содержать любые символы, которые поддерживаются системой.

    Первая строка дает этому фрагменту кода имя HELLO и указывает на то, что он является основной программой. Имя программы подчиняется тем же правилам, что и любые имена идентификаторов, т.е. должно начинаться с буквы и содержать не более 6 символов.

    Команда WRITE реализует вывод на печать. В скобках передается список управляющих параметров, настраивающих вывод: UNIT выбирает файл вывода (по умолчанию — консоль), FMT — формат вывода. Звездочки означают параметры по умолчанию. Имена параметров передавать не обязательно, сокращенно эта же команда выглядела бы как WRITE (*, *) ... .

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

    A simple Hello, World! program PROGRAM HELLO WRITE (UNIT =* , FMT =* ) "Hello, World!" END

    Факториал:

    Пример для версий f2c 20090411 , g95 0.93 , gfortran 4.5.0

    Этот пример написан в фиксированном формате (стиль FORTRAN 77) и использует итеративное вычисление факториала.

    Fortran позволяет пропускать объявления переменных; в таком случае он выводит их типы сам, но, в отличие от более поздних языков, не по контексту использования переменной, а по ее имени — если первая буква названия I..N, выбирается тип INTEGER , иначе — REAL . В данном случае обе переменные целые.

    Цикл DO в данном случае соответствует циклу FOR более поздних языков: счетчик цикла N последовательно пробегает все значения от 0 до 16. Тело цикла заканчивается на строке с меткой 1 , которая указана в заголовке цикла.

    Команда PRINT использует формат вывода по умолчанию, который варьируется в зависимости от используемого компилятора.

    PROGRAM) 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



    Попробовать написать здесь свой первый пост меня подтолкнула , где vt4a2h предлагает использовать для обучения C++. Да, на данную тему было сломано множество копий.

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

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

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

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

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

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

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

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

    Program hw write(*,*) "Hello, World!" end
    Синтаксис даже чуть проще Паскаля, нет необходимости ставить в конце строки "; " или ": " перед знаком равенства. Более того, людям, обладающих минимальным знанием английского языка, понять смысл простейшей программы не составит труда.

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

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

    Program chisla implicit none ! Variables integer n,i,s ! Body of chisla s=0 write (*,*) "Введите n" read (*,*) n if (n.le.0) then write (*,*) "Отрицательное или ноль" else do i=1,n s=s+i end do write (*,*) "Сумма=", s end if end
    Нетрудно заметить, что как мы думаем, так и записываем код. Никаких сложностей у обучаемого не может возникнуть в принципе. Внимательный читатель конечно же спросит, что за 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, позволяющий проводить высокопараллельные расчеты на видеокартах. Таким образом, пациент более чем жив, а значит программисты на Фортран остаются востребованными до сих пор.

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

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