Категория B5 • задача №1
Условие задачи
Дано:
фрагмент некой программы в виде схематичной блок-схемы
Найти:
определите значение переменной b после выполнения фрагмента алгоритма:
Примечание: знаком ":=" обозначена операция присваивания
Решение
I этап: проанализируем заданную блок-схему и постараемся выявить и понять все операции, задействованный в ней.
Перечень операций, встречающихся в заданной блок-схеме:
:= - операция присваивания;
a = 1, изображенное в ромбе - означает условное выражение, то есть, идет проверка if(a = 1) then...;
a / 2 - означает операцию деления, без отбрасывания дробной части;
+ - операция сложения двух значений.
Также очевидно, что в блок-схеме представлена циклическая конструкция, по структуре схожая с циклом
while(условие) do, как в языке программирования Pascal.
II этап: заведем и заполним процессинговую таблицу переменных.
До начала цикла следуют два оператора:
a := 256;
b := 0;
данные операторы отвечают за предварительную инициализацию переменных a и b, до того, как управление программой оказалось внутри цикла while.
Проверка условия | Значение переменной a | Значение переменной b |
Проверки не было | 256 | 0 |
Затем управление передается в условие цикла и проверяется выражение: a = 1.
Очевидно, что это ЛОЖЬ (так как 256 <> 1), следовательно, выполняются два оператора, представленных в теле цикла:
Проверка условия | Значение переменной a | Значение переменной b |
Проверки не было | 256 | 0 |
ЛОЖЬ | 128 | b = 0 + 128 + 1 = 129 |
Затем управление передается в условие цикла и проверяется выражение: a = 1.
Очевидно, что это ЛОЖЬ (так как 128 <> 1), следовательно, выполняются два оператора, представленных в теле цикла:
Проверка условия | Значение переменной a | Значение переменной b |
Проверки не было | 256 | 0 |
ЛОЖЬ | 128 | b = 0 + 128 + 1 = 129 |
ЛОЖЬ | 64 | b = 129 + 64 + 1 = 194 |
Затем управление передается в условие цикла и проверяется выражение: a = 1.
Очевидно, что это ЛОЖЬ (так как 64 <> 1), следовательно, выполняются два оператора, представленных в теле цикла:
Проверка условия | Значение переменной a | Значение переменной b |
Проверки не было | 256 | 0 |
ЛОЖЬ | 128 | b = 0 + 128 + 1 = 129 |
ЛОЖЬ | 64 | b = 129 + 64 + 1 = 194 |
ЛОЖЬ | 32 | b = 194 + 32 + 1 = 227 |
Затем управление передается в условие цикла и проверяется выражение: a = 1.
Очевидно, что это ЛОЖЬ (так как 32 <> 1), следовательно, выполняются два оператора, представленных в теле цикла:
Проверка условия | Значение переменной a | Значение переменной b |
Проверки не было | 256 | 0 |
ЛОЖЬ | 128 | b = 0 + 128 + 1 = 129 |
ЛОЖЬ | 64 | b = 129 + 64 + 1 = 194 |
ЛОЖЬ | 32 | b = 194 + 32 + 1 = 227 |
ЛОЖЬ | 16 | b = 227 + 16 + 1 = 244 |
Затем управление передается в условие цикла и проверяется выражение: a = 1.
Очевидно, что это ЛОЖЬ (так как 16 <> 1), следовательно, выполняются два оператора, представленных в теле цикла:
Проверка условия | Значение переменной a | Значение переменной b |
Проверки не было | 256 | 0 |
ЛОЖЬ | 128 | b = 0 + 128 + 1 = 129 |
ЛОЖЬ | 64 | b = 129 + 64 + 1 = 194 |
ЛОЖЬ | 32 | b = 194 + 32 + 1 = 227 |
ЛОЖЬ | 16 | b = 227 + 16 + 1 = 244 |
ЛОЖЬ | 8 | b = 244 + 8 + 1 = 253 |
Затем управление передается в условие цикла и проверяется выражение: a = 1.
Очевидно, что это ЛОЖЬ (так как 8 <> 1), следовательно, выполняются два оператора, представленных в теле цикла:
Проверка условия | Значение переменной a | Значение переменной b |
Проверки не было | 256 | 0 |
ЛОЖЬ | 128 | b = 0 + 128 + 1 = 129 |
ЛОЖЬ | 64 | b = 129 + 64 + 1 = 194 |
ЛОЖЬ | 32 | b = 194 + 32 + 1 = 227 |
ЛОЖЬ | 16 | b = 227 + 16 + 1 = 244 |
ЛОЖЬ | 8 | b = 244 + 8 + 1 = 253 |
ЛОЖЬ | 4 | b = 253 + 4 + 1 = 258 |
Затем управление передается в условие цикла и проверяется выражение: a = 1.
Очевидно, что это ЛОЖЬ (так как 4 <> 1), следовательно, выполняются два оператора, представленных в теле цикла:
Проверка условия | Значение переменной a | Значение переменной b |
Проверки не было | 256 | 0 |
ЛОЖЬ | 128 | b = 0 + 128 + 1 = 129 |
ЛОЖЬ | 64 | b = 129 + 64 + 1 = 194 |
ЛОЖЬ | 32 | b = 194 + 32 + 1 = 227 |
ЛОЖЬ | 16 | b = 227 + 16 + 1 = 244 |
ЛОЖЬ | 8 | b = 244 + 8 + 1 = 253 |
ЛОЖЬ | 4 | b = 253 + 4 + 1 = 258 |
ЛОЖЬ | 2 | b = 258 + 2 + 1 = 261 |
Затем управление передается в условие цикла и проверяется выражение: a = 1.
Очевидно, что это ЛОЖЬ (так как 2 <> 1), следовательно, выполняются два оператора, представленных в теле цикла:
Проверка условия | Значение переменной a | Значение переменной b |
Проверки не было | 256 | 0 |
ЛОЖЬ | 128 | b = 0 + 128 + 1 = 129 |
ЛОЖЬ | 64 | b = 129 + 64 + 1 = 194 |
ЛОЖЬ | 32 | b = 194 + 32 + 1 = 227 |
ЛОЖЬ | 16 | b = 227 + 16 + 1 = 244 |
ЛОЖЬ | 8 | b = 244 + 8 + 1 = 253 |
ЛОЖЬ | 4 | b = 253 + 4 + 1 = 258 |
ЛОЖЬ | 2 | b = 258 + 2 + 1 = 261 |
ЛОЖЬ | 1 | b = 261 + 1 + 1 = 263 |
Затем управление передается в условие цикла и проверяется выражение: a = 1.
Очевидно, что это ИСТИНА (так как 1 = 1), следовательно, производится выход из цикла и построение процессинговой таблицы закончено. Осталось лишь посмотреть на значение переменной b в самой нижней строке таблицы.
Очевидно, что b = 263.
Вывод: |
после выполнения представленного алгоритма, изображенного на блок-схеме, значение переменной b будет равно 263-и. |
Резюме
разобрали структуру алгоритма;
построили процессинговую дифференцированную таблицу с разрезом по значениям переменных.
Ответ: |
263 |
Комментарии