Реферат по предмету "Информатика, программирование"


Разработка формата хранения данных программ и решение задач

Цель: изучить возможностиработы с файлами в языке Pascal. Получить навыки разработки формата храненияданных на примере решения задач аналитической геометрии. Освоить приемыструктурирования программ.
Задание:
Задано множество точек.Найти параметры окружности минимального радиуса проходящей через три точкимножества.
Изучить процедуры ифункции языка Pascal для работы с файлами прямого и последовательного доступа.
Согласно заданному варианту,разработать формат и структуру файла прямого доступа для хранения входныхданных.
Выходные данные вывестина экран и сохранить в текстовом файле.
При написании программыорганизовать контроль вводимых данных используя функцию IOResult();
Условие задачи среквизитами исполнителя должны быть представлены на экране при запускепрограммы.
Структурировать программус использованием процедур и функций.
Реализовать возможностьввода данных из файла и с клавиатуры.

1. Теоретическаячасть:
Файл — именованнаяобласть внешней памяти ПК (жесткого диска, гибкой дискеты, электронного«виртуального» диска), либо логическое устройство – потенциальный источник илиприемник информации.
Классификация файлов потипу доступа к элементам:
Файлы прямого доступа –это файлы, у которого в любой момент времени, возможно, получить элемент суказанным доступом:
А.Типизированные
F: file of ;
F: file ofpoint ;
Б.Без типа
F: file;
2) Файлыпоследовательного доступа – это файлы у которых доступ к элементам осуществляетсястрого последовательно и отсутствует доступ по номеру элемента. (текстовые).
F: text;
В своей      лабораторной работе я использовал файлы последовательного доступа.Следовательно, я использовал текстовые файлы, что обуславливает точностьхранения данных программы. Для перевода  числа в строку используем FunctionIntToStr, для создания файла используем Procedure CrTFile, для считывания изфайла используем Procedure ReDFile.
 
2. Описание блоковпрограммы
Procedure titlist; Tитульная страница.
Выводит на экран условиязадачи с реквизитами исполнителя.
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
Function IntToStr;Перевод числа в строку.
Эта функция переводитчисло в строку.
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
Procedure PROV; Проверкавводимых данных.
В этой процедурепроисходит контроль вводимых данных при помощи Val ().
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
Procedure Osnova; Расчёты программы
В этой процедурепроисходят расчёты основной программы:
Проверка на равностьотдельных отрезков исходящих из одной точки.
На существование возможныхрадиусов. И на существование наименьшего радиуса. Запись в текстовый файлМинимального радиуса.
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
Procedure Klava;  Bводвходных данных с клавиатуры
Ввод входных данных склавиатуры. Контроль вводимых данных при помощи процедуры Val ().  И вдальнейшем выполнение расчётов.
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
Procedure ReDFile; Cозданиевыходного файла
Считывание ужезаписанного файла, в который записываются координаты точек. Проверка насуществование файла с помощью функции IOResult ().
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
Procedure CrTFile;Cоздание входного файла
Создание файла. Запись вэтот файл координат точек.
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
Procedure Menu;Предоставление пользователю варианта выбора дальнейшего действия программы.
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
Сама программа.
3. Обоснование выборасредств программной реализации блоков
Procedure titlist;                                                    Tитульнаястраница.
Выводит на экран условиязадачи с реквизитами исполнителя.
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
FunctionIntToStr(V:integer):string;                   Перевод числа в строку.
V — число, котороепереводим в строку – S..
V – параметрическаяпеременная.
String – тип возвращ.значения.
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
ProcedurePROV(Prigl:string; var V:integer; nz,vz:integer);   Проверка.
Prigl — приглашение, V — возращаемое число,
Nz — нижнее значение, vz- верхнее значение.
V – переменная, котораяимеет непосредственную связь с самой программой.
Prigl — параметрическоезаначение.
V – параметрическаяпеременная.
Nz, vz – параметрическиезаначения.
В этой процедурепроисходит контроль вводимых данных при помощи Val ().
Если мы вводим буквы то,это строковые значения и выводится сообщение:
'ОШИБКА!!! Некорректныеданные'.
Если мы вводим кол-воточек больше или меньше нужного выводится сообщение: 'ОШИБКА!!! Введенное числовне рамок диапазона'.
Если мы вводим координатыточек больше большего значения или меньше меньшего то выводиться сообщение:'ОШИБКА!!! Число должно быть от Nz до Vz.
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
ProcedureOsnov(var m:integer;d:pnt);                            Расчёты программы.
M – параметрическаяпеременная.
D -  параметрическоезначение.
В этой процедурепроисходят расчёты основной программы:
Проверка на равностьотдельных отрезков исходящих из одной точки.
На существованиевозможных радиусов. И на существование наименьшего радиуса. Запись в текстовыйфайл Минимального радиуса.
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
ProcedureKlava;                                    Bвод входных данных с клавиатуры.
Ввод входных данных с клавиатуры.Контроль вводимых данных при помощи процедуры Val ().  И в дальнейшемвыполнение расчётов.
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
ProcedureReDFile;                                           Cоздание выходного файла.
Считывание ужезаписанного файла, в который записываются координаты точек. Проверка насуществование файла с помощью функции IOResult ().
Если файл существуетпроизводится выполнение расчётов. Если не существует, то появляется сообщение:'О Ш И Б К А! Файл не существует!'
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
ProcedureCrTFile;                                                   Cоздание входногофайла.
Создание файла. Запись вэтот файл координат точек.
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
ProcedureMenu;                                Выводит на экран меню программы.
Данная процедура выводитна экран меню программы, руководствуясь которым мы можем выполнять различныедальнейшие действия.
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
Выполнение самойпрограммы.
Сама программа состоит издвух процедур: Titlist, Menu.
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
 
