Не могу понять код - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Всем привет! Я абсолютный новичек в программировании и в паскале, поэтому прошу вас помочь разобраться. Одна из задач в ЕГЭ выглядит так:
var t, m: integer;
Function F (x: integer): integer;
begin
if x mod 2 = 0 then F:= 1
else F:= -1
end;
begin
m:= 0;
for t:= 1 to 20 do
begin
m:= m+F(t)*t
end;
write (m);
end.
Нужно определить какое число будет выведено на экран. Я рассуждал так: 1) Функция F принимает значение 1 при условии, что х является четным числом, и -1 при условии, что х - это нечетное число. 2) Далее переменной m задается значение 0. 3) Создается цикл, который срабатывает 20 раз при этом каждый раз подставляет в функцию F значение, равное номеру цикла (то есть по очереди 1,2,3 и так до 20). 4) В зависимости от этого функция принимает либо значение 1, либо -1 (при нечетных t) 5) Далее, каждый раз переменной m присваивается значение равное сумме 0 + (1\-1)*1,2,3,4...20. Итого в последнем цикле m должно быть равно 0 + 1*20=20 Я дал ответ к задаче 20. Он оказался неверным. Верный ответ это 10. Но я не могу понять, почему, как это работает, что в итоге мы получаем 10. Пожалуйста объясните.

Решение задачи: «Не могу понять код»

textual
Листинг программы
for t:= 1 to 20 do
begin
m:= m+F(t)*t//если t четное, то +t, если нечетное, то -t
end;

Объяснение кода листинга программы

  1. Объявляется цикл for с переменной t от 1 до 20
  2. В каждой итерации цикла значение переменной m увеличивается на произведение F(t) и t
  3. Если t четное, то к значению переменной m добавляется значение переменной t, если нечетное, то отнимается значение переменной t
  4. Код не содержит операций присваивания, поэтому предполагается, что переменная m инициализируется до начала цикла и используется после его завершения

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5