Здавалка
Главная | Обратная связь

КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ



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

 

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

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

Правильно организованные вложенные циклы могут иметь одну из следующих структур:

Пример 1.Составить программу для вывода на печать положи­тельных элементов матрицы А(10,15). В каждой строке печатать элементы, относящиеся к данной строке матрицы. Если в строке нет положительных элементов, то она должна быть пустой.

Программа имеет вид

PROGRAM MATR(INPUT,OUTPUT);.

CONST IMAX=10;JMAX=15;

VAR I,J:INTEGER;

A:ARRAY[1..IMAX.l..JMAX] OF REAL;

BEGIN

FOR I:=l TO IMAX DO

BEGIN

FOR J:=l TO JMAX DO

BEGIN

READ(A[I,J]);

IF A[I,J]>0 THEN WRITE(A[I,J]:5:2)

END;

WRITELN

END

END.

 

Пример 2.Составить программу для упорядочивания элементов массива A (A1, А2, ..., A200), расположив их по убыванию в том же массиве.

При решении необходимо использовать прием нахождения наибольшего. Во внутреннем цикле должен находиться наибольший элемент массива или его части.

Для этого перед циклом задается начальное значение наибольшего, равное первому элементу массива, а внутри цикла находится наибольший элемент и его порядковый номер. После окончания цикла наибольший элемент записывается на место первого элемента рассматриваемой части массива, а первый — на место наибольшего. Затем отыскивается наибольший элемент массива, начиная со второ­го, далее с третьего и т. д.

Указанные действия надо повторить во внешнем цикле для k, изменяющегося от 1 до 199, так как когда останется последний элемент, находить наибольший не имеет смысла.

Программа имеет вид

PROGRAM SORT (INPUT,OUTPUT);

CONST NK=200;

VAR AMAX: REAL;

N, ND, K, K1, I, KMAX : INTEGER;

A: ARRAY [1 . . NK] OF REAL;

BEGIN

READ (ND);

FOR I:=l TO ND DO

READ (А[1]);

FOR K:=l TO ND-1 DO

BEGIN

AMAX:=A[K];

KMAX:=K;

K1:=K+1;

FOR I:=K1 TO ND DO

IF A[I]>AMAX THEN

BEGIN

AMAX:=A[I];

KMAX:=I

END;

A[KMAX]:=A[K];

A[K]:=AMAX

END;

FOR I:=l TO ND DO

WRITE (A[I])

END.

Начальное значение параметра внутреннего цикла изменяется на единицу после каждого выполнения цикла, что обеспечивает на­хождение наибольшего элемента не из всего массива, а только из его части. После выполнения оператора А [КМАХ]:=А [К]; k-й эле­мент записывается на место наибольшего.

Следующий оператор записывает на место k-го элемента значе­ние АМАХ, которое равно наибольшему элементу.

Пример 3. Составить программу для вычисления ; значения у изменяются с шагом h.

Чтобы вычислить сумму произведений, необходимо во внешнем цикле изменять параметр i, а во внутреннем цикле - пара­метр k. При изменении параметра k вычисляется факториал, на­капливается произведение и изменяется значение у.

Программа имеет вид

PROGRAM REZ (INPUT,OUTPUT);

CONST NM=20;

VAR I,К,KF,NXD,NY:INTEGER;

A,B,H,P,Y,Z:REAL;

X:ARRAY [1..NM] OF REAL;

BEGIN

READ (A,B,H,NXD);

FOR I: = l TO NXD DO

READ (X[I])

Z:=0;

NY:=TRUNC((B-A)/H)+1;

FOR I:=l TO NXD DO

BEGIN

P:=l;

KF:=1;

Y:=A;

FOR K:=l TO NY DO

BEGIN

КF:=KF*K;

P:=P*(X[I]+Y)/KF

Y: =Y+H

END;

Z:=Z+P

END;

WRITE ('Z=',Z)

END.

 

КОНТРОЛЬНЫЕ ВОПРОСЫ.

1. Указать основные правила организации вложенных циклов.

2. Возможен ли выход из внутреннего цикла до его полного завершения?

3. Каковы возможные структуры организации вложенных циклов?

4. Возможен ли переход из внешнего цикла к операторам внутреннего цикла?

5. Какова структура правильно организованного вложенного цикла?

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.