
- •Часть I. Этапы решения задачи на компьютере 7
- •Часть II. Задачи. Алгоритмизация и программирование 15
- •Часть III. Теоретические положения и примеры программ 188
- •Введение
- •Часть I. Этапы решения задачи на компьютере
- •1.1 Постановка и формализация условий задачи
- •1.2 Алгоритмизация задачи
- •1.2.1 Интерпретация объектов
- •1.2.2 Вычислительная схема
- •1.2.3 Вычислительная схема решаемой задачи
- •1.2.4 Составление блок-схемы
- •1.2.5 Трассировка
- •1.3 Составление программы на языке Паскаль
- •1.4 Подготовка текста программы на машинном носителе
- •1.5 Трансляция (компиляция) программы
- •1.6 Компоновка (редактирование связей)
- •1.7 Запуск программы на исполнение
- •1.8 Анализ результатов
- •Часть II. Задачи. Алгоритмизация и программирование классических вычислительных процессов
- •1 Линейный вычислительный процесс
- •1.1 Программирование формул
- •1.2 Формализация и алгоритмизация задачи
- •2 Разветвляющийся вычислительный процесс
- •2.1 Программирование формул
- •2.2 Формализация и алгоритмизация графических задач
- •2 .3 Параметрические задачи
- •3 Циклические вычислительные процессы
- •3.1 Арифметический цикл
- •Вычисление произведения n сомножителей.
- •Табулирование функции на конечном отрезке.
- •3.2 Итерационный цикл
- •Вычисление предела последовательности с заданной точностью.
- •Вычисление суммы бесконечного ряда с заданной точностью.
- •3.3 Арифметические циклы с рекуррентными соотношениями
- •3.4 Итерационные циклы с рекуррентными соотношениями
- •3.5 Двойной вложенный цикл
- •4. Пользовательские алгебраические функции
- •4.1 Применение функции в линейных и разветвляющихся вычислительных процессах
- •4.2 Использование функции в циклических процессах
- •4.3 Табуляция функции
- •5 Одномерные числовые массивы
- •5.1 Работа с компонентами массива
- •5.2 Работа с векторами
- •6 Двумерные числовые массивы
- •6.1 Работа с элементами массива
- •6.2 Работа с векторами и матрицами
- •6.3 Использование процедур и функций для работы с массивами
- •7 Работа со строками
- •7.1 Анализ и преобразование текста строки
- •7.2 Работа со строковыми функциями и процедурами
- •8 Работа со списками
- •8.1 Стеки
- •8.2 Очереди
- •8.3 Бинарные деревья
- •9 Работа с текстовыми файлами
- •10 Работа с файлами записей
- •11 Компьютерная графика
- •12 Анимация изображений
- •Часть III. Теоретические положения и примеры программ
- •1 Вычисление определителя квадратной матрицы
- •2.2 Использование записей для описания таблиц
- •Работа с полями записи
- •Использование оператора with … do
- •Ввод данных в массив записей с клавиатуры
- •2.3 Вложение записей
- •Присвоение значений полям вложенных записей
- •3 Файлы записей
- •3.1 Структура файла
- •3.2 Встроенные процедуры и функции обработки файлов
- •3.3 Организация последовательного доступа к записям файла
- •3.4 Организация прямого доступа к компонентам файла
- •3.5 Создание индексного файла
- •3.6 Работа с файлом произвольного доступа
- •Просмотр файла
- •Редактирование записей
- •Изменение структуры основного файла
- •Использование клавиш для управления программой
- •Удаление записи из файла
- •Добавление записи в файл
- •3.7 Информационное взаимодействие текстовых файлов и файлов записей
- •Экспорт данных. Копирование информации из файла записей в текстовый файл
- •Импорт данных. Копирование информации из текстового файла в файл записей
- •3.8 Запросы к файлам записей
- •Запрос с группировкой
- •4 Графическое программирование
- •4.1 Управление видеорежимом
- •Инициализация видеорежима. Процедура InitGraph
- •Закрытие видеорежима. Процедура CloseGraph
- •Создание графического окна. Процедура SetViewPort
- •Закрытие графического окна. Процедура ClearDevice
- •4.2 Построение графических фигур
- •Построение прямой линии. Процедуры SetColor, SetLineStyle, Line, LineRel, LineTo
- •Построение прямоугольника. Процедуры Rectangle и Bar
- •Построение окружности. Процедура Circle
- •Построение дуги окружности. Процедура Arc
- •Построение эллипса. Процедуры Ellipse, FillEllipse
- •Построение сектора. Процедуры PieSlice, Sector
- •4.3 Корректировка изображения Процедуры GetAspectRatio, SetAspectRatio
- •4.4 Создание пользовательского шаблона заливки
- •Заливка замкнутой области. Процедура FloodFill
- •Построение и окраска произвольного рисунка на примере замка
- •Построение и заливка правильного многоугольника
- •4.5 Работа с текстом
- •Выбор стандартного шрифта. Процедура SetTextStyle
- •Коррекция стандартного шрифта. Процедура SetUserCharSize
- •Вывод числовых величин на экран
- •5 Анимация изображений
- •5.1 Дублирования спрайта цветом фона
- •5.2 Манипулирование фрагментами изображения
- •5.3 Использование страниц видеопамяти
- •6 Сообщения об ошибках
- •6.1 Ошибки стадии компиляции
- •6.2 Ошибки стадии выполнения
- •Ошибки ввода-вывода
- •Фатальные ошибки
- •Библиографический список
Закрытие графического окна. Процедура ClearDevice
Процедура ClearDevice без параметров восстанавливает размеры окна до размеров экрана, окрашивает экран цветом фона и устанавливает графический курсор в точку с координатами (0, 0).
4.2 Построение графических фигур
В этом параграфе рассмотрим построение графических фигур на базе: прямых линий, прямоугольников, окружностей, эллипсов, дуг и др.
Построение прямой линии. Процедуры SetColor, SetLineStyle, Line, LineRel, LineTo
Вывод линии на экран обеспечивается в три этапа.
Во-первых, необходимо установить цвет линии с помощью процедуры SetColor (<номер цвета>);
Во-вторых, следует установить стиль линии с помощью процедуры: SetLineStyle (LS: WORD; PT: WORD; TH: WORD);
В этой процедуре переменная LS задает тип линии в соответствии с табл. 3.4; PT - код пользовательского типа линии (0 - 3: стандартные типы линий), если параметр LS = 4; TH - толщина линии в пикселях (например, 1 или 3 пикселя).
Таблица 3.4
LS |
Тип линии |
Образец линии |
0 |
Сплошная |
|
1 |
Из точек |
|
2 |
Точка – тире |
|
3 |
Штриховая |
|
4 |
Пользовательская |
|
В табл. 3.4 образец пользовательской линии соответствует коду команды
SetLineStyle(4, $FF88, 1),
где 4 - пользовательский тип линии, 1 - толщина в один пиксель, а шестнадцатеричный код $FF88 определяет заполнение 16 пикселей, последовательно расположенных в линии слева направо, условно разбитых при кодировании на 4 группы по 4 пикселя, как показано на рис. 10.
Рис. 3.8 Кодировка линии пользовательского типа $FF88
Для вывода сплошной линии толщиной в три пикселя оператор установки стиля примет вид SetLineStyle(0, 0, 3).
Третий этап заключается в построении линии с выбранным цветом и стилем. Для этого можно использовать одну из трех процедур;
Line(X1, Y1, X2, Y2: Integer) - процедура построения прямой линии из точки с координатами X1, Y1 в точку с координатами X2, Y2;
LineRel(dX, dY: Integer) - процедура проводит линию из текущей точки пусть это будут координаты X, Y, где находится графический курсор, в точку с координатами X + dX, Y + dY.
LineTo(X2, Y2: Integer) - процедура проводит линию из текущей точки пусть это будут координаты X, Y, где находится графический курсор, в точку с координатами X2, Y2.
Построение прямоугольника. Процедуры Rectangle и Bar
Построить прямоугольник можно с помощью процедур Rectangle и Bar. Процедура Rectangle(X1, Y1, X2, Y2: Integer) осуществляет построение прямоугольного контура, основой которого является линия, цвет этой линии задан ранее оператором SetColor, а толщина и тип определены с помощью оператора SetLineStyle. Величины X1 и Y1 задают положение верхнего левого угла прямоугольника, а X2, Y2 - координаты нижнего правого угла. Цвет пикселей, расположенных внутри прямоугольной области, не изменяется.
Процедура Bar(X1, Y1, X2, Y2: Integer) по аналогии с Rectangle строит прямоугольник, но без граничного контура с координатами верхней левой точки X1, Y1 и нижней правой точки X2, Y2, и заливает его текущим наполнителем, выбранным оператором SetFillStyle(PT, CL). Целочисленная величина PT соответствует номеру стандартного типа наполнителя (см. табл. 3.5), а целочисленная величина CL определяет цвет фоновых линий (0 - 15).
Таблица 3.5
PT |
Содержание |
Образец наполнителя |
0 |
SetFillStyle(0, CL) |
Сплошная заливка цветом фона CF Цвет фона - SetBkColor(CF) |
1 |
SetFillStyle(1, CL) |
Сплошная заливка прямоугольной области цветом CL |
2 |
SetFillStyle(2, CL) |
|
3 |
SetFillStyle(3, CL) |
|
4 |
SetFillStyle(4, CL) |
|
5 |
SetFillStyle(5, CL) |
|
6 |
SetFillStyle(6, CL) |
|
7 |
SetFillStyle(7, CL) |
|
8 |
SetFillStyle(8, CL) |
|
9 |
SetFillStyle(9, CL) |
|
10 |
SetFillStyle(10, CL) |
|
11 |
SetFillStyle(11, CL) |
|
Команду Bar используют для заливки графического окна цветом CL отличным от цвета фона экрана CF. Приведенная ниже последовательность команд создает графическое окно с координатами - x1, y1, x2, y2 и окрашивает его зеленым (код - 2) цветом с помощью процедуры Bar.
SetViewPort(x1, y1, x2, y2, false);
SetFillStyle(1, 2);
x3 := x2 - x1; y3 := y2 - y1;
Bar(0, 0, x3, y3);
Координаты окрашиваемой области уже в новой координатной сетке окна, поэтому точка Up имеет код 0, 0, то есть это верхняя левая точка окна, а координаты x3, y3 точки Low пересчитываются по формулам x3 := x2 - x1; y3 := y2 - y1.