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

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

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

Пример.
Функция-подпрограмма
FUNCTION R(X,Y,Z)
R = X*Y*Z(X)
RETURN
END
Функция-подпрограмма
FUNCTION ST(X)
ST = X + SQRT(X**2)
RETURN
END
Вызывающая программа EXTERNAL ST
X = 2.
C = D + R(X,X,ST)
Если в операторе EXTERNAL стоит имя библиотечной функции фортрана, то оно становится именем функции, написанной пользователем, и подавляет вызов библиотечной.
Например, пользователь написал, по его мнению, более эффективную программу вычисления sin(x). Тогда в главной программе следует указать
EXTERNAL SIN
и присоединить программу, реализующую эти вычисления:
FUNCTION SIN?X)
SIN = ...
89
RETURN
END
Тогда при обращении в головной программе
Y = SIN(X)
будет вызываться программа пользователя, а не библиотечная.
Ранее было показано, что числовые значения переменным можно присвоить с помощью оператора присваивания. Однако если переменных много, то удобнее начальные значения присвоить до выполнения программы с помощью оператора DATA, который имеет следующий вид:
DATA pi,.,^PN/Cl,...,CN/,Ql,...,QM/Zl,...,ZM/
Здесь Р1,...,PN — имена переменных; С1,...,CN—соответствующие константы; Q1,... ,QM — переменные; Z1,..., ZM—соответствующие константы и *г. д. Перед константами можно ставить множитель N, указывающий число повторений этой константы в списке констант.
Пример.
DATA X,Y,Z/3*2.05/,M(l,2)/3/
Этот оператор эквивалентен следующим операторам присваивания:
Х = 2.05
Y = 2.05
Z = 2.05 M(l,2) = 3
?
Место оператора DATA в программной единице—после всех невыполняемых операторов, за исключением, возможно, оператора FORMAT, который может находиться в любом месте программы.
Все переменные, используемые в программе, перед вычислениями должны быть каким-либо способом инициализированы, т. е. им следует присвоить значения (операторы присваивания, ввода, DATA). Плохим «стилем» программирования является отказ от инициализации и предположение, что ячейки памяти перед входом в программу будут очищены (хотя на некоторых ЭВМ так и происходит).
•3.3. Программирование элементарных вычислительных алгоритмов
3.3.1. Введение. В настоящем пункте рассматриваются приемы программирования на фортране элементарных вычислительных алгоритмов. Элементарными эти алгоритмы называются потому, что дальнейшее разбиение их на более мелкие вычислительные процедуры практически нецелесообразно. Логика таких алгоритмов сравнительно проста.
90 Ч'-
V,
Рассмотрение ведется в соответствии с разделами библиотеки фортран-программ (см. гл. 12). Программы оформляются в виде подпрограмм или функций-подпрограмм с именами, согласованными с библиотечной системой имен. Например, имя программ А481, В582 означает, что они относятся
к разделам А4 «Интегрирование» или В5 «Нелинейная оптимизация», 81, 82—«простая» программа номер 1 или 2.
Естественно, что «простые» программы для элементарных алгоритмов могут быть также включены в библиотеку программ и использоваться наряду со «сложными» программами. Отличие элементарных вычислительных алгоритмов связано в основном со значительно меньшей универсальностью в сравнении с библиотечными алгоритмами. Их область применения более узкая; как
правило, нет возможности автоматического контроля погрешности вычислений, нет диагностики возможной ошибки и т. п. Однако при всех недостатках элементарные программы имеют и преимущества, которые могут «перевесить» недостатки: 1) эти элементарные программы малы по числу операторов, т. е. занимают меньше ячеек памяти ЭВМ, чем универсальные; 2) элементарные программы пишет пользователь для своей задачи, а никто лучше него самого не знает алгоритм и данные.
Элементарные или «простые» алгоритмы и программы не
означают, что они плохи. Их эффективность может быть значительно выше универсальных алгоритмов, но для специальных классов задач.
Наконец, имея опыт программирования элементарных алгоритмов, можно, следуя идее структурной алгоритмизации (см. гл. 2), проектировать достаточно сложные алгоритмы и программы из элементарных.
3.3.2. Табулирование функций. Составление таблиц функций
называют табулированием. Предварительно вычисленные таблицы, хранимые в памяти ЭВМ, могут затем значительно сократить дальнейшие вычисления.
Пусть необходимо иметь таблицу значений функции /(х) с заданным постоянным шагом А в п точках х0-И’А, 1,
начальное значение х0 задается.
Входные данные задачи: /Ы, А, х0, п;
выходные данные: /(х0),/(х^), 1).
Подпрограмме присвоим имя 2080. Поскольку в библиотеке нет раздела табулирования, введен новый индекс 20.
Для вычисления выходных данных—массива У1=/(х^)—используется следующий фрагмент:
Х = Х0
БО 1 1=1,N У(1) = Е(Х)
1 х=х+н
91
Здесь используется F—имя функции-подпрограммы, которая должна вычислять /(*). Теперь, следуя правилам фортрана, оформим подпрограмму Z0S0. Имеем
SUBROUTINE Z0S0(F,H,X0,N,Y)
REAL H,X0,Y(N),X INTEGER N
x=xo
DO 1 1 = 1,N Y(I) = F(X)
1 X=X+H RETURN END
Пусть требуется составить таблицу функции / (х)=е “ *+arc tg х в интервале * [0, 1] с шагом h=0, 01. Программа может иметь следующий вид:
REAL X0,H,Y(100)
INTEGER N
Предыдущая << 1 .. 27 28 29 30 31 32 < 33 > 34 35 36 37 38 39 .. 168 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

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

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed