
- •Var a: array [1..10] of array [1.. 20] of real;
- •Var a: array [1..10, 1..20] of real;
- •14 Алгоритмы сортировки одномерных массивов
- •15 Функции
- •Описание и вызов процедур и функций
- •15 Процедуры
- •18. Механизм передачи параметров
- •23Стандартные процедуры и функции создания графических примитивов
- •26. Графические процедуры и функции: стандартные алгоритмы циклической прорисовки графических примитивов
- •27. Графические процедуры и функции: стандартные алгоритмы прорисовки движущегося рисунка
- •24. Записи
- •5.2. Доступ к файлам
- •5.3. Текстовые файлы
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;{Описание файла, содержащего только символы}