Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 12 лет назад пользователемs_2.bol.edu54.ru
1 Необходимость в использовании модулей, или, другими словами, в модульном программировании, возникла в первую очередь из-за трудностей, связанных с огромными объемами программ, их сложностью и потребностью в коллективной работе. Модули значительно расширяют возможности языка. По определению модуль считается отдельной программой, его структура аналогична структуре программы - он представляет собой набор констант, типов данных, переменных, процедур и функций. Вместе с тем структура модуля позволяет использовать его как своеобразную библиотеку описаний. Каждый модуль записывается в отдельном файле с расширением tpu.
2 Заголовок модуля начинается со служебного слова unit, заканчивается символом «;». Все программные ресурсы модуля делятся на две части: объекты, предназначенные для использования программами или другими модулями, и объекты рабочего характера. Поэтому, кроме заголовка, модуль состоит еще из двух частей: интерфейса и реализации. Интерфейсная часть включает описание объектов, доступных из других программ; эти объекты называются видимыми. В части реализации находятся невидимые (скрытые) объекты. Кроме этого, модуль может содержать раздел инициализации, если перед его использованием необходимо установить значения каких-либо переменных. Общая схема структуры модуля выглядит следующим образом: unit ; interface implementation begin end.
3 В качестве объектов в модуле можно использовать процедуры и функции. Для этого в интерфейсной части модуля необходимо описать заголовки подпрограмм и видимые переменные, а в части реализации должны быть полные описания подпрограмм. Чтобы иметь возможность использовать интерфейсные объекты модуля в своей программе, нужно указать имя соответствующего tpu - файла после служебного слова uses (или список имен модулей, перечисленных через запятую): Uses Unit 1 Unit2, Unit3; В языке Pascal 7.0 есть восемь стандартных модулей: System, Dos, Crt, Printer, Graph, Overlay, ТuгbоЗ и Graph3. Из них только модуль System подключается автоматически к любой программе.
4 Краткая характеристика модулей: модуль System включает все стандартные процедуры и функции языка Pascal и встроенные процедуры и функции языка Turbo Pascal. Подключается к любой программе автоматически, не требуя объявления; модуль Printer отвечает за вывод текстов на принтер; модуль Crt обеспечивает управление текстовым режимом работы экрана (перемещение курсора в любую позицию экрана, изменение цвета символов, фона, управление звуком); модуль Graph обеспечивает управление графическим режимом работы экрана (позволяет создавать и выводить на экран графические изображения и текстовые надписи); модуль Dos отвечает за доступ программ к средствам дисковой операционной системы MS DOS; модуль Overlay необходим при разработке больших программ, требующих большого количества памяти; модули Turbo3 и Graph3 созданы для совместимости с ранней версией 3.0 системы Turbo Pascal.
5 Для вывода графических изображений на экран монитора в языке Pascal существует стандартная библиотека Graph, подключение которой осуществляется стандартным способом: uses Graph; В графическом режиме работы любое изображение на экране дисплея состоит из множества мельчайших элементов, называемых пикселями. Каждый пиксель - это светящаяся точка таких размеров, при которых промежуток между соседними пикселями отсутствует. В графическом режиме экран дисплея представляет собой прямоугольную сетку координат. Левый верхний угол экрана имеет координаты (0,0), правый (для адаптера VGA) - (639,479), соответственно центр экрана имеет координаты (319,239). Значение координаты х увеличивается слева направо, координаты у - сверху вниз. В этом режиме курсор невидим, но всегда присутствует. Образ любого изображения, высвечиваемого на экране монитора с помощью совокупности пикселей, хранится в специальной области памяти - видеопамяти. Реализация графического режима в ЭВМ обеспечивается с помощью графического адаптера. Работу графического адаптера поддерживает драйвер адаптера (файл с расширением *.bgi). Для современных графических адаптеров VGA и EGA используется драйвер egavga.bgi.
6 (0; 0) X Y (450; 300)
7 USES Graph, CRT;{подключение модулей} VAR gd, gm: integer; {gd-гр. драйвер, gm-гр. режим} BEGIN gd: = 0 ; {автоматическое определение гр. драйвера} InitGraph (gd,gm, ' ') ; {инициализация графического режима} line (100,100,200,200) ; {рисование отрезка} ReadKey; {задержка до нажатия любой клавиши} CloseGraph; {закрытие графического режима} END. Переменная GraphDriver задает тип загружаемого драйвера (если тип драйвера неизвестен, этой переменной можно присвоить результат стандартной функции detect: GraphDriver: =detect). Переменная GraphMode задает режим работы драйвера (для VGA лучший режим - VGAHi(2), для EGA - EGAHi (1)). Если для определения переменной GraphDriver была использована функция detect, то процедура InitGraph сама установит подходящий режим. В переменной PathToDriver задается путь к графическому драйверу, который содержится в файле egavga.bgi. Если поместить этот файл в текущий каталог, то путь можно не прописывать, указав в функции InitGraph пустую строку, например, InitGraph ( Graph-Driver, GraphMode, ). В противном случае необходимо указать полный путь к файлу, например: InitGraph (GraphDriver, Graph-Mode, D: \BP\BGI'). Ошибки, которые могут возникать в процессе инициализации графического режима, анализируют с помощью функции GraphRezult. Для завершения работы с графикой необходимо использовать стандартную процедуру CloseGraph. При этом освобождается выделенная для работы с графикой память и восстанавливается режим работы адаптера.
8 Модуль Graph позволяет выводить на экран изображение различных простых геометрических фигур (примитивов), а также получать информацию о них. Это осуществляется с помощью следующих процедур и функций: Arc (X, Y, StAngle, EndAngle, Radius : integer) рисует дугу с центром в точке (X, Y) от начального угла StAngle до конечного EndAngle радиусом Radius; Bar (XI, Yl, Х2, Y2 : integer) выводит на экран закрашенный прямоугольник с координатами левого верхнего угла (Х\, У1) и правого нижнего угла {XI, У2); Bar3D (Xl, Yl, Х2, Y2 : integer; Depth : word; Top : boolean) выводит на экран трехмерную полосу, используя текущий стиль и цвет; Circle (X, Y, Radius : integer) выводит на экран изображение окружности с центром (X,Y) радиусом Radius; DrawPoly (NumPoints : word; var PolyPoints) рисует многоугольник из NumPoints вершин с координатами в PolyPoints, текущим цветом и типом линии; Ellipse (X, Y : integer; StAngle, EndAngle, XR, YR : word) рисует эллиптическую дугу от начального угла StAngle до конечного EndAngle, используя X, Y как координаты центра, XR, YR как горизонтальный и вертикальный радиусы;
9 FillEllipse (X, Y, Xradius, Yradius : integer) выводит на экран изображение полного закрашенного эллипса с центром X, Y и горизонтальной и вертикальной полуосями Xradius,Yradius; FillPoly (NumPoints : word; var PolyPoints) рисует и штрихует многоугольник из NumPoints вершин с координатами в PolyPoints; Line (XI, Yl, Х2, Y2 : integer) выводит на экран линию, соединяющую точки с координатами (XI,Y\) и (Х2,У2); LineTo (X, Y : integer) выводит на экран линию, соединяющую точку, в которой находится курсор, с точкой (X,Y); PutPixel (X, Y, Color : integer) выводит на экран пиксель в точке X, Y цветом Color; Rectangle (XI, Yl, Х2, Y2 : integer) выводит на экран изображение прямоугольника.
10 Чтобы изменять цвет рисования (совокупность цветов называется палитрой, она может быть как стандартной, так и определенной программистом), тип и толщину линий, способ заливки, в модуле Graph определен набор констант, процедур и функций. Основные процедуры из этого набора: SetBkColor (Color : integer) устанавливает текущий фоновый цвет Color; SetColor (Color: integer) устанавливает основной цвет рисования; GetColor : word - функция, возвращающая текущий цвет; GetBkColor : word - функция, возвращающая текущий фоновый цвет;
11 SetLineStyle (LineStile, Pattern, Thinkness : integer) определяет стиль и толщину линии; SetPalette (ColorNum, Color : word) заменяет цвет палитры с номером ColorNum на цвет Color; SetFillPattern (Pattern : FillPatternType; Color : word) позволяет установить произвольный образец штриховки; SetFillStile (Pattern, Color : integer) устанавливает образец штриховки и цвет; FloodFill (X, Y : integer; Border : word) штрихует замкнутую область, содержащую внутреннюю точку с координатами X, Y и ограниченную линией с цветом Border. Используется текущий образец штриховки и цвет; GetDefaultPalette (var Palette : PaletteType) возвращает текущую палитру в записи PaletteType; GetFillPattern (var FillPatt : FillPatternType) возвращает текущий образец штриховки; GetLineSettings (var Linelnfо : LineSettingsType) возвращает текущий стиль, шаблон и толщину линии; GetPalette (var Palette : PaletteType) возвращает текущую палитру и ее размер.
12 Для определения цвета выводимых на экран различных геометрических фигур в модуле Graph описаны константы, представленные в таблице: Название константы (цвет) ЗначениеНазвание константы(цвет) Значение Black (черный)0DarkGray (темно-серый)8 Blue (синий)1LightBlue (ярко-синий)9 Green (зеленый)2LightGreen (ярко-зеленый)10 Cyan (голубой)3LightCyan (ярко-голубой)11 Red (красный)4LightRed (розовый)12 Magenta (фиолетовый)5LightMagenta (малиновый) 13 Brown (коричневый)6Yellow (желтый)14 LightGray (светло-серый)7White (белый)15
13 Для задания стиля и толщины линии определены константы, приведенные в таблице: Название константыИзображение линииЗначение константы SoliLnd0 DottedLn1 CenterLn2 DashedLn3 UserBitLnТип, определяемый пользователем 4 Толщина линии может быть задана следующими константами: нормальная толщина - 1 (NormWidth); тройная толщина - 3 (ThickWidth).
14 Шаблон (Pattern) выбирается из констант, приведенных в таблице: Название константыЗначениеТип штриховки EmptyFill0Нет штриховки SolidFill1Сплошная штриховка LineFill2_ _ _ LtSlashFill3///// SlashFill4///// (толстыми линиями) BkSlashFill5\\\\\ (толстыми линиями) LtBkSlashFill6\\\\\ HatchFill XHatchFill8хххххх InterleaveFill9штриховка в клетку WideDotFill10штриховка редкими точками CloseDotFill11штриховка частыми точками UserFill12задается пользователем
15 Курсор в графическом режиме представляет собой точку с координатами (X, У). Для управления курсором определены следующие процедуры и функции: ClearDevice очищает экран; GetMaxX возвращает максимальную горизонтальную координату графического экрана; GetMaxY возвращает максимальную вертикальную координату графического экрана; GetX возвращает координату Xтекущего указателя (курсора); GetY возвращает координату У текущего указателя (курсора); MoveRel (Dx, Dy : integer) перемещает курсор в точку, которая находится на расстоянии Dx, Dy от курсора; MoveTo (X, Y : integer) перемещает указатель в точку X, Y.
16 Выполнение программы Ромб приводит к высвечиванию ромба с вершинами, положение которых на экране определяется парами чисел (100, 10), (50, 90), (100, 170) и (150, 90). Program Romb; uses Graph,CRT; Const m:array[1..6] of PointType= ( (x:100;у:10), (x:50;y:90), (x:100;y:170),(x:150;y:90), (x:150;y:90),(x:100;у:10)); Var gd,gm,i:integer; Begin gd:=0; InitGraph(gd,gm, '); SetColor(5); DrawPoly(6, m) ; Readln; CloseGraph; End.
17 Программа Окружности Program Okrus; uses Graph,CRT; Var a,b,i,gd,gm:integer; Begin Write('a,b'); Read(a,b); gd:=0; InitGraph(gd,gm, '); SetColor (5) ; for i:=l to 10 do circle(a,b,5*i); Readln; CloseGraph; End. На экране появится 10 концентрических окружностей коричневого цвета радиусов 5, 10, 15,...,50, положение центра которых определяется парой вводимых с клавиатуры значений а, b. Если при выполнении программы будут введены числа 160, 100, то все изображение будет располагаться в середине экрана.
18 Рисование человечка Program Chelovek; uses Graph, CRT; {подключение модулей} Var gd,gm,ее:integer; Begin gd:=0; InitGraph(gd,gm, '); {Инициализация графического режима} SetFillStyleU, Green); {Трава} Bar(0,350,639,479); SetFillStyleU, LightBlue) ;{Небо} FloodFilKO, 0, Green); SetColor(Red); Circle(320,200,19) ; {Голова} SetLineStyle(0, 0, 3); Rectangle(300, 220, 340, 300); {Туловище} Line(320,300,300,350); {Ноги} Line(320,300,340,350); Line(300,240,250,250); {Руки} Line(340,240,390,250); SetFillStyle (1, Red); {Закрашивание человечка} FloodFill(320, 200, Red) ; FloodFill(320, 230, Red) ; SetColor(Yellow); Circle(315, 190, 2) ; {Левый глаз} Circle(325, 190, 2) ; {Правый глаз } Line (315, 210, 325,210) ; {Рот} Readln; CloseGraph; End.
19 Вывод окружности, двигающейся слева направо в горизонтальном направлении. В процессе вывода окружности вносится задержка с помощью процедуры Delay, которая обеспечивает определенный темп движения - быстрый или медленный. Величина задержки подбирается «на глаз» из соображений плавности движения. Program moving_circle; Uses Graph,Crt; Var gd,gm:integer; x:integer; Begin gd:=0; InitGraph(gd,gm, '); for x:=20 to GetMaxX-20 do begin SetColor(White); Circle(x,200,20); Delay(2000); SetColor(Black); Circle(x, 200, 20); end; Readln; closeGraph; End.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.