Программирование в средней школе.
ЧАСТЬ 3. ЧЕМУ УЧИТЬ
или
Содержание обучения программированию

Анатолий Ремнев


Рассмотрим основные классы задач, изучение которых будет необходимо для качественной подготовки учащихся в плане обучения программированию.

1. Задачи на операции ввода и вывода

Подобный класс задач важен, так как, выполняя подобные задания, учащиеся смогут понять формальные требования, которые предъявляются к программам при их автоматическом тестировании.

2. Задачи на оператор присваивания

Несмотря на кажущуюся простоту, в данный раздел могут быть включены задачи различной сложности. В частности, требование не использовать в программе условный оператор и операторы цикла переводит ряд элементарных задач в задачи повышенной сложности. Такое ограничение с методической точки зрения можно рассматривать как работу с исполнителем, имеющим ограниченный набор команд.

Пример. Обозначим дни недели числами от 1 - понедельник до 7 - воскресенье, соответственно. Программа должна вводить с клавиатуры два натуральных числа: 0 < N < 32 - число в текущем месяце и 0 < M < 8 - день недели для первого числа в текущем месяце. Вывести на экран число от 1 до 7, обозначающее, на какой день недели приходится число N.

Пример. Bвести с клавиатуры 2 целых числа: 0 <=H < 12, 0 <= M < 60, указывающие момент времени H часов M минут. Определить и вывести на экран наименьшее число полных минут, которое должно пройти до того момента, когда часовая и минутная стрелки на циферблате совпадут.

При решении данного класса задач учащиеся осваивают основные операции и функции изучаемого языка программирования. Особое внимание при этом уделяется арифметике остатков, знания по которой, как показывает практика, у учащихся недостаточны. Однако именно операции целочисленной арифметики имеют важную роль в программировании.

3. Задачи на логические выражения

При изучении логических выражений полезным является выполнение следующего практического задания.

Каждому учащемуся выдается индивидуальный рисунок. То есть на координатной плоскости изображены линии, описываемые уравнениями окружности, прямой, параболы, ромба, прямоугольника и т.п. (сложность рисунка зависит от категории учащихся). Несколько областей, ограниченных этими линиями, заштрихованы. Требуется описать всю заштрихованную часть плоскости с помощью одного логического выражения. Программа должна запрашивать с клавиатуры координаты (x, y) некоторой произвольной точки плоскости и определять, принадлежит ли точка с координатами (x, y) заштрихованной области. Ответ выдать в следующем виде: true, если точка с координатами (x, y) принадлежит заштрихованной области, и false, если точка с координатами (x, y) не принадлежит ей. При выполнении задания от учащихся следует требовать, чтобы для описания каждой области была введена своя логическая переменная, что упрощает процесс отладки и поиска ошибок при приеме задания. Основное логическое выражение конструируется только из таких переменных. Имена переменных должны быть мнемоничны. Например: InCircle1, UpperLine1.

4. Условный оператор

Цель данного раздела - научить учащихся составлять алгоритмы с использованием простых и вложенных операторов условия и выбора. Обратите внимание на последовательность - сначала логические выражения, потом условный оператор.

5. Операторы цикла

Основные классы задач, относящиеся к данному разделу, это задачи на обработку числовых последовательностей без использования массивов для их хранения, включая нахождение НОД или НОК для последовательностей натуральных чисел, задачи на рекуррентные соотношения и суммирование числовых рядов. В последнем случае важное значение имеет эффективность программы. Так, при суммировании рядов, аналогичных рядам Тейлора или рядам Маклорена, операции возведения в степень или циклы для вычисления целочисленной степени или факториала применяться не должны. Вместо этого каждое следующее слагаемое должно выражаться через предыдущее с помощью основных арифметических операций.