Задание 7. Пример

1.Демо-версия 2012.

Задание с очевидным алгоритмов, выполняющимся большое число раз

Определите, что будет напечатано в результате работы следующего фрагмента программы:

Бейсик Паскаль
Dim k, s As Integers = 0k = 0

While s < 1024

s = s + 10

k = k + 1

End while

print k

Var k, s : integer;Begins:=0;

k:=0;

while s<1024 do

begin

s:=s+10;

k:=k+l

end;

write(k)

end.

Си Алгоритмический язык
{int k, s;s = 0;

k = 0;

while (s<1024) {

s = s+10;

k = k+1;

}

printf("%d", k);

}

начцел k, ss:=0

k:=0

нц пока s < 1024

s:=s+10;

k:=k+l

кц

вывод k

кон

Решение. При решении этой задачи не требуется непосредственно выполнять алгоритм. Обозначим Sk значение переменной s после выполнения k-й итерации цикла. Очевидно,

Sk = k∙10.

[Понимание этого и означает, что ученик понимает, как работает цикл] Условие прекращения цикла можно записать в виде Sk ≥ 1024. Найдем минимальное значение k, при котором это условие будет выполнено. Имеем:

k∙10 ≥ 1024 =>  k ≥ 102.4

Учитывая, что k – целое, получим: k=103.

Ответ: 103.

2. Демо-версия 2010 (модицифированная).

Индексная переменная уменьшается в два раза

Чему будет равно значение переменной b после выполнения фрагмента алгоритма?

Бейсик Паскаль
Dim a, b As Integera = 256b = 0

While a <> 1

a = a \ 2

b = b + 1

End while

Var a, b : integer;Begina:=256;

b:=0;

while a<>1 do

begin

a:=a div 2;

b:=b+1

end;

end.

Си Алгоритмический
{int a, b;a = 256;

b = 0;

while (a!=1) {

a = a/2;

b = b+1;

}

}

начцел a, ba:=256

b:=0

нцпока a <>1

a:=div(a, 2);

b:=b+1

кц

кон

Решение (набросок). При решении этой задачи не требуется непосредственно выполнять алгоритм. Значение переменной b равно количеству выполнений цикла. Исходное значение переменной a =256=28. При каждом прохождении цикла значение переменной a уменьшается в два раза. Условие выхода из цикла: a = 1 = 20. Это произойдет после 8 выполнений цикла.

Ответ: 8.

 

 
 

0 Comments

Оставьте коммент первым.

 
 

Что думаете?

 




 
 

 
 
Яндекс.Метрика