Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Тема- Анализ программы с подпрограммами

Работа добавлена на сайт samzan.net: 2016-03-05

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 18.5.2024

 К. Поляков, 2009-2013

B14 (повышенный уровень, время – 6 мин)

Тема:  Анализ программы с подпрограммами.

Что нужно знать:

  •  функция – это вспомогательный алгоритм, который возвращает некоторое значение–результат
  •  в Паскале функция располагается выше основной программы и оформляется следующим образом (вместо многоточия могут быть любые операторы):

function F(x: integer):integer;

begin

 ...

 F:= <результат функции>

end;

  •  в заголовке функции записывают имя функции, в скобках – список параметров, далее через двоеточие – тип возвращаемого значения; в приведенном примере функция F принимает один целый параметр, к которому внутри функции нужно обращаться по имени x, и возвращает целое число
  •  результат функции записывается в специальную переменную, имя которой совпадает с именем функции; объявлять эту переменную не нужно
  •  если параметров несколько, для каждого из них указывают тип:

function F(x: integer; y: integer):integer;

  •  если несколько соседних параметров имеют одинаковый тип, можно их объединить в список:

function F(x, y: integer):integer;

  •  следующая программа ищет наименьшее значение функции F(x) на интервале [a,b], просматривая значения от a до b с шагом 1:

M:=a; R:=F(a);

for t:=a to b do

 if F(t) < R then begin

   R:=F(t); M:=t;

 end;

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

этот результат можно получить (вывести, если забыли), например, так:

  •  в критической точке (точке минимума, точке максимума или точке перегиба) производная функции обращается в 0;
  •  находим производную
  •  приравниваем ее к нулю: .
  •  если квадратный трехчлен задан в виде , то абсцисса, соответствующая точке минимума, вычисляется по формуле

Пример задания:

Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:=4*(x-1)*(x-3);

end;

BEGIN

 a:=-20; b:=20;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)<R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(M);

END.

Решение (способ 1, ручная прокрутка, перебор):

  1.  заметим, что в программе есть цикл, в котором переменная t принимает последовательно все целые значения в интервале от a до b:

for t:=a to b do begin

 ...

end;

  1.  до начала цикла в переменную M записывается значение a, а в переменную R – значение функции в точке a: 

M:=a; R:=F(a);

  1.  внутри цикла есть условный оператор, в котором вычисляется значение функции F(t) и сравнивается со значением переменной R:

if (F(t)<R)then begin

 M:=t;

 R:=F(t);

end;

если новое значение функции меньше, чем значение R, в R записывается значение функции в точке t, а в переменной M запоминается само значение t (аргумент функции, соответствующий значению в R)

  1.  в результате анализа пп. 1-3 можно сделать вывод, что цикл ищет минимум функции F(t) на интервале от a до b, и после выполнения цикла в переменной M оказывается значение аргумента t, при котором функция достигает минимума на заданном интервале (здесь это интервал [-20, 20])
  2.  функция F вычисляет значение

F:=4*(x-1)*(x-3);

  1.  перебираем все значения t от a до b, и для каждого вычисляем соответствующее значение функции:

t

-20

-19

-18

-17

-16

-15

-14

-13

-12

-11

-10

-9

-8

-7

-6

-5

-4

-3

-2

-1

0

F

1932

1760

1596

1440

1292

1152

1020

896

780

672

572

480

396

320

252

192

140

96

60

32

12

t

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

F

0

-4

0

12

32

60

96

140

192

252

320

396

480

572

672

780

896

1020

1152

1292

  1.  по таблице находим, что минимальное значение –4 достигается при t=2 
  2.  таким образом, ответ: 2.

Возможные проблемы:

  •  заполнение таблицы, особенно при большом интервале, очень трудоемко, велика возможность ошибки

Решение (способ 2, математический анализ):

  1.  повторяя рассуждения пп. 1-5 из предыдущего способа решения, находим, что программа ищет значение t, при котором функция F(t) принимает минимальное значение на интервале от a до b.
  2.  запишем функцию в виде квадратного трёхчлена:

  1.  график этой функции – парабола, оси которой направлены вверх, поэтому функция имеет минимум
  2.  найдем абсциссу точки минимума, которая совпадает с абсциссой точки минимума функции

  1.  таким образом, ответ: 2.

