Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_na_ekzamen_OAiP (1).docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
71.77 Кб
Скачать

23Стандартные процедуры и функции создания графических примитивов

Модуль GraphABC представляет собой простую графическую библиотеку и предназначен для создания несобытийных графических и анимационных программ в процедурном и частично в объектном стиле. Рисование осуществляется в специальном  графическом окне, возможность рисования в нескольких окнах отсутствует. Кроме этого, в модуле GraphABC определены простейшие события мыши и клавиатуры, позволяющие создавать элементарные событийные приложения

Типы и переменные модуля GraphABC

Color = System.Drawing.Color;

Тип цвета

Point = System.Drawing.Point;

Тип точки

GraphABCException = class(Exception) end;

Тип исключения GraphABC

RedrawProc: procedure;

Процедурная переменная перерисовки графического окна. Если равна nil, то используется стандартная перерисовка

24. Стандартные процедуры и функции заливки графических примитивов

uses GraphABC;

begin

Window.Clear;

Brush.Color := clGreen;

FillCircle(140,90,40);

FillCircle(140,209,80);

FillCircle(140,400,120);

Line(60,209,30,280 ,clDarkViolet);

Line(220,210,290,270 ,clDarkViolet);

Line(270,350,310,200 ,clDarkViolet);

Line(310,200,280,110 ,clDarkViolet);

Line(310,200,300,110 ,clDarkViolet);

Line(310,200,320,110 ,clDarkViolet);

Line(310,200,350,110 ,clDarkViolet);

Line(310,200,370,120 ,clDarkViolet);

Brush.Color := clIndianRed;

FillCircle(130,90,10);

FillCircle(160,90,10);

moveto (120,50);

lineto (130,20);

lineto (150,20);

lineto (160,50);

lineto (120,50);

floodfill (140,40,clCornsilk);

moveto (140,100);

lineto (160,105);

lineto (140,110);

lineto (140,100);

floodfill (141,103,clRed);

end.

26. Графические процедуры и функции: стандартные алгоритмы циклической прорисовки графических примитивов

uses GraphABC;

var i:integer;

begin

Window.Clear;

Brush.Color := clGreen;

for i:=10 to 20 do

drawrectangle(450, 350, 550,400);

drawrectangle(450+i, 350+i, 550-i,400-i);

drawrectangle(450-i, 350-i, 550+i,400+i);

end.

27. Графические процедуры и функции: стандартные алгоритмы прорисовки движущегося рисунка

uses GraphABC;

begin

LockDrawing;

for var i:=400 downto -200 do

begin

Window.Clear;

moveto (i+160,50);

lineto (i+80,25);

lineto (i+40,50);

lineto (i+160,50);

floodfill (i+90,35,clDeepSkyBlue);{плавник}

Brush.Color := clblue;

Ellipse(i,40,i+170,80);{тело}

Brush.Color := clHotPink;

FillCircle(i+40,60,5);{глаз}

Brush.Color := clblack;

FillCircle(i+40,60,2);{глаз}

moveto (i+170,60);

lineto (i+190,40);

lineto (i+190,80);

lineto (i+170,60);

floodfill (i+180,59,clMediumPurple);{хвост}

moveto (i+120,69);

lineto (i+138,73);

lineto (i+130,85);

lineto (i+120,69);

floodfill (i+130,82,clMediumAquamarine);

floodfill (i+130,75,clMediumAquamarine);{плавник}

Redraw;

Sleep(1);

end;

end.

24. Записи

Запись - это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. В отличие от массива, компоненты (поля) записи могут быть различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.

Структура объявления типа записи такова:

<имя типа> = RECORD <сп.полей> END

Здесь <имя типа> - правильный идентификатор;

RECORD, END - зарезервированные слова (запись,конец); <сп.полей> - список полей; представляет собой последовательность разделов записи, между которыми ставится точка с запятой.

Каждый раздел записи состоит из одного или нескольких идентификаторов полей, отделяемых друг от друга запятыми. За идентификатором (идентификаторами) ставится двоеточие и описание типа поля (полей), например:

