Задание 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
Оставьте коммент первым.