Решение (способ 3, математический анализ, свойства параболы):

  1.  повторяя рассуждения пп. 1-5 из первого способа решения, находим, что программа ищет значение t, при котором функция F(t) принимает минимальное значение на интервале от a до b.
  2.  заданная функция имеет корни в точках  
  3.  график этой функции – парабола, оси которой направлены вверх (коэффициент при  равен 4 > 0), поэтому функция имеет минимум
  4.  парабола симметрична относительно вертикальной прямой, проходящей через вершину, поэтому абсцисса вершины – это среднее арифметическое корней:

  1.  таким образом, ответ: 2.

Ещё пример задания:

Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:=x*x + 4*x + 8;

end;

BEGIN

 a:=-10; b:=10;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)> R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(R);

END.

Решение:

  1.  рассуждая так же, как и в предыдущем примере, можно показать, что программа ищет наибольшее значение функции F(t) на интервале от a до b
  2.  заметим, что выводится не абсцисса, а именно это найденное наибольшее значение функции:

write(R);

  1.  график заданной функции  – это парабола, ветви которой направлены вверх, то есть она имеет точку минимума, но не точку максимума
  2.  поэтому нужно проверить значения функции на концах отрезка и выбрать из них наибольшее
  3.  при t=-10 получаем F(t)=68
  4.  при t=10 получаем F(t)=148
  5.  таким образом, ответ: 148.

Еще пример задания (Л.А. Тумарина, г. Электросталь):

Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:=4*(x-1)*(x-3);

end;

BEGIN

 a:=-20; b:=0;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)<R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(M);

END.

Решение:

  1.  рассуждая так же, как и в примере 1, определяем, что программа ищет значение t, при котором функция F(t) принимает минимальное значение на интервале от a до b.
  2.  запишем функцию в виде квадратного трёхчлена:

  1.  график этой функции – парабола, оси которой направлены вверх, поэтому функция имеет минимум
  2.  найдем абсциссу точки минимума, которая совпадает с абсциссой точки минимума функции

  1.  однако это значение не входит в интервал [-20; 0], поэтому нужно проверить значения функции на концах отрезка и выбрать из них наименьшее; ответом будет соответствующее значение t.
  2.  при t=-20 получаем F(-20)=4*(-21)*(-23)=1932
  3.  при t=0 получаем F(0)= 4*(-1)*(-3)=12, это значение меньше, чем F(-20), поэтому минимум на заданном интервале достигается при t=0
  4.  таким образом, ответ: 0


Задачи для тренировки
1:

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:=4*(x-5)*(x+3);

end;

BEGIN

 a:=-20; b:=20;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)<R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(M);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:=-(x+4)*(x+2);

end;

BEGIN

 a:=-20; b:=20;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)>R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(M);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:=3*(x-2)*(x+6);

end;

BEGIN

 a:=-20; b:=20;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)<R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(R);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:=(5-x)*(x+3);

end;

BEGIN

 a:=-20; b:=20;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)>R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(R);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:=(x-5)*(x+3);

end;

BEGIN

 a:=-5; b:=5;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)>R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(M);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:=(x+5)*(x+3);

end;

BEGIN

 a:=-5; b:=5;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)>R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(R);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:=(x+7)*(1-x);

end;

BEGIN

 a:=-5; b:=5;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)< R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(M);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:=(x+5)*(1-x);

end;

BEGIN

 a:=-5; b:=5;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)< R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(M);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:=(x+3)*(1-x);

end;

BEGIN

 a:=-5; b:=5;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)< R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(R);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:= 2*x*x + 8*x + 10;

end;

BEGIN

 a:=-10; b:=10;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)< R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(M);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:= x*x + 6*x + 10;

end;

BEGIN

 a:=-10; b:=10;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)> R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(M);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:= x*x - 8*x + 10;

end;

