поля1>;
…
<назва поля n>:<тип поля n>;
End;
Приклад
Grupa=record
Name, surname:string[20];
Birthday:record
Year:1975..1985;
Month:1..12;
Day:1..31;
End;
Sball:real end;
Доступ до конкретного поля запису дає складене імя вигляду <назва запису>.<назва поля>.
Конкретні записи типу grupa оголошують у розділі var так: student1, student2: grupa. У програмі цим змінним можна надати наприклад такі значення
student1. surname:= ‘Ігор’; student2. Birthday. Month:=5
Складені імена використовувати незручно. Вони ведуть до громіздких виразів у програмі. Щоб цього уникнути, застосовують команду with.
Команда приєднання with дає змогу використовувати у програмі лише імена полів. Загальний вигляд команди: with <імя змінної типу запис> do <команда>; у цій команді після слова with зазначають імя змінної типу запис, а в команді пишуть лише назви полів відповідного запису. До змінних з поперднього прикладу можна звернутися так:
With student1 do begin
Name:=’Shevchenko’; surname:=’Ihor’;
With birthday do begin year:=1980; month:=12; day:=28; end; sball:=4.9 end end;
30. Графічні адаптери і режими. Ініціалізація графічного режиму.
Графічний екран дисплея складається з точок, які можна засвічувати певним кольором чи гасити, у результаті чого на екрані утворюється деяке зображення. Точки називаються пікселями. Кількість тосок може бути різною, залежить від якості екрана. Початок відліку ведеться від лівого верхнього кута екрану. Кожна точка характеризується двома координатами(х,у). Програми, що виконують графічні побудови переважно є лінійними і складаються з викликів стандартних графічних процедур та функцій, зібраних у модулі Graph.tpu. Сам модуль може бути в бібліотеці turbo.tpl або в деякому каталозі на диску. В останньому випадку його треба приєднати командою uses на початку програми.
Для апаратної підтримки графіки існує ряд типів дисплеїв і відповідних електронних плат, які називаються адаптерами і які відрізняються між собою такими параметрами:
Роздільна здатність- кількість точок по горизонталі та вертикалі.
Гамою кольорів – можливість одночасного відображення повної кількості кольорів і відтінків.
Одним з найпоширеніших типів адаптерів є EGA i VGA та їх модифікації.
Для використання графічних можливостей мови одночасно ряд констант, які задають тип адаптера згідно таблиці.
Константа Значення
Detect 0
CGA 1
MCGA 2
EGA 3
VGA 9
Для роботи з графічними процедурами необхідні спеціальні програми драйвери, які містяться в файлах з розширенням .bgi. Для кожного із адаптерів можливе задання різних графічних режимів.
Роздільна здатність і кольори
Константа Значення Роздільна здатність Кольори
CGAC0 0 320x200 4
EGAHI 1 640x350 16
CGAAHI 4 640x200 2
VGAHI 2 640x480 16
На даний час певного поширення набувають адаптери типу SVGA роздільна здатність яких 800х600 і 256 кольорів, 1024х768 і 256 кольорів і 1280х1024 і 1800х1200. Вище перчислені константи для задання типу адаптера і графічного режиму використовуються при зміні режиму в ході виконання програми.
Ініціалізація(встановлення) графічного режиму. Після підключення графічної бібліотеки програма отримує доступ до всіх підпрограм даної бібліотеки. Перед заданням граф. проц. Користувач повинен за допомогою процедури InitGraph один із можливих графічних режимів.
Формат InitGrap(var: GraphDriver:integer, GraphMod:integer, PathtoDriver:string);
GraphDriver- змінна, що задає тип адаптера, GraphMod- змінна, що вказує номер режиму, PathtoDriver – шлях до драйвера
Тоді в розділі описів
Var GrD:integer; GrM:integer; PathD:string;
Begin
GrD:=VGA; GrM:=VGAHI; PAthD:=’D:\BIN\BGI’{тоді ініціалізація графіки}InitGraph(GrD, GrM, PathD); <оператори>
Для тих хто не впевнений в типі адаптера існує стандартний засіб для його визначення, який задається константою Detect, тобто рядок GrD:=VGA можна замінити на GrD:=Detect. Рядок GrM:=VGAHI є не обовязковим, оскільки по замовчуванню ТР автоматично вибирає найоптимальніший режим для визначеного користувачем адаптера. Рядок PAthD:=’D:\BIN\BGI’ можна замінити на PAthD:=’’ при умові, що драйвери знаходяться в активному каталозі. Графічний режим можна задати ще так:
Var driver, mode: integer;
Begin driver:=detect; initgraph(driver, mode, ‘’);{задання графічного режиму}
If graphresult<>0 then begin writeln(‘графічний режим задати не вдалося’); halt;{stop}end;
<текст програми>end.
При складанні програм користувач може задати режим контролю за помилками при виконанні програми а також вказати «ввічливе» її завершення чи використання. Для цього в ТР існує ряд процедур і функцій, а саме функція
GraphResult:integer – повертає код використання графічної операції
GraphErrorMsg – видає текстове повідомлення про результат останньої графічної операції
CloseGraph – використовується для завершення роботи в графічному режимі.
Екран в графічному режимі
В залежності від типу адаптеру і вибраного режиму встановлюється повна розмірність екрану в пікселях з початком координат в верхньому лівому кутку. В будь-який момент часу але після ініціалізації графічного режиму можна змінити режим використання процедури SetGraphMode(Mode:integer).
Mode – номер потрібного(допустимого для даного адаптера) режиму.
Для визначення розмірності використовуються стандартні функції
GetMax – повертають відповідно максимальну горизонтальну чи вертикальну координату.
Оскільки в графічному режимі кожен піксель екрану набуває різного кольору, то інформацію про кількість кольорів можна отримати за допомогою функції
GetMaxColor: word- повертає максимально допустимий номер кольору для заданого режиму.
Для задання кольорів в Тр означено ряд констант, кожна з яких відповідає пеіному кольору, згідно таблиці.
Крім цього в ТР існує поняття основного і фонового кольорів. Основний використовується рядом процедур для побудови основних графічних примітивів і встановлюється процедурою SetColor(color:word);
Фоновий колір використовується при замальовуванні замкнутих областей і задається процедурою SetBkColor(colorNum:word);
Існує процедура GraphDevice, що очищає весь екран тобто замальовує його фоновим кольором.В графічному режимі ТР існує поняття графічного курсора який представляє собою деяку точку екрану , що активно використовується певними процедурами і функціями. Для визначеня його координат використовують GetX i GetY: integer; - повертає відповідно горизонтальну і вертикальну координати графічного курсора. Для його переміщення використовують функцію MoveTo(x,y:integer), x,y – абсолютні координати курсора. Крім цього існує функ-я MoveRel(Dx,Dy:integer) – переміщає курсор на певний крок(на відносні координати Dx,Dy) від положення курсора.
31. Найпростіші графічні примітиви: точка, лінія, прямокутник, коло.
Графічна бібліотека Graph містить ряд процедур для виведеня графічних примітивів(фігур) на екран а саме таких як точка, лінія, прямокутник, коло, еліпс