- •Конспект лекций по курсу «Информатика» для студентов очной и заочной форм обучения.
- •Базовые положения
- •§.1. Физическое устройство и разумная деятельность мозга
- •§2. Самодостаточная эвм
- •2.1. Память (оперативная память)
- •2.2. Процессор
- •2.3. Программа
- •2.4. Жизненный цикл «Самодостаточной эвм»
- •§3. Язык процессора – базовый язык эвм
- •§4. Реальная эвм. Периферийные устройства
- •§5. Язык программирования. Программа транслятор
- •§6. Язык программирования Pascal
- •6.1. Базовые типы числовых информационных объектов
- •6.2. Явные константы
- •6.3. Оператор описания var
- •Var и1, и2, и3, . . . . ,Иn: Итипа;
- •6.5. Операторы консольного ввода информации
- •6.5.1. Стандартные форматы вывода числовой информации.
- •6.6. Логические переменные
- •6.7. Операторы управления программой
- •6.7.1. Условный оператор if then
- •If Условие then Оператор ;
- •6.7.2. Условный оператор выбора if then else
- •6.8. Метки операторов. Оператор безусловного перехода
- •6.9. Циклические вычисления. Операторы зацикливания
- •Организация циклических вычислений операторами if then goto
- •Программа вычисления корня по формуле Герона.
- •6.9.3. Оператор цикла for to
- •6.9.4. Оператор цикла for downto
- •6.9.5. Оператор цикла while
- •6.9.6. Программа вычисления длины дуги кривой
- •7. Массивы переменных
- •7.1. Программа нахождения экстремальных значений
- •7.2. Программа решения системы линейных алгебраических уравнений
- •8. Сортировка информации
- •8.1. Элементы формальной логики, теории множеств и операций
- •8.2. Упорядоченные структуры информационных объектов
- •8.3. Алгоритм сортировки «поплавок»
- •8.3.1. Программа сортировки массива «на месте»
- •8.3.2. Программа сортировки «индексов» массива
- •8.4. Алгоритм быстрого поиска информации в линейно упорядоченном массиве
- •8.4.1. Программа поиска в отсортированных массивах.
- •9. Символьные переменные
- •9.1.Строковые переменные
- •9.1.1. Программа написания чисел прописью
- •10. Клавиатурное управление эвм
- •§.11. Информационные объекты класса – изображение
- •11.1. Устройство функционированиемонитора
- •11.2. Процедурный язык управления графическим экраном
- •11.3. Оцифровка и масштабирование реальных изображений (чертежей) для последующего их вывода на экран
- •11.4. Пример построения фрагмента графика функции
- •11.5. Ввод и обработка информации в форме изображений
- •§12. Информационные объекты класса – подпрограммы
- •12.1. Подпрограммы типа procedure
- •12.1.1. Пример оформления подпрограммы-процедуры
- •12.2. Подпрограммы класса function
- •12.2.1.Пример оформления подпрограммы-функции
- •12.3. Процедурные языки программирования
- •12.4. Библиотечные модули Unit
- •§13. Динамическое распределение оперативной памяти эвм
- •13.1. Программа использующая динамические переменные
- •§14. Переменные типа record
- •§15. Внешняя память эвм. Работа с файлами
- •15.1. Процедурный язык обработки файлов
- •15.2.Программа “ Жизненный путь файла “
- •15.3. Текстовые файлы
- •§16. Элементы объектно-ориентированного программирования
- •Основная рекомендуемая литература.
11.2. Процедурный язык управления графическим экраном
Поскольку такое программирование весьма громоздко и рутинно, то для языка Pascal (как и для других языков программирования)ольку такое программирование весьма громоздко и рутинно, в языке ом уровне: буфер экрана разделен на несколько фрагментов (н разработан набор специальных команд, которые: не только сами синхронизируют работу головного процессора и адаптера, но и позволяют «одновременно» (за одно обращение) выводить на экран огромные совокупности упорядоченных пикселей. Эти команды выполнены в форме подпрограмм (процедур), размещены в специальном модуле (библиотеке GRAPH.TPU) и образуют «процедурный язык обработки графических примитивов».
Прагматика языка графических примитивов – формальное описание типичных действий чертежника или художника-плакатиста.
В качестве «базового инструментария» для создания изображений на экране монитора используются имитаторы реальных предметов, используемых для выполнения аналогичных действий на бумаге:
Перо – инструмент для рисовки линий и букв,
Кисть (ближе к реальности - малярный валик) – инструмент для закраски (заливки, нанесения узора) площадных фрагментов экрана.
Изображения выполняемые пером - все рисунки образуемые совокупностью кривых линий. Линии характеризуются: цветом, толщиной и структурой. Прежде чем, приступить к выполнению таких изображений, необходимо конкретизировать эти характеристики.
Для указания цвета пера дается команда SetColor(Col); где Col - номер цвета из ранее выбранной или стандартной (действующей «по умолчанию») палитры.
Пример: SetColor(14);
Семантика оператора: взять перо 14-ого (желтого) цвета!
Эту же команду можно записать используя стандартные идентификаторы- названия цветов: SetColor(Yellow);
Команда SetLineStyle(Nv, Nu, Nt); устанавливает тип линии Nv (0-сплошная, 1 – пуктирная, 2- штрих-пунктир и т.д.), программист может самостоятельно разработать свой узор линии, соответствующее описание следует передать в параметре Nu. Параметр Nt – описывает толщину линии (для графического режима VGA возможны только два варианта: 1-тонкая, 3- тройная толщина).
Пример: SetLineStyle(1, 0, 3);
Семантика оператора: все последующие кривые линии рисовать пунктиром и тройной толщины!
Команда SetFillStyle(Nv, Col); устанавливает тип узора закраски Nv - (0-сплошной без всякого узора валик, 1- полосатый узор, 2- наклонно-полосатый узор и т.д.) и цвет закраски.
Пример: SetFillStyle(1, LightRed);
Семантика оператора: все последующие закраски проводить валиком с полосатым узором и краской ярко-красного цвета.
Команда SetTextStyle(Ns, Nv, Nr); устанавливает Ns – номер шрифта (1, 2, …8), Nv –направление письма (0-слева направо, 1- сверху вниз), Nr – номер размера букв (1, 2, …8).
Команда SetBkColor(Col); устанавливает фоновый цвет экрана.
Команда ClearDevice; очищает экран от всех ранее выведенных изображений.
Если предварительно не указать характеристики пера и кисти, то все линии будут рисоваться тонкими, сплошными и белыми, все заливки осуществляться сплошным валиком и белым цветом, а фоновый цвет экрана - черный.
Команда PutPixel(X, Y, Col); выводит на экран цветовое пятно (пиксель) в точке с координатами (пиксельная система!) 0<X<639 и 0<Y<479, цвета 0<Col<15.
Пример: PutPixel(237, 25, Red);
Семантика оператора: нарисовать красный пиксель с координатами (237, 25).
Команда Line(X1, Y1, X2, Y2); рисует отрезок прямой линии, соединяющий точки с пиксельными координатами (X1, Y1) и (X2, Y2).
Команда Circle(X, Y, R); рисует окружность с центром в точке с пиксельными координатами (X, Y) и радиусом (в пикселях!) R.
Команда OutTextXY(X, Y, S: string); выводит в указанном месте экрана (X, Y) -пиксельные координаты верхнего левого угла прямоугольника строку символов S.
Пример: OutTextXY(120, 65, ‘Ось Х[кг]’);
Команда Bar(X1, Y1, X2, Y2); рисует прямоугольник, у которого верхняя левая вершина расположена в точке с пиксельными координатами (X1, Y1), а правая нижняя вершина в точке (X2, Y2).
Команда FloodFill(X, Y, Col); закрашивает некий фрагмент экрана, который содержит точку с пиксельными координатами (X, Y) и ограничен контуром цвета Col.
Пример:
SetColor(Red); Circle(50,70, 40); {Рисуем контур (границу) закрашиваемого фрагмента экрана – окружность красного цвета с центром в точке (50,70) и с радиусом 40 пикселей}
SetFillStyle(2, Green); {Назначаем: полосатый тип и зеленый цвет закраски}
FloodFill(55, 78, Red); {Закрашиваем фрагмент экрана, начиная от точки с координатами (55, 78), которая расположена внутри нарисованной окружности, до внешней границы фрагмента (окружности), которая задана красным цветом }
Поскольку операционная система DOS изначально создавалась и ориентирована для работы с экраном в алфавитно-цифровом режиме, то для включения (перенастройки адаптера монитора) графического режима необходимо дать специальную команду InitGraph(Nr, Nt, Sdrv). Целочисленные переменные Nr, Nt указывают требуемые характеристики устанавливаемого режима, а строковая переменная или константа Sdrv указывает местоположение и имя файла-драйвера, обслуживающего именно этот устанавливаемый режим.
Рекомендуется использовать эту команду следующим образом:
Var na, nb: integer; {описать целочисленные рабочие переменные}
…. {здесь экран работает в алфавитно-цифровом режиме }
Na:=0; InitGraph(na, nb,’EGAVGA.BGI’);
{ Даны две команды: определить наилучший для данной аппаратуры графический режим и перенастроить экран в этот графический режим.
Теперь экран монитора работает в графическом режиме, т.е. можно вызывать все процедуры языка графических построений}
CloseGraph; {команда: закрыть графический режим, т.е. вернуться к алфавитно-цифровому, с этого места, экран снова работает в алфавитно-цифровом режиме}
Библиотека GRAPH.TPU графических примитивов языка Pascal насчитывает более ста специализированных процедур. Для программирования в среде Windows (объектно-ориентированное расширение языка Pascal - язык Delphi) таких примитивов насчитываются многие тысячи, причем используют «эти примитивы» десятки параметров (характеристик) задаваемых: как явно, так и «по умолчанию».
По сути, язык графических примитивов позволяет описывать (создавать) изображения не как совокупность отдельных цветовых точек, а на более высоком уровне абстракции – как совокупность геометрических фигур.
Опр. Кодировка (цифровое описание) изображений в виде совокупности отдельных геометрических фигур называется векторной графикой.
Отдельные точки – изображаются не пикселями, т.к. один пиксель просто не различим на экране монитора, а «объемными» фигурами: кружками, квадратиками, ромбиками, крестиками и т.д., характерные размеры которых составляют 4-6 пикселей.
Кривые линии – изображаются ломанными: если на один сантиметр длины экранного изображения кривой приходится 3-6 отрезков ломанной, то, визуально, кривая воспринимается вполне гладкой.
Буквы и символы алфавитов – так же изображаются ломанными.
Плоские фигуры – границы (контуры) опять же изображаются замкнутыми ломанными одного цвета, а внутренняя область заливается (закрашивается) тем же или другим цветом.
Фон заливки – строго упорядоченный (повторяющийся!) орнамент из разноцветных пикселей.