Объяснение: всё дело в том, что в первом случае (в верхнем, где s = 0 написано вне цикла) s изначально равен нулю, а затем с каждой итерацией цикла s увеличивается.
А втором случае на каждой итерации цикла сначала присваивается s = 0, а затем уже изменяется. Поэтому перед каждой следующей итерацией цикла всё что происходило с s раньше обнуляется.
Если подвести итог, то разница заключается в том, что присваивание находится в цикле или вне него, а значит выполняется один раз (если вне цикла) или много раз (если внутри)
А)
program num;
var
number: integer;
begin
read(number);
if (number mod 2 = 0) then
write('ДА')
else
write('НЕТ');
end.
Б)
program b;
var
first, second: integer;
begin
read(first, second);
if (first > second) then
write(first + second)
else
write(first * second);
end.
Объяснение:
А)
program num; // Название программы
var
number: integer; // Целочисленная переменная, хранящая вводимое с клавиатуры число
begin // Начало программы
read(number); // Считываем число с клавиатуры
if (number mod 2 = 0) then // Если остаток от деления значения переменной number на 2 = 0, тогда
write('ДА') // Выводим "Да"
else // Иначе
write('НЕТ'); // Выводим "Нет"
end. // Конец программы
Б)
program b; // Название программы
var
first, second: integer; // Целочисленные переменные, хранящие вводимые с клавиатуры числа
begin // Начало программы
read(first, second); // Считываем числа с клавиатуры
if (first > second) then // Если первое число > второго числа, тогда
write(first + second) // Выводим сумму этих чисел
else // Иначе
write(first * second); // Выводим произведение этих чисел
end. // Конец программы
// PascalABC.NET 3.2, сборка 1359 от 11.12.2016
// Внимание! Если программа не работает, обновите версию!
begin
Print(Range(1.0,5.0,Floor((5-1)/0.5)).Select(x->x*x-3*x+ln(x)).Max)
end.
Результат
11.6094379124341
2. Школьный вариант (ну вот так у нас в школах учат!)
var
x,y,max:real;
begin
max:=-1000;
x:=1;
while x<=5 do
begin
y:=sqr(x)-3*x+ln(x);
if max<y then max:=y;
x:=x+0.5
end;
Write(max)
end.