BEGIN

 a:=-5; b:=5;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)> R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(R);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:= x*x + 2*x + 10;

end;

BEGIN

 a:=-10; b:=10;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)< R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(M);

END.

  1.  (Л.А. Тумарина) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:=4*(x-5)*(x+3);

end;

BEGIN

 a:=-20; b:=0;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)<R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(M);

END.

  1.  (Л.А. Тумарина) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:= 2*x*x + 8*x + 10;

end;

BEGIN

 a:=0; b:=10;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)< R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(R);

END.

  1.  (Л.А. Тумарина) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

Var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F:=-(x+4)*(x+2);

end;

BEGIN

 a:=-2; b:=20;

 M:=a; R:=F(a);

 for t:=a to b do begin

   if (F(t)>R)then begin

     M:=t;

     R:=F(t);

   end;

 end;

 write(M);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

begin

 F := 2*(x-9)*(x-9)+12;

end;

BEGIN

 a := -20; b := 20;

 M := a; R:= F(a);

 for t := a to b do

   if (F(t)<R) then begin

     M := t;

     R:= F(t);

   end;

 write(M);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

begin

 F := 9*(x-15)*(x+17)+2;

end;

BEGIN

 a := -20; b := 20;

 M := a; R:= F(a);

 for t := a to b do

   if (F(t)<R) then begin

     M := t;

     R:= F(t);

   end;

 write(M);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

begin

 F := -3*(x-10)*(x+2)+2;

end;

BEGIN

 a := -20; b := 20;

 M := a; R:= F(a);

 for t := a to b do

   if (F(t)>R) then begin

     M := t;

     R:= F(t);

   end;

 write(M);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

begin

 F := 5*(x+10)*(x+2)+2;

end;

BEGIN

 a := -20; b := 20;

 M := a; R:= F(a);

 for t := a to b do

   if (F(t)<R) then begin

     M := t;

     R:= F(t);

   end;

 write(M);

END.

  1.  (А. Лаздин) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

begin

 F := -2*(x+2)*(x-6);

end;

Begin

 a := -11; b := 11;

 M := a; R:= F(a);

 t:=a;

 while t < b do

  begin

   if (F(t)>R) then

   begin

     M := t;

     R:= F(t);

   end;

  t:=t+2;

  end;

 write(R);

End.

  1.  (А. Лаздин) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

begin

 F := -2*(x+2)*(x-6);

end;

Begin

 a := -11; b := 11;

 M := a; R:= F(a);

 t:=a;

 while t < b do

  begin

   if (F(t)>R) then

   begin

     M := t;

     R:= F(t);

   end;

  t:=t+2;

  end;

 write(M);

End.

  1.  (А. Лаздин) Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

begin

 F := -2*(x+2)*(x-6);

end;

Begin

 a := -11; b := 11;

 M := a; R:= F(a);

 t:=a;

 while t < b do

  begin

   if (F(t)>=R) then

   begin

     M := t;

     R:= F(t);

   end;

  t:=t+2;

  end;

 write(M);

End.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

 F := 3*(x-8)*(x-8)

end;

begin

 a := -20; b := 20;

 M := a; R:= F(a);

 for t := a to b do begin

   if (F(t)<R) then begin

     M := t;

     R:= F(t)

   end

 end;

 write(M);

end.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

begin

 F := 19*(16-x)*(16-x)+27;

end;

BEGIN

 a := -20; b := 20;

 M := a; R:= F(a);

 for t := a to b do begin

   if (F(t) < R) then begin

     M := t;

     R:= F(t);

   end;

 end;

 write(M);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

begin

 F := 19*(11-x)*(11-x)+27;

end;

BEGIN

 a := -20; b := 20;

 M := a; R:= F(a);

 for t := a to b do begin

   if (F(t) < R) then begin

     M := t;

     R:= F(t);

   end;

 end;

 write(R);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

begin

 F := 16* (9-х)*(9-х)+127;

end;

BEGIN

a:= -20; b:= 20;

M:= a; R:= F(a) ;

for t:=a to b do begin

 if F(t) < R then begin

   M:= t;

   R:= F(t);

 end;

