Главная страница
Контакты





лек-1. Лекция1 основы программирования на языке фортран Алфавит языка Фортран


Скачать 334.5 Kb.
НазваниеЛекция1 основы программирования на языке фортран Алфавит языка Фортран
Анкорлек-1.doc
Дата06.07.2018
Размер334.5 Kb.
Формат файлаdoc
Имя файлалек-1.doc
ТипДокументы
#15389
страница1 из 3

Подборка по базе: Курс лекций Основы менеджмента.pdf, Дмитриев_Теоретические основы информатики2.pdf, РП_Будылдина Н.В. Основы сетевых технологий в.pdf, Давыдовский А.Г. Основы интегративной биосоциальной антропологии.
  1   2   3




Лекция-1
ОСНОВЫ ПРОГРАММИРОВАНИЯ

НА ЯЗЫКЕ ФОРТРАН
§ 1.1. Алфавит языка Фортран
В алфавит языка Фортран стандарта Fortran 90 входят 26 букв английского алфавита (заглавные и строчные буквы)

A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z;

a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t,

u, v, w, x, y, z

арабские цифры

0, 1, 2, 3, 4, 5, 6, 7, 8, 9,

символ подчеркивания и следующие специальные символы:

=

знак присваивания

$

знак доллара (денежный знак)

+

знак плюс




пробел



знак минус

!

восклицательный знак



звездочка



кавычки

/

слэш

%

процент

(

левая скобка

&

амперсанд

)

правая скобка



апостроф

,

запятая

<

меньше

.

десятичная точка

>

больше

:

двоеточие

?

вопросительный знак

;

точка с запятой







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

Традиционно в Фортране не различаются заглавные и строчные буквы. Пробелы используются, в частности, для оформления текста программы.
§ 1.2. Структура главной программы. Форматы записи
1.2.1. Структура главной программы.

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

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

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

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

[contains

внутренние процедуры]

end [program [имя программы]]

Как видно, при формальной записи структуры программы часть ее компонентов заключена в квадратные скобки. Это означает, что такие компоненты являются необязательными и могут отсутствовать. В частности, например, необязательным является оператор program, но если он присутствует, то должно быть задано и имя программы, в качестве которого может выбираться любое правильно сформированное в Фортране имя. Разумеется, если завершающий программу оператор end содержит имя программы, то оно должно совпадать с именем, заданным в операторе program.

Единственным обязательным оператором в главной программе является завершающий ее оператор end.

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

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

program sample_1_2_1 ! sample_1_2_1 – имя программы

real x, y, z ! Объявление типов переменных

x=1.2 ! Задание исходных значений переменных x,y

у=3.4

z=y-x ! Присваиваем z результат разности y и x

print *,’z=’,z ! Вывод результата на экран

! Результат вывода: z= 2.200000

end ! end – обязательный оператор завершения программы

Операторы Фортрана разделяются на исполняемые и неисполняемые.

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

x=1.2 ! Задание исходных значений переменных x,y

у=3.4

z=y-x ! Присваиваем z результат разности y и x

print *,’z=’,z ! Вывод результата на экран: z= 2.200000

end ! end – обязательный оператор завершения программы

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

program sample_1_2_1 ! sample_1_2_1 – имя программы

real x, y, z ! Объявление типов переменных

Второй оператор в этом фрагменте является неисполняемом оператором объявления типа. Дело в том, что в Fortran 90 рекомендуется (хотя это и необязательно) предварительно объявлять все используемые переменные, то есть явно указать их тип, а при необходимости и другие свойства. Заметим, что неисполняемые операторы объявления типа должны располагаться в программе до первого исполняемого оператора.

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

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

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

В примере, в частности, используются такие операторы присваивания:

x=1.2 ! Задание исходного значения переменной x

у=3.4 ! Задание исходного значения переменной y

z=y-x ! Присваивание z результата разности y и x


1.2.2. Свободный формат записи.

Представленная ранее простейшая программа написана в свободном формате. В свободном формате текст записывается по следующим правилам:

  • длина строки текста равна 132 символам;

  • запись оператора может начинаться с любой позиции строки;

  • на одной строке можно располагать несколько операторов, разделенным между собой точной с запятой ( ; );

  • если строка текста завершается символом &, то последующая строка воспринимается как строка продолжения;

  • в операторе Фортрана может быть до 7200 символов, число строк продолжения не может быть более 54;

  • любые символы, расположенные между восклицательным знаком ( ! ) и концом строки воспринимаются как комментарий.

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

program sample_1_2_1 ! sample_1_2_1 – имя программы

