|
Семь тестов, три задачиПриведенные тесты и задачи могут быть использованы на уроках, а также при подготовке учащихся к ЕГЭ по информатике. Тесты1. Если каждая четверка битов в каждом элементе последовательности: 000110010110, 00010001100101100110, 0001000100011001011001100110, … кодирует десятичную цифру, то на седьмом месте последовательности находится элемент, соответствующий десятичному числу: а) 111111196666666; б) 111111199999996666666; в) 111999999999666; г) 196196196196196196196. Ответ: а). Обоснование ответа. Если перевести четверки битов в десятичную систему, то можно получить последовательность: 196, 11966, 1119666, … . Проанализировав закон построения последовательности, можно обнаружить, что искомое десятичное число должно выглядеть так: 111111196666666. 2. Наименьшее количество различных законов логики, максимально упрощающих выражение: , равно: а) 5; б) 4; в) 3; г) 2. Ответ: в). Обоснование ответа. Необходимо: 1) применить наименьшее количество аксиом; 2) применить аксиомы наименьшее число раз. Одним из законов, позволяющих быстро уменьшать “длину” упрощаемого выражения, является закон поглощения. Попробуем применить этот закон. Проанализируем выражение под “внешним” знаком отрицания: по закону поглощения вида: . Следовательно, (применен второй закон — закон идемпотентности: ). Применяем третий закон — закон исключенного третьего: . Получили, что z = 1. Другие подходы к упрощению потребуют большего числа законов и (или) большего числа их применения. Например, возможен часто используемый путь упрощения, что называется, “в лоб”: В нем использовано большое количество различных законов (сколько их?). 3. Составлена программа решения квадратного уравнения вида ax2 + bx + c = 0. После ввода исходных данных ее структура: если … то … иначе если … то … иначе если … то … иначе Все операторы и выражения в ней записаны правильно. Минимально необходимое количество тестов для проверки правильности программы равно: а) 3; б) 4; в) 5; г) 6. Ответ: г). Обоснование ответа. Минимально необходимый набор тестов должен содержать тесты для проверки всех исключительных ситуаций, которые могут встретиться при решении рассматриваемой задачи (хотя для сложных и больших программ полное описание исключительных ситуаций часто невозможно). Не рассматривая (как это обычно делается в школе) случай существования комплексных корней, перечислим исключительные ситуации для задачи решения квадратного уравнения: 1) a = 0, b = 0, c = 0 — уравнение выродилось в тождество 0 = 0; 2) a = 0, b = 0, c № 0 — уравнение не имеет смысла (нет уравнения); 3) a = 0, b № 0 — квадратное уравнение выродилось в уравнение первой степени с одним корнем; 4) дискриминант D > 0 — уравнение имеет два различных корня; 5) дискриминант D = 0 — уравнение имеет два равных корня; 6) дискриминант D < 0 — уравнение не имеет вещественных корней. Сами тесты (их параметры) не так важны, два и более тестов для одной и той же ситуации не нужны. Например, достаточен набор тестов вида: 1) а = 0, b = 0, c = 0; 2) а = 0, b = 0, c = 1; 3) а = 0, b = 1, c = 2; 4) а = 1, b = –5, c = 6; 5) а = 1, b = –4, c = 4; 6) а = 1, b = 2, c = 5. 4. Если ряд вида 01, 01012, 01012010123, 01012010123010120101234, … образован, начиная со второго числа, по единому правилу, то в 766-м разряде (слева направо) числа ряда с номером 9 стоит цифра: а) 0; б) 1; в) 7; г) 8. Ответ: г). Обоснование ответа. Число номер 1 задано изначально и имеет вид: 01. Определим, анализируя остальные числа, закон построения ряда. Сравнивая каждое число ряда с предыдущим, видим, что этот закон таков: каждое новое число получается путем присоединения к предыдущему его копии и затем добавления номера нового числа. Поэтому порядковые номера чисел расположены соответственно на позициях: 2, 5, 11, 23, 47, 95, 191, 383, 767 (или в общем виде — на (2n + 1)-й позиции, где n — количество цифр в предыдущем числе ряда). Следовательно, у 9-го числа на предпоследнем, 766-м, месте стоит последняя цифра добавленной копии предыдущего числа, т.е. его номер — 8. 5. В населенном пункте численностью 50 000 человек, где в первые и вторые сутки больными были соответственно 100 и 200 человек, а эпидемия распространяется по закону: x(t + 1) = x(t) + x(t – 1)x(t), где x(t) — число больных на t-е сутки, все его население заболеет к концу: а) пятых суток; б) четвертых суток; в) третьих суток; г) вторых суток. Ответ: б). Обоснование ответа. Проведем расчеты по указанной рекуррентной формуле: x(3) = x(2) + x(1)x(2) = x(2)(1 + x(1)) = 200 ґ 101 = 20 200, x(4) = x(3)(1 + x(2)) = 20 200 ґ 201 = 4 060 200. Итак, весь поселок заболеет к концу четвертых суток. 6. Фрагмент программы — на языке Паскаль: a := 1; b := 1; d := 1; с := 1; for i := 2 to 4 do begin writeln(с); a := 10 * a + i; d := 10 * d; c := a * d + b; b := d * i + b end — на языке Бейсик: a = 1: b = 1 d = 1: с = 1 FOR i = 2 TO 4 PRINT с a = 10 * a + i d = 10 * d c = a * d + b b = d * i + b NEXT i
выводит числа:
а) 1, 111, 112211, 111222111; б) 1, 111, 11211, 1123211; в) 1, 111, 12321, 1234321; г) 1, 111, 232, 343. Ответ: б). Обоснование ответа. Проследим изменение значений переменных, воспользовавшись таблицей: 7. Из цифр числа х получить число y, записанное теми же цифрами, но наоборот (незначащие нули отбрасываются), можно фрагментом: — на языке Паскаль: а) y := 0; while x > 0 do begin y := 10 * y + x mod 10; x := x — x div 10 end б) y := 0; while x >= 0 do begin y := 10 * y + x mod 10; x := x div 10 end в) y := 0; while x > 0 do begin y := 10 * y + x mod 10; x := x div 10 end г) y := 1; while x > 0 do begin y := 10 * y + x mod 10; x := x div 10 end — на языке Бейсик: а) y = 0 WHILE x > 0 y = 10 * y + x mod 10 x = x — x\10 WEND б) y = 0 WHILE x >= 0 y = 10 * y + x mod 10 x = x\10 WEND в) y = 0; WHILE x > 0 y = 10 * y + x mod 10; x = x\10 WEND г) y = 1 WHILE x > 0 y = 10 * y + x mod 10; x = x\10 WEND Ответ: в). Обоснование ответа. Вариант а) — неверный, так как в нем неправильно получается новое значение х. В остальных вариантах это значение рассчитывается правильно (x := x div 10). Вариант г) – неверный, так как формирует число у, начиная с заданной (ошибочно) единицы (y := 1; ). В варианте в) оператор присваивания (на языке Паскаль): y := 10 * y + x mod 10 как раз формирует (в цикле) искомое число у — каждый раз добавляет последнюю цифру текущего значения x к текущему значению y, умноженному на 10. Тело оператора цикла выполняется, пока соблюдается условие x > 0. Очень “правдоподобен” ответ б), но в нем будет иметь место зацикливание, т.к. условие x 0 будет в конце концов соблюдаться постоянно. Задачи 1. Может ли при каком-то р количество 112p + 2 равняться количеству 1214p? Решение. Прежде всего ясно, что в виде индекса обозначено основание системы счисления. Допустим, что для некоторого p равенство 112p + 2 = 1214p справедливо. Переведем оба числа равенства в десятичную систему — получим: (p + 2)2 + (p + 2) + 2 = p3 + 2p2 + p + 4 или p2(p + 1) = 4(p + 1). Так как p + 1 № 0, то p2 = 4, а p = 2. Так как в записи чисел равенства есть цифра 4, то p > 4, т.е. найденное значение p не подходит. Ответ — отрицательный. 2. Составить программу вычисления квадрата заданного целого числа, не используя операции умножения, возведения в степень и встроенные функции. Решение. Прежде всего можно использовать представление x2 в виде х слагаемых: x2 = x + x + …+ x. Соответствующий вариант программы на школьном алгоритмическом языке: алг Возведение_в_квадрат нач цел x, y, i ? вывод "x = " ? ввод x ? y := 0 ? нц для i от 1 до x ? | y := y + x ? кц ? вывод нс, "Квадрат х равен ", y кон Можно также применить формулу суммы членов арифметической прогрессии: x2 = 1 + 3 + 5 + … + (2x – 1): алг Возведение_в_квадрат нач цел x, y, i ? вывод нс, "x = " ? ввод x ? i := 1; y := 0 ? нц пока i <= x ? ? y := y + i + i — 1 ? ? i := i + 1 ? кц ? вывод нс, "Квадрат х равен ", y кон 3. Записать в виде формул или формулы правило формирования последовательности десятичных чисел: 1, 10, 11, 100, 111, 1000, 1111, … . Решение. Если пытаться найти общий закон для всех чисел, то задача значительно усложняется. Лучше сравнивать отдельно числа на четных и на нечетных местах. Тогда связь становится “прозрачной”: каждое число на четном месте получается из числа на предыдущем четном месте умножением его на 10, а каждое число на нечетном месте — умножением числа на предыдущем нечетном месте на 10 и добавлением к результату 1. Этот словесно описанный закон можно записать (формализовать) с помощью формул так: A1 = 1, A2 = 10, A2n + 1 =10A2n – 1+ 1, A2n + 2 = 10A2n, n = 1, 2, … .
В.. М.. Казиев ;
|