end;

write(R);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

begin

 F := 15*(5+x)*(5+x)+125;

end;

BEGIN

  a := -25; b := 25;  

 M := a; R:= F(a);

 for t := a to b do begin

   if F(t) > R then begin

     M := t;

     R:= F(t);

   end;

 end;

 writeln(M);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

begin

 F := 26*(9+х)*(9+х)+131;

end;

BEGIN

a:= -20; b:= 20;

M:= a; R:= F(a);

for t:=a to b do begin

 if F(t) < R then begin

   M:= t;

   R:= F(t);

 end;

end;

write(R);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

begin

 F := 10*(5-x)*(5-x)+120;

end;

BEGIN

 a := -20; b := 20;  

 M := a; R:= F(a);

 for t := a to b do begin

   if F(t) > R then begin

     M := t;

     R:= F(t);

   end;

 end;

 writeln(M);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

begin

 F := 19-19*(x-1)*(x-1);

end;

BEGIN

 a := 10; b := 20;  

 M := a; R:= F(a);

 for t := a to b do begin

   if F(t) > R then begin

     M := t;

     R:= F(t);

   end;

 end;

 writeln(M);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

begin

 F := 6*(x+10)*(x+10)+30;

end;

BEGIN

 a := -5; b := 20;  

 M := a; R:= F(a);

 for t := a to b do begin

   if F(t) > R then begin

     M := t;

     R:= F(t);

   end;

 end;

 writeln(R);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x: integer):integer;

begin

 F := 281 - 2*(17+x)*(17+x);

end;

BEGIN

 a := -7; b := 25;  

 M := a; R:= F(a);

 for t := a to b do begin

   if F(t) > R then begin

     M := t;

     R:= F(t);

   end;

 end;

 writeln(R);

END.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R :integer;

Function F(x:integer):integer;

begin

 F := (x*x-9)*(x*x-9)+5 end;

begin

 a := -13; b := 13; M := a; R := F (a) ;

 for t := a to b do

   if (F(t) < R) then begin

     M := t; R := F(t)

   end;

write(M+7)

end.

  1.  Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R :integer;

Function F(x:integer):integer;

begin

 F := (x*x-25)*(x*x-25)+15 end;

begin

 a := -15; b := 15; M := a; R := F (a) ;

 for t := a to b do

   if (F(t) <= R) then begin

     M := t; R := F(t)

   end;

write(M+15)

end.

1 Источники заданий:


Демонстрационные варианты ЕГЭ 2012-2013 гг.


Тренировочные работы МИОО.


Авторские разработки.

 26 http://kpolyakov.narod.ru




1. Удивительный мир звука
2. правові умови здійснення даного проекту
3. Тема 1- Предмет и метод истории экономических учений
4. Тема роботи- Засоби підготовки Wordдокументів до друку Мета роботи- 1
5. Аналіз керівництва на підприємстві
6. Жак Шира
7. тема- Вещественные доказательства в судебном процессе
8. Национальные особенности российского предпринимательства
9. Родительская библиотека Рисунки Юлии Лосевой Фотография на обложке Динары Сафуановой Млодик И.
10. Вклад античных врачей в развитие науки
11. Переход от С к С++
12. Пенсионная система РФ и ее проблемы1
13. Классификация ЧС по характеру источника и масштабам распространения Наиболее распрна- по причине.html
14. тема связх с формированием распредел и испем централх и децентрализх фондов ден срв госво предпря орг
15. Источники создания расширенного уровня сервиса
16. тема має свою структуру 3 Міжнародна економічна інтеграція 4 Основні етапи розвитку світового господарств
17. Реферат- Технология монтажа металлических конструкций
18. тема и значение Особенной части уголовного права
19. ЛАБОРАТОРНАЯ РАБОТА 14 ИССЛЕДОВАНИЕ СОБСТВЕННЫХ КОЛЕБАНИЙ СТРУНЫ МЕТОДОМ РЕЗОНАНСА Цель работы- и
20. Каскадное обновление и удаление представляют собой альтернативу просто ограничения вхождения двух после