Repeat — это цикл с пост условием то есть в первый раз всё равно выполнится. Теперь разберём цикл, он будет выполнять это действие
(p:=p*0.1) пока (p) не станет меньше 0.1 , теперь работаем в теле цикла, (p) изначально равен двум по этому получаем p:=1*0,1; получаем p:=0,1 проверяем условие 0,1<0,1 нет повторяем второй раз цикл, теперь p:=0,1 а не 1 как было в первый раз p:=0,1*0,1 p:=0,01 проверяем условие
0,01<0,1 да меньше цикл прерывается и (p) остаётся равным 0,01
PascalABC.NET 3.3.5, сборка 1650 от 01.04.2018 Внимание! Если программа не работает, обновите версию!
begin var m:=ReadInteger('Количество строк/столбцов в матрице:'); Writeln('*** Исходная матрица ***'); var b:=MatrRandom(m,m,-99,99); b.Println(4); Writeln(4*m*'-'); var (s,s1):=(Sqr(b[0,0]),0); for var i:=0 to m-1 do for var j:=0 to m-1 do if i+j<>0 then s1+=b[i,j]; s-=Sqr(s1); Writeln('Результат: ',s) end.
Repeat — это цикл с пост условием то есть в первый раз всё равно выполнится. Теперь разберём цикл, он будет выполнять это действие
(p:=p*0.1) пока (p) не станет меньше 0.1 , теперь работаем в теле цикла, (p) изначально равен двум по этому получаем p:=1*0,1; получаем p:=0,1 проверяем условие 0,1<0,1 нет повторяем второй раз цикл, теперь p:=0,1 а не 1 как было в первый раз p:=0,1*0,1 p:=0,01 проверяем условие
0,01<0,1 да меньше цикл прерывается и (p) остаётся равным 0,01