type

BirthDay = record

day,month : Byte;

year : Word

end;

var

a,b : Birthday;

В этом примере тип BIRTHDAY (день рождения) есть запись с полями DAY, MONTH и YEAR (день, месяц и год); переменные А и В содержат записи типа BIRTHDAY.

Как и в массиве, значения переменных типа записи можно присваивать другим переменным того же типа, например

а := b;

К каждому из компонентов записи можно получить доступ, если использовать составное имя, т.е. указать имя переменной, затем точку и имя поля:

а.day := 27;

b.year := 1939;

Для вложенных полей приходится продолжать уточнения:

type

BirthDay = record

day,month: Byte;

year : Word

end;

var

с : record

name : String;

bd : BirthDay

end;

begin

if c.bd.year = 1939 then ...

end.

Чтобы упростить доступ к полям записи, используется оператор присоединения WITH:

WITH <переменная> DO <оператор>

Здесь WITH, DO - ключевые слова (с, делать);

<переменная> - имя переменной типа запись, за которым, возможно, следует список вложенных полей; <оператор> - любой оператор Турбо Паскаля.

Например:

with c.bd do month := 9; Это эквивалентно with с do with bd do month := 9;

или

with c,bd do month := 9;

или

c.bd.month := 9;

31-34 Файлы и их виды в Турбо Паскале

В процессе отладки программ часто приходится вводить с клавиатуры одни и те же данные, возможно, большого объема, что занимает много времени. Для того чтобы не повторять этот ввод при каждом запуске программы на выполнение, обычно записывают и хранят данные во внешней памяти - в файлах. Кроме того, файлы используют для хранения промежуточных данных, с целью экономии оперативной памяти, и для записи результатов работы программ с целью их последующего использования в других программах в качестве входной информации или для просмотра этих результатов после завершения работы программы.

Под файлом понимается либо именованная область внешней памяти компьютера (жесткого или гибкого диска, электронного виртуального диска и т. п.), либо логическое устройство - потенциальный источник или приемник информации [1]. Любой файл имеет имя, состоит из компонент заданного типа, число этих компонент заранее не задается и ограничивается только объемом внешней памяти.

Для использования файлов в программе должна быть объявлена переменная файлового типа. Файловые переменные имеют специфическое применение. Над ними нельзя выполнять никаких операций (присваивать значение, сравнивать и т.д.). Их можно использовать лишь для выполнения операций с файлами (чтение, запись и т.д.).

Элементы файла считаются расположенными последовательно, то есть так же, как элементы линейного массива. Отличие же состоит в том, что, во-первых, размеры файла могут меняться, во-вторых, способ обращения к элементам совсем другой: невозможно обратиться к произвольному элементу файла; элементы его просматриваются только подряд от начала к концу, при этом в каждый момент времени доступен только один элемент. Можно представить себе, что для каждого файла существует указатель, показывающий в данный момент на определенный компонент файла. После проведения операции чтения или записи указатель автоматически передвигается на следующий компонент.

В зависимости от способа объявления переменной файлового типа различают три вида файлов :

  • - текстовые файлы (задаются с помощью типа TEXT);

  • - типизированные файлы (задаются описанием FILE OF...);

  • - не типизированные или безтиповые файлы (задаются типом FILE);

Переменная файлового типа или просто файловая переменная должна

быть объявлена в разделе VAR одним из следующих трех способов:

<ИМЯ> : TEXT;

<ИМЯ> : FILE OF <ТИП>;

<ИМЯ> : FILE;

<ИМЯ> - имя файловой переменной (правильный идентификатор);

<ТИП> - любой тип ТР кроме файлов.

Например:

Type Spisok = Record { Описание типа структуры}

Nom: byte;

FIO: string[30];

Adres: string;

End;

Var F1: File; { Описание безтипового файла}

F2: Text; { Описание текстового файла}

F: File of Spisok; { Описание типизированного файла}

F_sim: File of char;{Описание файла, содержащего только символы}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]