real x, y, z ! Объявление типов переменных

x=1.2; у=3.4; z=y-x ! Задание исходных значений переменных

print *,& ! Вывод результата на экран

’z=’,z ! Результат вывода: z= 2.200000

end ! end – обязательный оператор завершения программы


1.2.3. Фиксированный формат записи.

Заметим, что помимо свободного формата программу можно также записать и в так называемом фиксированном формате. Такой формат, являющийся наследником перфокарточной эры программирования, характерен для стандарта FORTRAN 77 и более ранних. Вместе с тем, Fortran 90 и более поздние стандарты поддерживают фиксированный формат, что обеспечивает соответствующую совместимость.
§ 1.3. Имена
Переменные, константы (постоянные), программные компоненты имеют имена. Имя – это последовательность латинских (английских) букв, арабских цифр и символов подчеркивания, обязательно начинающаяся с буквы. Имя не должно содержать более 31 символа. Важно еще раз отметить, что в Фортране, в отличие от многих других языков программирования, регистр букв не является значимым. Так, например, имена ab, Ab, aB, AB на Фортране это одно и тоже имя. Для большей «читабельности» текста программы программисту следует придумывать имена, отражающие смысл применяемых переменных, констант и программных компонентов.

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

Локальные и глобальные имена, определяемые программистом, не должны совпадать с именами встроенных в Фортран процедур, а также операторов и иных объектов Фортрана.
§ 1.4. Объекты данных
1.4.1. Виды объектов данных.

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

Типы данных разделяются на встроенные (например, целый или вещественный тип) и производные (они создаются программистом для описания объектов, обработка которых выполняется программой).

Данные могут быть организованы в виде скалярных объектов (скаляров) и массивов. В настоящей лекции будут рассматриваться только скалярные объекты, а массивы станут предметом изучения далее.
1.4.2. Встроенные типы данных.

Для описания различных данных в Фортране предусмотрены различные типы данных. В частности, укажем пять стандартных типов: целый (integer), вещественный (real, вещественные числа одинарной точности), комплексный (complex, комплексные числа одинарной точности), логический (LOGICAL) и символьный (CHARACTER).

В таблице 1.4.1 приведены сведения о диапазонах изменения числовых типов данных (целый, вещественный и комплексный типы).

При этом, в таблице 1.4.1 диапазон изменения вещественных чисел представлен в научном формате, в котором, например запись − 3.435E+38 обозначает − 3.435∙1038.

Память, занимаемая переменной или константой стандартного целого или вещественного типа, равна 4 байтам.

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

integer i, j ! Объявляем переменные целого типа i и j

real a, b ! Объявляем переменные вещественного типа a и b

complex d ! Объявляем переменную комплексного типа d

i=3; j=6*i ! Используем переменные в простых выражениях

x=1.5; y=0.2*x

d=(1.2, -2.4)*1.5 ! Возвращает: (1.8, -3.6)

Таблица 1.4.1. Диапазоны изменения числовых типов данных.



п/п

Тип

Диапазон изменения

1

integer

от − 2 147 483 648 до + 2 147 483 647

2

real

отрицательные числа:

от − 3.4028235E+38 до − 1.1754944E−38;

число 0;

положительные числа:

от + 1.1754944E−38 до + 3.4028235E+38;

дробная часть может содержать до шести десятичных знаков.

3

complex

Состоит из пары вещественных чисел одинарной

точности real, задающих действительную и мнимую

часть комплексного числа.

Параметр разновидности стандартных числовых типов данных равен четырем, то есть, например, для целого типа объявления integer и integer(4) эквивалентны.

В таблице 1.4.2 представлены возможные числовые типы данных.
Таблица 1.4.2. Возможные числовые типы данных.



п/п

Тип

Диапазон изменения

Число байт

Целый

1

integer(1)

от − 128 до + 127

1

2

integer(2)

от − 32 768 до + 32767

2

3

integer(4)

то же, что и integer

4

4

byte

то же, что и integer(1)

1

Вещественный

5

real(4)

то же, что и real

4

6

real(8)

отрицательные числа:

от − 1.797693134862316D+308

до − 2.225073858507201D−308;

число 0;

положительные числа:

от 2.225073858507201D−308

до 1.797693134862316D+308;

дробная часть может содержать

до 15 десятичных знаков.

8

7

double precision

тоже, что и real(8).

8

Комплексный

8

complex(4)

то же, что и complex

8

9

complex(8)

Состоит из пары вещественных чисел

двойной точности real(8), задающих

действительную и мнимую часть

комплексного числа.

16

10

DOUBLE

COMPLEX

то же, что и complex(8)

16


Тип real(8) называется вещественным типом двойной точности.

Запись типа 3.435D+38 для данных двойной точности обозначает 3.435∙1038.

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

Объект логического типа данных может принимать два значения: .TRUE. (истина) и .FALSE. (ложь). Объект стандартного логического типа объявляется оператором LOGICAL или LOGICAL(4), например

logical id1

logical(4) :: id2=.true.


Объект стандартного логического типа занимает в памяти 4 байта, объекты типа LOGICAL(2) − 2 байта, а LOGICAL(1) − 1 байт. Объекты с меньшим значением параметра разновидности используются, в частности, с целью экономии памяти.

Символьный тип данных имеет вид CHARACTER(n), где n − длина символьной строки (1≤n≤32767) или длина строки в байтах (занимает n байт). В частности, тип CHARACTER или CHARACTER(1) занимает 1 байт.
В заключении заметим, что в Фортране стандарта FORTRAN-77 синтаксис определения типа был иным, а именно вместо integer(1), integer, complex(4) и complex(8) используются соответственно integer*1, integer, complex*8 и complex*16.
1.4.3. Буквальные константы.

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

real(4) :: x=-1.2 ! Объявляем вещественную переменную x

! и используем буквальную константу -1.2 для

! задания начального значения переменной x

a=2.4*a-10.1 ! Использование буквальных констант 2.4 и

! 10.1 в выражении 2.4*a-10.1

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

+5, 5, -5

Константа может быть задана с указанием разновидности типа, значение которой указывается после значения константы и следующего за ним символа «_» (см. таблицу 1.4.3).

Таблица 1.4.3. Примеры задания буквальных целых констант.

Константа

Тип

Число байт

7_1

integer(1)

1

7_2

integer(2)

2

7_4

integer(4)

4


По умолчанию буквальные целые константы имеют тип integer(4).
Вещественные константыодинарной и двойной точности могут быть представлены в F-форме, E-форме и D-форме (последняя форма только для вещественных констант двойной точности). Вещественная константа одинарной точности занимает в памяти 4 байта, а двойной − 8 байт.

Вещественные константы в F-форме записываются в виде:

[+]|-[целая часть].[дробная часть][_разновидность типа]

где разновидность типа принимается равной 4 или 8.

Целая и дробная часть могут быть опущены (в таких случаях они считаются нулевыми), но не одновременно обе. Так, например, числа 5.3, 0.2 и -4.0 могут быть представлены следующим образом:

+5.3, 5.3, 5.3_4, 0.2, .2, -4.0, -4.

Вещественные константы в E-форме и D-форме имеют вид:

[+]|-[мантисса]E|e[+]|-порядок[_разновидность типа]

[+]|-[мантисса]D|d[+]|-порядок

Мантиссой называется число в F-форме или целое число. Нормализованной мантиссой называется число в F-форме, у которого целая часть равна нулю, а первый разряд после десятичной точки отличен от нуля. Так, например, числа 125.3, 0.008, -2.45 в представлении с нормализованной мантиссой соответственно равны

0.1253∙103, 0.8∙10-2, -0.245∙101.

Соответствующие записи на Фортране имеют вид (E-формы):

0.1253E+03, .1253E+03, 0.1253E+03_4, .1253E+03_4, 0.1253E+3;

0.8E-02, .8E-02, 0.8E-02_4, .8E-02_4, 0.8E-2;

-0.245E+01, -.245E+01, -0.245E+01_4, -.245E+01_4, -.245E+1.

Аналогично записываются и D-формы:

0.1253D+03, .1253D+03, 0.1253D+03_4, .1253D+03_4, 0.1253D+3;

0.8D-02, .8D-02, 0.8D-02_4, .8D-02_4, 0.8D-2;

-0.245D+01, -.245D+01, -0.245D+01_4, -.245D+01_4, -.245D+1.

E-формы и D-формы также называются экспоненциальными формами числа. В отличие от F-формы, их удобно использовать для представления больших и малых (по модулю) чисел.

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

[знак](действительная часть[_разновидность], мнимая часть[_разновидность])

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

Действительная часть и мнимая часть − это целая или вещественная константа, представляющая соответственно действительную и мнимую части комплексного числа.

Буквальная комплексная константа одинарной точности занимает в памяти 8 байт (действительная часть − 4 байта, мнимая часть − 4 байта) а двойной − 16 байт (действительная и мнимая части по 8 байт). При задании компонентов комплексной константы можно использовать одновременно для действительного и мнимого компонентов константы E, D и F-формы.

