Выбрать масштаб увеличения можно следующим образом:
- определить горизонтальный и вертикальный размеры графика (для этого вводятся границы области значений и определяются максимальное и минимальное значение функции на заданной области определения, затем вычисляются разности максимального и минимального значений аргументов и функции, которые и являются горизонтальным и вертикальным размерами графика соответственно);
-определить масштаб( сначала определяются масштабы изображения по горизонтали и вертикали с учетом размеров выбранного экрана по формуле: масштаб(г/в) = размер экрана (по г/в) / размер графика (по г/в), затем из них выбирается меньший, который и принимается за необходимый масштаб. В нашем случае графический экран имеет размеры 640 на 480).В любом случае, чтобы высветить на экране точку, надо взять x, вычислить по данной абсциссе y и выполнить рисование точки. Так как на экране можно получить лишь ограниченное количество значений х, то их перебираем с помощью цикла.
Построение случайных процессов
Для того, чтобы картинки не были монотонными и регулярными, можно задавать фигурам случайные размеры, цвет, координаты. Для этого имеется специальная функция Random: Она генерирует случайные числа из [0, 1). Для расширения первоначального промежутка используется функция Random(I: word), которая выдает число из диапазона 0… I. На самом деле эти функции генерируют некоторую последовательность псевдослучайных чисел, и чтобы добиться иллюзии полной «случайности» используют команду Randomize, которая изменяет базу датчика случайных чисел.
Создание иллюзии движения
Создать видимость движения изображения на экране можно несколькими способами. Рассмотрим два из них.
I способ. Имитация движения объекта на экране за счет многократного выполнения программой набора действий: нарисовать – пауза – стереть (нарисовать в том же месте цветом фона) – изменить координаты положения рисунка.
Перед началом составления программы надо продумать описание «двигающегося» объекта, характер изменения координат, определяющих текущее положение объекта, диапазон изменения и шаг.
II способ. Иллюзия движения создается при помощи специальных процедур и функций.
Функция ImageSize(x1, y1, x2, y2: integer):word возвращает размер памяти в байтах, необходимый для размещения прямоугольного фрагмента изображения, где x1,y1 – координаты левого верхнего и x2, y2 – правого нижнего углов фрагмента изображения.
Процедура GetImage(x1, y1, x2, y2:integer, varBuf) помещает в память копию прямоугольного фрагмента изображения, где x1, ..,y2 – координаты углов фрагмента изображения, Buf – специальная переменная, куда будет помещена копия видеопамяти с фрагментом изображения. Buf должна быть не меньше значения, возвращаемого функцией ImageSize с теми же координатами.
Процедура PutImage(x1, y1, x2, y2:integer, varBuf, Mode:word) выводит в заданное место экрана копию фрагмента изображения, ранее помещенную в память процедурой GetImage. X, Y – координаты левого верхнего угла того места на экране, куда будет скопирован фрагмент изображения; Buf –специальная переменная, откуда берется изображение, Mode – способ копирования. Координаты правого нижнего угла не указываются, так как они полностью определяются размерами выводимой на экран копии изображения. Координаты левого верхнего угла могут быть любыми, лишь бы только копия уместилась в пределах экрана (если копия не размещается на экране, то она не выводится , и экран остается без изменений). Параметр Mode определяет способ взаимодействия размещаемой с уже имеющимся на экране изображением.
Таблица 7
Константа | Значение | Операция | Пояснения |
NormalPut | 0 | Замена существующего на копию | Стирает часть экрана и на это место помещает копию |
XorPut | 1 | Исключительное или | Рисует сохраненный образ или стирает ранее нарисованный, сохраняя фон |
OrPut | 2 | Объединительное или | Накладывает сохраненный образ на существующий |
AndPut | 3 | Логическое и | Объединяет сохраненный образ и уже существующий на экране |
NotPut | 4 | Инверсия изображения | То же самое, что и 0, только копия выводится в инверсном виде |
2.2. Разработка содержания факультативного курса «Программирование графики» для старшей школы
Факультативный курс "Программирование графики" является одним из способов изучения графических средств TurboPascal. Поэтому данный факультатив может использоваться как эффективное приложение основного курса информатики. Он позволяет систематизировать знания, полученные в таких разделах информатики, как "алгоритмизация", "языки и методы программирования", "информационные технологии", и применять эти знания к решению различных задач, связанных с созданием изображений, построением графиков и поверхностей функций. Данный факультатив будет интересен, прежде всего, ученикам старшей школы, которые на основных занятиях уже ознакомились с основами языков программирования.
Языком программирования для данного курса был выбран TurboPascal. Курс построен на конкретных примерах и решениях. Все задачи, рассматриваемые на факультативе, рекомендуется реализовывать с использованием среды BorlandPascalили TurboPascal, без серьезных изменений эти программы могут быть перенесены в среду компилятора FreePascal.
Факультатив предлагается проводить в 10 классе. Предполагается, что учащиеся, осваивающие данный курс, имеют некоторый опорный уровень знаний языка программирования TurboPascal (назначение и типы переменных, основные операторы, базовые алгоритмические конструкции и их реализация в TurboPascal). Поэтому, имея достаточно общее представление об изучаемом предмете, учащиеся смогут в большей степени самостоятельно продвигаться в процессе освоения.
Факультатив рассчитан на 35 часов (на каждом занятии работа с ЭВМ, большой процент работы отводится на самостоятельную работу).
Тематическое планирование учитель должен разрабатывать, основываясь на предлагаемом варианте, при этом возможно варьирование числа часов, отводимых на конкретную тему, включение в изучение некоторых дополнительных вопросов в зависимости от уровня подготовки учащихся.
Главная цель изучения курса:
· формирование у учащихся представлений о возможностях одного из современных языков программирования TurboPascal;
· овладение конкретными методами решения различных задач на графику на ЭВМ.
· формирование у выпускников школы основ научного мировоззрения;
· создание условий для саморазвития и самовоспитания личности.
Цель реализуется выполнением следующих задач:
Текущая аттестация качества освоения программы осуществляется учителем по результатам выполнения учащимися практических заданий. Выполнение практических работ предполагает комплексное творческое применение учащимися полученных знаний, навыков, умений, их углубление и закрепление.
Итоговый контроль качества освоения программы реализуется в конце учебного года. Учащиеся предоставляют для проверки, самостоятельно выполненные проекты. Работа оценивается, отмечаются положительные и отрицательные моменты и даются необходимые рекомендации. Курс считается освоенным, если учащийся успешно выполнил все задания.
Методы преподавания (включая формы организации учебных занятий)
Занятия включают лекционную и практическую части. Практическая часть курса реализована в форме уроков. Важная составляющая каждого урока является самостоятельная работа учащихся. Тема урока определяется исходя из приобретаемых навыков. В каждом уроке материал излагается следующим образом:
1. Повторение основных понятий и методов для работы с ними.
2. Самостоятельное выполнение заданий для получения основных навыков работы; в каждом задании формулируется цель и излагается способ ее достижения.
3. Упражнения для самостоятельного выполнения.
Теоретические и практические части курса (на усмотрение преподавателя) можно изучать параллельно, чтобы сразу же закреплять теоретические вопросы на практике.
1.Инициализация и закрытие графического режима
Характеристика графических режимов. Подключение модуля Graph (библиотека графических процедур uses Graph).Переменные, которые определяют графический драйвер и монитор: var gd, gm: integer. Задание команды для выбора значений переменных: gd := Detect; (detect - драйвер сам определяет лучший режим) Инициализация графического режима: InitGraph(gd, gm, ’указывается путь к драйверу (пусть будет пустым)’) Завершение работы в графической системе: CloseGraph.
Переключение текст — графика — текст.
ОбработкаошибокGraphErrorMsg(ErrorCode:integer):string.
2. Базовые процедуры и функции модуля GRAPH
Система координат. Перемещение текущего указателя:
MoveTo(X,Y:integer) перемещает текущий указатель в точку с координатами X,Y.