Цикл является одной из важнейших алгоритмических структур и представляет собой последовательность операторов, которая выполняется неоднократно. В программах, связанных с обработкой данных или вычислениями, часто приходится выполнять циклически повторяющиеся действия. Циклы позволяют записать такие действия в компактной форме.
Циклы принадлежат к числу управляющих операторов. Внимательный ученик мог заметить, что до сих пор вы использовали два вида операторов. Одни из них (Read, Write, оператор присваивания) только выполняли какие-либо действия, другие же управляли ходом выполнения программы (например, условный оператор). Последние и называются управляющими операторами.
Способ использования циклов в программах на Паскале. Рассмотрим задачу на вычисление суммы большого числа слагаемых:
1 + 2 + 3 + 4 + .. + n
Можно было бы выбрать простое решение и записать вычисление данной суммы в строчку, употребив n операций сложения. Ну а если число элементов суммы равно 1000? Представьте себе программу с оператором, который занимает несколько страниц и содержит 999 сложений! Очевидно, простое решение здесь уже не подходит. Можно заметить, что при вычислении суммы повторяются всего две операции, причем в определенном порядке:
1. Увеличить значение переменной цикла на 1
2. Прибавить к ранее полученной сумме.
В языке программирования Паскаль имеется три разновидности цикла:
- Цикл с предусловием (цикл “пока” – whi1е);
- Цикл с постусловием (цикл “до тех пор, пока” repeat. until);
- Цикл с параметром (со счетчиком) (цикл “для” – for . to / downto… do);
Каждая из трех разновидностей цикла имеет свои особенности, для каждой из них есть свой круг задач, наиболее естественно решаемых именно с ее помощью.
При разработке программы циклической структуры выделяют следующие понятия:
o параметр (переменная цикла) – величина, с изменением значения которой связано многократное выполнение цикла;
o начальное и конечное значения параметра цикла;
o шаг цикла — значение, но которое изменяется параметр цикла при каждом повторении;
Действия, повторяющиеся в цикле, называются телом цикла.
Цикл организуют по определенным правилам. Цикл состоит из следующих блоков:
- подготовки цикла;
- тела цикла;
- условия продолжения цикла.
В подготовку цикла входят действия, связанные с заданием исходных значений для параметра цикла.
В тело цикла входят многократно повторяющиеся действия для вычисления искомых величин и подготовка следующего значения параметра цикла.
В условии продолжения цикла определяется необходимость дальнейшего выполнения повторяющихся действий (тела цикла). Если параметр цикла не удовлетворяет поставленному условию, то выполнение цикла прекращается.
Оператор цикла с параметром применяют тогда, когда заранее известно число повторений одной и той же последовательности операторов. Начальные и конечные значения параметра цикла могут быть представлены константами, переменными или арифметическими выражениями.
FOR i:=M1 TO M2 DO оператор1
операторы циклической части
операторы циклической части
ГДЕ i — параметр цикла, М1 и М2 — начальное и конечное значение параметра цикла. DOWNTO изменяет параметр с шагом -1.
Блок-схема цикла с параметром:
Пример программы (цикл с параметром):
Вычислить сумму S=1+2+3+…+N:
var n,s, i : integer;
write(‘введите число N ’); readln(n);
writeln(‘сумма чисел равна’, s);
Алгоритм циклической структуры — это алгоритм, в котором происходит многократное повторение одного и того же участка программы. Такие повторяемые участки вычислительного процесса называются циклами. Программа циклической структуры содержит один или несколько циклов. Различают детерминированные циклы с заранее известным числом повторений и итерационные циклы, в которых число повторений заранее неизвестно. Изменяющаяся в цикле переменная называется параметром цикла.
Для организации цикла необходимо выполнить следующие действия:
1) задать перед циклом начальное значение параметра цикла;
2) изменять параметр перед каждым новым повторением цикла;
3) проверять условие повторения цикла;
4) управлять циклом, т.е. переходить к его началу, если он не закончен, или выходить из него по окончании.
В языке Паскаль существует 3 вида циклов:
1) цикл с параметром или цикл типа for,
2) цикл с предусловием или цикл типа while,
3) цикл с постусловием или цикл типа repeat . until.
В цикле типа for число повторений известно заранее, в циклах типа while и repeat . until число повторений цикла заранее неизвестно, производится проверка условия повторения цикла: в цикле типа while — перед циклом, в цикле типа repeat . until — после его окончания.
В циклах типов for и while повторяющяся часть (тело цикла) состоит из одного оператора, если требуется выполнить в цикле несколько операторов, они заключаются в операторные скобки begin . end, образуя составной оператор. В цикле типа repeat . until тело цикла помещается между зарезервированными словами языка (лексемами) repeat и until, операторные скобки не требуются, в названии цикла его тело условно обозначается тремя точками.
С помощью цикла типа for удобно находить суммы, произведения, искать максимальные и минимальные значения и т.п. При нахождении суммы некоторой переменной, например S присваивается значение 0, затем в цикле к этой переменной прибавляется соответствующий член заданной последовательности. При нахождении произведения переменной присваивается значение 1, затем в цикле эта переменная умножается на общий член последовательности.
Пример цикла типа for
Вычисление n чисел Фибоначчи:
F1=1; F2=1;…; Fn=Fn-1+Fn-2 ,
например F3=F2+F1=1 + 1 = 2; F4 = 2 + 1 = 3 и т.д.
program fib; <Нахождение чисел Фибоначчи>
var x, y, z, i, n : integer;
begin
writeln (‘Введите n’); read (n);
x:=1; y:=0;
for i:=1 to n do
begin
z:=x ; x:=x+y ; y:=z ;
write (‘ ‘, x ) ;
end;
readln;
end.
При решении некоторых задач может возникнуть ситуация, когда невозможно заранее определить количество повторений вычислений. В таких случаях речь идет о циклах с неизвестным числом повторений.
В циклах с неизвестным числом повторений вычислительный процесс завершается при выполнении некоторого дополнительного условия. Значения параметра цикла уже не задаётся в виде диапазона, а только указывается его начальное значение и шаг изменения. Тем не менее, организация цикла выполняется по стандартной методике, указанной в п. 4.1. Отличие заключается в том, что не любой тип циклического вычислительного процесса можно использовать. Тип цикла определяется в соответствии с заданным дополнительным условием завершения вычислений. Это однозначно исключает возможность использование цикла «Для» на основе блока модификации. Для определения количества шагов повторения цикла необходимо организовать счетчик.
Пример 4.3. Составить блок-схему алгоритма, вычисляющего значения функции у = ln(1 + 0.2∙x), при различных значениях параметра х, изменяющегося от xn ≤ 3 с шагом hx = -2. При этом вычислять у до тех пор, пока выражение под знаком логарифма остается больше 0. Определить количество (k) вычисленных значений y.
Перед решением задачи необходимо определить тип цикла, который будет использоваться. Вычисляемое выражение содержит «аномалию» (значение под знаком логарифма должно быть больше 0), которая в тоже время является условием завершения вычислений. Другими словами, необходимо вначале проверить возможность вычисления значения у, а только затем вычислять его. Поэтому в данном случае для организации вычислительного процесса можно использовать только цикл с предусловием (рис. 4.3).
В качестве исходных данных вводятся значения переменных хn, hx (блок 2). В блоке 3 задаются начальные значения для параметра цикла x и счетчика количества повторений цикла k. После этого, в блоке 4 одновременно проверяются условие продолжения цикла и возможная «аномалия» (выражение под знаком логарифма должно быть больше 0). В теле цикла для текущего значения х вычисляется и выводится соответствующее значение у (блоки 5-6), а также увеличивается значение счетчика вычисленных у (блок 7). В конце тела цикла выполняется переход к следующему значению параметра цикла х (блок 8). Цикл работает до тех пор, пока под знаком логарифма не появится выражение ≤ 0. После выхода из цикла в блоке 9 выводится переменная k – количество вычисленных значений у.
Результаты пошагового выполнения цикла в алгоритме, приведенном на рис. 4.3, представлены в таблице 4.3.
Таблица 4.3. Пошаговое выполнение цикла
№ шага | Текущее значение х (в начале цикла) | Результат проверки условия продолжения цикла (1+0.2∙x>0) | Вычисл. значение у | Текущие значения k | Новое значение х (в конце цикла) |
3 (xn) | Истина (1+0.2∙3=1.6 >0) | 0.47 | k=1 | ||
Истина (1+0.2∙1=1.2 >0) | 0.18 | k=2 | -1 | ||
-1 | Истина (1+0.2∙-1=0.8 >0) | -0.22 | k=3 | -3 | |
-3 | Истина (1+0.2∙-3=0.4 >0) | -0.92 | k=4 | -5 | |
-5 | Ложь (1+0.2∙-5=0 >0) |
Вложенные циклы
Решение некоторых задач требует выполнения перебора значений не одной, а нескольких величин одновременно. В этом случае речь идет о применении вложенных циклов, каждый из которых организовывается по стандартному принципу (может быть любого из трех типов) и осуществляет перебор только одного параметра. При этом первый цикл называется внешним, а вложенные в него – внутренними. Причем один и тот же цикл может быть внешним по отношению к одному и внутренним по отношению к другому циклу. Границы внутреннего цикла не могут выходить за границы внешнего по отношению к нему цикла.
Для каждого значения параметра внешнего цикла происходит перебор всех возможных значений параметра внутреннего цикла. Другими словами, всегда выполняется в первую очередь самый внутренний цикл. Такая организация циклов дает возможность перебрать значения их параметров во всех возможных комбинациях.
Пример 4.4. Составить блок-схему алгоритма, вычисляющего значения функции у = a — 2∙b, для всех возможных комбинаций значений параметров a и b, принадлежащих интервалам 0 ≤ a ≤2, ha =1 и -2 ≤ b ≤ 2, hb =2, соответственно. Определить среднее арифметическое (S) вычисленных значений y.
Для решения поставленной задачи необходимо организовать два вложенных цикла по перебору параметров a и b. При этом каждый цикл является циклом с известным числом повторений, т. к. заранее можно вычислить количество значений a из заданного интервала (Na = ](2 – 0)/1[ + 1 = 3) и количество значений b из заданного интервала (Nb = ](2 – (-2))/2[ + 1 = 3), а следовательно и общее количество вычисленных значений y (N = Na × Nb). Значит, для организации циклов можно использовать любой из трех стандартных типов.
Кроме этого y одновременно зависит от двух параметров a и b, поэтому не имеет принципиального значения по какому параметру делать внешний цикл, а по какому – внутренний (внешним может быть цикл по параметру a, а внутренним – по параметру b, и наоборот). В случае же если одна из вычисляемых величин зависит только от одного параметра, то цикл по этому параметру рационально сделать внешним и вычислять величины, зависящие только от этого параметра во внешнем цикле. Такая организация позволит избежать многократного вычисления одних и тех же значений во внутреннем цикле.
На рисунке 4.4 представлена блок-схема алгоритма, в которой для решения поставленной задачи, используется два вложенных цикла: внешний цикл с предусловием по параметру a и внутренний цикл с постусловием по параметру b.
Работа алгоритма начинается с ввода исходных данных (блок 2), которые представляют собой начальные, конечные значения и шаг изменения параметров a и b из заданных интервалов. На этапе подготовки к выполнению внешнего цикла (блок 3) параметру цикла a присваивается начальное значение an, а также обнуляются переменные S и k, используемые для хранения суммы и количества вычисленных значений y.
Тело внешнего цикла с предусловием включает блоки 4-11. Если текущее значение a не выходит за правую границу интервала (блок 4), то происходит выполнение тела внешнего цикла, которое включает в себя внутренний цикл. В блоке 5 происходит подготовка к выполнению внутреннего цикла, его параметру b присваивается начальное значение bn.
Тело внутреннего цикла с постусловием включает блоки 6-10. В блоке 6 вычисляется текущее значение y, а в блоке 7 происходит вывод вычисленного y и соответствующих ему значений a и b. В блоке 8 полученное значение у добавляется к сумме S и увеличивается значение счетчика вычисленных у. Затем происходит изменение параметра внутреннего цикла b на значение шага hb (блок 9) и выполняется проверка условия выхода из внутреннего цикла (блок 10).
Если текущее значение b не превышает конечного bk, то происходит возврат на начало внутреннего цикла и повторяется вычисление y при новом значении b. В тоже время значение параметра внешнего цикла a остается неизменным. Таким образом, при одном значении параметра внешнего цикла происходит перебор всех значений параметра внутреннего цикла.
После выхода из внутреннего цикла в блоке 11 происходит изменение параметра внешнего цикла a на значение шага ha. Затем выполняется переход на начало цикла (блок 4) и повторяются описанные выше действия, пока не завершит работу внешний цикл. После выхода из внешнего цикла в блоках 12-13 вычисляется и выводится S — среднее арифметическое вычисленных значений y.
Результаты пошагового выполнения циклов в алгоритме, приведенном на рис. 4.4, представлены в таблице 4.4.
Таблица 4.4. Пошаговое выполнение алгоритма с вложенными циклами
№ шага | Текущее знач. a (в начале цикла) | Проверка условия продолжения внешнего цикла (a ≤ ak) | Текущее знач. b (в начале цикла) | Вычисл. значение у | Текущие значения k, S | Новое знач. b (в конце цикла) | Проверка условия выхода из внутреннего цикла (b > bk) | Новое знач. a (в конце цикла) |
0 (an) | Истина | -2 (bn) | k=1, S=4 | Ложь | — | |||
— | — | k=2, S=4 | Ложь | — | ||||
— | — | 2 (bk) | -4 | k=3, S= | Истина | |||
Истина | -2 (bn) | k=4, S=5 | Ложь | — | ||||
— | — | k=5, S=6 | Ложь | — | ||||
— | — | 2(bk) | -3 | k=6, S=3 | Истина | |||
2 (ak) | Истина | -2 (bn) | k=7, S=9 | Ложь | — | |||
— | — | k=8,S=11 | Ложь | — | ||||
— | — | 2(bk) | -2 | k=9, S=9 | Истина | |||
Ложь | — | — | — | — | — | — |
Следует также обратить внимание на то, что начальное значение параметра внутреннего цикла b необходимо задавать каждый раз перед началом выполнения вложенного цикла (блок 5), т.е. внутри внешнего цикла. Если это будет сделано одновременно с заданием начального значения для параметра внешнего цикла a (блок 3), то внутренний цикл выполнится только при начальном значении a. На этом алгоритм завершит свою работу и, следовательно, не будут перебраны все возможные комбинации значений a и b.
Не нашли то, что искали? Воспользуйтесь поиском:
Цикл с неизвестным числом повторений называется также итерационным циклом. В языке Турбо Паскаль имеются два оператора цикла — WHILE и REPEAT, которые используются для организации цикла с неизвестным числом повторений.
Общая форма конструкции, образующей цикл WHILE,имеет вид:
Здесь WHILE (пока); DO — ключевые слова языка; — логическое выражение, которое определяет условие продолжение цикла. Первая строка (оператор WHILE) конструкции называется заголовком цикла.
образует тело цикла, состоящее из простого или составного оператора.
Выполнение оператора WHILE происходит следующим образом:
1. Вычисляется выражение, указанное в заголовке цикла.
2. Если выражение истинно, то один раз выполняется тело цикла и вновь вычисляется выражение.
3. Пункт 2 повторяется до тех пор, пока выражение истинно.
4. Если выражение ложно, то тело цикла не выполняется, осуществляется выход из цикла, т.е. управление передается оператору, который следует за оператором WHILE.
Общий вид записи оператора REPEAT:
где — тело цикла, состоящее из простого или составного оператора; — логическое выражение, определяющее окончание цикла.
Выполнение оператора WHILE происходит следующим образом:
1. Выполняется тело цикла.
2. Вычисляется выражение, указанное во фразе UNTIL.
3. Если выражение ложно, то повторяются пп. 1 и 2.
4. Если выражение истинно, то выходим из цикла, т.е. управление передается оператору, который следует за оператором REPEAT.
Из сказанного следует важное правило: операторы тела цикла WHILE и REPEAT должны изменять выражение, указанное в операторе. В противном случае будет иметь место бесконечный цикл, что противоречит определению алгоритма.
В тело итерационного цикла допускается включать другие циклы. Это может быть другой итерационный циклили цикл с известным числом повторений. Другими словами, в итерационных циклах никаких ограничений на вложенные циклы не накладывается.
Примеры реализации итерационного цикла
Пример 1.15. Составить программу для вычисления функции, заданной рекурсивными формулами:
WRITE(‘Заданная точность вычислений’);
Пример 1.16. Вычислить сумму при х =0,5.
Суммирование прекращать, когда очередной член суммы будет меньше заданного е = 0.0001.
В приведенной ниже программе используется цикл REPEAT:
X, Eps, S, A : REAL;
UNTIL a 3 /3! + x 5 /5! +.
Суммирование выполнять до тех пор, пока очередное слагаемое не станет меньше заданной величины Е.
Анализ условия задачи
Исходными данными для решения задачи являются значения Х и Е, где Е — точность вычислений.
Вычисление суммы элементов ряда — цикл с неизвестным числом повторений.
Очевидно, что условие выполнения операторов тела цикла можно записать в виде
где А — очередной элемент ряда;
Е — заданная точность вычислений.
В теле цикла следует:
— накапливать в переменной S значение предыдущего элемента ряда;
— получать новое значение элемента ряда.
Для вычисления нового элемента ряда необходимо определить закономерность изменения последующего элемента по сравнению с предыдущим.
Чтобы найти эту закономерность, попарно сравним соседние элементы и проанализируем выражение, на которое в каждом цикле нужно умножать предыдущий элемент. Результаты сравнения представлены в таблице.
Номер цикла | Предыдущий элемент | Выражение | Новый (последующий) элемент |
Х/1 X 3 /1·2·3 X 5 /1·2·3·4·5 | X 2 /2·3 X 2 /4·5 X 2 /6·7 | X 3 /1·2·3 X 5 /1·2·3·4·5 X 7 /1·2·3·4·5·6·7 |
Из приведенной таблицы видно, что числитель выражения от цикла к циклу не меняется: X 2 .
Знаменатель — произведение двух соседних натуральных чисел, то есть если первое число обозначим переменной К, то в общем виде выражение можно записать: P=X · Х/(K · (K + 1)), а значение К изменяется в каждом цикле на 2.
И последнее. До входа в цикл следует определить значения переменных S, А, К:
(см. условие примера)
Возможный вариант программы
X, E, S, A, K, P: REAL;
Е – переменная для ввода и хранения точности вычислений
S – переменная для получения суммы элементов ряда
A – переменная для получения очередного элемента ряда
К – переменная для получения знаменателя
P – переменная для вычисления значения выражения, на которое умножается предыдущий элемент>
WRITE (‘Введите значение аргумента’);
WRITE (‘Введите точность вычислений’);
WRITELN(‘При значении аргумента = ’,X);
WRITELN(‘Сумма элементов ряда = ’, S)
Пример 1.18.Вычислить сумму
S =
для значений x, изменяющихся в пределах от 0.2 до 1 с шагом 0.2. Суммирование прекращать, когда очередной член суммы по абсолютной величине станет меньше е = 0.0001.
Задача сводится к организации вложенных циклов. Внешний цикл по счетчику обеспечивает изменение х. Во внутреннем цикле по условию осуществляется вычисление суммы.
Член суммы an целесообразно представить в виде двух сомножителей:
Сомножитель cn = (-1) n — 1 будем вычислять по рекуррентной формуле, выражая последующий член через предыдущий:
cn = — cn -1 .
Число значений х на отрезке от 0.2 до 1 с шагом 0.2 равно 5. В программе для контроля при каждом значении x вычисляется также функция соs x + x sin x, которая приближенно может быть представлена в виде указанной суммы.
X, S, EPS,C,A : REAL;
UNTIL Abs(a) 0.04 DO
Так как выход из цикла осуществляется при нарушении данного условия, то для вывода правильного значения суммы, в которой разность по модулю между текущим и предыдущим слагаемыми еще остается больше 0,04, следует определить значение суммы, а также значение и номер слагаемого, предшествующего сумме ряда при выходе из цикла.
Приведем вариант программы
VAR S, TEK, PR : REAL;
WHILE ABS(TEK-PR)>0.04 DO
WRITELN(‘Последнее слагаемое ‘,PR,’ и его номер ’,N-1);
Пример 1.20. Найти максимальное количество слагаемых в сумме членов ряда , при котором эта сумма остается меньше 12. Кроме этого вывести на экран значение последнего слагаемого и его номер.
Введем обозначения объектов:
N — количество слагаемых в сумме;
А — очередное (текущее слагаемое).
Формула общего члена данного ряда имеет вид:
,
где n — порядковый номер слагаемого.
Суммирование осуществляется в цикле WHILE до тех пор, пока сумма остается меньше 12, т.е.
WRITELN(‘Последними были введены нечетные числа. Их сумма = ‘, S1);
WRITELN(‘Последними были введены четные числа. Их сумма =’, S2);
Пример 1.22. Найти сумму и количество цифр натурального числа N.
S — сумма цифр числа;
К — количество цифр числа;
Z — выделенная цифра числа;
СН — целое частное от деления.
Предложенный алгоритм базируется на выделении всех цифр числа, начиная с младшего разряда, методом последовательного деления и получения целых частных на основании данной системы счисления до тех пор, пока целое частное от деления не станет равным нулю.
S, K, Z, CH : INTEGER;
WRITE(‘Введите натуральное число ‘);
S:=S+Z; CH:=CH DIV 10;
WRITELN(‘Количество ‘,K,’ и сумма цифр ‘, S)
Пример 1.23. В числовую переменную вводится число в десятичной системе счисления, не превышающее по модулю 10000. Необходимо вывести на экран представление этого числа в двоичной системе счисления.
Обозначим объекты программы:
К — количество цифр двоичного числа;
Z(14) — массив с цифрами двоичного числа;
CН — целое частное.
Перевод десятичного числа в двоичную систему счисления можно описать следующей последовательностью шагов:
1. Последовательно делим данное число и получаемые целые частные
на 2 до тех пор, пока последнее частное не станет равным нулю.
2. Запоминаем все остатки от деления данного числа и целых частных на 2.
3. Составляем число в двоичной системе счисления, начиная с последнего остатка и кончая первым.
Для запоминания остатков от деления надо организовать в памяти одномерный массив. Но какой размерности?
По условию, целое десятичное число не должно превышать 10000, т.е. 1000010 =271016 =10 0111 0001 00002.
Отсюда видно, что максимальное количество значащих разрядов двоичного числа не может превышать 14. Эта величина и будет определять размерность одномерного массива.
При выводе изображения двоичного числа анализируется его знак, т.к. в условии задачи ничего не сказано о том, какие числа переводятся — положительные или отрицательные.
Z : Array[1..14] of Integer;
N, I, K, CH : Integer; S,q: Real;
Write(‘Введите целое число ‘);
Writeln(‘Число ’,N,’ в двоичной системе счисления’);
4. Вычислить 1/2 + 1/2 2 + . + 1/2 10 .
5. Вычислить 2/3 + 3/4 +. + 10/11.
6. Вычислить 2 + 2 3 + . + 2 10 .
7. Вычислить у = 1/2 + 2х 3 при х = -5, -4.5, — 4. , 3.
8. Составить таблицу стоимости порций сыра весом 50, 100. , 1000 г (цена 1 кг сыра 80 руб.).
В задачах № 9-15 вычислитьсумму заданного числа членов знакопеременного ряда.
9. S =
10. S =
11. S = 0.3
12. S = 2 +
13. S = 1 +
14. S =
15. S = 0.4
Задачи II уровня
1. Имеется последовательность ненулевых целых чисел, за которой следует 0. Определять, сколько раз в последовательности меняется знак чисел.
2. Составить программу для вычисления значения:
у=х + х 3 /3! + х 5 /5! + х 7 /7!+. учитывая, что 2 + dx 3 + ех 4 + fx 5 ,
где a, b, c, d ,e, f — коэффициенты многочлена (объекты задачи арифметического типа). В алгоритме это переменные и их количество (шесть) определено в постановке задачи, т.е. к моменту разработки алгоритма.
Удобно такие разрозненные переменные объединить в совокупность —массив, именуяих затем общим именем (именем массива) и индексами (номерами в массиве). В рассматриваемом примере введем массив А с шестью элементами (а1—а6):
Массив А представляет собой одномерный массив, так как для индексации его элементов используется один индекс.
В задачах используются не только одномерные, но и многомерные массивы, в частности двумерные. Для индексации элементов двумерного массива указываются два индекса — номер строки и номер столбца. Для наглядности такой массив представляется в виде матрицы, состоящей из m строк и n столбцов.
Например, оценки трех учеников по четырем предметам можно представить массивом Х из 3 строк и 4 столбцов:
При этом одномерные массивы часто называют векторами, а двумерные — матрицами.
Массиву дается имя и указывается его размер.
Итак, массив — это поименованный упорядоченный набор фиксированного количества некоторых однотипных значений (компонент массива).
Имя всего массива называют полной переменной, поскольку ее значение есть весь массив.
К каждой компоненте массива имеется прямой доступ. Для этого после имени массива следует указать в квадратных скобках индекс компоненты, например Х[10], MATR[4,5]. Такие переменные называются переменными с индексом, или индексными переменными. Значением такой переменной является не весь массив, а отдельная компонента, номер которой задается индексом. Поэтому переменную с индексом называют еще частичной переменной. Отметим, что в двумерном массиве первый индекс указывает номер строки, а второй — номер столбца.
В общем случае в качестве индекса может быть использована не только константа, но и выражение, значение которого и определяет номер компоненты массива. При этом важно, что в индексное выражение могут входить переменные, так что при изменении их значений меняется и значение индекса, которое определяет номер компоненты массива, например А[К]; А[I + J]; X[1,J]; X[I + 2J]. Таким образом, одна и та же переменная с индексом в процессе выполнения программы может обозначать различные компоненты массива. Очень важно в таких случаях помнить, что переменные, используемые для индексации, к моменту обработки элементов массивов должны быть определены.
Возможны не только арифметические массивы, но массивы других типов, в частности строковые. Например, список фамилий (объект задачи) можно рассматривать как одномерный строковый массив.
Последнее изменение этой страницы: 2016-12-17; Нарушение авторского права страницы