- •Информатика
- •Лабораторный практикум
- •По программированию
- •На Турбо-Паскале
- •Содержание
- •Предисловие
- •Общая схема выполнения лабораторной работы
- •Лабораторная работа № 1
- •Var r,d: real; {раздел описаний переменных может
- •Блок-схема алгоритма
- •Текст программы
- •Результат расчета
- •Варианты заданий
- •Лабораторная работа № 2
- •If Pr then {здесь Pr – логическая переменная,}
- •Разбор контрольного варианта Задание
- •Блок-схема алгоритма
- •Текст программы
- •Результаты расчетов
- •Варианты заданий
- •Лабораторная работа № 3
- •Общие пояснения
- •Разбор контрольного варианта Задание
- •Алгоритм
- •Текст программы
- •Vvod: writeln('Сколько будет чисел?');
- •Варианты заданий
- •Лабораторная работа № 4
- •Задачи лабораторной работы Вопросы, изучаемые в работе
- •Задание (общее ко всем вариантам)
- •Требования к программе
- •Содержание программы
- •Общие пояснения
- •Var Massiv1,Nmbs:IntMasMax; {завели 2 целочисл. Массива}
- •Разбор контрольного варианта Задание.
- •Текст программы
- •Результаты работы
- •Варианты заданий
- •Лабораторная работа № 5
- •Общие пояснения
- •Var {здесь выделяется место под все массивы }
- •Разбор контрольного варианта Задание
- •Формирование таблицы идентификаторов
- •Алгоритм
- •Текст программы.
- •Содержимое файла результатов umnik5.Res
- •Варианты заданий
- •Лабораторная работа n 6
- •Задачи лабораторной работы Вопросы, изучаемые в работе
- •Задание (общее ко всем вариантам)
- •Требования к программе
- •Содержание программы
- •Общие пояснения
- •Разбор контрольного варианта Задание
- •Рассмотрение метода решения
- •Алгоритм
- •Текст программы.
- •Vvod_eps:writeln('введите минимальный размер слагаемого);
- •Результаты расчета
- •Варианты заданий
- •Лабораторная работа n 7
- •Задачи лабораторной работы Вопросы, изучаемые в работе
- •Задание (общее ко всем вариантам).
- •Требования к программе и отчету по работе
- •Содержание программы.
- •Пояснения к лабораторной работе Общие пояснения к использованию процедур и функций.
- •Механизм параметров
- •Разбор контрольного варианта Задание
- •Б Рисунок 7. Алгоритм 31-го варианталок-схема алгоритма Текст программы.
- •Лабораторная работа n 8
- •Алгоритмы построения графиков на экране
- •Стандартный модуль работы с графическим экраном Graph
- •Разбор контрольного варианта № 31 Задание
- •Алгоритм
- •Разбор контрольного варианта № 32 Задание
- •X,y:mas; { текущие значения переменных х иY}
- •Xmin,Xmax,t,tmin,tmax, { минимальное и максимальное значения х на графике }
- •Imin,Imax, { координаты экрана, соответствующиеYminиYmax}
- •Варианты заданий
- •Лабораторная работа № 9
- •Задачи лабораторной работы Вопросы, изучаемые в работе
- •Задание (общее ко всем вариантам)
- •Требования к программе
- •Содержание программы
- •Общие пояснения
- •Односвязные списки
- •Двусвязные списки
- •Нульсвязные списки
- •Описание файлов с данными
- •Inc(I); { стандартная процедура увеличения на 1 }
- •Разбор контрольного варианта Задание
- •Содержание программы
- •Алгоритм
- •Текст программы
- •IfBegthen{ если добавляем в начало }
- •If Beg then { если удаление из начала }
- •Варианты заданий
- •Литература
- •Главное меню
- •Приложение а. Система меню и команды Турбо-Паскаля Меню системы программирования Турбо-Паскаль
- •Опции главного меню
- •Локальные меню
- •Основные команды встроенного редактора текста
- •Приложение б. Сообщения об ошибках
- •Сообщения об ошибках на шаге выполнения
- •Приложение в. Описание числовых файлов для лабораторных работ
- •I,j : integer; {I- счетчик элементов массива, j - номер символа в файле }
- •Приложение г. Таблица ascii-кодов (с альтернативной кодировкой)
Лабораторная работа n 8
Графика на Паскале
Задачи лабораторной работы
Вопросы, изучаемые в работе
Изучение строения и использование процедур, функций, раздела Graph, используемого при выводе на экран информации в графической форме.
Работа с цветом.
Проектирование размещения графических объектов на экране.
Задание (общее ко всем вариантам)
Построить в подходящей системе координат график заданной функции. В нижней строке экрана вывести уравнение, по которому строится график и диапазон изменения аргумента. Координатные оси графика должны быть размечены делениями, у которых должны стоять числовые значения.
Исходные данные задаются константами в тексте программы.
Результаты расчета выводятся в графической форме на экран.
Общие пояснения
Графический режим экрана
Чтобы использовать графику в программах на Турбо-Паскале необходимо научиться планировать размещение на экране выводимой информации (т.е. разобраться в алгоритме вывода графических объектов на экран) и уметь подключать и использовать стандартные графические процедуры и функции Турбо-Паскаля. Рассмотрим последовательно обе эти проблемы.
Для начала следует твердо усвоить, что экран дисплея может использоваться или в текстовом или в графическом режиме, но только не в обоих одновременно. Стандартное состояние экрана при работе в Турбо-Паскале (рассчитанном на операционную систему DOS) – в текстовый режим. При этом никакой графический вывод на экран невозможен, попытки вызова процедур графики приведут к ошибке и останову программы. После инициализации графики, бесполезными будут обращения к процедурам вывода на экран текстовой информации (с помощью Write и WriteLn), правда, без всяких сообщений и прерываний выполнения программы.
Перевод дисплея в графический режим (инициализация графики) позволяет получить доступ к любой точке экрана. При этом система координат экрана начинается в левом верхнем углу с точки, имеющей координаты 0,0. Ось Хнаправлена слева направо, осьУ– сверху вниз. Каждая точка экрана имеет две координатыХиУи какой-то цвет из допустимой палитры. Такая точка называется пикселем. В зависимости от состава аппаратных средств ПЭВМ, на экране максимально может помещаться или 350 (для EGA-адаптера), или 480 (для VGA-адаптера) строк по 640 пикселов в каждой строке. Палитра обычно содержит 16 цветов.
Алгоритмы построения графиков на экране
Графический режим может использоваться как для произвольного рисования (когда с помощью графических процедур проводятся отрезки прямых линий или дуги эллипсов через выбираемые точки экрана), так и для отображения рассчитываемых кривых (функций), задаваемых или уравнениями, или табличными значениями. Ниже рассматриваются только варианты построения графиков функций и аналитически заданных кривых.
Под функцией мы далее будем понимать зависимость вида Y=f(x), а под аналитически заданной кривой – кривую, координаты каждой точки которой выражаются через независимый параметр (угол, время и т.д.):X=f1(t),Y=f2(t).
В принципе, оба вида рассчитываемых графиков можно строить по одному и тому же универсальному алгоритму, хотя график функции часто строят по упрощенной схеме. Рассмотрим сначала общий подход к построению графика.
Первым делом нужно определить, в каком виде график будет размещаться на экране. При этом решают, одинаковыми ли будут масштабы по обеим осям, какую часть экрана должен занять сам график и где будут подписи, будут ли изображаться оси координат и будут ли они отображать нулевые значения величин XиYи т.д. По некоторым из этих вопросов решение можно принять только после того, как будут найдены диапазоны изменения значенийXиYучастка строящейся кривой.
Для удобства последующих описаний обозначим именами XиY(или именами, начинающимися с этих символов) величины, относящиеся к уравнениям кривой. Все экранные координаты и зависящие от них величины будем именовать, начиная с символаJдля горизонтальных направлений иI– для вертикальных направлений.
В общем случае алгоритм построения графика включает следующие блоки:
Для заданных требований к строящейся кривой определить диапазон изменения X (Xmin и Xmax). При построении графика функции этот диапазон обычно задается.
Исходя из тех же требований, определить диапазон изменения Y (Ymin и Ymax). Для функции иногда предельные значения очевидны, как, например, дляSin(x)илиCos(x)или легко находятся для монотонных функций при граничных значениях аргументов(Exp(x), Ln(x)и т.д.). Если строится параметрически заданная кривая или сложная функция, поиск диапазонов проще выполнить после вычисления массива координат точек кривой(Xi[1..N] и Yi[1..N], которые в дальнейшем будут использоваться при построении самого графика). Из массивов максимумы и минимумы находятся простым перебором значений.
Принимается решение, будут ли изображаться оси координат (X=0 и Y=0)на рисунке кривой, и если нулевые значения не входят в найденные диапазоны, последние корректируются с учетом этих нулевых значений.
Если заранее известно, какой видеоадаптер будет использоваться, EGA или VGA, то максимальные размеры экрана в пикселях являются константами. Для EGA это 640 точек по Х и 350 точек по Y, для VGA размер по Y равен 480 точкам. Тогда можно провести все дальнейшие расчеты экранных координат графика и только после этого переходить в графический режим для проведения самих построений на экране. Мы будем исходить из универсального подхода, строя алгоритм для размеров экрана, определяемых после открытия графического режима
Инициализация графики производится процедурой InitGraph. В качестве первого параметра задается целочисленная переменная, имеющая нулевое значение, тем самым выбирается наилучший возможный графический режим.
С помощью функций GetMaxXиGetMaxYопределяются размеры экрана в пикселях.
Принимается решение о размерах и положении графика на экране. Если планируется поместить один рисунок (график), то на поля по краям экрана можно оставить до 20% размера экрана. Таким образом, можно задать:
Jmin=(0..0.2)GetMaxX Jmax=(0.8..1.0)GetMaxX
Imin=(0.8..1.0)GetMaxY Imax=(0..0.2)GetMaxY
Вычисляются коэффициенты перехода к экранным координатам. Из рис. 8 видно, что
Mx=(Jmax-Jmin)/(Xmax-Xmin); My=(Imax-Imin)/(Ymax-Ymin),
Отметим, что (My<0).
Все дальнейшие построения на экране выполняются с использованием формул перехода от декартовых координат XиYк экранным координатамJиI:
J
=Jmin+(X-Xmin)*Mx,
I=Imin+(Y-Ymin)*My
И








спользуя
приведенные формулы, рассчитывается
положение осей координат на экране.
Перед их построением задаются параметры
линий процедурамиSetColorиSetLineStyle(см. список процедур ниже).
На координатных осях проводятся риски длиной 5–10 пикселей или строится координатная сетка (те же риски, но длиной от Imin доImax и от Jmin до Jmax). Как и для осей, предварительно устанавливается стиль линий (линии более тонкие). Следует иметь ввиду, что строительство сетки или рисок необходимо выполнять от начала координат во всех четырех направлениях. Если начинать от края, риски, как правило, не пройдут через начало координат.
После задания характеристик кривой графика, указатель переводится в начальную точку кривой (не обязательно совпадающей с Xmin,Ymin).
В цикле по массиву точек (Xi,Yi)пересчитываются координаты(J,I)и проводятся отрезки процедуройLineTo.
После настройки параметров надписи процедурами SetTextStyleиSetTextJustify, указатель переводится в точку, относительно которой ориентируется текст и процедуройOutTextXYвыводится надпись.
В конце программы, после всех задержек и, возможно, вывода графика на принтер, необходимо закрыть графический режим процедурой CloseGraph.
Примечание: работа в графическом режиме может выполняться, если в разделе подключенных модулей будет приведено имя модуляGraph:
PROGRAM...
USESGraph;
. . .
В данной работе рассмотрено два контрольных варианта – для функции (вариант №31) и параметрически заданной кривой (вариант №32).
