Вложенные (сложные) циклы

Если телом цикла является циклическая структура, то такие циклы называют вложенными.

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

Глубиной вложенного цикла называется количество вложенных друг в друга простых циклов.

Внешний и внутренние циклы могут быть организованы:

- операторами цикла с предусловием while;

- операторами цикла с постусловием repeat;

- операторами цикла с параметром for.

 

При каждом изменении параметра внешнего цикла внутренний цикл выполняется полностью.

Правила организации внешнего и внутренних циклов такие же, как и для простого цикла. Но при программировании вложенных циклов необходимо соблюдать следующее дополнительные условия:

- все операторы внутреннего цикла должны полностью располагаться в теле внешнего цикла;

- имена параметров циклов, вложенных один в другой должны быть разными.

 

 

Пример: Вывести на экран таблицу умножения от 1 до 10.

 
I=1,10,1 I=1,10,1
J=1,10,1 J=1,10,1
Writeln(I,‘*’ ,J, ‘ = ’,I*J)
Начало
Конец
writeln

  program Tab_Umn; var I, J : byte; begin for I:=1 to 10 do {Внешний цикл} begin for J:=1 to 10 do {Внутренний цикл} Writeln(I, ‘ * ’ ,J, ‘ = ’,I*J);   Writeln end end.  

 

Тема 2.5 Массивы

Массив- это упорядоченный ограниченный набор однотипных данных, с каждым из которых связан ряд целых чисел, называемых индексами.

Массив определяется именем (идентификатором), размером и размерностью. Имя массива является единым для всех его элементов. Размерность массива определяется количеством индексов. Индексы необходимы для указания местоположения элемента. В качестве индекса может использоваться любой порядковый тип, кроме longint. По размерности массивы бывают:

- одномерные;

- двумерные;

- многомерные.

Контроль правильности значений индексов осуществляется с помощью директивы компилятора R. По умолчанию директива R находится в пассивном состоянии{$R-}.

Размер массива определяется верхними границами индексов. Число элементов массива в языке Pascal фиксируется при описании и в процессе выполнения программы не меняется.

Элементы массива могут быть любого типа, включая структурированные (массив, запись, строки символов). Тип элементов массива называется базовым. При объявлении массива резервируется область оперативной памяти для хранения элементов массива. Элементы массива располагаются в последовательно расположенных ячейках памяти друг за другом.

Одномерный массив

В одномерном массиве все элементы как бы вытянуты в одну линию и расположены по возрастанию порядковых номеров. Элемент одномерного массива – это переменная с одним индексом. Например: А[i], Mas[r+2], D[3].

a[1] a[2] a[3] . . . a[n]

 

i = 1 2 3 . . . n

 

Способы описания одномерного массива

1). Typeимя типа = array [диапазон индекса] of тип элементов;

Varимя массива : имя типа;

 

2). Varимя массива : array [диапазон индекса] of тип элементов;

 

где, array of– «массив из» - служебные слова;

тип элементов – любой простой и структурированный;

диапазон индекса – диапазон изменения индекса.

Например: Type massiv=array[1..20] of real;

Var A:massiv;

B: array [1..9] of char;

Ввод элементов массива

I=1,N,1
Ввод A[i]
выход
Ввод N

Рrogram vvod; //Const N=10; Type mas=array[1..100] of real; Var a:mas; i: integer: Begin Readln(n); Writeln(‘Введите элементы массива’); For i:=1 to N do Begin Write(‘a[‘,i,’]=’); Readln( a[i]) End; … End.

Пример1:

Составить программу для нахождения наибольшего элемента одномерного массива х, содержащего 15 элементов.

начало
i=1,15,1
Ввод x[i]
Вывод max
конец
max=x[1]
i=1,15,1
max<x[i]
max=x[i]

      Programmas_1; var i:integer; max:real; x: array[1..15] ofreal; begin fori:=1 to15 do begin write (' x [',i:2,']='); readln(x[i]); end; max:=x[1]; fori:=2 to15 do ifmax <x[i] thenmax :=x[i]; writeln('max = ',max:7:2) end.   Результат решения задачи x [ 1]=1 x [ 2]=2 x [ 3]=3 x [ 4]=4 x [ 5]=5 x [ 6]=4 x [ 7]=3 x [ 8]=5 x [ 9]=6 x [10]=4 x [11]=3 x [12]=5 x [13]=6 x [14]=4 x [15]=5 max = 6.00

Чтобы осуществить перестановку любых элементов массива необходимо объявить дополнительную переменную для временного хранения любого элемента массива. Переменная должна быть того же типа, что и тип элементов массива. Сортировка и сдвиг элементов относится к перестановке.

Сортировка - один из наиболее распространенных процессов современной обработки данных. Сортировкой называется распределение элементов по группам в соответствии с определенными правилами. Существуют различные способы сортировки элементов массива: метод обмена (пузырька), метод выбора, метод вставок, бинарная сортировка и др.

Сдвиги бывают арифметические и циклические. При арифметическом сдвиге часть элементов теряется, а при циклическом сдвиге элементы массива только меняют свое местоположение.

 

Пример 2: Осуществить циклический сдвиг элементов массива на единицу вправо.

 

До сдвига вправо

 

 


a[1] a[2] a[3] a[4] a[5]

 

 

p

 

P:=a[n];

For i:=n downto 2 do

A[i]:=a[i-1];

A[1]:=P;

 

 

После сдвига вправо
a[5] a[1] a[2] a[3] a[4]

 

Пример 3: Осуществить циклический сдвиг элементов массива на единицу влево.

… P:=a[1]; For i:=1 to n-1 do A[i]:=a[i+1]; A[n]:=P; …