Сначала определить, что требуется найти
Представим задачу: среди целых чисел от одного до двенадцати включительно найти количество чисел, которые делятся на три и не делятся на два. В ней есть область поиска, два свойства и требование к ответу. Требуется количество, а не сумма и не наибольшее подходящее число. Полезно записать эти части отдельно. Слово включительно означает, что крайние значения тоже проверяются. Если изменить его смысл или начать перебор с другого числа, получится уже другая задача, даже при правильно работающей программе.
Разобрать логические связки
Связка и требует одновременного выполнения обоих свойств. Связка или в обычной математической логике допускает выполнение хотя бы одного из них, включая оба сразу. Операция отрицания меняет истинность указанного условия на противоположную. В примере число шесть делится на три, но не подходит, потому что делится и на два. Число три проходит обе проверки: первое свойство истинно, второе условие о неделимости тоже истинно. Полезно избегать фразы подходит по одному признаку, когда в задаче явно требуется их сочетание.
Проверить небольшой набор вручную
Сначала выпишем числа, кратные трём: три, шесть, девять и двенадцать. Затем исключим чётные: останутся три и девять. Следовательно, ответ равен двум. Такой ручной разбор даёт понятный ориентир для программы. При программной проверке делимость можно выражать нулевым остатком от деления, а неделимость ненулевым. Но корректный оператор остатка не спасает от неверной связи между условиями. Поэтому полезно проверять не только итоговое число, но и сам список найденных значений.
Найти причину расхождения
Если программа выдала другой результат, полезно сначала сравнить промежуточные данные. Какие числа проверялись? Какие из них прошли первое условие? Какие второе? Если в результате появились шесть и двенадцать, возможно, забыто отрицание. Если подходящих чисел стало слишком много, стоит проверить связку или вместо и. Это предположения о типичных ошибках, а не единственные возможные причины. После исправления полезно изменить один элемент задачи и снова предсказать ответ вручную. Так проверяется понимание, а не запоминание конкретной пары чисел.
Попробуйте на практике
Решите собственную учебную задачу: среди целых чисел от одного до двадцати включительно найдите количество чисел, которые делятся на четыре и не делятся на три.
- Выпишите область поиска и подчеркните, что требуется именно количество подходящих чисел.
- Перечислите все числа из диапазона, кратные четырём.
- Для каждого проверьте делимость на три и исключите неподходящие.
- Подсчитайте оставшиеся значения и отдельно найдите их сумму, чтобы увидеть различие ответов.
- Измените верхнюю границу на двенадцать включительно и повторите проверку.
Как проверить результат. В исходном диапазоне подходят четыре, восемь, шестнадцать и двадцать: количество равно четырём, сумма сорока восьми. При верхней границе двенадцать остаются четыре и восемь, количество равно двум.
Частые вопросы
Один правильный тест доказывает правильность программы?
Нет. Он показывает совпадение на конкретных данных. Нужны случаи, проверяющие границы и разные сочетания условий, а также понимание алгоритма.
Нужно ли всегда решать задачу программой?
Это зависит от задачи. Небольшой пример удобно проверить вручную, а большой объём данных обработать программно. В обоих случаях сначала требуется точно определить условие и формат ответа.
Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.