:)
Язык программирования – это набор правил, определяющих способ записи алгоритма.
Написание текста программы – только один из этапов длинного пути.
1. Первое – определить задачу, формализовать ее. Определить, какие действия необходимы для ее решения, какие данные должны быть известны, что мы хотим получить. Разбиение задачи на максимально более мелкие подзадачи.
2. Затем – алгоритмизация – подробное расписывание порядка действий для решения этой задачи – опять - же максимально мелких. Собственно, на этом этапе кончается искусство программиста, инженера и т.д. Далее работа кодировщика.
3. Перевод на язык программирования. Оптимизация кода.
4. Трансляция и исправление ошибок при кодировке.
5. Прогон – результаты программисту или постановщику задачи .
6. Отладка – возврат к пунктам 2,3,4,5. Редко – к 1.
7. Решение задачи – месяцы расчетов – анализ удобства программы, возможен возврат ко всем предыдущим пунктам.
8. анализ результатов расчетов – возврат к предыдущим пунктам.
9. выводы, документирование, комментирование, причесывание и т.д.
При разработке программ с интерфейсом работа делится на две задачи – собственно задача и разработка интерфейса. Это уже из области искусства.
После того, как составлен исходный текст программы, он заносится в некоторый файл (обычно с расширением .for). Он не может быть выполнен компьютером, так как процессор «понимает» только числовой двоичный код. Поэтому надо выполнить следующий этап – трансляцию (или компиляцию) программы. Выходом компилятора (compiler) является файл с двоичным объектным кодом (обычно файл с расширением .obj). Но для преобразования его в исполняемый нужна еще одна стадия – линковка. Для этого запускается linker (редактор связей). Одной из его задач является нахождение в файлах библиотек кода стандартных подпрограмм (sin, cos, sqrt, …) и подключение его к объектным кодам. Кроме того, исходный код больших программ пишется в нескольких исходных файлах. После компиляции каждого из них получается свой объектный файл. Линковщик собирает все их вместе, настраивает адреса, глобальные данные и создает один исполняемый файл (чаще всего с расширением .exe).
Если исходный текст программы противоречит правилам языка программирования, компилятор выдает сообщения о синтаксических ошибках и прекращает работы. Программист должен исправить текст программы и заново запустить компилятор. Линковщик также может сообщить об ошибках, например, об отсутствии кода подпрограммы, которую пытается вызвать программист.
Есть еще один способ - интерпретация исходного текста программы. При этом программа – интерпретатор переводит программу по одной строке и сразу передает процессору на исполнение. Этот подход удобен для достаточно небольших программ. Если же программа большая и/или критична к времени исполнения, то придется использовать компилятор. Примером интерпретируемого языка является BASIC (правда, были выпущены и компиляторы).
Составив алгоритм –
поработай машиной – пройди по всем этапам и представь, что ЭВМ сможет сделать
по твоему алгоритму.
Для решения любой задачи мы должны оперировать данными – числами, текстом, образами и т.д. Мы должны хранить это все – где? – в памяти. Так же и ЭВМ должна хранить все – где? – в памяти. Программист должен позаботиться о месте хранения – выделить место. Для того, чтобы ЭВМ смогла работать с этими данными, необходимо дать имя этому месту. Для этого в языках программирования введено понятие переменной (реже - константы). Это имя области памяти, где хранится какая-то информация. Можно рассматривать это как ящички или плошки с котлетами. Когда мы работаем с информацией, она имеет какой-то тип и от него зависит набор действий над этой информацией. Следовательно и переменные должны иметь какой-то тип. Какие типы чаще всего используются – зависит от области работы программиста. Для расчетных задач - целые и вещественные. Их смысл понятен и так. Также бывают комплексные, символьные и логические.
Итак, определив те данные, с которыми придется программе оперировать, можно под них выделить переменные или константы. Переменные – для изменяющихся данных и для результатов.
Для определения типа служат НЕИСПОЛНЯЕМЫЕ операторы описания – т.е. операторы, которые не участвуют в решении задачи, а только подготавливают его – настраивают программу, информируют компилятор и т.д.
Несколько слов о правилах записи программы. Представьте тетрадку в клетку. Каждая клетка – позиция для одного символа. Есть два формата записи программы на языке Фортран: старый – FIXED и новый – FREE. В формате FIXED: с первой по пятую позицию в строке может стоять только метка – номер оператора, по которому вы сможете вернуться к нему в программе или сослаться на него. С 7 по 73 – поле операторов, после – комментарии. В 6 – продолжение строки. Комментарии могут стоять в любой строке программы, если поставить символ «С» в первой позиции.
Вернемся к переменным. У каждой переменной есть имя. По этому имени мы обращаемся к содержимому переменной. Как нам положить в переменную значение? Берем в Правую руку значение, в левую переменную и кладем:
«имя = значение».
Это называется оператором присваивания.
Для выполнения алгоритма пользователь должен задать компьютеру исходные данные. Компьютер положить их в выделенные для этого переменные. Для этого используется оператор ввода данных:
READ (*,*) список переменных
Например, при выполнении оператора READ (*,*) a,b компьютер ждет, пока пользователь не наберет на клавиатуре два числа и нажмет клавишу ENTER.
Fortran
Ранее стандарты языков программирования являлись формально чисто
американскими и утверждались Американским Национальным Институтом Стандартов (American National Standard Institute — ANSI),
позднее они стали фиксироваться также Международной Организацией Стандартов (International Standard Organization — ISO). Поэтому современные стандарты имеют обозначение
ANSI/ISO.
С момента создания первой системы Fortran
фирмой IBM в
В
В конце 2004 года опубликован новый
международный стандарт языка Фортран - Фортран 2003.
Фортран 2003 содержит существенные
нововведения. Некоторые из наиболее важных новых направлений:
·
Средства
объектно-ориентированного программирования.
·
Средства взаимодействия
с языком Си, обеспечивающие как вызов Си-функций из Фортран-программы,
так и наоборот.
·
Параметризованные
производные типы.
·
Новые средства
ввода/вывода (асинхронный ввод/вывод, потоковый доступ к файлам, новые
спецификаторы формата и др.).
·
Средства
обработки исключительных ситуаций для операций с плавающей точкой.
·
Новые
возможности, касающиеся размещаемых массивов.
·
Более полная
интеграция с операционной системой.
·
Новые встроенные
процедуры.
Одна из задач студента – научиться читать разнообразные описания языка программирования. Это и многочисленные, не всегда хорошие учебники, и HELP, и стандарт языка – формальное, сухое описание.
Для описания языка программирования используются две системы синтаксических обозначений – расширенная форма Бэкуса и синтаксические диаграммы. При этом [] обозначают, что заключенные в скобки элементы могут быть опущены. Например:
DO s [,] i=e1,e2[,e3] означает, что знак запятой после s и последнее выражение e3 могут отсутствовать.
Символ повторения – три точки – означает, что стоящий перед ними элемент может быть повторен 0 или более раз подряд. Например, в
INTEGER v[,v]… означает, что в одной инструкции может быть описано более одной переменной.
Синтаксическая диаграмма более наглядна. СД имеет вид железнодорожного разъезда, на котором развилки обозначают синтаксические альтернативы. Кружек и дуга обозначают, сколько раз можно пройти по указанному маршруту:
n в кружке – по данному пути можно пройти ровно n раз;
n под дугой - по данному пути можно пройти не более n раз;
логическая константа
показывает, что логическая константа есть либо .TRUE. , либо .FALSE.
Целая константа состоит из знака, который может отсутствовать, и последовательности из одной или более цифр.
Метка состоит от 1 до 5 цифр.
Последовательность – это множество элементов, упорядоченное путем установления взаимно однозначного соответствия с числами 1,2,…n. Последовательность может быть пустой, т.е. не содержать ни одного элемента. Пример – программа – последовательность инструкций, массив – непустая последовательность элементов, строка –последовательность литер.
Список – непустая последовательность синтаксических элементов, разделенных запятыми. Пример – спецификация форматов в инструкции FORMAT, имена переменных в в инструкции DATA, описатели размерности в декларации массива.
Статус определенности – означает, что в любой момент времени элемент находится в состоянии либо определенном, либо неопределенном. Определен – значит имеет некоторое значение, которое не изменится до явного переопределения, либо до перехода в состояние неопределенности.
НА ГЛАВНУЮ | ДАЛЕЕ |