В качестве примера приведем некоторые варианты представления числа 4.5−3.2i в виде комплексной константы на Фортране. Имеем соответственно E и D-формы:

(4.5, -3.2), (4.5, -0.32E+1) , (4.5_4, -0.32E+1_4);

(0.45D+1, -0.32D+1), (4.5_8, -3.2_8).

Логические константы используются для записи логического значения истина (.TRUE.) или ложь (.FALSE.). Отсутствие хотя бы одной обрамляющей точки в записи буквальной логической константы является ошибкой.

По умолчанию буквальные логические константы занимают в памяти ЭВМ 4 байта. Разновидность типа буквальной логической константы может быть задана явно, подобно тому, как это уже объяснялось ранее для целых констант, например .TRUE._1, .TRUE._2 или .FALSE._1, .FALSE._2.

Символьные константы − это последовательность одного или более символов 8-битового кода. Последовательность символов называется строкой.

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

“Это константа” или ’Это константа’

“It’s a constant” или ’It’’s a constant’
1.4.4. Именованные константы.

При объявлении используемым в программе объектам данных могут быть сообщены дополнительные свойства. Это выполняется путем задания атрибутов, в частности, атрибута PARAMETER, после которого объект данных воспринимается в программе как именованная константа (в частности, так объект данных защищается от изменений в процессе вычислений), например:

real(4), parameter :: pi=3.14159 ! Задание вещественной

! именованной константы pi

integer(4), parameter :: n=10 ! Задание целой именованной

! константы n

integer(4) :: k=n ! Используем именованную константу n при

! объявлении целой переменной k

character(len=n) st ! Используем именованную константу n при

! объявлении символьной переменной st

k=k-2*n*n ! Используем именованную константу n в выражении

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

Атрибут PARAMETER может быть задан объекту данных, как в операторе объявления типа (рекомендуемый способ), так и самостоятельным оператором PARAMETER.

logical(1), parameter :: c1=.false._1 ! Первый вариант задания

! атрибута PARAMETER объекту данных

logical(2) c2 ! Второй способ задания – сначала

parameter(c2=.true._2) ! объявляем тип константы, а затем

! используем оператор PARAMETER


1.4.5. Переменные.

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

real(4) a, b, c ! Объявление вещественных переменных

! с именами a, b, c

Данный оператор объявляет три переменных вещественного типа. Такие переменные занимают по одной единице памяти. В рассматриваемом случае размер каждой единицы памяти составляет 4 байта.

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

В случае задания начальных значений (посредством описания) или атрибутов оператор объявления типа должен содержать разделитель ::, например,

real(4) :: a=1.5, b, c ! Разделитель :: здесь необходим

! так как объявляется и задается начальное

! значение вещественной переменной a;

! также объявляются переменные b и c

b=-0.83; c=10.1 ! Переменным b и c задаются значения

! буквальных констант -0.83 и 10.1соответственно

Синтаксис оператора DATA следующий:

DATA список имен/список значений/[, список имен/список значений/]...

где список имен представляет собой, в частности, список переменных, при этом элементы списка разделяются запятыми; список значений − это список констант или повторяющихся констант, разделенных запятыми (повторяющаяся константа − это элемент вида n*val, где n− целая положительная константа (буквальная или именованная), * − символ повторитель; такой элемент в списке значений означает, что n подряд расположенных переменных в списке имен получат в результате выполнения оператора DATA значение val). Приведем ниже пример использования оператора DATA:

integer(4), parameter :: m=10, n=20

real(4) x, y, z, a, b, c

data x /1.2/, y /-2.4/, z /10.125/, a, b, c /3*0.8/

Нельзя дважды инициализировать одну и ту же переменную. Заметим также, что в последних версиях языка Фортран оператор DATA следует размещать перед исполняемыми операторами программной единицы.

1.4.6. Правила умолчания о типах данных и их изменение.

В Фортране допускается не объявлять объекты данных (переменные, именованные константы и функции) целого и вещественного типов. В таких случаях тип данных объекта устанавливается автоматически в соответствии со следующими правилами умолчания: объекты данных, имена которых начинаются с букв i, j,k,l,m, n (или, разумеется, I, J,K,L,M, N), считаются объектами данных целого типа (integer), а все остальные объекты имеют вещественный тип (rEAL). Например:

integer(4) :: n=10 ! n - целая переменная

y=2*n; m=2*n ! y – переменная типа REAL, m - типа INTEGER

Заметим, что сформулированные выше правила умолчания не распространяются на часть встроенных функций.
  1   2   3