Категория B8 • задача №4
Условие задачи
Дано:
ниже на 2-х языках программирования записан некий алгоритм. Получив на вход три натуральных числа, данный алгоритм печатает два целых числа 1 и 3:
Вопрос:
какими входными числами должны быть входные значения?
Решение
I этап: выбор языка программирования
В принципе, выбор не так уж и велик, всего два различных языка программирования: чистый С и Pascal. Чем меньше предложений, тем проще сделать выбор. Безусловно, следует отдать собственные предпочтения языку программирования Pascal, так как:
в отличие от чистого С, Pascal имеет хорошо спроектированную лексику, практически в коде отсутствуют сложные и запутанные конструкции;
Pascal - строго типизированный язык, то есть, любая переменная перед ее использованием должна быть явно задекларирована в разделе описания переменных, то есть в разделе var;
превалирующее большинство школьников, по официальной статистике, в качестве базового языка программирования выбирают именно язык Pascal.
Промежуточный вывод: селекционировали язык программирования Pascal
II этап: построчный анализ представленного фрагмента программы
Код программы | Комментарии |
var | раздел объявления переменных |
k1, k2, k3, k4 : integer; | декларация четырех целочисленных переменных |
k5, k6 : real; | декларация двух вещественных переменных |
begin | начало главного блока программы |
write('Введите три целых числа: '); | диалог пользователю о предстоящем вводе трех чисел |
readln(k1, k2, k3); | пользователь вводит три целых числа с клавиатуры |
k4 := k2 * k2 - 4 * k1 * k3; | вычисление по формуле и занесение результата в переменную k4. Подобная формула очень сильно напоминает формулу, для вычисления дискриминанта при решении квадратных корней. |
if(k4 > 0) then | если значение переменной k4 величина положительная, то есть, если значение дискриминанта больше нуля, то уравнение имеет два различных действительных корня |
begin | начало тела условной конструкции |
k5 := (-k2 - sqrt(k4)) / (2 * k1); | производим расчет первого действительного корня квадратного уравнения |
k6 := (-k2 + sqrt(k4)) / (2 * k1); | производим расчет второго действительного корня квадратного уравнения |
writeln(K5:2:0, k6:2:0); | выпечатываем рассчитанне действительные корни на экран пользователя, причем формат вывода чисел - целочисленное значение |
end; | конец тела условной конструкции |
end. | финализирующий оператор программы |
Промежуточный вывод: в данной программе производится нахождение действительных корней квадратного уравнения заданного тремя целочисленными коэффициентами.
III этап: подбор входных данных
По условию задачи было сказано, что в результате работы приведенной программы, на экране визуализируются два целых числа: один и три. Учитывая, что данная программа решает квадратное уравнение, следовательно, на экране печатаются действительные корни, являющиеся решение квадратного трехчлена, то есть:
x1 = 1;
x2 = 3.
Классический приведенный квадратный трехчлен имеет вид: ax2 + bx + c (a = 1). Если известны действительные корни данного трехчлена, то его можно представить в следующей форме:
x2 + bx + c = (x - x1)(x - x2).
Подставим в полученное выражение известные нам значения x1 и x2, тогда получим:
x2 + bx + c = (x - x1)(x - x2) = (x - 1) · (x - 3) = x2 - 3x - x + 3 = x2 - 4x + 3, то есть
a = 1, b = -4, c = 3.
То есть, чтобы программа распечатала в результате свой работы на экране числа 1 и 3, необходимо ввести три целых числа: 1, -4 и 3.
Промежуточный вывод: входными числами являются числа 1, -4, 3.
IV этап: точечное тестирование программы
Проведем решение квадратного уравнения, когда коэффициенты имеют следующие значения:
a = 1;
b = -4;
c = 3.
Рассчитаем значение дискриминанта:
D = b2 - 4 · a · c = (-4)2 - 4 · 1 · 3 = 16 - 12 = 4
Так как значением дискриминанта является положительное число, то решаемое квадратное уравнение имеет два различных действительных корня:
Как видно из вычислений, полученных два числа совпадают с теми значениями, указанными в условии задачи (эти значения равны 1 и 3), следовательно, задача решена абсолютно корректно.
Вывод: |
чтобы программа в результате свой работы распечатала на экране два целых числа 1 и 3, необходимо на вход подать числа, равные 1, -4 и 3. |
Резюме
выбрали один из предложенных языков программирования за базовый язык программирования;
провели детализированный анализ каждой строки представленного фрагмента программы;
подобрали входные данные, чтобы получить нужные результаты;
провели точечное тестирование программы.
Ответ: |
1, -4, 3 |
Категория B8 • задача №4
Остальные решения из билета №4 для подготовки к ЕГЭ по информатике 2013
Условие задачи (наведите курсор мыши на ссылку) |
Аудиовизуальное решение |
Мультимедийная видеопрезентация |
Решение в формате слайд-шоу |
Текстовое решение |
---|
Комментарии