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

2016-07-28СтудИзба

Описание файла

Документ из архива "Разработка формата хранения данных программ и решение задач", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "48703"

Текст из документа "48703"

Цель: изучить возможности работы с файлами в языке Pascal. Получить навыки разработки формата хранения данных на примере решения задач аналитической геометрии. Освоить приемы структурирования программ.

Задание:

Задано множество точек. Найти параметры окружности минимального радиуса проходящей через три точки множества.

Изучить процедуры и функции языка Pascal для работы с файлами прямого и последовательного доступа.

Согласно заданному варианту, разработать формат и структуру файла прямого доступа для хранения входных данных.

Выходные данные вывести на экран и сохранить в текстовом файле.

При написании программы организовать контроль вводимых данных используя функцию IOResult();

Условие задачи с реквизитами исполнителя должны быть представлены на экране при запуске программы.

Структурировать программу с использованием процедур и функций.

Реализовать возможность ввода данных из файла и с клавиатуры.

1. Теоретическая часть:

Файл - именованная область внешней памяти ПК (жесткого диска, гибкой дискеты, электронного «виртуального» диска), либо логическое устройство – потенциальный источник или приемник информации.

Классификация файлов по типу доступа к элементам:

Файлы прямого доступа – это файлы, у которого в любой момент времени, возможно, получить элемент с указанным доступом:

А.Типизированные

F : file of ;

F : file of point <точки>;

Б.Без типа

F : file;

2) Файлы последовательного доступа – это файлы у которых доступ к элементам осуществляется строго последовательно и отсутствует доступ по номеру элемента. (текстовые).

F : text;

В своей лабораторной работе я использовал файлы последовательного доступа. Следовательно, я использовал текстовые файлы, что обуславливает точность хранения данных программы. Для перевода числа в строку используем Function IntToStr, для создания файла используем 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итульная страница.

Выводит на экран условия задачи с реквизитами исполнителя.

//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//

Function IntToStr(V:integer):string; Перевод числа в строку.

V - число, которое переводим в строку – S..

V – параметрическая переменная.

String – тип возвращ. значения.

//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//

Procedure PROV(Prigl:string; var V:integer; nz,vz:integer); Проверка.

Prigl - приглашение, V - возращаемое число,

Nz - нижнее значение, vz - верхнее значение.

V – переменная, которая имеет непосредственную связь с самой программой.

Prigl - параметрическое заначение.

V – параметрическая переменная.

Nz, vz – параметрические заначения.

В этой процедуре происходит контроль вводимых данных при помощи Val ().

Если мы вводим буквы то, это строковые значения и выводится сообщение:

'ОШИБКА!!! Некорректные данные'.

Если мы вводим кол-во точек больше или меньше нужного выводится сообщение: 'ОШИБКА!!! Введенное число вне рамок диапазона'.

Если мы вводим координаты точек больше большего значения или меньше меньшего то выводиться сообщение: 'ОШИБКА!!! Число должно быть от Nz до Vz.

//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//

Procedure Osnov(var m:integer;d:pnt); Расчёты программы.

M – параметрическая переменная.

D - параметрическое значение.

В этой процедуре происходят расчёты основной программы:

Проверка на равность отдельных отрезков исходящих из одной точки.

На существование возможных радиусов. И на существование наименьшего радиуса. Запись в текстовый файл Минимального радиуса.

//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//

Procedure Klava; Bвод входных данных с клавиатуры.

Ввод входных данных с клавиатуры. Контроль вводимых данных при помощи процедуры Val (). И в дальнейшем выполнение расчётов.

//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//

Procedure ReDFile; Cоздание выходного файла.

Считывание уже записанного файла, в который записываются координаты точек. Проверка на существование файла с помощью функции IOResult ().

Если файл существует производится выполнение расчётов. Если не существует, то появляется сообщение: 'О Ш И Б К А ! Файл не существует!'

//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//

Procedure CrTFile; Cоздание входного файла.

Создание файла. Запись в этот файл координат точек.

//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//

Procedure Menu; Выводит на экран меню программы.

Данная процедура выводит на экран меню программы, руководствуясь которым мы можем выполнять различные дальнейшие действия.

//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//

Выполнение самой программы.

Сама программа состоит из двух процедур: 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}

{*************************** ************************************************}

{****************************************************************************}

procedure Titlist;

BEGIN

clrscr;

writeln(' Doneckiy gosudarstvennuy institut intelekta');

writeln;

writeln;

gotoxy(40,6);

write('Kafedra programnogo 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('Nagmite lubuy klavishu');

readkey;

clrscr;

writeln(' Zadanie: Zadono mnogestvo tochek . Nayti parametru');

writeln('minimalnogo radiusa,prohodyshie cherez 3 tochki mnogestva.');

gotoxy(1,25);

write('Nagmite lubuy klavishu...');

readkey;

END;

{****************************************************************************}

{****************************************************************************}

function IntToStr(V:integer):string;

var S: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-nignee zna4enie,vz-verhnee zna4enie}

Var S,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;

{****************************************************************************}

{****************************************************************************}

procedure Osnov(var m:integer;d:pnt);

Var out_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 to m 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>0 then

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>0 then

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

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5173
Авторов
на СтудИзбе
436
Средний доход
с одного платного файла
Обучение Подробнее