Для обеспечения и поддержки информационных процессов на современном уровне развития науки и техники чрезвычайно важна роль программирования, оно является одной из традиционных и важных тем как в школах, так и вузах. Программирование позволяет вырабатывать у учащихся такие важные для современного выпускника качества и способности, как логическое и критическое мышление, внимательность, аккуратность; развивает находчивость, фантазию, изобретательность, конструктивное мышление; раскрывает творческие способности [4, 7, 8, 13].
Тем не менее, при изучении программирования практически повсеместно можно наблюдать подход, при котором и школьникам, и студентам для решения предлагаются лишь стандартные задачи для отработки конкретных тем курса. При этом чаще всего используется язык программирования Turbo Pascal или его разновидности. Очевидно, что повсеместное распространение в учебных заведениях нашей страны языка Pascal связано с тем, что он более приспособлен в плане начального обучения программированию (ведь именно для этого он и создавался). Кроме того, во многих случаях наиболее приемлемым переходом к изучению визуальных языков программирования в школе является переход именно от Turbo Pascal к Delphi.
Для подготовки специалиста, конкурентоспособного на современном рынке информационных услуг, чрезвычайно важно на определенном этапе обучения отойти от традиционных задач, и предлагать более интересные и сложные задачи [2-4, 7-11, 16, 18].
В данной статье мы рассмотрим учебный пример, показывающий работу в среде визуального программирования Delphi. Среда разработки Delphi в курсе программирования может быть успешно использована при написании игровых [4, 6, 16], обучающих и контролирующих программ [5, 12], реализации моделей физических и экономических процессов [17], разработки прикладных программ [5, 12, 14, 15]. Для первоначального ознакомления со средой разработки Delphi можно использовать, например, книги [1, 19].
Рассмотрим следующую задачу. Необходимо разработать программу для отображения графика некоторой функции в указанном диапазоне. Программа должна иметь следующие возможности:
- задание интервала отображения графика функции;
- настройка толщины и цвета линий осей координат и графика функции;
- настройка числа делений, цвета и количества знаков после запятой для шкал осей координат;
- отображение и скрытие линий сетки системы координат, задание цвета линий сетки;
- выделение участка области построения графика функции или всего графика с целью его копирования и дальнейшего использования в других приложениях;
- отображение реальных координаты точек системы координат в строке статуса программы при перемещении мыши по области построения;
- автоматическое масштабирование осей координат по размерам области изображения в соответствии с указанным диапазоном построения графика функции;
- сохранение изображения в отдельный файл.
Для программной реализации задачи можно выбрать любую функциональную зависимость (или несколько зависимостей), мы для определенности выбрали полином четвертой степени.
Так как в программе (рис. 1) использовано достаточно много компонент, а ее код содержит более 350 строк, то ниже в таблице 1 приведены типы компонент, их количество и назначение в программе, а сам исходный код проекта с некоторыми пояснениями в виде архива представлен в [20].
Тип компонента | Количество | Назначение в программе |
TEdit | 11 | Поля ввода значений коэффициентов полинома, диапазона построения, толщины линий системы координат и графика функций, числа делений и количества знаков после запятой для шкал осей координат. |
TLabel | 16 | Отображение соответствующего текста перед полями ввода и компонентами выбора цвета. |
TUpDown | 4 | Выбор толщины линий осей координат и графика функции, задание числа делений и количества знаков после запятой для шкал осей координат. |
TGroupBox | 3 | Группировка параметров построения графика функции и системы координат. |
TBevel | 2 | Элемент оформления. |
TPanel | 1 | Отображение текста "Параметры построения". |
TImage | 2 | Область построения графика функции и вывод общего вида полинома. |
TButton | 1 | Кнопка "Построить". |
TShape | 4 | Элементы выбора цвета для осей координат, графика функции, сетки и шкал осей координат. |
TColorDialog | 1 | Диалог выбора цвета. |
TSavePictureDialog | 1 | Диалог сохранения файла. |
TPopupMenu | 1 | Контекстное меню, которое вызывается на области построения и позволяет выделить область, снять выделение, скопировать выделенную область в буфер обмена, сохранить область в отдельный графический файл. |
TCheckBox | 1 | Позволяет включить или отключить отображение линий сетки. |
TStatusBar | 1 | Для отображения значений реальных координат в системе координат при перемещении указателя мыши. |

Основные действия в программе выполняются после нажатия на кнопку "Построить" в следующей последовательности:
- очистка области построения;
- установка ширины и высоты рабочей области (здесь будет непосредственно строиться график функции, эта область по размерам на 60 пикселей меньше области построения и по ширине, и по высоте);
- получение значений коэффициентов полинома и диапазона построения графика;
- определение минимального и максимального значения функции в указанном диапазоне;
- определение коэффициентов масштабирования графика функции;
- построение осей координат и отображение шкал осей координат;
- отображение линий сетки;
- построение графика функции.
Реальные координаты, соответствующие указателю мыши в области построения, вычисляются на основе известных значений коэффициентов масштабирования по осям с учетом отступов системы координат от краев области построения (в программе эти отступы приняты равными 50 пикселей слева и снизу и 10 пикселей — справа и сверху).
На основе контекстного меню области построения можно скопировать или отдельный фрагмент области, или всю область целиком в буфер обмена и передать затем это изображение в какое-либо другое приложение. Также можно сохранить всю область построения в отдельный файл формата BMP (предлагаем читателю выполнить сохранение области в файл формата JPEG в качестве тренировки самостоятельно, тем более, что для этого потребуется сделать минимальные дополнения к исходному коду программы).
На рис. 2 показан график функции в диапазоне значений $x$ от -15 до 10 и контекстное меню программы. Количество делений на каждой из осей равно 15, количество знаков после запятой в значениях на шкалах осей — единица.

Рассмотренный пример позволяет показать, как можно использовать компонент TImage для построения графиков функций вместо компонента TChart. Работа с TImage может потребоваться во многих практически важных случаях, когда компонент TChart или неудобно использовать, или даже невозможно.
Написанная программа также может использоваться в качестве интерактивного метода обучения программированию (метод проектов).