Категория B2 • задача №1
Условие задачи
Дано:
фрагмент программы, записанного на разных языках программирования.
Вопрос:
определите значение переменной с после выполнения следующего данного фрагмента программы.
Решение
I этап: необходимо выбрать язык программирования, код, на основании которого будет подвержен анализу.
Во-первых, сразу отбросим "Алгоритмический язык", так как нет ничего более неуместного, чем пытаться разбирать код программы, записанный на некоем неформализованном языке.
Во-вторых, избавимся от языка программирования "Чистый С", так как данный язык обладает внутренней сложность и, как правило, любой код на данном языке является запутанным и плохо поддающимся анализу.
В-третьих, исключим язык программирования "Basic", так как в отличие от языка программирования Turbo Pascal, он имеет слабую типизацию, а также неудобные подпрограммы для обработки строковых величин. В дополнении, Basic не имеет встроенный тип данных, описывающий Множества.
В итоге, наш выбор однозначен - язык программирования Pascal. Думаю, что еще долгие годы, данный язык программирования будет удерживать ветвь первенства в сфере образования.
II этап: анализ представленного фрагмента программы.
Для эффективного решения потребуется ввести процессинговую таблицу переменных, в которой отображать все изменения значений переменных, используемых в данном фрагменте кода. Данная таблица будет состоять из трех колонок:
отвечает за значения переменной а;
отвечает за значения переменной b;
отвечает за значения переменной c.
В первых двух строках происходит предварительная инициализация переменных a и b:
a := 20;
b := 7;
в итоге процессинговая таблица примет вид:
Значение переменной a | Значение переменной b | Значение переменной c |
20 | 7 | ? |
Затем происходит реинициализация переменной a:
a := a - b * 2;
в итоге процессинговая таблица принимает вид (переменная b не меняет своего текущего значения):
Значение переменной a | Значение переменной b | Значение переменной c |
20 | 7 | ? |
20 - 7 * 2 = 20 - 14 = 6 | 7 | ? |
Затем происходит проверка условного выражения:
if a > b then
Произведем подстановку значений переменных (а = 6, b = 7): 6 > 7 - FALSE, следовательно, управление передается в блок else, в котором присутствует следующий код:
c := b - a;
в итоге процессинговая таблица принимает вид (переменные a и b не поменяли своего значения):
Значение переменной a | Значение переменной b | Значение переменной c |
20 | 7 | ? |
20 - 7 * 2 = 20 - 14 = 6 | 7 | ? |
6 | 7 | 7 - 6 = 1 |
Как видно из заполненной процессинговой таблицы, значение переменной с имеет значение равное 1-ин.
Вывод: |
значение переменной с после выполнения предложенного фрагмента кода примет значение равное 1 |
Резюме
выбрали в качестве фундамента язык программирования Pascal;
построили и заполнили процессинговую таблицу значения переменных.
Ответ: |
1 |
Комментарии