Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
X2:=X0+2; {Координата по X для вывода значений слева оси Y}
{Рисование рамки}
setfillstyle(1,1);
bar(X0,Y0,MaxX-X0,MaxY-Y0);
setcolor(14);
rectangle(X0,Y0,MaxX-X0,MaxY-Y0);
{Рисование осей}
line(2*X0,2*Y0,2*X0,MaxY-2*Y0); {Ось Y}
line(2*X0,MaxY-2*Y0,MaxX-2*X0,MaxY-2*Y0); {Ось X}
{Поиск наибольшего из значений элементов исходных данных в переменную M}
M:=Num[1];
for I:=2 to N do
if Num[I]>M then
M:=Num[I];
S1:=round((MaxY-4*Y0)/M); {Определение длины единичного отрезка на оси Y}
{Рисование диаграммы}
for I:=1 to N do
begin
Y2:=2*Y0+(MaxY-2*Y0-S1*Num[I]); {Начальная координата по Y}
str(Num[I]:4,Nm);
outtextxy(X2,Y2,Nm); {Вывод значения элемента данных слева оси Y}
line(2*X0-3,Y2-3,2*X0,Y2-3); {Рисование деления на оси Y}
outtextxy(X1,Y1,Name[I]); {Вывод названия элемента данных под осью X}
setfillstyle(1,I+1); {Определение типа заполнения столбца}
bar(X1-1,Y2-3,X1-1+S, Y1-3); {Рисование столбца}
X1:=X1+S; {Начальная координата по Х для очередного столбца}
end;
repeat
until keypressed;
closegraph {Выход из графического режима}
end.
{Пример построения линейной диаграммы}
program LineDiagram;
uses crt, graph;
{N - количество элементов исходных данных}
{Name - наименования элементов исходных данных}
{Num - числовые значения элементов исходных данных}
const
N=6;
Name:array[1..N] of string=('1997','1998','1999','2000','2001','2002');
Num:array[1..N] of integer=(10,5,8,11,2,7);
var
Dr, Rg, MaxX, MaxY, X0,Y0,S, I,X1,Y1,X2,Y2,S1,X3,Y3,X4,Y4:integer;
M:real;
Nm:string;
begin
{Инициализация графического режима}
Dr:=detect;
initgraph(Dr, Rg,'');
{Определение начальных параметров}
cleardevice; {Очистка экрана}
MaxX:=getmaxx; {Определение максимальной координаты по X}
MaxY:=getmaxy; {Определение максимальной координаты по Y}
X0:=40; {Отступ от края экрана до рамки по вертикали}
Y0:=20; {Отступ от края экрана до рамки по горизонтали}
S:=round((MaxX-4*X0)/N); {Определение интервала между точками по X}
X1:=2*X0+2; {Координата по X для первой точки диаграммы}
Y1:=MaxY-2*Y0+2; {Координата по Y для вывода названий под осью Y}
X2:=X0+2; {Координата по X для вывода значений слева от оси Y}
{Рисование рамки}
setfillstyle(1,1);
bar(X0,Y0,MaxX-X0,MaxY-Y0);
setcolor(14);
rectangle(X0,Y0,MaxX-X0,MaxY-Y0);
{Рисование осей}
line(2*X0,2*Y0,2*X0,MaxY-2*Y0); {Ось X}
line(2*X0,MaxY-2*Y0,MaxX-2*X0,MaxY-2*Y0); {Ось Y}
{Поиск наибольшего из значений элементов исходных данных в переменную M}
M:=Num[1];
for I:=2 to N do
if Num[I]>M then
M:=Num[I];
S1:=round((MaxY-4*Y0)/M); {Определение длины единичного отрезка на оси Y}
{Рисование диаграммы}
for I:=1 to N do
begin
Y2:=2*Y0+(MaxY-2*Y0-S1*round(Num[I])); {Координата точки по Y}
X4:=X1-1; {Конечная координата линии по X}
Y4:=Y2-3; {Конечная координата линии по Y}
str(Num[I]:4,Nm);
outtextxy(X2,Y2,Nm); {Вывод значения элемента данных слева оси Y}
line(2*X0-3,Y2,2*X0,Y2); {Рисование деления на оси Y}
outtextxy(X1,Y1,Name[I]); {Вывод названия элемента данных под осью X}
setlinestyle(0,1,1); {Определение типа линии диаграммы}
circle(X4,Y4,2); {Рисование узлов диаграммы}
if I<>1 then
line(X3,Y3,X4,Y4); {Рисование линии диаграммы}
X3:=X1-1; {Начальная координата линии по X}
Y3:=Y2-3; {Начальная координата линии по Y}
X1:=X1+S; {Координата по X для очередной точки}
end;
repeat
until keypressed;
closegraph {Выход из графического режима}
end.
Самостоятельная работа: Построить линейчатую диаграмму, в исходном массиве только положительные элементы.
Построение круговой диаграммы.
{Пример построения круговой диаграммы}
program RoundDiagram;
uses crt, graph;
{N - количество элементов исходных данных}
{Name - наименования элементов исходных данных}
{Num - числовые значения элементов исходных данных}
const
N=6;
Name:array[1..N] of string=('1997','1998','1999','2000','2001','2002');
Num:array[1..N] of integer=(10,5,8,11,2,7);
var
Dr, Rg, MaxX, MaxY, Y0,I, S1,Kg, Xc, Yc, R,Yk:integer;
M, S:real;
begin
{Инициализация графического режима}
Dr:=detect;
initgraph(Dr, Rg,'');
{Определение начальных параметров}
cleardevice; {Очистка экрана}
MaxX:=getmaxx; {Определение максимальной координаты по X}
MaxY:=getmaxy; {Определение максимальной координаты по Y}
Xc:=300; {Координата центра диаграммы по X}
Yc:=250; {Координата центра диаграммы по Y}
R:=150; {Радиус диаграммы}
{Рисование рамки}
setfillstyle(1,1);
bar(0,0,MaxX, MaxY);
setcolor(14);
rectangle(0,0,MaxX, MaxY);
{Определение суммы значений элементов исходных данных в переменную S}
S:=0;
for I:=1 to N do
S:=S+Num[I];
{Рисование диаграммы}
Y0:=0; {Начальный угол сектора}
for I:=1 to N do
begin
Kg:=round(360*(Num[I]/S)); {Определение кол-ва градусов в секторе}
Yk:=Y0+Kg; {Конечный угол сектора}
if Yk>360 then
Yk:=360;
setfillstyle(1,I+1); {Определение типа заполнения сектора}
pieslice(Xc, Yc, Y0,Yk, R); {Рисование сектора}
Y0:=Yk {Начальный угол сектора}
end;
repeat
until keypressed;
closegraph {Выход из графического режима}
end.
Работа с файлами.
В задачах, которые мы рассматривали, данные поступали с клавиатуры, а результаты выводились на экран дисплея. Поэтому ни исходные данные, ни результаты не сохранялись. Приходилось заново вводить данные всякий раз, когда запускали программу. А если их очень много? Тогда удобно оформить исходные данные и результаты в виде файлов, которые можно хранить на диске точно так же, как и программы.
Файл - это область памяти на внешнем носителе, в которой хранится некоторая информация. В языке Паскаль файл представляет собой последовательность элементов одного типа. Мы будем работать только с файлами последовательного доступа. В таких файлах, чтобы получить доступ к элементу, необходимо последовательно просмотреть все предыдущие.
Объявление файловой переменной в разделе описания переменных имеет вид :
var <имя файла>: File of <тип элементов>;
Например:
var Ft : File of integer;
M : File of char;
Type File_integer=File of integer
File_char=File of char;
Var F1: File_integer;
F2: File_char;
Так как в описании указывается тип элементов, такие файлы называются типизированными. Все элементы файла пронумерованы начиная с нуля.
С каждым файлом связан так называемый файловый указатель. Это неявно описанная переменная, которая указывает на некоторый элемент файла.
(0) | (1) | ... | (к) | (к+1) | ... | |
Ý |
файловый указатель
Все операции производятся с элементом, который определен файловым указателем.
Связь переменной файлового типа
с файлом на диске.
Процедура Assign(<имя файловой пер-ой>,’<имяфайла на диске>’);
Например:
Assign(F1,’A:INT.DAT’);
После установления такого соответствия все операции, выполняемые над переменной F1, будут выполнятся над файлом, хранящимся на диске А и имеющим имя INT. DAT
Файл в каждый момент времени может находиться в одном из двух состояний: либо он открыт только для записи, либо только для чтения.
Чтение из файла.
Под чтением из файла понимается пересылка данных из внешнего файла, находящегося на диске, в оперативную память.
Для чтения из файла необходимо открыть для чтения посредством процедуры
Reset(<имя файловой переменной>);
Собственно чтение данных из файла выполняется процедурой
Read(<имя файловой переменной>,<имя переменной>);
Переменная должна иметь тот же тип, что и компоненты файла. Отметим, что если оператор ввода имеет вид Read(<имя переменной>), то данные вводятся с клавиатурой, а если Read(<имя файловой переменной>,<имя переменной>); то данные вводятся из файла, хранящегося на диске.
Закрытие файла
После того как данные из файла прочитаны, его необходимо закрыть посредством процедуры
Close(< имя файловой переменной>)
Общая схема чтения данных из файла, таким образом, следующая:
Reset(<имя файловой переменной>);
.......
Read(<имя файловой переменной>,<имя переменной>);
...........
Close(<имя файловой переменной>);
Признак конца файла
Так как число элементов файла не известно заранее, необходимо уметь определять, что файл кончился. Для этого используется логическая функция Eof(<имя файловой переменной>) (Eof - End Of File). Она принимает истинное значение (Тrue), если достигнут конец файла, и ложное (False) - в противном случае.
Пример Прочитаем из файла целые числа и выведем их на экран:
Assign(F1,’A:INT. DAT’);
Reset(F1);
While Not Eof(F1) do
begin
read(f1,n); { считываем очередное число из файла}
write(n,’ ‘); { выводим его на экран}
end;
Close(F1);
Запись в файл
Под записью в файл понимается вывод результатов программы из оперативной памяти ЭВМ в файл на диске.
Для записи в файл необходимо открыть файл для записи посредством процедуры
Rewrite(< Имя файловой переменной >);
Собственно запись данных в файл выполняется процедурой :
Write(<имя файловой переменной>,<значение>);
Общая схема записи данных в файл, таким образом, следующая:
Rewrite(<>);
......
Write(<имя файловой переменной>,<значение>);
..........
Close(<имя файловой переменной>);
Прямой доступ к элементам файла
Несмотря на то, что в стандартном Паскале имеются лишь файлы последовательного доступа, Турбо Паскаль содержит процедуры и функции для более эффективной работы с файлами. В частности, имеется возможность осуществлять прямой доступ к элементам файла.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |


