Научная литература
booksshare.net -> Добавить материал -> Математика -> Боглаев Ю.П. -> "Вычислительная математика и программирование " -> 29

Вычислительная математика и программирование - Боглаев Ю.П.

Боглаев Ю.П. Вычислительная математика и программирование — Высшая школа, 1990. — 546 c.
ISBN 5-06-00623-9
Скачать (прямая ссылка): vychmatiprog1990.djvu
Предыдущая << 1 .. 23 24 25 26 27 28 < 29 > 30 31 32 33 34 35 .. 168 >> Следующая

WRITE (6, 1) В
3.2.8. Операторы передачи управления, циклы. Операторы выполняются в программе последовательно, однако часто необходимо в алгоритме изменять естественный процесс выполнения программы. Этой цели служат операторы передачи управления. Таких операторов несколько.
1) Оператор безусловной передачи управления
GO ТО N 3
Здесь N — метка оператора, который должен выполняться следующим.
Пример. * .
Х = 0.5 GO ТО 3 Y = 1.
3 Х = 0.5*Х
В этом фрагменте показан переход выполнения программы на оператор с меткой 3.
2) Арифметический оператор условной передачи управления
IF (W) N1, Щ, N3
Здесь W — арифметическое выражение, N1, N2, N3 — метки операторов (могут совпадать). Этот оператор изменяет последовательный ход выполнения программы, но управление может быть передано в три места программы в зависимости от знака арифметического выражения.
Если W<0, то передача управления на оператор с меткой N1.
Если W = 0, то передача управления на оператор с меткой N2.
Если W>0, то передача управления на оператор с меткой N3.
Арифметический оператор IF является устаревшей конструкцией фортрана, более употребителен логический оператор IF, описываемый ниже.
Кроме того, применение трех различных меток в этом операторе нарушает принятое в гл. 2 соглашение об использовании только логической схемы с двойным ветвлением. Однако противоречие снимается, если всегда в арифметическом операторе IF употреблять две совпадающие метки, что мы и будем делать.
Пример.
D = B**2 — 4.*А*С IF (D) 2, 1, 1
76
*
2 ALPHA = 3.
1 ALPHA = 26.
С помощью операторов передачи управления GO ТО и IF или IF можно организовать в программе цикл.
Цикл—это совокупность операторов, которые выполняются в программе несколько раз.
Пример. Найти N! = 1*2*...*N, N задано.
Обозначим NF результат
NF= 1 1=1
1 NF = NF*I
2 IF (I —N) 3, 5, 5
3 1=1+1
4 GO TO 1
5
Операторы 1—4 — цикл. Выход из цикла дает оператор с меткой 2 при I = N.
Цикл можно организовать с помощью специального оператора цикла.
3) Оператор цикла
DO N 1 = М1, М2, М3
Здесь N—метка последнего выполняемого оператора цикла, I — целая переменная, Ml, М2, М3 — целые константы и выражения Первый оператор цикла—DO, последний помечен меткой N. Цикл повторяется при различных I. Начальное значение I равно Ml, конечное — М2, шаг изменения I равен М3. Если М3 = 1, то можно записать оператор цикла короче:
DO N I = M1, М2 Значение шага М3 не должно быть равным 0, но может быть отрицательным.
Пример. Предыдущая задача вычисления N! с помощью оператора цикла решается так:
NF=1
DO 5 1=1, N 5 NF = NF*I
Последний оператор цикла не должен быть оператором передачи управления, так как сам оператор DO управляет передачей управления на начало цикла. Иногда это правило не дает возможностей выйти из цикла. Тогда последним оператором цикла ставят оператор продолжения
N CONTINUE
где N — метка, цикл записывают так:
77
DO N I = Ml,М2,М3 N CONTINUE
В области действия одного оператора DO может содержаться другой оператор DO со своей областью действия—вложенные циклы, например
DO N 1 = Ml,М2,М3
DO К J = N1,N2,N3
К CONTINUE
.1
N CONTINUE
Проиллюстрируем действие оператора DO на двух примерах.
1. Вычисление- конечной суммы числовой последовательности. Пусть необходимо найти сумму S:
зо
S= ? exp (-и).
я = 1
Программа решения этой задачи может иметь вид
REAL S,X INTEGER N
N=30
С ПЕРЕД ЦИКЛОМ СУММИРОВАНИЯ ПЕРЕМЕННОЙ,
С В КОТОРОЙ БУДЕТ ПРОИЗВОДИТЬСЯ НАКОПЛЕНИЕ
С СУММЫ, ПРИСВАИВАЕТСЯ НУЛЕВОЕ ЗНАЧЕНИЕ
s=o.
DO 1 1 = 1,N X=FLOAT(I)
1 S = S + EXP(—X)
С ВЫВОД НА ТЕРМИНАЛ ЗНАЧЕНИЯ СУММЫ
WRITE (5,2) S
2 FORMAT (2X,'S=',E13.6)
END
2. Вычисление произведения W двух матриц U и V. Формула произведения матриц
т
wi,j= Е ЧкУк.г 1 1 ^j<n.
*=1
Пусть известны значения т = 1=п = 3. Программа вычисления элементов матрицы w может иметь вид
REAL U(3,3),Y(3,3),W(3,3)
С ВВОД МАТРИЦ U,Y
READ (5,1) U,Y 1 FORMAT (3F4.1)
\
IQ '
С ВЫЧИСЛЕНИЕ W(I,J)
DO 10 1 = 1,3 DO 10 J= 1,3 W(I,J) = 0.
DO 10 K=l,3 10 W(I,J) = W(I,J) + U(I,K)*Y(K,J)
С ВЫВОД НА ТЕРМИНАЛ МАТРИЦЫ W
WRITE (5,100) W 100 FORMAT (2X,E13.6)
END
Для ввода—вывода элементов массива применяется конструкция фортрана, которая называется неявным циклом. Эта конструкция аналогична действию оператора цикла DO.
4) Неявный цикл записывается в форме
(А(1), 1=М1, М2, М3)
для одномерного массива А,
((A(I,J), I = M1,M2,M3), J=N1,N2,N3)
для двумерного массива А, где Ml, М2, М3, N1, N2, N3 имеют тот же смысл, что и в определении цикла.
Ввод (вывод) с помощью неявного цикла программируется, например, следующим образом:
READ (5,1) (W(I), 1=1,3)
1 FORMAT (F4.1)
неявный цикл удобен для ввода элементов массива с переменными размерами. Например,
REAL А (10,5)
С ВВОД ЧИСЛА СТРОК И СТОЛБЦОВ МАТРИЦЫ A(I,J)
READ (5,1) M,N
1 FORMAT (212)
С ВВОД ЭЛЕМЕНТОВ МАТРИЦЫ A(I,J)
READ (5,2) ((A(I,J), 1= 1,M),J = 1,N)
2 FORMAT (F4.1)
3.2.9. Логические выражения, условный логический оператор.
Логические выражения состоят из следующих компонентов: выражений отношения, логических операций, логических переменных и констант.
Предыдущая << 1 .. 23 24 25 26 27 28 < 29 > 30 31 32 33 34 35 .. 168 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed