
- •Часть 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 Ошибки стадии выполнения
- •Ошибки ввода-вывода
- •Фатальные ошибки
- •Библиографический список
4 Графическое программирование
Любой монитор может работать в двух
режимах: текстовом и графическом. При
включении среды Borland
Pascal монитор автоматически
переключается в текстовый режим, при
котором экран разбивается на 25 строк и
80 столбцов. На пересечении столбцов и
строк располагаются так называемые
знакоместа. Каждое знакоместо представляет
собой прямоугольную область экрана,
содержащую набор пикселей. Размер этой
области зависит от типа и характеристик
монитора. Минимальный размер знакоместа
пикселей соответствует цветному монитору
EGA. В текстовом режиме
управление выводом состоит в отображении
на каждом знакоместе литеры или символа
псевдографики.
4.1 Управление видеорежимом
Для работы с графикой необходимо переключить монитор в графический режим. В этом режиме можно управлять цветом каждого пикселя на экране. При этом необходимо знать расположение этого пикселя, для чего используются его координаты, как показано на рис. 3.5.
Рис. 3.5 Координаты пикселей на экране монитора
Пиксель P имеет координаты
по горизонтальной оси и
по вертикальной оси. Координаты
представляют собой целые числа
и
,
где величины
(номер самого правого столбца и самого
нижнего ряда пикселей) отражают
технические характеристики монитора.
Инициализация видеорежима. Процедура InitGraph
Для работы в графическом режиме необходимо использовать две библиотеки CRT и GRAPH, располагающиеся, как правило, в поддиректории UNITS. Для инициализации графического видеорежима необходима процедура InitGraph(DV, MV, 'E:\TP\BGI'). Параметр DV определяет драйвер, а переменная MV - режим его работы. В Паскале предусмотрена возможность автоматического выбора драйвера и режима, для этого достаточно переменной DV присвоить стандартное значение с помощью константы Detect. В целом набор команд необходимых для инициализации выглядит следующим образом:
USES CRT, GRAPH;
VAR DV, MV: INTEGER;
BEGIN DV := DETECT;
InitGraph(DV, MV, 'E:\TP\BGI');
Здесь путь 'E:\TP\BGI' определяет расположение поддиректория где находятся драйверы монитора. Естественно, что у разных компьютеров этот путь может быть различным.
Закрытие видеорежима. Процедура CloseGraph
По завершении работы с графикой можно вернутся к текстовому режиму работы монитора, для этого в любом месте тела программы достаточно вызвать процедуру CloseGraph модуля GRAPH. Если эту процедуру не использовать, то возврат в текстовый режим произойдет автоматически по завершении работы программы и выходе в интегрированную среду Borland Pascal.
Создание графического окна. Процедура SetViewPort
На экране монитора в графическом режиме можно выделить прямоугольную область любого размера, которая получила название графическое окно. Вывод информации можно осуществлять именно в это окно, как будто остального экрана и не существует. При инициализации видеорежима окном является весь экран. Текущий указатель, иногда его называют графический курсор, занимает в окне начальное положение, то есть его координаты имеют значения X = 0, Y = 0, что соответствует верхнему левому пикселю. Для создания графического окна используют процедуру
SetViewPort(Xup, Yup, Xlow, Ylow: Integer; L: Boolean),
где Xup, Yup - координаты верхней левой точки окна на экране, которая получила название UP; Xlow, Ylow - координаты нижней правой точки окна на экране, которая получила название low. L - переменная логического типа принимает значение True, если рисунок следует ограничить размерами окна, то есть отсечь те его части, которые выходят за пределы графического окна на остальную часть экрана. Если L = False, то рисунок продолжается вне окна, если его размеры превышают окно. На рис. 3.6 показан результат выполнения команды:
SetViewPort(100, 70, 450, 310, True);
Цвет окна определяют как цвет фона с помощью процедуры: SetBkColor(<Номер цвета>). Номер цвета - это целое число в диапазоне от 0 до 15: 0 - черный, 1 - синий, 2 - зеленый, 3 - голубой, 4 - красный, 5 - фиолетовый, 6 - коричневый, 7 - белый (светло-серый), 8 - темно-серый, 9 - ярко-синий, 10 - ярко-зеленый, 11 - ярко-голубой, 12 - ярко-красный, 13 - ярко-фиолетовый, 14 - желтый, 15 - ярко-белый.
Рис. 3.6 Расположение графического окна (100, 70, 450, 310) на экране
Далее с помощью процедуры ClearViewPort без параметров очищается окно цветом фона (при этом, правда, весь остальной экран тоже очищается цветом фона) и устанавливается курсор в точку UP, для координатной сетки окна это будет точка (0, 0).