Файл: Богданов В.С. Системы математического обеспечения цифровых вычислительных машин учеб. пособие.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 06.08.2024
Просмотров: 59
Скачиваний: 0
- 70 -
используя модификацию индексов или индексных выражений. Для выполнения этой работы используется оператор цикла.
Такое использование оператора цикла является наиболее ■цошным средством АЛГОЛа.
• Примеры. .
I . Написать программу вычисления функции.
Программа будет .иметь вид:
'Begin te a t s; integer і ; а н о д Х[П2о]
»§оі I - ■і step / antit 20 do
end.
2 . Начислять скалярное произведение двух векторов CL и 6
размерности / 2 = 9 .
Begin teal scat; іпЩег S ;attag
А, В [0-9] i .
Scat: —О;
§оі S: = О step / иntit 9do Scat: =scat+ AL-S]x3[S]
e n d .
3. Записать алгоритм произведе:мя двух матриц А и В.
/О.//, CL/2,..., |
<Xjr l\ |
( і>, |
\ |
f |
С, \ |
I 0-2.1) а г2) •••) |
&2П |
( $2 |
|
__ ( |
Сд |
\ dftt, &Пг )" •) (Хпп) \ ѵп / |
\ сп / |
- 7i -
Элементы патрицы С вычисляется по формуле
а у х £ } 1 ~ 4 ,г ,...> п .
Для организации процесса вычислений нужно построить вы
числительный процесс с двумя циклами: один - внешний, по L
другой - внутренний, |
по J . |
|
Программа вычислений будет иметь вид: |
||
•веді'п integer |
аггад |
a fy.-zoj иго] |
|
£,с [<-.20]} |
|
fcnc. = / step / ипШ п do |
||
|
Sepia СCiJ: =О; |
|
f a ^ - |
tö tep / untcS n do |
|
c[£]: =c[i] + a[ijJJ* S[JJ |
||
|
end |
-• |
|
end. |
§16. Переключатели
ВАЛГОЛе переключатель представляет собой обобщение идеи условной передачи управления. Передача управления'осу ществляется к одному из многих операторов по результатам вычисления некоторого арифметического выражения. Передачу .
управления операторами i £ / , S |
, еО. 7 , |
, аСЗ в завкси- |
мости от того, чему равно целое |
і - |
1 ,2 ,3 ,4 ,5 , , , , можно |
осуществить посредством условного оператора и оператора пе рехода, а именно:
i f i = -/ then до іо X/, е&е іЦ...
Этот способ громоздкий, поэтому и вводится специальная
- 72 - конструкция "переключатель". Он вводится посредством описа
ния |
bti, 3 , р 7 ,43j £ 3 . |
Svritch д : = |
|
Для использования клоча достаточно в определенном мес |
|
те программы написать |
|
д о to |
д [ і ] t |
где L - индексное выражение, определявщее порядковый но мер метки оператора, которому передается управление,
иетки в переключателе перенумерованы от I и т .д . Описания переключателей должны ставиться в заголовке
блока, среди описаний массивов и других видов описаний. Пример. Составить программу с описанием переключателей,
выполняющих следующие вычисления:
а) если п = -2, |
д = і>х-Сбілх ; |
|
|
||
/? = - / , |
|
д = З а х 3ч-ё + СС06Х-, |
|
||
п - . о , |
Ъ = а х 3 + ёх + с<9йгХ] |
|
|||
/г - ' І , |
|
lj = |
_ CC0SX; |
||
ëegin |
|
X, g, |
c, a ; in te g e z |
n |
• |
sw itch |
Cf: — PO, P i\P 2 ,P3; g o t o |
g |
[ n +з.\Jj |
||
PQ:g: = |
в * X - |
С X s in (X ) i $ 0 to |
n e x t ; |
||
P i: If'- - 3 |
*Ct*Xt2. -f 5+ C * COS(X): g o to n e x t j |
next: печать (x, u) end.
C
Указатель ключа g [i] , где .V - индексное выранение^яв-
ляется именующим, определяющим метку. Метка и указатель пе-
- о -
реклачателя - простые именующие выражения. Более сложные име нующие выражения получаются из простых.с помощью условийгя круглых скобок. Переключательный список в общем случае может * состоять из произвольных именующих выражений» Тогда указатель переключателя отсылает к одному из именующих выражений, кото рое либо непосредственно определяет метку, либо вновь отсы - лает к другому именующему выражению.
Рассмотрим еще один пример использования переключателя. Пример. Пусть нужно вычислить
f së- &^ 4 ;
§■, fz) ~ 3j2 Z + О, i z z ;
fa (г) = 3,7z + 0,82*J.
Программа на АЛГОЛе будет иметь вид:
|
Segin Jvfitch f : = / /, fa,fj&jfa] |
|
go to F fa]; |
|
f r t : g : = s 3 , a * z + o , / * z t z ; g o t o н о н е ц ; |
i |
f a : g : = 3,7 * Z + 0,8 * z t г , і ; g o to к о н е ц -, |
|
. н о н е ц ; |
|
end. |
§17, Локальные а глобальные идентификаторы
Вобщей случае МГОЛ-программа является совокупностью
- 74 -
блоков, причем внешние блоки содержат внутренние. При этом программы могут быть сколь угодно большими. Возникает вопрос w том, как правильно пользоваться обозначениями переменных, массивов, клячей, операторов, в каких пределах программы дан ный идентификатор сохраняет свое название, смысл.
Следует отметить, что важной особенностьв блочной струк туры является область определения идентификатора и свойство сохранения значения переменных, описанных в блоке. Такая осо бенность АЛГОЛ-пропраммы тесно связана с проблемой экономии ячеек памяти.
Все идентификаторы программы Сданного блока) можно раз бить на две большие группы:
а) списанные э начале блока В, которые будем называть идентификаторами, локальными в блоке В;
б) не списанные в начале блока В, которые назовем глоеалькыми для блока В.
.апример:
г е а і а
|
|
|
|
|
- 75 - |
|
|
|
|
|
|
|
|
Здесь |
Q - глобальный |
идентификатор |
для |
блока Б, |
локальный |
||||||||
|
для |
блока |
А; |
|
|
|
|
|
|
|
|
|
|
|
- локальный для блока В. |
|
|
|
|
|
|
|
|
||||
Идентификатор, |
локальный в блоке, |
определен |
только |
внут |
|||||||||
ри данного блока. Рассмотрим, например, |
|
некоторый |
локальный в |
||||||||||
В идентификатор |
Z |
. После |
выхода |
из |
блока В либо за опера - |
||||||||
торную |
скобку e n d , либо |
с помощью |
оператора |
CjO to |
, Z |
те |
|||||||
ряет свое значение и может представлять собой что угодно. |
|||||||||||||
Вели Z |
в блоке |
А уже был описан, |
то |
при |
выходе из |
блока |
3 |
||||||
снова принимает |
то |
самое значение, |
которое он имел |
до входа |
|||||||||
в блок |
В. |
|
|
|
|
|
|
|
|
|
|
|
|
Напротив, идентификатор, глобальный для блока В, сохра |
|||||||||||||
няет то |
значение, которое |
он получил |
в |
блоке |
В. |
|
|
|
|||||
Пример. |
А '■беріп |
|
|
|
|
|
|
|
|
|
|||
|
|
|
■ггаС a , z ; |
|
|
|
|
|
|
|
|
||
|
|
<2. = -/; |
|
|
|
|
|
|
|
|
|
||
|
|
г - = г о ; |
|
|
|
|
|
|
|
|
|
||
|
|
ß : |
|
сП |
|
|
|
|
|
|
|
|
|
|
|
|
f e a t z, 6; |
|
|
|
|
|
|
|
|
||
|
|
|
é: ~3001 |
|
|
|
|
|
|
|
|
||
|
|
|
z ;—Aoooу |
|
|
|
|
|
|
|
|
||
|
|
|
Q.- —6+Z-, |
|
|
|
|
|
|
|
|
end
В результате выполнения программы имеем:
а - зоо + 4000 = 4300,