Программирование циклов с неизвестным заранее числом повторений

Цикл является одной из важнейших алгоритмических структур и представляет собой последовательность операторов, которая выполняется неоднократно. В программах, связанных с обработкой данных или вычислениями, часто приходится выполнять циклически повторяющиеся действия. Циклы позволяют записать такие действия в компактной форме.

Циклы принадлежат к числу управляющих операторов. Внимательный ученик мог заметить, что до сих пор вы использовали два вида операторов. Одни из них (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.2x), при различных значениях параметра х, изменяющегося от 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.2x>0) Вычисл. значение у Текущие значения k Новое значение х (в конце цикла)
3 (xn) Истина (1+0.23=1.6 >0) 0.47 k=1
Истина (1+0.21=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 — 2b, для всех возможных комбинаций значений параметров a и b, принадлежащих интервалам 0 a2, 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 (в начале цикла) Проверка условия продолжения внешнего цикла (aak) Текущее знач. 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 Истина
Ложь
Читайте также:  Как на андроиде зайти в папку system

Следует также обратить внимание на то, что начальное значение параметра внутреннего цикла 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; Нарушение авторского права страницы