Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Книга Фортран Павловец 2008

.pdf
Скачиваний:
127
Добавлен:
31.05.2015
Размер:
1.55 Mб
Скачать

ПАВЛОВЕЦ В.В.

ИНФОРМАТИКА Программирование на Фортране

г.Минск «Асконто»

2006

1

УДК 004.432(035) ББК 32.973.26-018.1

П12

ПАВЛОВЕЦ, В.В.

П12 ИНФОРМАТИКА : Программирование на Фортране / В.В.Павловец. – Минск : Асконто, 2006. – 205с.

ISBN 985-90114-1-9

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

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

Книга предназначена для студентов, преподавателей, аспирантов и научных сотрудников.

 

УДК 004.432(035)

 

ББК 32.973.26-018.1

ISBN 985-90114-1-9

© В.В.Павловец, 2006

 

© Оригинал-макет, оформление обложки ООО «Асконто»,

 

2006

2

 

СОДЕРЖАНИЕ

 

СОДЕРЖАНИЕ

3

Введение

6

1. Константы

7

2. Типы констант

7

3. Переменные

8

4. Типы переменных

8

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

8

6. Арифметические операции

9

Арифметические выражения

10

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

10

7. Расположение текста программы на экране дисплея

11

Правила набора текста программ:

11

8. Технология прохождения фортран-программ на ЭВМ

13

Технология прохождения фортран – программ на ЭВМ

14

в Fortran PowerStation

14

9. Простейшие операторы ввода-вывода информации

17

10.

Арифметический оператор IF

18

11.

IF логический

20

12.

Табулирование функции

22

13.

Оператор цикла DO

23

14.

Массивы

28

15.

Вычисление определенного интеграла

30

16.

Работа с одномерными массивами

32

Второй способ ввода массивов:

32

Третий способ ввода массивов:

32

17.

Вывод массивов

33

Первый способ вывода массива

33

Второй способ вывода массива:

33

Третий способ вывода массива:

33

Четвёртый способ вывода массива:

34

Способ вывода массива в два столбца:

34

Фрагменты задач с одномерными массивами

34

Сортировка массива.

38

Второй способ сортировки массива:

39

18.

Конструкция IF THEN–ELSE IF THEN–ELSE – END IF

40

19.

Оператор DATA

42

20.

Модификации оператора GO TO

43

GO TO: вычисляемый.

43

Оператор GOTO по предписанию

44

21.

Работа с двухмерными массивами

44

22.

Ввод двухмерного массива

45

Первый способ ввода массивов:

45

Второй способ ввода массивов:

46

Третий способ ввода массивов:

46

Четвертый способ ввода массивов:

46

Фрагменты задач с двухмерными массивами

46

3

23.

Вывод двухмерного массива

50

24.

Подпрограммы

51

25.

Оператор-функция

51

26.

Подпрограмма FUNCTION

53

27.

Подпрограмма SUBROUTINE.

59

28.

Способы передачи данных в подпрограмму.

62

29.

Передача данных посредством оператора COMMON

64

30.

Использование библиотек стандартных программ (БСП)

66

31.

Оператор FORMAT

69

Спецификация X

70

Спецификация I

70

Разделители

71

Спецификация F

72

Особенности набора числовых данных при вводе информации

73

Использование повторителей в операторе FORMAT

74

Вывод по спецификации Fw.d

76

Ввод по спецификации Ew.d

76

Вывод информации по спецификации Еw.d

77

Ввод и вывод информации по спецификации Gw.d

78

32.

Работа с файлами

81

33.

Открытие файлов

81

34.

Непосредственная работа с файлом

83

35.

Форматный вывод информации

85

36.

Форматное чтение информации из файла

85

37.

Обработка сбойных ситуаций и ситуаций «конец файла» при вводе-выводе информации

87

Обработка сбойной ситуации

88

Обработка ситуации «конец файла»

88

38.

Операторы для работы с записями в файле

89

39.

Дополнение файла информацией

90

Первый способ дополнения файла информацией:

90

Второй способ дополнения файла информацией

91

40.

Работа с текстом

92

41.

Текстовые константы

92

42.

Текстовые подцепочки

99

43.

Вывод графиков

101

44.

Эквивалентирование текстовых переменных

104

45.

Создание библиотек

107

46.

Решение дифференциальных уравнений

107

47.

Работа с комплексными данными

110

48.

Ввод-вывод переменных комплексного типа

111

49.

Встроенные функции комплексного типа

112

50.

Оператор EQUIVALENCE

114

51.

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

115

52.

Файлы прямого доступа

117

53.

Способы передачи форматных записей

118

54.

Теория ошибок

118

55.

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

119

56.

Рекомендации по составлению программ

126

4

57. Командные файлы

128

Приложение 1. Сообщения транслятора фортран-95 об ошибках