Листингпрограммы:
 
PROGRAM L_3;
Uses crt;
Type Point = Record              {zapis s koordinatami to4ek}
x:integer;                 {koordinatu X}
y:integer;                 {koordinatu Y}
END;
pnt = Array[1..20] Of Point; {koordinati to4ek}
{***************************************************************************}
{****************************************************************************}
procedureTitlist;
BEGIN
clrscr;
writeln('     Doneckiy gosudarstvennuy institut intelekta');
writeln;
writeln;
gotoxy(40,6);
write('Kafedraprogramnogo obespecheniy');
gotoxy(40,7);
writeln('   intellektualnuh sistem');
gotoxy(19,10);
writeln('    Laborotornay rabota #3');
writeln('         po kursu:«OP i AY»');
writeln('             po teme:«Razrabotka formatov hranenij dannih programmi.  „');
gotoxy(60,20);
write('Vupolnil:');
gotoxy(60,21);
write(');
gotoxy(60,22);
write();
writeln;
writeln;
writeln;
write('Nagmitelubuy klavishu');
readkey;
clrscr;
writeln(' Zadanie: Zadono mnogestvo tochek. Nayti parametru');
writeln('minimalnogoradiusa,prohodyshie cherez 3 tochki mnogestva.');
gotoxy(1,25);
write('Nagmitelubuy klavishu...');
readkey;
END;
{****************************************************************************}
{****************************************************************************}
functionIntToStr(V:integer):string;
varS:string[11];
BEGIN
Str(V,S);
IntToStr:=S;
END;
{*************************************************************************}
procedure PROV(Prigl:string;var V:integer; nz,vz:integer);
{Prigl-priglawenie,V-vozrawaemoe 4islo,
nz-nigneezna4enie,vz-verhnee zna4enie}
VarS,S1:string[11];
Code:integer;
f:boolean;
BEGIN
repeat
write(Prigl);
f:=false;
readln(S);
val(S,V,Code);
if(Code)0 then
writeln('OSHIBKA','NEKORECTNIE DANNUE')
else begin
str(V,S1);
if  S1 S then
writeln('OSHIBKA','VVEDENNOE CHISLO VNE RAMKAH DEAPOZONA')
else
if ((Vvz)) then begin
writeln('OSHIBKA','CHISLO DOLGNO BUT OT '+InttoStr(nz)+' DO '+IntToStr(vz));
end
else f:=true;
end;
Until f;
END;
{****************************************************************************}
{****************************************************************************}
procedureOsnov(var m:integer;d:pnt);
Varout_f:text;                  {M-kolli4estvo to4ek, D-koordinati tochek}
FName:string[20];
i,k,l:integer;            {s4et4iki}
ki,kl,lk,li,ik,il:real;   {dlinu vektorov}
rad1,rad2,rad3:real;      {dlinu radiysov}
min:real;                 {Min. radiys}
BEGIN
ClrScr;
rad1:=0;rad2:=0; rad3:=0; min:=0;
for i:=1 to(m-2) do
BEGIN
textcolor(Green);
ik:=Sqrt(Sqr(D[i].x-D[k].x)+Sqr(D[i].y-D[k].y));
il:=Sqrt(Sqr(D[i].x-D[l].x)+Sqr(D[i].y-D[l].y));
if (il=ik)then
Begin
rad1:=ik;
writeln ('TOCHKA ',i,'- CENTR OKRYGNOSTI')
End
Else
writeln('TOCHKA',i,' NE JAVLJETSJ CENTROM OKRYGNOSTI');
END;
for k:=i+1 to(m-1) do
BEGIN
textcolor(lightgray);
ki:=Sqrt(Sqr(D[i].x-D[k].x)+Sqr(D[i].y-D[k].y));
kl:=Sqrt(Sqr(D[l].x-D[k].x)+Sqr(D[l].y-D[k].y));
if (kl=ki)then
Begin
rad2:=ki;
writeln ('TOCHKA ',k,'- CENTR OKRYGNOSTI')
End
Else
writeln('TOCHKA',k,' NE JAVLJETSJ CENTROM OKRYGNOSTI');
END;
for l:=k+1 tom do
BEGIN
textcolor(blue);
lk:=Sqrt(Sqr(D[k].x-D[l].x)+Sqr(D[k].y-D[l].y));
li:=Sqrt(Sqr(D[i].x-D[l].x)+Sqr(D[i].y-D[l].y));
if (lk=li)then
Begin
rad3:=lk;
writeln ('TOCHKA ',l,'- CENTR OKRYGNOSTI')
End
Else
writeln('TOCHKA',l,' NE JAVLJETSJ CENTROM OKRYGNOSTI');
END;
writeln('Nagmite lubyu klaviwy...');
readLn;
if rad1>0then
BEGIN
textcolor(lightred);
min:=rad1;
writeln ('Min.radiys= ' ,min:4:2,' ¤«п в®зЄЁ' ,i,'');
if((rad2>0) and (rad2
Begin
min:=rad2;
writeln ('Min.radiys= ' ,min:4:2,' dlj tochki' ,k,'');
End;
if((rad3>0) and (rad3
Begin
min:=rad3;
writeln('Min.radiys= ' ,min:4:2,' dlj tochki' ,l,'');
End
ELSE
if rad2>0then
BEGIN
min:=rad2;
writeln('Min.radiys= ' ,min:4:2,' dlj tochki' ,k,'');
if((rad3>0) and (rad3
Begin
min:=rad3;
writeln ('Min.radiys= ' ,min:4:2,' dlj tochki' ,l,'');
End
ELSE
if rad3>0then
BEGIN
min:=rad3;
writeln ('Min.radiys= ' ,min:4:2,' dlju tochki' ,l,'');
END;
if min=0 then
writeln('TOCHKA NE OBRAZUET RADIYS OKRYGNOSTI');
readkey;
End;
End;
TextColor(3);
TextBackground(0);
GoToXY(30,13);
WriteLn('Min.radiys=: ', min:4:2);
GoToXY(3,25);
NormVideo;
write('Dljsohranenij nagmite ''ctrl+S'' ');
GoToXY(50,25);
write('Dljprodolgenij nagmite ''Esc'' ');
if ReadKey=#19then begin
clrscr;
write('Vvediteimj vihodnogo fajla: ');
readLn(FName);
Assign(out_f,FName);
Rewrite(out_f);
WriteLn(out_f,'Min.radiys= ',min);
Close(out_f);
writeln('Fajlyspewno sohranen');
readln;
end;
END;
{***************************************************************************}
{****************************************************************************}
procedureKlava;
Var
m:integer;   {kolli4estvo to4ek}
i:integer;   {s4et4ik}
d:pnt;       {koordinati to4ek}
BEGIN
clrscr;
PROV('Kolli4estvoto4ek M=',m,3,20);
for i:=1 to Mdo begin
writeLn('Vveditekoordinati ', i, '-j to4ki:');
PROV('.X = ',D[i].X,-99,99);
PROV('.Y = ',D[i].Y,-99,99);
end;
Osnova(m,d);
END;
{***************************************************************************}
{****************************************************************************}
procedureReDFile;
var in_f:file;
FName:string[20];
f:word;
m:integer;   {kolli4estvo to4ek}
i:integer;   {s4et4ik}
d:pnt;       {koordinati to4ek}
BEGIN
clrscr;
f:=0;
write('Vediteimj fajla: ');
readLn(FName);
Assign(in_f,FName);
{$I-}
Reset(in_f,2);
{$I+}
if IOResult=0then
begin
blockread(in_f,m,1);
for i:=1 to mdo begin
blockread(in_f,D[i].X,1);
blockread(in_f,D[i].Y,1);
end;
Close(in_f);
if f=0 then
Osnova(m,d);
end
else
begin
writeln('OSHIBKA','FAJLNE SYWESTVYET');
readln;
end;
END;
{***************************************************************************}
{****************************************************************************}
procedureCrTFile;
var in_f:file;
FName:string[20];
m:integer;       {kolli4estvo to4ek}
i:integer;       {s4et4ik}
D:pnt;           {koordinati to4ek}
BEGIN
clrscr;
write('Vvediteimj fajla: ');
readLn(FName);
Assign(in_f,FName);
begin
clrscr;
Rewrite(in_f,2);
PROV('Vveditekolli4estvo to4ek:',m,3,20);
BlockWrite(in_f,m,1);
for i:=1 to mdo begin
writeLn('Vveditekoordinati ', i, '-j to4ki:');
PROV('.X = ',D[i].X,-99,99);
BlockWrite(in_f,D[i].X,1);
PROV('.Y = ',D[i].Y,-99,99);
BlockWrite(in_f,D[i].Y,1);
end;
ClrScr;
Close(in_f);
clrscr;
writeln('Fajlyspewno sozdan');
readln;
end;
END;
{****************************************************************************}
{****************************************************************************}
procedureMenu;
var
ch:char;
BEGIN
repeat
clrscr;
writeLn('4tovi hotite sdelat:');
writeLn('1:dlj voda vhodnih dannih s klaviatyru..');
writeLn('2:dlj s4ituvanij vhodnih dannih iz fajla..');
writeLn('3:dlj sozdanij vhodnogo fajla..');
writeLn(#10#13);
writeLn('0:dlj vihoda..');
repeat
ch:=ReadKey;
Until (ch='1')or (ch='2') or (ch='3') or (ch='0');
case ch of
'1': Klava;
'2': ReDFile;
'3': CrTFile;
end;
Until ch='0';
END;
{****************************************************************************}
{****************************************************************************}
BEGIN
Titlist;
Menu;
END.
5. Тестовые примеры
Входной файл:
Координаты 1-ой точки:
.X = 4
.Y = 6
Координаты 2-ой точки:
.X = 9
.Y = 0
Координаты 3-ей точки:
.X = 32
.Y = 6
Выходной файл:
Мин. радиус =: 7.21
Входной файл:
Координаты 1-ой точки:
.X = 10
.Y = 9
Координаты 2-ой точки:
.X = -34
.Y = -2
Координаты 3-ей точки:
.X = 3
.Y = 56
Координаты 4-ой точки:
.X = 1
.Y = 0
Выходной файл:
Мин. радиус =: 34.06


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат The JudgeS Wife By Isabel Allende Essay
Реферат Вдосконалення стану грошового обігу в Україні
Реферат Модели Атомного Ядра
Реферат Вплив на атмосферу підприємств харчової промисловості та шляхи його зниження (на прикладі ВАТ "Жашківський маслозавод")
Реферат Логика контрольная
Реферат Экологическое право и обязанности граждан Украины
Реферат Законность правопорядок общественный порядок
Реферат 100 экзаменнационных вопросов по психологии
Реферат Влияние сказкотерапии на снятие стресса у детей младшего школьного возраста
Реферат Андерсон Шервуд
Реферат Форма та зміст заповіту за законодавством різних держав
Реферат Great Expectations Essay Research Paper Pip is
Реферат Проектирование рисунка на трикотаже двойного полного трехцветного жаккардового переплетения для
Реферат Contrast In Do Not Weep Maiden For
Реферат Отечественная техника в 18 веке