|
Рассмотрим следующее описание процедуры: procedure s (i); value i; integer i; if i = l then go to Dx else if i = 2 then go to D2 else if i = N then go to Dm где N — некоторое натуральное число, a Dx, D2, DN — именующие выражения. Пусть выполняется оператор процедуры s (А), где А — арифметическое выражение. Если значение выражения А, округленное до ближайшего целого числа i, заключено в пределах I ^i ^ N, то выполнение оператора s (А) приведет к переходу на метку, являющуюся значением именующего выражения D/. Если же i < 1 или i > N, то оператор процедуры сработает вхолостую (подобно пустому оператору). В Алголе есть конструкция, называемая описанием переключателя, служащая в точности для тех же целей, что и приведенное выше описание процедуры s. Она имеет вид: switch s: = Dlf D2, ... , Dn Идентификатор s, описанный таким образом, становится в пределах действия этого описания идентификатором переключателя. Список Db DN называется переключательным списком. Для обращения к переключателю вместо использованного в предыдущем абзаце оператора процедуры s (А) служит оператор перехода go to s[A] выполнение которого приводит к описанным выше результатам. Выражение s [А] называется указателем переключателя. Оно является одной из разновидностей именующего выражения и может быть использовано не только непосредственно в операторе перехода, но и в качестве компоненты условного именующего выражения, в переключательном списке, в качестве фактического параметра при обращении к процедуре. Во всех этих случаях значение указателя переключателя вычисляется одинаково. Глава 8 КРАТНЫЕ ЦИКЛЫ § 1, Размещение в памяти многомерных массивов При знакомстве с Алголом мы встретились с понятием массива произвольной размерности. На практике редко приходится иметь дело с массивами размерности больше двух, но двумерные массивы — матрицы — встречаются сплошь и рядом. Кратные циклы, рассматриваемые в этом разделе, часто возникают при работе с матрицами.
|