130

Приложение 2. Сообщения об ошибках командной строки, компилятора и исполняющей

 

системы

145

2.2 Сообщения об ошибках компиляции

147

Сообщение о фатальных ошибках.

148

Сообщения об ошибках компиляции.

148

Сообщения о восстанавливаемых ошибках.

148

Предупреждающие сообщения.

148

2.2.1 Сообщения о фатальных ошибках компиляции

149

2.2.2 Сообщения об ошибках процесса компиляции

153

2.2.3

Сообщения о восстанавливаемых ошибках

187

2.2.4

Предупреждающие сообщения об ошибках

187

2.3 Сообщения об ошибках исполняющей системы

193

2.3.1 Сообщения об ошибках библиотеки исполняющей системы

193

2.3.2 Другие сообщения об ошибках исполняющей системы

203

Математические ошибки "низкого уровня"

203

Математические ошибки функционального уровня

205

Общие сообщения об ошибках исполняющей системы

206

5

Введение

Учебный план дисциплины «Информатика» предусматривает изучение текстового редактора, табличного процессора, использование сети «Интернет». Но наиболее важную и объемную часть дисциплины составляет изучение и квалифицированное использование одного из алгоритмических языков высокого уровня.

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

Но основным достоинством алгоритмического языка Фортран является то, что на нем была создана уникальная по своему назначению Библиотека научных и прикладных программ. В создании Библиотеки принимали ведущие научные центры США, Европы и тогдашнего

СССР. Наверное, не осталось ни одного раздела математики, которому не соответствовало бы несколько отлаженных, протестированных и многократно проверенных программ из Библиотеки. Пользователи других алгоритмических языков высокого уровня и в настоящее время вынуждены пользоваться Библиотекой Фортрана, поскольку на других языках таких библиотек просто не существует.

Отличием и несомненным достоинством языка Фортран является наличие данных комплексного типа. Это качество становится особенно полезным при моделировании физических процессов в области электроэнергетики, радиотехники, механики с использованием функций комплексных переменных. За период с момента своего создания Фортран претерпел несколько существенных изменений, значительно расширяющих его возможности. Но каждая новая версия позволяла оставлять работоспособными программы, написанные для предыдущих версий. С появлением Фортран Power Station под Windows возможности его еще более расширились. Появилась возможность более успешно использовать графические возможности языка.

Настоящее учебное пособие предназначено для тех, кто начинает осваивать язык программирования высокого уровня. Многочисленные фрагменты программ и примеры программ могут быть использованы и при изучении других, аналогичных по характеристикам, алгоритмических языков высокого уровня.

6

1. Константы

Константа – это величина, которая не изменяется в программе в процессе выполнения программы.

2. Типы констант

Существуют константы следующих типов:

1). Целого – это простые целые числа любого знака. Например: 3; 157.

Максимальным числом целого типа на 16-ти разрядных ЭВМ является число 32767, но уже на современных 32-х разрядных ЭВМ это число составляет порядка 109.

2). Константы вещественного типа – они могут записываться в двух формах: а). с фиксированной десятичной точкой – это числа следующего вида: -0.125; 1.7; -167.087

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

Вещественное число записывается в памяти ЭВМ в приближённом виде с гарантированной точностью до 7-го знака после запятой.

б). с плавающей десятичной точкой – применяются в основном для записи очень больших или очень маленьких чисел для более наглядного и понятного представления: 0.25Е–3; -1.57Е22 .

При записи вещественного числа с плавающей точкой в начале указывается знак числа, число (целое или вещественное), затем показатель степени - латинская буква E, за которой без пробела следует целая константа (показатель степени) со знаком или без знака. Так, например, -4.Е6 соответствует –4·106 (без использования Е это число выглядело бы –4000000.)

Константы вещественного типа могут находиться в диапазоне порядка 1037.

3). Константы комплексного типа – представляют собой два вещественных числа, заключённых в круглые скобки и разделённых между собой запятой.

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

Пример:

(1.35, -0.87)=1.35–0.87·j; (1.,.1)=1.+0.1·j

4). Логические константы – записываются в виде .TRUE. и .FALSE. и обозначают соответственно истина и ложь. Всегда с двух сторон ограничиваются точками.

5). Константы удвоенной значности – имеют такой же вид, как вещественные константы, содержащие показатель степени. Только присутствующая в показателе буква Е заменяется буквой D. Их точность представления вещественных чисел в 2 раза выше, а диапазон используемых значений имеет порядок 10307.

Пример:

3.0D–3 (0.003); –0.003D+2 (-0.3) 1.828D125

6). Текстовые константы – могут быть представлены в двух формах:

а). Старая форма – холлеритовская строка. Представляет собой число выводимых символов n, признак константы латинскую букву H и сами выводимые символы:

7

nHнабор символов

n – целая беззнаковая константа в диапазоне от 1 до 255. Пример:

9НЭнергофак б). строка символов, заключенная между двумя апострофами

’ЭНЕРГОФАК-2000’ ’ВЕСНА’’2002’

Символ «апостроф» внутри текста отображается двумя апострофами, идущими подряд. Последняя запись обозначает текстовую константу ВЕСНА’2002.

3. Переменные

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

избегать имен (идентификаторов), совпадающих с операторами языка, например REAL, READ,

атак же с именами встроенных функций типа SIN, TAN и т.д..

ВФортран-77 и более поздних версиях имя переменной может содержать более 6 символов (до 1320), но только первых 6 символов являются распознаваемыми. Поэтому нет смысла использовать имена переменных длиннее шести символов.

Примеры имен переменных: X, Y1, tok, kit, ambassadort. Имена переменных в программе могут быть набраны как прописными, так и строковыми буквами. В любом случае транслятор переводит символы к виду «прописные» и затем обрабатывает текст программы. В последнем имени распознаваемыми будут только первых 6 символов ambass.

4. Типы переменных

По неявному соглашению все переменные считаются вещественного типа за

исключением тех, имя которых начинается на одну из букв:

Пример:

I, J, K, L, M, N.

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

Во всех других случаях типы переменных задаются с помощью операторов описания.

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

К операторам описания относят операторы:

REAL – описывает переменные и массивы вещественного типа.

Если имеется переменная или массив целого типа (когда имя начинается на любую букву из I, J, K, L, M, N), то с помощью оператора REAL можно преобразовать их в переменную или массив вещественного типа.

Пример:

REAL K,LAM(5) K=2.5

INTEGER – описывает переменные и массивы целого типа.

8

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

Пример:

INTEGER X,TOK,B(10) TOK=4

B(1)=132

COMPLEX - описывает переменные и массивы комплексного типа. Все переменные и массивы комплексного типа обязательно должны быть описаны в программе оператором

COMPLEX .

После описания с помощью оператора COMPLEX переменная любого типа становится переменной комплексного типа.

Пример:

COMPLEX Q1,QX2,M12

CHARACTER - описывает переменные и массивы текстового типа (строковые). Все данные строкового типа должны быть описаны. Если длина строковой переменной не превышает 4-х байт, то ее можно не описывать.

Используется при непосредственной работе с текстом для описания переменных как текстовых.

Пример:

CHARACTER*10 C,C1,D12*15

Данная строчка означает, что в программе переменные C, C1, D12 являются переменными текстового типа (строковые), причём переменные С, С1 могут содержать до 10 символов. *10 – обозначает групповой описатель длины переменных. Переменная D12 может содержать до 15 символов текста. *15 – индивидуальный описатель длины переменной D12.

LOGICAL – описывает переменные логического типа. Пример:

LOGICAL T1,T2

DOUBLE PRECISION или REAL*8 - описывает переменные удвоенной значности.

6. Арифметические операции

Операции по приоритету в выражении или внутри круглых скобок: вычисление значений функций; ** -- возведение в степень; *, / - умножение и деление; +, – - сложение и вычитание; логические операции.

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

9

 

Встроенные функции языка FORTRAN

sin x

SIN(x)

ex

EXP(X)

cos 2x

COS(2.*x)

ln x

ALOG(X)

tg2 x2

TAN(x*х)**2

lg x

ALOG10(X)

arctg x

ATAN(x)

|x|

ABS(X)

2x

SQRT(2.*x)

max(a,b)

AMAX1(A,B)

3 x

X**(1./3.)

min(a,b,c)

AMIN1(A,B,C)

Предупреждение: Отрицательное число нельзя возводить в вещественную степень. Это справедливо и для функций sin, cos, ln, lg и других.

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

На момент начала выполнения программы все переменные и массивы имеют численное значение, равное нулю (за исключением тех, которые используются в операторе DATA). Другие численные значения переменным могут быть заданы оператором присваивания или оператором ввода информации READ.

Арифметические выражения

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

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

В общем виде записывается следующим образом:

переменная = выражение

Например, А=1.437 В=sin(A+0.5)

Символ « = » обозначает операцию «присвоить значение». При схожести с арифметической операцией «равно» (Y=48.), имеет существенное отличие в таких выражениях:

I = I+1 или X=X+DX

Последняя запись обозначает следующее: «взять число из ячейки X, добавить к нему число, хранящееся в ячейке DX, и результат записать в ячейку X».

Не могут находиться рядом два знака арифметических операций. Их необходимо отделять скобками .

T * (-2.* X)

Арифметические операции в выражении выполняются слева направо с учетом приоритета. При нескольких следующих подряд операциях возведения в степень они выполняются справа налево. Например: А=В**С**2 будет выполняться как:

10