1) Для оптимизации кода. Если у вас один и тот же код повторяется много-много раз, то это не есть хорошо. Поэтому люди придумали процедуры/функции, которые выполняют повторяющийся функционал. Процедуры, очень грубо говоря - это мини-программа в программе.
2) Их иначе не создать. Языки программирования переводят наши в компьютерный язык, чтобы на ПК понимал, что мы от него хотим. Языки программирование - некие переводчики между нашим языком и языком ПК.
3) Оптимизирует код. Удобно при использование. Выглядит красиво. Можно не писать один и тот же код по 100 раз, в таком случае - у нас было бы очень-очень много одинаковых блоков-кода в программе.
Объяснение:
Во первых рекомендую пользоваться компилятором.
Я прикрепила фото результата работы программы. Вышло 405.
Чтоб найти сколько раз повторяется цикл, нужно напротив цикла поставить точку останова и в режиме отладки смотреть сколько раз будет повторяться цикл. Либо добавить еще одну переменную int i= 0;
и в цикле после выражений написать i++; И дальше в конце ее вывести на экран и тебе покажет кол-во итераций(я приложила второе фото с таким решением, посмотри. Результат кол-ва итераций=21)
Когда условие перестанет выполняться, произойдет выход из цикла
(В данном случае условие s/n>=2. До тех пор пока s/n>=2 цикл будет выполняться. Когда результат от деления s/n будет будет меньше 2 цикл перестанет выполняться.)
Если под рукой нет компилятора и нужно узнать сколько раз повторяется цикл, нужно опять таки смотреть на условие цикла.
подставляешь в выражения числа и смотришь выполнится условие или нет. Если выполняется-дальше считаешь. Если не выполняется-выходишь из цикла.
Например, заходим в цикл:
s=300+5 (в итоге s=305)
n=100+5(в итоге n=105)
Дальше смотрим на условие цикла s/n>=2 (305/105>=2 да, значит цикл произведет еще одну итерацию)
s=305+5 (в итоге 310)
n=105+5 (в итоге 110)
Опять проверяем условие(310/110>=2 да, значит цикл произведет еще одну итерацию)
Продолжаем расчеты
s=310+5 (в итоге 315)
n=110+5 (в итоге 115)
Опять проверяем условие(315/115>=2 да, значит цикл произведет еще одну итерацию)
s=315+5 (в итоге 320)
n=115+5 (в итоге 120)
Опять проверяем условие(320/120>=2 да, значит цикл произведет еще одну итерацию)
и тд. пока условие не перестанет выполняться.
Когда оно перестанет выполняться, цикл перестанет выполняться тоже. Потом Посчитаешь сколько раз ты производил вычисления.(сколько было итераций) и поймешь, что их было 21. Т.е твой цикл 21 раз повторяется и выводит результат вычисления переменной s равный 405.
Будут вопросы, спрашивай.
Удачи:)
// Внимание! Если программа не работает, обновите версию!
begin
var (n,m):=ReadInteger2;
var x:=ArrFill(n,0);
x.Println;
var z:=Copy(x);
for var i:=0 to m-1 do begin
var (a,b):=ReadInteger2;
a-=1; b-=1; x[a]-=1; x[b]+=1;
end;
for var i:=0 to n-1 do z[i+x[i]]:=i;
var y:='';
foreach var i in z do y+=(i+1)+' ';
Writeln(y)
end.