ОБЪЯСНИТЕ как делать Определите, что будет напечатано в результате работы следующей...

0 голосов
56 просмотров

ОБЪЯСНИТЕ как делать


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

Алгоритмический язык

s = 0 п=12
FOR i = 1 ТО 10
s= s+n-i
NEXTi
PRINTS
END
Бейсик

var s, n, i: integer;
begin
s:=0; n:=12;
for i:=l to 10 do
s:=s+n-i;
write (s);
end.
Паскаль

алг
нач
цел s, n, i
s:=0,
n:=12,
нп для i от 1 до 10
n:= s+n-i
кц
вывод n
кон


Информатика (76 баллов) | 56 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Делать это несложно. Есть два способа.

Первый способ условно назовем "я - компьютер". Вы превращаетесь в Исполнителя и с железной тупостью выполняете алгоритм - инструкцию за инструкцией, каждый раз выписывая на бумаге результат. Если у Вас много времени и Вы, как и компьютер, не делаете ошибок, то рано или поздно нужный результат будет получен.

Второй способ назовем "я - человек". Вы напрягаете свой мозг и определяете, что именно делает алгоритм, после чего проводите нужные вычисления. В этом варианте обычно к результату приходят быстрее.

Попробуем второй путь.

Вначале полагаем, что s=0, n=12.
Далее следует цикл, в котором i последовательно принимает значения 1, 2, ... 10.
s=s+"что-то" говорит нам о том, что в s накапливается некая сумма, для чего s предварительно обнулялось.
А что именно накапливается? n-i. При проходах по циклу это будут значения n-1, n-2, ... n-10.
У нас n=12, поэтому в s будет накапливаться сумма 11+10+9+...+2. Или, это удобнее записать как 2+3+4+...+9+10+11.
Это сумма арифметической прогрессии из 10 членов и ее можно найти по формуле суммы арифметической прогрессии. Если лениво вспоминать формулу, можно просто сложить эти числа. А можно поступить, как поступил в свое время Гаусс: заметить, что 2+11=13, 3+10=13, 4+9=13 и таких пар 5. И найти результат 5×13=65. Такая вот победа мозга над рутиной)))
Ответ: 65

(150k баллов)