ВУЗ: Нижегородский государственный технический университет
Категория: Учебное пособие
Дисциплина: Информатика
Добавлен: 23.10.2018
Просмотров: 5126
Скачиваний: 18
36
При необходимости смены приоритета можно пользоваться круглыми
скобками.
Например, выражение
t
u
bz
x
ay
2
2
2
sin
*
+
+
в Фортране имеет вид:
SQRT((a*y**2+x)/(b*z**2+u))*SIN(t)**2
Если вместо квадратного корня стоит, например, кубический, то такая
функция отсутствует, и необходимо выражение возвести в степень 1/3. При
этом необходимо помнить о правилах расчетов между целыми и вещественны-
ми константами:
(((a*y**2+x)/(b*z**2+u))*SIN(t)**2)**(1./3.)
Простейшие операторы Фортрана
Оператор присваивания
Структура оператора: A=B
Здесь A - переменная; B - арифметическое выражение, значение которого
присваивается переменной A. Например, последовательность операторов: x=1;
y=3; z=2x+5y выполняется следующим образом. Сначала в условные ячейки
памяти, соответствующие переменным x и y, будут записаны соответствующие
константы. Затем процессор производит вычисление выражения 2*1+5*2, а ре-
зультат (12) будет направлен в ячейку, соответствующую переменной z (рис. 7).
Рис. 7. Иллюстрация работы оператора присваивания
Оператор ввода данных
Структура оператора: READ(*,*) A,B
Здесь READ(*,*) - имя оператора; A,B - список переменных, значения ко-
торых вводятся с клавиатуры. Первая звездочка в имени оператора указывает
1
3
12
Процессор
x
y
z
37
на то, что ввод осуществляется с клавиатуры, а вторая – на то, что ввод бес-
форматный.
Например, рассмотрим работу оператора READ(*,*) x,y.
Компьютер, выполняя этот оператор, находится в ожидании ввода двух
чисел. Ввод осуществляется с клавиатуры через запятую, по окончании ввода
нужно нажать клавишу Enter. После этого в условные ячейки памяти x и y бу-
дут записаны соответствующие данные. В отличие от предыдущего оператора,
эти данные могут меняться при повторном запуске программы.
Оператор вывода данных
Структура оператора: WRITE(*,*) 'текст',A,B
Здесь WRITE(*,*) - имя оператора, 'текст' - необходимые пояснения (мо-
гут отсутствовать), A,B - список переменных, значения которых выводятся на
экран дисплея.
Например, пусть в процессе работы программы возникла ситуация, пока-
занная на рис. 7, (x=1; y=3; z=12). Теперь запишем оператор WRITE(*,*) x,y,z.
В этом случае на экране дисплея появится следующая информация:
1 3 12
Более наглядным является вывод с использованием текстовых фрагмен-
тов. В результате работы оператора
WRITE(*,*) ‘x=’,x,’y=’,y,’z=’,z
на экране дисплея появится следующая информация:
x=
1 y=
3 z= 12
Оператор окончания программы
Структура оператора: END
Ставится в конце программы и не может иметь метки.
38
3.4. Программирование задач на простые переменные
Запишем программу примера линейного алгоритма, блок-схема которого
приведена на рис. 6.
WRITE(*,*)’Введите b,c,x’
READ(*,*)b,c,x
y=x**2+b*x+c
WRITE(*,*)’b=’,b,’c=’,c,’x=’,x,’y=’,y
END
Разветвляющийся алгоритм
Часто требуется в зависимости от конкретного набора данных или про-
межуточных результатов выбрать один из двух или более различных вариантов
продолжения вычислительного процесса. Если в зависимости от выполнения
условия выбирается один из двух (или более) различных вариантов вычисли-
тельного процесса, то такой алгоритм называется разветвляющимся. В зависи-
мости от того, удовлетворяется ли условие, выполняется «действие 1» или
«действие 2», после чего вычислительный процесс вновь сводится в единое
русло.
Для программирования разветвлений используются операторы условного
и безусловного перехода. Кроме того, могут использоваться структурный опе-
ратор IF...ELSEIF...ELSE ...ENDIF, что делает программу более компактной.
Рассмотрим вначале структуру операторов условного и безусловного перехода,
поддерживающих классический стиль программирования. В этом случае алго-
ритм можно представить в виде блок-схемы, каждому элементу которой соот-
ветствует определенный оператор.
Оператор условного перехода
Структура оператора: IF (A¤B) GOTO M
Здесь IF - имя оператора; A и B - арифметические выражения; ¤ - опера-
ция отношения; M - метка оператора, к которому осуществляется переход при
выполнении условия. Если условие не выполнено, управление передается на
39
следующий после IF оператор. На блок-схеме этот оператор соответствует бло-
ку разветвлений.
Оператор безусловного перехода
Структура оператора: GOTO M
Здесь GOTO - имя оператора, M - метка оператора, к которому осуществ-
ляется переход. В отличие от оператора условного перехода, данный оператор
осуществляет переход к оператору с меткой M всегда, то есть без проверки ка-
ких-либо условий. На блок-схеме оператор безусловного перехода соответству-
ет обводящей стрелке, указывающей соответствующий переход.
Пример 1. Вычислить значение функции
⎩
⎨
⎧
>
≤
+
+
=
3
1
x
если
bx
3
1
x
если
c
bx
x
y
2
,
,
;
,
,
при любых заданных значениях параметров b, c, x. В зависимости от значения x
вычисление y происходит либо по первой, либо по второй формуле.
Блок-схема
Программа на Фортране
WRITE(*,*) ’Введите b,c,x’
READ(*,*) b,c,x
IF (x.LT.1.3) GOTO 5
y=b*x+c
GOTO 6
5 y=x**2+b*x+c
6 WRITE(*,*)
’b=’,b,’c=’,c,’x=’,x,’y=’,y
END
b,c,x
x
≤1,3
y=bx
y=x
2
+bx+c
конец
да
нет
b,c,x,y
40
Пример 2. Из двух возможных значений, просчитываемых по формулам
ax и xa, выбрать наибольшее и присвоить его переменной y. Таким образом,
требуется найти y = max
{
ax, xa
}
, если заданы a и x.
В отличие от предыдущей задачи, где, в зависимости от проверяемого ус-
ловия, производилось вычисление y по одной из заданных формул, в данном
примере производятся вычисления по обеим формулам, а лишь затем произво-
дится отбор максимального значения.
Блок-схема
Программа на Фортране
WRITE(*,*) ’Введите a,x’
READ(*,*) a,x
b=a**x
c=x**a
IF (b.LT.c) GOTO 7
y=b
GOTO 8
7 y=c
8 WRITE(*,*)
’a=’,a,’b=’,b
WRITE(*,*)’y=’,y
END
a,x
b<c
y=c
y=b
конец
да
нет
a,x,y
b=a
x
c=x
a