Задание 8. Пример
1.Демо-версия 2012.
Задание с очевидным алгоритмов, выполняющимся большое число раз
Определите, что будет напечатано в результате работы следующего фрагмента программы:
Бейсик | Паскаль |
DIM K, S AS INTEGER K = 0 S = 0 WHILE S < 1024 S = S + 10 K = K + 1 WEND PRINT K | var k, s: integer; begin k := 0; s := 0; while s <= 1024 do begin s := s + 10; k := k + 1; end; write(k); end. |
Си | Алгоритмический |
#include<stdio.h> void main(){ int k, s; k = 0; s = 0; while (s <= 1024) { s = s + 10; k = k + 1; } printf("%d", k); } | алг нач цел k, s k := 0; s := 0 нц пока s <= 1024 s := s + 10 k := k + 1 кц вывод 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 INTEGER A = 256 B = 0 WHILE A != 1 A = A DIV 2 K = K + 1 WEND PRINT K | var a, b: integer; begin a := 256; b := 0; while a <> 1 do begin a := a div 2; k := k + 1; end; write(k); end. |
Си | Алгоритмический |
#include<stdio.h> void main(){ int a, b; a = 256; b = 0; while (a != 1) { a= a % 2; b = b + 1; } printf("%d", b); } | алг нач цел a, b a := 256; b := 0 нц пока a <> 1 a:= div(a,2) b := b + 1 кц вывод b кон |
Решение (набросок). При решении этой задачи не требуется непосредственно выполнять алгоритм. Значение переменной b равно количеству выполнений цикла. Исходное значение переменной a =256=28. При каждом прохождении цикла значение переменной a уменьшается в два раза. Условие выхода из цикла: a = 1 = 20. Это произойдет после 8 выполнений цикла.
Ответ: 8.
0 Comments
Оставьте коммент первым.