Программирование движущихся объектов
Рисование на экране является действием с битами, т.е. побитовыми операциями над содержимым видеопамяти и битами изображения. В Паскале режимы вывода изображений на экран, задаются процедурой SetWriteMode(Wmode:integer).
Параметр Wmode может в различных процедурах принимать пять значений: copyput (0), xorput (1), orput (2), andput(3), notput (4). Последним четырем значениям соответствуют логические операции над битами xor, or, and, not. При инициализации графики устанавливается режим замещения битов памяти монитора битами изображения – copyput. Поэтому, если на экране есть изображение, оно заменяется новым.
Если требуется прорисовать движущийся объект, то часто его рисуют сначала цветом объекта, потом цветом фона. Это допустимо, если движение объекта происходит по пустому экрану. Если фоном является другое изображение, то этот прием непригоден. В таком случае используют режим поразрядного совмещения изображений xorput, который при повторной прорисовке объекта восстанавливает исходное состояние видеопамяти.
Пример 3. Случайное перемещение прямоугольника по экрану, используя в качестве фона параллепипед.
program Prog11_3;
usesgraph,crt;
var gd,gm:integer;
dx,dy,x,y:integer;
mx,my:integer; {разрешение дисплея}
Begin
gd:=0;
initgraph(gd,gm,' ');
mx:=getmaxx; {максимально адресуемые}
my:=getmaxy; {координаты экрана}
dx:=mx div 4; {вычисление сторон}
dy:=my div 4; {прямоугольника}
bar3d(dx,dy,mx-dx,my-dy,30,true); { параллепипед,
левый верхний угол которого задается координатами
dx,dy, правый нижний – mx-dx,my-dy, с глубиной –
30 и отображением верхней плоскости – true }
setwritemode(xorput); {установка режима совмещения}
Repeat
x:=random(mx-dx); y:=random(my-dy); {задание
координат левого угла прямоугольника}
rectangle(x,y,x+dx,y+dy); {рисует прямоугольник}
delay(10000); {пауза в 10000 мс}
rectangle(x,y,x+dx,y+dy) {рисует прямоугольник
на том же месте}
until keypressed; {цикл до нажатия клавиши}
closegraph
End.
Если перемещаемый объект имеет сложный образ, то целесообразно выполнить его рисование один раз, а затем использовать буфер для сохранения двоичного образа области экрана, занимаемого этим объектом и восстановления его на траектории движения в режиме совмещения. Для реализации такого алгоритма используются следующие подпрограммы:
ImageSize(x1,y1,x2,y2:integer):word – функция возвращает число байтов, занимаемых прямоугольной областью экрана;
GetImage(x1,y1,x2,y2:integer; var b); – процедура сохраняет в буфере, адрес которого указывает параметр
р – ссылка на битовый массив – двоичный образ заданной прямоугольной области экрана с координатами x1,y1,x2,y2;
PutImage(x,y:integer; var b; mode:word); – процедура выводит содержимое буфера в прямоугольную область экрана, с координатами левого верхнего угла x,y с использованием режима mode.
Последовательность действий для работы с буфером:
varsize:word; p:pointer;
………………………………………………………………………………………………
Size:=ImageSize(x1,y1,x2,y2); {прямоугольный фрагмент в байтах}
GetMem(p,size); {размещение буфера в куче}
GetImage(x1,y1,x2,y2;p^);{занесение фрагмента в буфер}
…………………………………………………………………………………………………
PutImage(x,y; p^;xxxPut); {вывод фрагмента, вместо
xxxPutиспользуется один из режимов: copyput, xorput, orput, andput, notput}
FreeMem(p,size); {освобождение буфера}
Пример 4. Написать программу случайного перемещения шарика по фону, заданному в виде прямоугольника.
program Prog11_4;
uses graph, crt;
constr=10;
varx1,y1,x2,y2,sx,sy:integer; {переменные для }
maxx,maxy,xm,ym,gd,gm:integer; {оживления фрагмента}
size : word; {размер фрагмента}
p : pointer; {указатель на буфер}
Begin
gd:=detect;
initgraph(gd,gm,'');{ инициализация графики}
maxx := GetMaxX; { максимальное поле экрана}
maxy := GetMaxY;
x1:=maxx div 2-r; {координаты области экрана}
y1:=maxy div 2-r; {в которой будет нарисован}
x2:=x1+2*r; {шарик и которая и будет}
y2:=y1+2*r; {со храненным фрагментом}
sx:=x1; xm:=3; {начальная точка движения и }
sy:=y1; ym:=-1; {шаг перемещения шарика}
SetFillStyle(SolidFill, Red); { выбор типа заливки}
PieSlice(X1+r,Y1+r, 0,360,r); { рисование шарика}
size:=ImageSize(x1,y1,x2,y2); {фрагмент в байтах}
GetMem(p, Size); { размещение буфера }
Getimage(x1,y1,x2,y2,p^); { фрагмент в буфер}
SetFillStyle(CloseDotFill,blue); {тип заливки фона}
bar(50,50,maxx-50,maxy-50); {фоновая картинка}
repeat {начинается движение шарика}
PutImage(sx,sy, p^,xorPut); {вывод шарика}
Delay(3600); { пауза}
PutImage(sx,sy,p^,xorPut); {стирание шарика}
{ограничения на движение шарика в пределах поля фона:}
if (sx<50)or(sx>maxx-50-2*r) then xm:=-xm;
if (sy<50)or(sy>maxy-50-2*r) then ym:=-ym;
inc(sx, xm); {следующая точка появления}
inc(sy, ym); {шарика на экране}
until KeyPressed; {пока не нажата клавиша}
FreeMem(p,size); {освобождение памяти буфера}
CloseGraph {закрытие режима графики}
end.
Имитировать движение на экране можно с помощью управления видеостраницами. По умолчанию действия в графическом режиме производятся с 0-ой страницей. Если направить вывод на ненулевую страницу (если есть), то на экране ничего не отобразится. Переход на скрытую страницу делает изображение видимым. Для этого используем процедуры:
SetVisualPage(n:word); – устанавливает видимой на экране страницу с номером n;
SetActivePage(n:word); – перенаправляет все графические операции на страницу с номером n.
Пример 5. Программа выводит на экран пульсирующий эллипс.
program Prog11_5;
uses graph,crt;
var j:byte; gd,gm:integer;
procedure form(k:byte); {рисование кадров 0..3}
const r:array[0..3] of integer=(20,40,60,80);
var r1,rr:integer; {радиусы эллипсов в кадрах}
Begin
r1:=r[k]; {максимальный радиус }
rr:=0; {радиус вложенного эллипса}
Repeat
ellipse(getmaxx div 2,getmaxy div 2,0,360,r1,rr); {рисование эллипса с центром в середине экрана}
inc(rr,5); {изменение радиуса вложенного эллипса}
until rr>r1; {пока не достигнет максимального радиуса}
end;
procedure smena; {процедура смены кадров }
const ms=460;
var i:byte;
Begin
Repeat
for i:=0 to 3 do begin
setvisualpage(i); {смена видеостраниц}
delay(ms) {с задержкой между кадрами }
end;
for i:=3 downto 0 do begin
setvisualpage(i); {смена видеостраниц в обратном порядке}
delay(ms);
end;
until keypressed; {цикл до нажатия клавиши}
end;
Begin
gd:=0;
initgraph(gd,gm,''); {инициализация графики}
setgraphmode(VGALo); {установка графического режима
VGA с 4 видеостраницами}
for j:=3 downto0 do begin{цикл заполнения страниц}
setvisualpage(succ(j) mod 4); {видимые страницы,
начиная с 0}
setactivepage(j); {активные страницы,
начиная с 3}
form(j) {рисование кадра}
end;
smena;
closegraph
end.
Иллюзию движения можно создать, используя смену палитр. Программная палитра может состоять из 16 цветов, которые обозначаются числами от 0 до 15. Каждому программному цвету присваивается аппаратный цвет из полной палитры (256 цветов). В модуле Graph определен тип для описания палитры:
PaletteType = record
size:byte;
colors: array[0..15] of shortint
end;
и процедуры установки соответствия программному цвету аппаратного, смены палитр.
Пример 6. Пример имитации движения с помощью смены палитр.
program Prog11_6;
uses graph, crt; {подклочены graph и crt}
var palette:PaletteType; {переменная для палитры }
i,j,maxc,gd,gm:integer; {счетчики; максимальный цвет}
Begin
gd:=detect;
initgraph(gd,gm,''); { инициализация графики}
palette.size:=GetPaletteSize; {размер текущей палитры}
maxc :=pred(palette.size); {программный цвет }
for i:=0 to maxc do begin {рисование вложенных}
{разноцветных прямоугольников}
SetFillStyle(SolidFill,i);
bar(i*10,i*10,GetMaxX-i*10,GetMaxY-i*10)
end;
for i:=0to 63-maxc do begin{цикл по аппаратным цветам}
{Сдвиг программных цветов относительно аппаратных:}
for j:=0 to maxc do palette.colors[j]:=j+i;
SetAllPalette(palette);{назначение новой палитры}
delay(10000) {пауза в 10000 мс}
end;
readln; {пауза до нажатия ввода}
GetDefaultPalette(palette); {берется исходная палитра}
SetAllPalette(palette); {и восстанавливается}
CloseGraph {закрытие графики}
end.
Контрольные вопросы:
1. В чем заключается механизм отображения информации на экран дисплея в текстовом режиме?
2. Какие существуют возможности размещения информации на экране?
3. Какие есть способы выделения некоторой части информации на экране?
4. Как использовать символы псевдографики для представления информации в требуемой форме?
5. Как реализуется перемещение символов по экрану?
6. Как используются функции опроса клавиатуры для управления информацией на экране?
7. В чем заключается механизм отображения информации на экран дисплея в графическом режиме?
8. В чем отличие способов создания изображения в текстовом и графическом режимах?
9. Какие существуют возможности размещения информации на экране?
10. Как осуществить преобразование декартовых координат на плоскости в координаты экрана?
11. Как реализуется в программе эффект движущегося по экрану изображения?
12. Как осуществляется управление цветом изображения в различных графических режимах?
Лабораторная работа № 11
Задание 1. Ипользуя текстовый режим работы, выполнить задание, соответетствующее варианту.
Варианты заданий:
1. Дана строка символов. Разработать программу вывода на экран этой строки так, чтобы каждый символ появлялся на экране справа и перемещался в горизонтальном направлении влево при нажатии клавиши до первой незанятой позиции. После того как очередной символ займет свое место, должен начинаться вывод следующего символа и т.д.
2. Написать процедуру, которая выдает на экран (в текстовом режиме) таблицу из m строк и n столбцов шириной p позиций каждый. Привести пример использования разработанной процедуры.
3. Разработать программу конфиденциального ввода информации (цвет символов совпадает с цветом фона). При нажатии «парольной» клавиши введенная или вводимая информация становится видимой.
4. Написать программу рисования в текстовом режиме вертикальных и горизонтальных линий по нажатию соответствующих клавиш движения курсора. Для перемещения курсора в начальное положение использовать клавиши движения курсора.
5. Разработать программу, которая случайным образом устанавливает курсор в какой-либо строке экрана на диагонали и выводит номер строки. Спустя некоторое время это сообщение исчезает и появляется следующий случайный номер.
6. Разработать программу передвижения прямоугольника по экрану при нажатии клавиш перемещения курсора.
7. Разработать программу ввода нескольких строк текста. Каждая строка вводится в отдельном окне. Предусмотреть эффект сжимания предыдущей строки в точку при выводе строки в новом окне.
8. Разработать программу вывода на экран меню следующего вида:
Вариант 1 | Вариант 2 | Вариант 3 |
отображающего процесс выбора любого из перечисленных вариантов, осуществляемый с помощью и ®. При этом вариант, на который падает выбор, должен выделяться повышенной яркостью или цветом. При нажатии клавиши <ВВОД> или на месте соответствующего варианта должно появляться другое окно. Используйте данную форму меню в конкретной задаче.
9. Разработать программу вывода на экран меню следующего вида:
Вариант 1 | |
Выбор ¾® | Вариант 2 |
Вариант 3 | |
Вариант 4 |
Процесс выбора одного из вариантов осуществлять с помощью клавиш ¯ и . При этом к строке, на которую падает выбор, должна быть направлена стрелка от слова "Выбор". Используйте данную форму меню в конкретной задаче.
10. Разработать программу выдачи горизонтального меню с выпадающими вертикальными подменю:
Выбор 1 | Выбор 2 | Выбор 3 | |
Вариант 1 | |||
Вариант 2 | |||
Вариант 3 |
Подменю активизируется клавишей <ВВОД>. Выбор режима осуществляется клавишами перемещения курсора. Используйте данную форму меню для вывода информации о знаках тригонометрических функций в соответствующих четвертях координатной плоскости.
11. Разработать программу вывода на экран меню следующего вида
Вариант 3 | ||||||
Вариант 2 | ||||||
Вариант 1 | ||||||
В этом меню приведен полный список вариантов. Название каждого варианта оформляется в отдельном окне. Полностью видно только одно окно, на которое падает выбор. При нажатии клавиш ¯ и порядок окон меняется. Разработанная программа должна отображать этот процесс выбора варианта для конкретной задачи.
12. Разработать программу выдачи информации в виде двухуровневого гипертекста. На 1-ом уровне в тексте цветом выделены некоторые слова, к которым можно при нажатии клавиши <ВВОД> получить пояснения в виде текста на 2-ом уровне. Возвращение к тексту предыдущего уровня выполнять нажатием клавиши <ESC>.
13. Разработать программу, выдающую на экран меню следующего вида:
Заголовок |
F1 - Вариант 1 |
F2 - Вариант 2 |
F3 - Вариант 3 |
F4 - Вариант 4 |
Выбор варианта осуществляется соответствующими функциональными клавишами. Приведите пример использования данной формы меню в конкретной задаче.
14. Разработать заставку к программе, которая содержит основные сведения о программе (автор, название, год разработки). Предусмотреть эффект сжимания всего изображения в точку в центре экрана.
15. Разработать программу ввода и вывода матрицы по строкам. Ввод каждого числа осуществляется в заданную позицию экрана таким образом, чтобы на экране вводимые числа располагались по строкам и столбцам в виде матрицы. Размерность матрицы и максимально возможное количество позиций в числе вводятся с клавиатуры. При выводе матрицы предусмотреть выравнивание столбцов по правому краю (для вещественных чисел оставить 2 знака после запятой).
Задание 2. Ипользуя графический режим работы, вывести на экран график функции в декартовой системе координат. Нанести обозначения и разметку осей.
Варианты заданий:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Задание 3. Ипользуя графический режим, нарисовать картинку, имитируя движение в соответствии с вариантом.
Варианты заданий:
1. Дом на берегу моря, на море – движущийся парусник. Когда он причалит к берегу, в окне дома загорается свет.
2. Рождественская елка в огнях и игрушках. Гирлянды огней зажигаются и гаснут.
3. Море с бегущей волной, корабль и маяк. Маяк подает сигналы.
4. Летящие над полем (лесом, морем) и машущие крыльями птицы.
5. Перекресток со светофором для пешеходов. Пешеход движется на зеленый свет.
6. Аквариум с плавающей рыбкой.
7. Перемещение по экрану стилизованного изображения человека (окружность – голова, треугольник – туловище, четыре ломаные линии – руки и ноги). Перемещение человека, изображенного на экране, должно осуществляться при нажатии соответствующих клавиш управления курсором.
8. Построение последовательно следующих рисунков:
При нажатии некоторой клавиши меняется форма рта.
9. Нарисовать почтовый конверт:
Предусмотреть, чтобы по нажатию какой-либо клавиши конверт открывался, в него влетал листок, затем конверт закрывается.
10. Циферблат механических часов с движущимися секундной, минутной и часовой стрелками (при этом используйте процедуру Delay).
11. Изменение масштаба изображения (рисунок и текст) в прямоугольном окне на экране при нажатии фиксированных клавиш.
12. Перемещение упругого шарика в замкнутом пространстве прямоугольной формы. Начальное направление и скорость движения шарика должны задаваться произвольно.
13. Разделить экран на 2 части: в одной предусмотреть выдачу позитивного изображения (белое на черном), а в другой – негативного (черного на белом). Написать процедуру движения по такому экрану некоторого геометрического объекта.
14. Выделение цветом, отличным от фона и цвета изображения прямоугольного фрагмента рисунка на экране. Задание размеров фрагмента с помощью стрелки-указателя, фиксируя концы одной из диагоналей прямоугольника. Для управления стрелкой-указателем по экрану использовать клавиши перемещения курсора и ввода.
15. Многоугольник любой формы. Вершины многоугольника должны задаваться путем перемещения текущего указателя в форме стрелки с помощью клавиш управления курсором и нажатия клавиш <ВВОД>. Замкнутое пространство внутри многоугольника следует заполнить штриховкой.
Л И Т Е Р А Т У Р А
1. Абрамов, В.Г. Введение в язык Паскаль. – М.: Наука, 1988. – 318 с.
2. Бондарев, В.М. Основы программирования. – Харьков: Фолио, 1997. – 368 с.
3. Гуденко, Д.А. Сборник задач по программированию. – СПб.: Питер, 2003. – 475 с.
4. Давыдов, В.Г. Программирование и основы алгоритмизации. – М.: Высш. школа, 2003. – 448 с.
5. Долинский, М.С. Алгоритмизация и программирование на Turbo Pascal: от простых до олимпиадных задач. – СПб.: Питер, 2005. – 237 с.
6. Епанешников, А. М. Программирование в среде Turbo Pascal 7.0. – М.: Диалог-МИФИ, 1996. – 288 с.
7. Зуев, Е.А. Программирование на языке TURBO PASCAL 6.0, 7.0. – М.: Радио и связь, 1993. – 384 с.
8. Лукин, С.Н. Турбо Паскаль 7.0: самоучитель для начинающих. – М.: Диалог-МИФИ, 2000. – 384 с.
9. Немнюгин, С.А. Turbo Pascal: практикум. – СПб.: Питер, 2000. – 256 с.
10. Офицеров, Д.В., Долгий, А.Б., Старых, В.А. Программирование на персональных ЭВМ: практикум. – Мн.: Выш. школа, 1993. – 256 с.
11. Павловская, Т.А. Паскаль: программирование на языке высокого уровня. – СПб.: Питер, 2004. – 393 с.
12. Пильщиков, В.Н. Сборник упражений по языку Паскаль. – М.: Наука, 1989. – 160 с.
13. Поляков, Д.Б., Круглов, И.Ю. Программирование в среде ТУРБО ПАСКАЛЬ. – М.: Изд. МАИ, 1992. – 576 с.
14. Сурков, Д.А. Программирование в среде Borland Pascal для Windows: справочное пособие. – Мн.: Выш. школа, 1996. – 432 с.
15. Фаронов, В.В. Турбо Паскаль 7.0: Начальный курс. – М.: Нолидж, 2000. – 576 с.
16. Фаронов, В.В. Турбо Паскаль 7.0: Практика программирования. – М.: Нолидж, 2000. – 416 с.
П Р И Л О Ж Е Н И Я
Приложение 1
Краткое описание системы программирования
Турбо Паскаль
Базовыми компонентами системы программирования Турбо Паскаль являются компилятор языка Паскаль, средства создания и редактирования исходных текстов программ и средства их отладки. Все эти компоненты объединены в единую интегрированную среду разработчика. Базовый набор для разработки программ, не использующих графический режим, состоит из файла TURBO.EXE, который хранит ядро системы, и файла TURBO.TPL, содержащего резидентную библиотеку модулей.
Чтобы инициировать работу Турбо Паскаля, надо запустить программу из файла TURBO.EXE на выполнение. Это можно сделать с помощью DOS-ориентированных оболочек управления файлами (Windows Commander, Norton Commander, Far и т.п.) либо команды системного меню Пуск | Выполнить. В этом случае среда Turbo Pascal будет открыта в окне Windows.
Рассмотрим кратко основные элементы интегрированной среды программирования.
При запуске Турбо Паскаля, на экране появляется следующее изображение:
Экран Турбо Паскаля содержит 4 основные части, сверху вниз:
- главное меню (File, Edit, Run, Compile, Options, Debug, Break/Watch);
- окно редактирования (Edit) со служебной информацией редактора в верхней строке;
- окно просмотра (Watch) для отладки программ;
- строку подсказки о назначении функциональных клавиш (F1..F10).
Рассмотрим коротко назначение основных пунктов меню Турбо Паскаля.
File | |
New | удаление текущей программы из оперативной памяти, очистка экрана и создание нового файла с именем NONAMEXX.pas |
Open [F3] | загрузка файла с диска в новое окно редактора. При этом в диалоговом окне на выбор предлагаются имена файлов с маской *.pas. Если ввести имя, которого нет в текущем каталоге, то будет создан новый файл. |
Save [F2] | сохранение на диске текущего редактируемого файла. Если имя файла было NONAMEXX.pas, то среда запросит новое имя. |
Save as | запись содержимого окна на диск под другим именем. В поле ввода диалогового окна необходимо написать новое имя, которому автоматически будет дано расширение .pas. |
Change dir | изменяет текущий каталог пользователя. |
печатает содержимое текущего окна на принтере. | |
Exit [Alt+X] | завершает работу с Турбо Паскалем. Синоним команды – сочетание клавиш. |
Edit | |
Undo [Alt + Back Space] | отмена предыдущего выполненного действия в редакторе, так называемый «откат». |
Redo | отменяет действие команды Undo. |
Cut [Shift + Del] | удаляет выделенный блок текста из окна редактора и переносит его в буфер обмена Clipboard . |
Copy [Ctrl + Ins] | копирует выделенный блок из окна редактора в буфер обмена. |
Paste [Shift + Ins] | копирование содержимого буфера обмена в окно редактора, в то место, где в данный момент находится курсор. |
Clear [Ctrl + Del] | удаляет из окна редактора выделенный блок без помещения его в буфер обмена |
Run | |
Run [Ctrl + F9] | запускает компиляцию (трансляцию), компоновку (сборку, линковку) и выполнение программы |
Step over [F8] | выполняет те же действия, что и [F7], но без трассировки процедур и функций |
Trace Into [F7] | запускает режим пошагового (построчного) выполнения программы (трассировка). Многократно нажимая клавишу [F7], строка за строкой, мы можем выполнить всю программу. Очередная строка при этом подсвечивается голубым цветом. |
User Screen [ALT+F5] | отображает состояние экрана дисплея после завершения прогона программы. Повторное нажатие этих клавиш возвращает экран компьютера в исходное состояние. |
Compile | |
Compile [Alt + F9] | компилирует программу, которая находится в окне редактора (или содержащуюся в файле, имя которого указано в подкоманде Primary file команды Compile). |
Destination | с помощью этой опции можно указать системе, куда поместить «EXE» – файл на диск DISK или в оперативную память MEMORY. Переключение из одного состояния в другое осуществляется нажатием клавиши ENTER. |
Options | |
Compiler | разворачивается дополнительное меню, с помощью которого можно управлять параметрами компилятора. |
Environment | настройка среды Турбо Паскаля для удобства работы конкретного пользователя. |
Directories | настройка рабочих каталогов (директорий). |
Break/Watch | |
Add Watch | эта опция позволяет поместить или добавить переменную или выражение в окно просмотра и узнать их текущее значение. |
Delete Watch | эта опция удаляет из окна WATCH текущее просматриваемое выражение (режим удаления доступен в том случае, если окно просмотра WATCH является видимым). Удалить текущее выражение просмотра можно также с помощью клавиш DEL или CTRL-Y. |
Watch | открывает окно просмотра. |
Приложение 2
Типы данных в Паскале
Тип величины определяет возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу; внутреннюю форму представления данных в ЭВМ; операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.
o Классификация типов:
- Простые
- Порядковые
§ Целый
§ Логический
§ Символьный
§ Перечисляемый
§ Интервальный
- Вещественный
- Указатели
· Структурированные
- Массивы
- Строки
- Множества
- Записи
- Файлы
o Простые типы данных
В таблице приведены простые стандартные типы данных Турбо Паскаль, объем памяти, необходимый для хранения одной переменной указанного типа, множество допустимых значений и применимые операции.
Таблица 2.1
Стандартные типы данных
Идентификатор | Длина (байт) | Диапазон значений | Операции* |
Целые типы | |||
integer | -32768..32767 | +, -, /, *, div, mod, >=, <=, =, <>, <, > | |
byte | 0..255 | +, -, /, *, div, mod, >=, <=, =, <>, <, > | |
word | 0..65535 | +, -, /, *, div, mod, >=, <=, =, <>, <, > | |
shortint | -128..127 | +, -, /, *, div, mod, >=, <=, =, <>, <, > | |
longint | -2147483648..2147483647 | +, -, /, *, div, mod, >=, <=, =, <>, <, > | |
Вещественные типы | |||
real | 2,9x10-39..1,7x1038 | +, -, /, *, >=, <=, =, <>, <, > | |
single | 1,5x10-45..3,4x1038 | +, -, /, *, >=, <=, =, <>, <, > | |
double | 5x10-324..1,7x10308 | +, -, /, *, >=, <=, =, <>, <, > | |
extended | 3,4x10-4932 ..1,1x104932 | +, -, /, *, >=, <=, =, <>, <, > | |
Логический тип | |||
boolean | true, false | not, and, or, xor, >=, <=, =, <>, <, > | |
Символьный тип | |||
char | все символы кода ASCII | +, >=, <=, =, <>, <, > |
Перечисляемый тип представляет собой ограниченную упорядоченную последовательность скалярных констант, составляющих данный тип. Значение каждой константы задается ее именем. Имена отдельных констант отделяются друг от друга запятыми, а вся совокупность констант, составляющих данный перечисляемый тип, заключается в круглые скобки:
type имя_типа = (константа_1, константа_2, …, константа_N);
Пример.
typе
colors =(red, white, blue);
Отрезок любого порядкового типа может быть определен как интервальный тип. Отрезок задается диапазоном от минимального до максимального значения констант, разделенных двумя точками:
type
имя_типа = <мин.зн. конст.>..<макс.зн. конст.>
В качестве констант могут быть использованы константы, принадлежащие к целому, символьному, логическому или перечисляемому типам.
Пример.
type
digit = '0'..'9';
hour= 0..24;
Интервальный тип необязательно описывать в разделе TYPE, а можно указывать непосредственно при объявлении переменной.
Пример.
var
date : 1..31;
month: 1. .12;
o Структурированные типы данных
Описание структурированных типов данных (массивов, множеств, строк, записей, файлов) приводится в соответствующих разделах данного издания.
Приложение 3
Операции и отношения
Таблица