Программа для обнаружения средств нападения и отражения возможной воздушной агрессии на город
Структурная диаграмма программной системы. Разработка подпрограмм и методов объектов. Лист регистрации изменений. Используемые технические средства. Назначение программы: помощь в обнаружении противника для отражения возможной воздушной агрессии на город.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 15.08.2012 |
Размер файла | 131,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Введение
Человечество всегда возлагало большие надежды на технику и технологию. Свидетельством этого служит высказывание известного писателя И. Ильфа: «В фантастических романах главное это было радио. При нем ожидалось счастье человечества. Вот радио есть, а счастья нет.» Но, несмотря на то, что счастья радио не принесло, техника и технология, несомненно, являются важнейшими понятиями как для отдельного человека, так и человечества в целом. С середины прошлого века большие надежды возлагались на кибернетику, информатику, вычислительную технику, развитие и расширение областей применения вычислительных машин.
Стороннему наблюдателю может показаться, что развитие вычислительной техники идет только в сторону увеличения производительности - скорости обработки информации и миниатюризации - уменьшения размеров вычислительных устройств при той же производительности. Это все, конечно, верно, однако нельзя рассматривать эти внешние проявления как самоцель. Конечная цель развития вычислительной техники - облегчение жизни человека, избавление его от рутинной работы, возможность быстрого решения задач, решение которых без применения компьютеров занимает огромное количество времени или иногда вообще невозможно.
В середине 50-х гг. XX века человечество вступило в совершенно новую эпоху. Буквально на глазах ранее неизвестные технологии входили в повседневную жизнь, а привычные средства информации приобретали абсолютно новые формы. Еще не так давно газеты и книги набирались в типографиях с помощью металлических литер, с набранного текста отливались специальные формы, и после нанесения на них краски делался оттиск на бумаге. Теперь значительную часть работы взяли на себя компьютеры. Они дали возможность существенно увеличить скорость распространения информации.
История появления и развития вычислительной техники начинается со времени использования человеком окружающих предметов или меток для счета.
В настоящее время индустрия производства компьютеров и программного обеспечения для них стремительно развивается. Компьютеры начинают использоваться практически везде: в науке, в искусстве, в медицине, в образовательном процессе и т.д.
Однако, несмотря на огромное многообразие сфер человеческой деятельности, в которых находят применение компьютеры, главной областью их использования была есть и будет оборона, военное дело. Недаром в основном война и выдвигаемые ею требования являются главным двигателем прогресса в развитии новых технологий. В пример можно привести тот факт, что попытка создания автоматического вычислительного устройства была предпринята еще в первой половине XIX века английским математиком Чарльзом Бэббиджем. Но из-за низкого уровня развития техники в то время ему не удалось воплотить свою идею. Показательно, что годом создания машины, работающей на электромеханическом реле, является 1941 год. Она была построена немецким инженером Конрадом Цузе, который переоткрыл идеи Беббиджа. В 1943 году Говард Айкен независимо от Конрада Цузе с помощью работ Бэббиджа построил на одном из предприятий фирмы IBM аналогичную машину «Марк-1». Далее последовало построение машины, работающей на электронных лампах, что увеличило скорость работы машины в тысячу раз, создание машины, которая могла бы хранить в своей памяти исполняемую программу. В 1945 году математик Джон фон Нейман разработал основные принципы функционирования универсальных вычислительных машин. Ни для кого не секрет, что именно в эти годы шла вторая мировая война. Военная промышленность и оборона - важнейшие составляющие в жизни любой страны. Думаю, то, что резкий скачок в развитии вычислительной техники пришелся как раз на годы войны, не просто совпадение… Скорее, это лишь подтверждает, что укрепление обороноспособности страны, ее военная мощь неразрывно связаны с усовершенствованием существующих технологий и разработкой новых.
Я считаю, что оборона по значимости является вторым после образования направлением в политике любой страны. Именно поэтому в качестве темы своей курсовой работы я взяла защиту объекта (в конкретном случае - города) от воздушного нападения.
Для того чтобы обезопасить объект, необходимо обнаружение средств воздушного нападения в момент подлета к определенной допустимой границе, так называемой зоне опасности. Это обнаружение происходит с помощью комплексов ПВО. В данной работе я разработала программное средство, с помощью которого можно проверить, надежно ли защищен город, и в противном случае определить, что необходимо предпринять для того, чтобы город был полностью защищен.
1. Постановка задачи и область применения
Для своевременного отражения возможной воздушной агрессии на город необходимо обнаруживать средства воздушного нападения противника в момент подлета к границе «опасной зоны» - на расстоянии RG от центра города, который примем за начало координат.
Имеются M комплексов ПВО, расположенных на границе города - окружности радиуса R. Координата каждого комплекса ПВО задается углом поворота от нулевого направления вi.
Для каждого комплекса i (1< = i < = M) известен радиус его действия r i
Написать программу, которая
1) определяет, надежно ли защищен город от нападения, т.е. верно ли, что обнаружение происходит при подлете к границе «опасной зоны» с любого направления;
2) в случае отрицательного ответа на первый пункт определяет диапазоны «опасных» направлений, т.е. таких направлений, с которых при подлете обнаружение не происходит. Направление задается двумя углами (в градусах), первый соответствует началу опасной зоны, второй - концу, обход выбирается против часовой стрелки. Начало отсчета - ось Ох.
3) Если есть опасные зоны, определяет, куда надо поместить дополнительные комплексы ПВО, чтобы город был защищен надежно, а также радиусы этих комплексов.
Например, имеем ситуацию, отображенную на рисунке 1, т.е. 3 комплекса ПВО, с координатами в1, в2 и в3 соответственно.
RG = A
r1 = с, b1 = в1
r2 = d, b2 = в2
r3 = e, b3 = в3
Должны определиться две незащищенные зоны:
от л4 до л5 и от л6 до л1,
Должна выдаться информация о двух необходимых дополнительных комплексах.
Данная программа является узко направленной и может использоваться в области обороны (конкретно, противовоздушной обороны) для быстрого определения зон опасности, а так же в других областях с целью определения незащищенных зон границы какого-либо объекта.
Однако в данной программе не предусмотрено отслеживание высоты, на которой обнаружение несанкционированного вторжения в черту города становится невозможным. Предполагается, что имеется какая-либо минимальная стандартная высота, в пределах которой все комплексы ПВО должны производить обнаружение вторжения. Также не предусмотрена зависимость эффективности обнаружения средства воздушного нападения противника от его типа, скорости, технических и других характеристик, а также зависимость эффективности от внешних факторов и условий, в которых работают комплексы ПВО.
2. Структурная диаграмма программы
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
3. Разработка подпрограмм
Методы объекта TIshDan
Метод ввода исходных данных
Спецификация
- Назначение метода: метод осуществляет ввод исходных данных.
- Название метода: VvodDan
- Входные данные метода:
NameF - физическое имя файла с исходными данными.
- Выходные данные метода: нет
- Список формальных параметров подпрограммы:
Статус |
Имя |
Тип |
Вид |
|
Входные |
NameF |
String |
Параметр-константа |
- Заголовок метода:
Procedure VvodDan(Const NameF:String)
Метод решения
Словесное описание: связываются логическое и физическое имена файла, файл открывается для записи, осуществляются циклы ввода данных, если данные допустимы, происходит запись в файл, затем закрытие файла; файл открывается для чтения, и проверяется, нет ли комплекса ПВО, защищающего весь город.
Формульное описание:
Вход
Связывание имен
Открытие файла
Цикл До
Выполнять
Ввод (М)
(M<0) или (M>1000)= > Вывод (' Недопустимое количество!')
До (M>0) и (M< =1000)
Конец Цикла
Цикл До
Выполнять
Ввод (RG)
RG<1 = > Вывод (' Недопустимый радиус!')
До RG>0
Конец Цикла
V i = 1(1) М:
Цикл До
Выполнять
Ввод (yg,RadPVO)
(yg*Pi/180)> PVO.b
RadPVO > PVO.r
yg>360 = > Вывод (' Недопустимый угол (больше 360)!')
RadPVO<0 = > Вывод (' Недопустимый радиус действия !')
До (yg<360)и(RadPVO>0)
Конец Цикла
Запись в файл
Закрытие файла
Открытие файла
Пока не конец файла:
Чтение (PVO)
PVO.r>=2*RG => Вывод('Город в безопасности!!!')
Выход из программы
Закрытие файла
Выход
Методы объекта TKompl
Метод определения координат пересечения и их характеристик
Спецификация
- Назначение метода: определяются координаты пересечения зон действия каждого из комплексов ПВО с границей города и их характеристики.
- Название метода: RasstanovkaPVO
- Входные данные метода:
NameF - физическое имя файла с исходными данными.
- Выходные данные метода: нет
- Список формальных параметров подпрограммы:
Статус |
Имя |
Тип |
Вид |
|
Входные |
NameF |
String |
Параметр-константа |
- Заголовок метода:
Procedure RasstanovkaPVO(Const NameF:String)
Метод решения
Словесное описание: связываются логическое и физическое имена файла, файл открывается для чтения; осуществляется цикл по элементам массива: из файла читается элемент, элементу массива координат пересечения присваивается конкретное значение; закрытие файла.
Формульное описание:
Вход
Связывание имен
Открытие файла
V j = 1(1) М:
Чтение из файла (PVO)
arctan(PVO.r*sqrt(4*RG*RG-PVO.r*PVO.r)/(2*RG*RG-PVO.r*PVO.r))> w
w < 0 => A[2*j-1].l:=PVO.b-w-Pi; A[2*j-1].l
w <> 0 =>
PVO.b - w > A[2*j-1].l
PVO.b + w > A[2*j].l
-1 > A[2*j-1].e
1 > A[2*j].e
2*j-1 > A[2*j-1].nper
2*j > A[2*j].nper
j > A[2*j-1].npvo
j > A[2*j].npvo
Закрытие файла
Выход
Метод сортировки массива координат пересечения
Спецификация
- Назначение метода: метод сортирует массив координат пересечения зон действия комплексов ПВО с границей города по возрастанию значения координаты (угла).
- Название метода: Sortirovka
- Входные данные метода: нет
- Выходные данные метода: нет
- Список формальных параметров метода: формальных параметров нет.
- Заголовок метода:
Procedure Sortirovka
Метод решения
Словесное описание: Пока в массиве есть хотя бы одна неупорядоченная пара соседних элементов, меняются местами элементы в этой паре. Вводится логическая переменная flag. В начале каждого прохода флаг устанавливается равным False. Если происходит перестановка, флаг принимает значение True и процесс сортировки продолжается. Сохранение флагом значения False от начала до конца текущего прохода означает, что массив уже упорядочен, процесс сортировки заканчивается.
Формульное описание:
Вход
M*2> k
Цикл До
Выполнять
false>flag
V j=1(1)k-1
A[j].l>A[j+1].l =>
A[j] > t
A[j+1] > A[j]
t>A[j+1]
true > flag
До (not flag)или(k=1)
Конец Цикла
Выход
Метод показа массива координат пересечения
Спецификация
- Назначение метода: последовательный вывод на экран элементов массива координат пересечения зон действия комплексов ПВО с границей города.
- Название метода: Pokaz
- Входные данные метода: нет
- Выходные данные метода: нет
- Список формальных параметров метода: формальных параметров нет.
- Заголовок метода:
Procedure Pokaz
Метод решения
Словесное описание: происходит цикл последовательного вывода на экран всех элементов массива в необходимом формате.
Формульное описание:
Вход
V n=1(1)2*М
Вывод ((A[n].l*180/Pi):10:4, A[n].npvo:10,' ',A[n].nper:12)
Выход
Методы объекта TDanZon
Метод определения опасных зон
Спецификация
- Назначение метода: определяется, есть ли опасные зоны, если есть вычисляются их диапазоны.
- Название метода: OpasnueZonu
- Входные данные метода:
NameF - физическое имя файла с данными об опасных зонах.
- Выходные данные метода: нет
- Список формальных параметров подпрограммы:
Статус |
Имя |
Тип |
Вид |
|
Входные |
NameF |
String |
Параметр-константа |
- Заголовок метода:
Procedure OpasnueZonu(Const NameF:String)
Метод решения
Словесное описание: происходит связывание логического и физического имен файла; файл открывается для записи; происходит цикл по элементам отсортированного массива координат пересечений зон действия комплексов ПВО и границы города, в зависимости от характеристик координат определяется наличие опасных зон, эти зоны записываются в файл, далее на экран выводится содержимое файла или сообщение о безопасности.
Формульное описание:
Вход
Связывание имен
Открытие файла
Начальные установки
V j = 1(1) 2 * М:
s+A[j].e > s
(s=0) и (j<>2*M) =>
A[j].l > Dang.fst
A[j+1].l > Dang.scn
t+1 > t
Запись в файл(Dang)
(s=0) и (j=2*M) и (A{ng}[j].l-A[1].l<2*Pi) =>
A[j].l > Dang.fst
A[1].l > Dang.scn
t+1 > t
Запись в файл(Dang)
Закрытие файла
Открытие файла
t=1 => Вывод (' ГОРОД В БЕЗОПАСНОСТИ!!!');
t <> 1
Вывод (' Количество опасных зон ',t-1);
Цикл Пока не конец файла
Выполнять Чтение(Dang)
Вывод(Dang.fst*180/Pi:10:4,'
до',Dang.scn*180/Pi:10:4)
Конец Цикла
Закрытие файла
Выход
Метод определения дополнительных необходимых комплексов
Спецификация
- Назначение метода: определяются координаты и радиусы действия необходимых дополнительных комплексов.
- Название метода: Recom
- Входные данные метода:
NameF2 - физическое имя файла с данными об опасных зонах.
- Выходные данные метода: нет
- Список формальных параметров подпрограммы:
Статус |
Имя |
Тип |
Вид |
|
Входные |
NameF2 |
String |
Параметр-константа |
- Заголовок метода:
Procedure Recom(Const NameF2:String)
Метод решения
Словесное описание: происходит связывание логического и физического имен файла; файл открывается для чтения; происходит цикл чтения данных из файла; определяются координаты и радиусы действия необходимых дополнительных комплексов и вывод их на экран; закрытие файла.
Формульное описание:
Вход
Связывание имен
Открытие файла
Цикл Пока не конец файла
Выполнять
Чтение из файла(Dang)
Dang.fst+abs(Dang.scn - Dang.fst)/2> t
t-Dang.fst> p
RG*sqrt(2*(1-cos(p))) > c
Вывод (t*(180/Pi):10:4,c:12:3)
Конец Цикла
Закрытие файла
Выход
Методы объекта TFile
Метод показа файла
Спецификация
- Назначение метода: вывод содержимого файла на экран.
- Название метода: ShowF
- Входные данные метода: нет
- Выходные данные метода: нет
- Список формальных параметров метода: формальных параметров нет.
- Заголовок метода:
Procedure ShowF
Метод решения
Словесное описание: происходит связывание логического и физического имен файла; файл открывается для чтения; происходит цикл чтения данных из файла и вывода их на экран.
Формульное описание:
Вход
Связывание имен
Открытие файла
Цикл Пока не конец файла
Выполнять
Чтение из файла (PVO)
Вывод (PVO.b*180/Pi:10:3,' ',PVO.r:12:3)
Конец Цикла
Закрытие файла
Выход
Методы объекта TLocation
Метод инициализации экземпляра объекта
Спецификация
- Назначение метода: метод инициализирует начальные координаты места.
- Название метода: Init
- Входные данные метода:
initX,initY - координаты места.
- Выходные данные метода: нет
- Список формальных параметров подпрограммы:
Статус |
Имя |
Тип |
Вид |
|
Входные |
initX |
Integer |
Параметр-значение |
|
initY |
- Заголовок метода:
Constructor Init(initX,initY:Integer)
Метод решения
Словесное описание: данный метод инициализирует координаты места.
Формульное описание:
Вход
initX > x
initY> y
Выход
Метод деструктор
Спецификация
- Назначение метода: метод является деструктором.
- Название метода: ZakLoc
- Входные данные метода: нет
- Выходные данные метода: нет
- Список формальных параметров метода: формальных параметров нет.
- Заголовок метода:
Destructor ZakLoc
Метод решения
Словесное описание: является пустым.
Формульное описание:
Вход
Выход
Методы объекта TPoint
Метод рисования точки
Спецификация
- Назначение метода: метод осуществляет рисование точки.
- Название метода: Show
- Входные данные подпрограммы: нет
- Выходные данные подпрограммы: нет
- Список формальных параметров метода: формальных параметров нет.
- Заголовок подпрограммы: Procedure Show
Метод решения
Словесное описание: данный метод рисует точку по ранее инициализированным координатам.
Формульное описание:
Вход
Рисование точки
Выход
Метод стирания точки
Спецификация
- Назначение метода: метод осуществляет стирание точки (рисует ее цветом фона).
- Название метода: Hide
- Входные данные подпрограммы: нет
- Выходные данные подпрограммы: нет
- Список формальных параметров метода: формальных параметров нет.
- Заголовок подпрограммы: Procedure Hide
Метод решения
Словесное описание: данный метод стирает точку (рисует точку по данным координатам цветом фона).
Формульное описание:
Вход
Стирание точки
Выход
Метод перемещения точки
Спецификация
- Назначение метода: метод осуществляет перемещение точки по данным координатам.
- Название метода: MoveTo
- Входные данные подпрограммы:
newX, newY - горизонтальная и вертикальная координаты точки
- Выходные данные подпрограммы: нет
- Список формальных параметров метода:
Статус |
Имя |
Тип |
Вид |
|
Входные |
newX |
Integer |
Параметр-значение |
|
newY |
- Заголовок подпрограммы: Procedure MoveTo(newX,newY:Integer)
Метод решения
Словесное описание: данный метод перемещает точку (стирает точку, а затем рисует ее на месте с данными координатам).
Формульное описание:
Вход
Стирание точки
newX> x
newY> y
Рисование точки
Выход
Методы объекта TCircle
Метод инициализации окружности
Спецификация
- Назначение метода: метод инициализирует начальные координаты центра окружности и ее радиус.
- Название метода: Init
- Входные данные метода:
initX,initY - координаты центра окружности;
initR - радиус окружности.
- Выходные данные метода: нет
- Список формальных параметров подпрограммы:
Статус |
Имя |
Тип |
Вид |
|
Входные |
initX |
Integer |
Параметр-значение |
|
initY |
||||
initR |
- Заголовок метода:
Constructor Init(initX,initY,initR:Integer)
Метод решения
Словесное описание: данный метод инициализирует начальные координаты центра окружности и ее радиус.
Формульное описание:
Вход
TPoint.Init(initX,initY)
initR > r
Выход
Метод деструктор
Спецификация
- Назначение метода: метод является деструктором.
- Название метода: ZakCir
- Входные данные метода: нет
- Выходные данные метода: нет
- Список формальных параметров метода: формальных параметров нет.
- Заголовок метода:
Destructor ZakCir
Метод решения
Словесное описание: является пустым.
Формульное описание:
Вход
Выход
Метод рисования окружности
Спецификация
- Назначение метода: метод осуществляет рисование окружности.
- Название метода: Show
- Входные данные подпрограммы: нет
- Выходные данные подпрограммы: нет
- Список формальных параметров метода: формальных параметров нет.
- Заголовок подпрограммы: Procedure Show
Метод решения
Словесное описание: данный метод рисует окружность по ранее инициализированным координатам с ранее инициализированным радиусом.
Формульное описание:
Вход
Рисование окружности
Выход
Метод стирания окружности
Спецификация
- Назначение метода: метод осуществляет стирание окружности (рисует ее цветом фона).
- Название метода: Hide
- Входные данные подпрограммы: нет
- Выходные данные подпрограммы: нет
- Список формальных параметров метода: формальных параметров нет.
- Заголовок подпрограммы: Procedure Hide
Метод решения
Словесное описание: данный метод стирает окружность (рисует окружность по данным координатам с данным радиусом цветом фона).
Формульное описание:
Вход
Текущий основной цвет > color
Установка текущего цвета рисунка
Рисование окружности
Установка color как текущего цвета рисунка
Выход
Метод изменения окружности
Спецификация
- Назначение метода: метод осуществляет рисование окружности по тем же координатам, но другого радиуса.
- Название метода: Bigger
- Входные данные подпрограммы:
newR - новый радиус окружности
- Выходные данные подпрограммы: нет
- Список формальных параметров метода:
Статус |
Имя |
Тип |
Вид |
|
Входные |
newR |
Integer |
Параметр-значение |
- Заголовок подпрограммы:
Procedure Bigger(newR:Integer)
Метод решения
Словесное описание: данный метод стирает имеющуюся окружность и рисует новую с другим радиусом.
Формульное описание:
Вход
Стирание окружности
newR > r
Рисование окружности
Выход
Методы объекта TSamolet
Метод рисования самолета
Спецификация
- Назначение метода: метод осуществляет рисование самолета.
- Название метода: Show
- Входные данные подпрограммы: нет
- Выходные данные подпрограммы: нет
- Список формальных параметров метода: формальных параметров нет.
- Заголовок подпрограммы: Procedure Show
Метод решения
Словесное описание: данный метод рисует самолет по ранее инициализированным опорным координатам.
Формульное описание:
Вход
Нахождение всех координат самолета по опорным координатам
Рисование самолета
Выход
Метод стирания самолета
Спецификация
- Назначение метода: метод осуществляет стирание самолета (рисует его цветом фона).
- Название метода: Hide
- Входные данные подпрограммы: нет
- Выходные данные подпрограммы: нет
- Список формальных параметров метода: формальных параметров нет.
- Заголовок подпрограммы: Procedure Hide
Метод решения
Словесное описание: данный метод осуществляет стирание самолета (рисует его цветом фона).
Формульное описание:
Вход
Текущий основной цвет > color
Установка текущего цвета рисунка
Рисование самолета
Установка color как текущего цвета рисунка
Выход
Методы объекта TGraphWorld
Метод инициализации графики
Спецификация
- Назначение метода: метод осуществляет инициализацию графики.
- Название метода: InitWorld
- Входные данные подпрограммы:
gd - тип графического драйвера
gm - режим работы графического драйвера
Path - маршрут поиска графического драйвера
- Выходные данные подпрограммы: нет
- Список формальных параметров метода:
Статус |
Имя |
Тип |
Вид |
|
Входные |
gd |
Integer |
Параметр-значение |
|
gm |
||||
Path |
String |
- Заголовок подпрограммы: Procedure InitWorld(gd,gm:Integer;Path:String)
Метод решения
Словесное описание: данный метод инициализирует графический режим .
Формульное описание:
Вход
gd> GraphDriver
gm>GraphMode
инициализация графики
Выход
Метод закрытия графики
Спецификация
- Назначение метода: метод осуществляет закрытие графики.
- Название метода: EndWorld
- Входные данные подпрограммы: нет
- Выходные данные подпрограммы: нет
- Список формальных параметров метода: формальных параметров нет.
- Заголовок подпрограммы: Procedure EndWorld
Метод решения
Словесное описание: данный метод осуществляет закрытие графического режима работы.
Формульное описание:
Вход
Закрытие графики
Выход
Приложение
1. Текст программы
Program PrVozdObGor;
Uses Crt, Graph, GRKYR;
Const MAX_M=1000;
Type
{ Тип "устаноывка ПВО" }
TzapPVO = Record
b:Real; {угол - координата установки }
r:Real; { радиус действия }
End;
{ Тип "координата пересечения" }
TzapAng = Record
l:Real; { угол - координата пересечения зоны действия}
{ комплекса и границы города}
e:-1..1; { признак начала или конца дуги, }
{ части границы города, которую покрывает зона}
{ действия конкретного комплекса ПВО}
nper:Word; { номер пересечения }
npvo:Word; { номер комплекса ПВО}
End;
{ Тип "Опасные зоны" }
TZapDanger = Record
fst:Real; { Координата начала зоны }
scn:Real; { Координата конца зоны }
End; программа воздушный агрессия противник
{ Тип массив координат пересечений }
TMasAng = Array[1..2*MAX_M] Of TzapAng;
{ Тип файл из записей "Комплексы ПВО"}
TFile1=File Of TzapPVO;
{ Тип файл из записей "Опасные зоны"}
TFile2=File Of TZapDanger;
{ Тип объекта "Исходные данные" }
TIshDan=Object
M:Word; { кол-во комплексов ПВО}
RG:Real; { радиус города }
PVO:TZapPVO; { комплекс ПВО}
{ Метод ввода исходных данных }
Procedure VvodDan(Const NameF:String);
End;
{Тип объекта " Пересечения " }
TKompl=Object(TIshDan)
A:TMasAng; { Массив координат пересечений }
{ Метод расчета координат пересечений и создания файла координат}
Procedure RasstanovkaPVO(Const NameF:String);
{ Метод сортировки по возрастанию углов (координат) }
Procedure Sortirovka;
{ Вывода на экран информации о пересечениях }
Procedure Pokaz;
End;
{ Тип объекта "Опасные направления"}
TDanZon=Object(TKompl)
Dang:TZapDanger; { опасное направление (зона) }
{ Метод создания файла опасных зон }
Procedure OpasnueZonu(Const NameF:String);
{ Метод определения дополнительных комплексов}
{ и создания файла данных о них}
Procedure Recom(Const NameF2:String);
End;
{ Тип объекта "Файл" }
TFile =Object
name:String; {имя файла}
{ Метод показа файла }
Procedure ShowF;
End;
{ Описание методов объекта TIshDan }
Procedure TIshDan.VvodDan(Const NameF:String);
Var i:Integer; yg:Real; RadPVO:Real; F:TFile1;
Begin
Assign(F,NameF); {Связывание имен}
Rewrite(F); {Открытие файла}
WriteLn;
WriteLn(' Введите:');
Write(' Количество комплексов ПВО -->');
{Цикл ввода количества комплексов}
Repeat
{$I-,R-}
ReadLn(M);
{$I+,R+}
If(IOResult<>0)Or(M<1)Or(M>1000)
Then
Begin WriteLn(' Недопустимое количество!');
WriteLn(' Нажмите Enter -->');
ReadLn; ReadLn;
GoToXY(1,WhereY-2);
DelLine;
GoToXY(1,WhereY-1);
DelLine;
GoToXY(1,WhereY-1);
DelLine;
End;
Until (M>0)And(M<=1000)And(IOResult=0);
{Цикл ввода радиуса города}
Repeat
Write(' Радиус города в километрах -->');
{$I-,R-}
ReadLn(RG);
{$I+,R+}
If (IOResult<>0)Or(RG<=0)
Then
Begin WriteLn(' Недопустимый радиус!');
WriteLn(' Нажмите Enter -->');
ReadLn; ReadLn;
GoToXY(1,WhereY-2);
DelLine;
GoToXY(1,WhereY-1);
DelLine;
GoToXY(1,WhereY-1);
DelLine;
End;
Until (RG>0)And(IOResult=0);
WriteLn(' Вводите угол в градусах от 0');
WriteLn(' до 360 - координату ПВО ');
WriteLn(' и радиус действия через пробел, ');
WriteLn(' затем Enter -->');
{ Цикл ввода данных о комплексах }
For i:=1 To M
Do Begin
Repeat
{$I-,R-}
ReadLn(yg,RadPVO);
{$I+,R+}
If (IOResult<>0)
Then Begin
WriteLn( 'Недопустимое значение!');
WriteLn(' Нажмите Enter -->');
ReadLn; ReadLn;
GoToXY(1,WhereY-2);
DelLine;
GoToXY(1,WhereY-1);
DelLine;
GoToXY(1,WhereY-1);
DelLine;
End
Else
If (yg>=360) Or (yg<0)
Then Begin
WriteLn( 'Недопустимое значение угла!');
WriteLn(' Нажмите Enter -->');
ReadLn;
GoToXY(1,WhereY-2);
DelLine;
GoToXY(1,WhereY-1);
DelLine;
GoToXY(1,WhereY-1);
DelLine;
End
Else
If RadPVO<=0
Then Begin
WriteLn(' Недопустимый радиус действия!');
WriteLn(' Нажмите Enter -->');
ReadLn;
GoToXY(1,WhereY-2);
DelLine;
GoToXY(1,WhereY-1);
DelLine;
GoToXY(1,WhereY-1);
DelLine;
End;
Until (IOResult=0)And(yg<360)And(RadPVO>0)And (yg>=0);
PVO.b:=(yg*Pi/180);
PVO.r:=RadPVO;
Write(F,PVO); {Запись данных о комплексе в файл}
End;
Close(F); {Закрытие файла}
Reset(F); {Открытие файла}
{Цикл проверки на наличие комплекса ПВО, }
{который бы защищал всю территорию города}
While Not Eof(F)
Do Begin
Read(F,PVO);
If PVO.r>=2*RG{радиус действия комплекса больше диаметра города}
Then Begin
Window(15,15,65,23);
TextBackGround(7);
TextColor(9);
ClrScr; GoToXY(12,3);
WriteLn('Город в безопасности!!!');
WriteLn(' Область действия комплекса ПВО');
WriteLn(' с координатой ', PVO.b*180/Pi:6:3,'
покрывает');
WriteLn(' всю территорию города!!!');
ReadLn;
Halt; {Выход из программы}
End;
End;
Close(F); {Закрытие файла}
End;
{ Описание методов объекта TKompl }
Procedure TKompl.RasstanovkaPVO(Const NameF:String);
Var j:Integer; w:Real; F:TFile1;
Begin
Assign(F,NameF); {Связывание имен}
Reset(F); {Открытие файла}
{ Цикл определения координат пересечения}
For j:=1 To M
Do Begin
Read(F,PVO);
{ Вычмсление вспомогательного угла}
w:=arctan(PVO.r*sqrt(4*RG*RG-PVO.r*PVO.r)/(2*RG*RG-
PVO.r*PVO.r));
{Вычисление координат пересечений}
If w<0
Then
Begin A[2*j-1].l:=PVO.b-w-Pi;
A[2*j].l:=PVO.b +w+Pi;
End
Else
Begin
A[2*j-1].l:=PVO.b - w;
A[2*j].l:=PVO.b + w;
End;
A[2*j-1].e:=-1; {присваивание признака начала дуги}
A[2*j].e:=1; {присваивание признака конца дуги}
A[2*j-1].nper:=2*j-1;
A[2*j].nper:=2*j;
A[2*j-1].npvo:=j;
A[2*j].npvo:=j
End;
Close(F);
End;
Procedure TKompl.Sortirovka;
Var k,j:Integer; flag:Boolean; t:TZapAng;
Begin k:=M*2;
{Цикл сортировки массива координат пересечений по возрастанию}
Repeat
flag:=false;
For j:=1 To k-1
Do
If A[j].l>A[j+1].l
Then Begin
{ Перестановка элементов}
t:=A[j];
A[j]:=A[j+1];
A[j+1]:=t;
flag:=true { Изменение значения флага
перестановки}
End;
k:=k-1;
Until (not flag)Or(k=1)
End;
Procedure TKompl.Pokaz;
Var n:Word;
Begin
WriteLn;
WriteLn(' Координата Номер Номер');
WriteLn(' пересечения ПВО пересечения');
{ Цикл вывода на экран элементов массива координат пересечений}
For n:=1 To 2*M
Do WriteLn((A[n].l*180/Pi):10:4, A[n].npvo:10,' ',A[n].nper:12);
ReadLn;
End;
{ Описание методов объекта TDanZon }
Procedure TDanZon.OpasnueZonu(Const NameF:String);
Var s:Integer; j,k,t:Word; F:TFile2;
Begin
Assign(F,NameF); { Связывание имен }
Rewrite(F); { Открытие файла }
s:=0; t:=0; { Начальные устанговки цикла }
{ Цикл вычисления начальных и конечных координат опасных зон }
For j:=1 To 2*M
Do Begin
s:=s+A[j].e; { текущая сумма признаков начала-конца }
{ Если s=0, т.е. выделена очередная связная область }
If (s=0) And (j<>2*M)
Then Begin
Dang.fst:=A[j].l;{ Начальная координата опасной зоны}
Dang.scn:=A[j+1].l;{Конечная координата опасной зоны}
t:=t+1; {текущее количество опасных зон }
Write(F,Dang);
End;
If (s=0) And (j=2*M) And (A{ng}[j].l-A[1].l<2*Pi)
Then Begin
Dang.fst:=A[j].l;{ Начальная координата опасной зоны}
Dang.scn:=A[1].l; { Конечная координата опасной зоны
t:=t+1; {текущее количество опасных зон }
Write(F,Dang);
End
End;
Close(F); {Закрытие файла}
Reset(F); {Открытие файла}
If t=0 {Если опасных зон нет}
Then Begin
TextBackGround(7);
TextColor(9);
ClrScr;
GoToXY(10,4);
WriteLn(' ГОРОД В БЕЗОПАСНОСТИ!!!');
End
Else Begin
TextBackGround(Red);
TextColor(White);
ClrScr;
WriteLn;
WriteLn(' Количество опасных зон ',t);
{ Цикл вывода информации об опасных зонах }
While Not Eof(F)
Do
Begin
Read(F,Dang);
WriteLn(Dang.fst*180/Pi:10:4,' до ',Dang.scn*180/Pi:10:4)
End;
End;
Close(F); { Закрытие файла }
End;
Procedure TDanZon.Recom(Const NameF2:String);
Var t,c,p:Real;F:TFile2;
Begin
Assign(F,NameF2);
Reset(F);
TextBackGround(9);ClrScr;
WriteLn(' РЕКОМЕНДАЦИИ');
WriteLn('Необходимы дополнительные комплексы ПВО:');
WriteLn('Координата Радиус действия');
{ Цикл вывода на экран рекомендаций по}
{ установке дополнительных комплексов}
While Not Eof(F)
Do
Begin
Read(F,Dang);
t:=Dang.fst+abs(Dang.scn - Dang.fst)/2;
p:=t-Dang.fst; {Вычисление координаты}
c:=RG*sqrt(2*(1-cos(p))); {Вычисление радиуса действия}
WriteLn(t*(180/Pi):10:4,c:12:3);
End;
Close(F);
End;
{ Описание методов объекта TFile }
Procedure TFile.ShowF;
Var PVO:TZapPVO;F:TFile1;
Begin
Assign(F,name); { Связывание имен }
Reset(F); { Открытие файла }
WriteLn;
WriteLn('Содержимое файла "Комплексы ПВО" :');
WriteLn(' Координата Радиус действия');
{ Цикл вывода содержимого файла на экран }
While Not Eof(F)
Do Begin
Read(F,PVO);
WriteLn(PVO.b*180/Pi:10:3,' ',PVO.r:12:3);
End;
Close(F);
End;
Const NameF1='C:\file1.zap';
NameF2='C:\file2.zap';
Var
MV:TDanZon; F:TFile;
i,j:Integer;
{Переменные для работы с графикой}
World:TGraphWorld; { Статический объект "графический мир" }
pt,pt2,pt3:TPCircle; { Ссылки на динамические объекты "окружность" }
n:LongInt;
sam1,sam2, sam3, sam4:TSamolet; { Статические объекты "самолеты"}
Begin
{ ГРАФИКА }
{Инициализация графики}
World.InitWorld(detect,detect,'C:\TP70\BGI');
{Инициализация окружностей}
New(pt,Init(300,trunc(GetMaxY/2)-2,45));
New(pt2,Init(300,trunc(GetMaxY/2)-2,45));
New(pt3,Init(300,trunc(GetMaxY/2)-2,45));
n:=1;
ReadLn;
{Цикл, реализующий "движение" текста, окружноятей}
Repeat
Delay(10000);
SetTextStyle(0,0,5);
SetColor(3);
OutTextXY(45,trunc(GetMaxY/2)-2,'MY TERM PAPER!');
SetTextStyle(3,0,7);
SetColor(0);
OutTextXY(trunc(100*cos(6*(n-1)))+150,(6*(n-1)+2)mod 280+40,'Press Enter!');
SetColor(9);
SetTextStyle(3,0,7);
OutTextXY(trunc(100*cos(6*n))+150,(6*n+2)mod 280+40,'Press Enter!');
SetColor(1);
pt^.MoveTo(trunc(80*cos(6*n))+280,(40+6*n)mod 480);
pt2^.MoveTo(trunc(80*cos(6*n))+280,(40+6*n)mod 480);
pt3^.MoveTo(trunc(80*cos(6*n))+280,(40+6*n)mod 480);
pt^.Bigger((25*n)Mod 450);
pt2^.Bigger((25*n)Mod 300);
pt3^.Bigger((25*n)Mod 150);
n:=n+1
Until KeyPressed;
{Освобождение памяти}
Dispose(pt,ZakCir);
Dispose(pt2,ZakCir);
Dispose(pt3,ZakCir);
ReadLn;
ClearDevice; {Очистка экрана}
{Инициализация самолетов}
sam1.Init(120,120);
sam2.Init(120,120);
sam3.Init(120,120);
sam4.Init(120,120);
{Инициализация окружностей}
New(pt,Init(450,GetMaxY Div 2-140,45));
New(pt2,Init(100,GetMaxY Div 2-100,45));
New(pt3,Init(300,GetMaxY Div 2+150,45));
n:=1;
Repeat
Delay(5700);
SetTextStyle(3,0,6);
OutTextXY(15,trunc(GetMaxY/2)-2,'AIR ATTACK PROTECTION!');
sam1.MoveTo(10*n Mod GetMaxX,GetMaxY Div 2-200);
sam2.MoveTo(14*n Mod GetMaxX,GetMaxY Div 2-100);
sam3.MoveTo(16*n Mod GetMaxX,GetMaxY Div 2+100); SetColor(4);
sam4.MoveTo(12*n Mod GetMaxX,GetMaxY Div 2+200);
pt^.Bigger((10*n)Mod 120);
pt2^.Bigger((12*n)Mod 180);
pt3^.Bigger((20*n)Mod 200);
SetColor(0);
Line(GetMaxX Div 2,GetMaxY Div 2,
GetMaxX Div 2+trunc( GetMaxX Div 2*sin(6*(n-1)*pi/360)),GetMaxY Div 2+trunc(GetMaxY Div 2*cos(6*(n-1)*pi/360)));
SetColor(4);
Line(GetMaxX Div 2,GetMaxY Div 2,
GetMaxX Div 2+trunc( GetMaxX Div 2*sin(6*n*pi/360)),GetMaxY Div 2+trunc(GetMaxY Div 2*cos(6*n*pi/360)));
SetColor(1);
SetTextStyle(3,0,3);
OutTextXY(200,GetMaxY - 40,'Press Enter to continue!');
n:=n+1;
Until KeyPressed;
{Освобождение памяти}
Dispose(pt,ZakCir);
Dispose(pt2,ZakCir);
Dispose(pt3,ZakCir);
sam1.ZakLoc;
sam2.ZakLoc;
sam3.ZakLoc;
sam4.ZakLoc;
ClearDevice; { Очистка экрана }
World.EndWorld; { Закрытие графического режима }
{ О ЗАДАЧЕ }
Window(1,1,80,25) ;
TextBackGround(BLACK);
TextColor(WHITE);
ClrScr;
TextBackGround(5);
TextColor(White);
Window(6,1,72,6);
ClrScr;
{Циклы рисования рамки}
For i:=2 To 66
Do Begin
GoToXY(i,1);
Write('*');
GoToXY(i,6);
Write('*');
End;
For j:=1 To 6
Do Begin
GoToXY(2,j);
Write('*');
GoToXY(66,j);
Write('*');
End;
Window(9,2,69,5);
WriteLn(' Данная программа выполняет проверку безопасности города ');
Write('(надежность защиты от воздушного нападения');
WriteLn(' с учетом радиуса города и характеристик комплексов ПВО).');
{ ОСНОВНАЯ ЗАДАЧА }
Window(3,8,37,23);
TextBackGround(3);
TextColor(WHITE); ClrScr;
{ Ввод исходных данных }
MV.VvodDan(NameF1);
ClrScr;
F.name:=NameF1;
F.ShowF; {Показ файла исходных данных}
{ Определение координат пересечений }
MV.RasstanovkaPVO(NameF1);
Window(40,8,79,23);
ClrScr;
{ Вывод координат пересечений }
MV.Pokaz;
{ Сортировка массива координат пересечений }
MV.Sortirovka;
Window(15,15,65,23);
{ Определение опасных зон и создание файла с данными о них }
MV.OpasnueZonu(NameF2);ReadLn;
{ Рекомендации по установке дополнительных комплексов }
MV.Recom(NameF2);ReadLn;
End.
2. Текст модуля GRKYR
UNIT GRKYR;
INTERFACE
Uses Graph;
Type TLocation=Object { Тип объекта "место" }
x,y:Integer; { Поля данных: координаты места }
Constructor Init(initX,initY:Integer);
{ Метод "конструктор"}
Destructor ZakLoc; { Метод "деструктор" }
End;
TPoint=Object(TLocation)
{ Тип объекта "точка"-наследника объекта "место"}
Procedure Show; Virtual; { Метод "рисование" }
Procedure Hide; Virtual; { Метод "гашение" }
Procedure MoveTo(newX,newY:Integer);{ Метод "перемещение" }
End;
TCircle=Object(TPoint)
{Тип объекта"окружность"-наследника объекта"точка"}
r:Integer; { Поле данного: радиус окружности }
Constructor Init(initX,initY,initR:Integer); { Метод }
{ "конструктор" }
Procedure Show; Virtual; { Метод "рисование" }
Procedure Hide; Virtual; { Метод "гашение" }
Procedure Bigger(newR:Integer); { Метод "изменение" }
Destructor ZakCir; { Метод "деструктор" }
End;
TSamolet=Object(TPoint)
{Тип объекта"самолетик"-наследника объекта"точка"}
m:Array[1..7] Of PointType; { Поле данного: }
{ массив координат }
Procedure Show; Virtual; { Метод "рисование" }
Procedure Hide; Virtual; { Метод "гашение" }
End;
TGraphWorld=Object { Тип объекта "графический мир" }
{ Поля данных: }
GraphDriver:Integer; { драйвер }
GraphMode:Integer; { режим }
Procedure InitWorld(gd,gm:Integer;Path:String);{ Метод }
{ "инициализация" }
Procedure EndWorld; { Метод "закрытие" }
End;
TPCircle=^TCircle;
IMPLEMENTATION
{ Описания методов объекта типа TLocation "место" }
Constructor TLocation.Init(initX,initY:Integer);
Begin
x:=initX; y:=initY { Текущие координаты }
End;
Destructor TLocation.ZakLoc;
Begin
End;
{ Описания методов объекта типа TPoint "точка" }
Procedure TPoint.Show;
Begin
PutPixel(x,y,GetColor) { Рисует точку текущим основным цветом }
End;
Procedure TPoint.Hide;
Begin
PutPixel(x,y,GetBkColor) { Рисует точку текущим цветом фона }
End;
Procedure TPoint.MoveTo(newX,newY:Integer);
Begin
Hide; { Гашение }
x:=newX; y:=newY; { Новые координаты }
Show { Рисование }
End;
{ Описания методов объекта типа ТCircle "окружность" }
Constructor TCircle.Init(initX,initY,initR:Integer);
Begin
TPoint.Init(initX,initY);
r:=initR { радиус окружности }
End;
Procedure TCircle.Show;
Begin
Circle(x,y,r); { Рисует окружность }
End;
Procedure TCircle.Hide;
Var color:Word;
Begin
color:=GetColor; { Текущий основной цвет }
SetColor(GetBkColor); { Текущий цвет рисунка }
Circle(x,y,r); { Рисует окружность }
SetColor(color); { Текущий цвет рисунка }
End;
Procedure TCircle.Bigger(newR:Integer); {Рисование окружности другого радиуса}
Begin
Hide;
r:=newR; { новый радиус }
Show
End;
Destructor TCircle.ZakCir;
Begin
End;
{ Описания методов объекта типа TSamolet "самолетик"}
{ Рисование самолетика }
Procedure TSamolet.Show;
Begin
m[1].x:=x; m[1].y:=y;
m[2].x:=x+10; m[2].y:=y+8;
m[3].x:=x+72; m[3].y:=y+8;
m[4].x:=x+57; m[4].y:=y+8;
m[5].x:=x+32; m[5].y:=y+2;
m[6].x:=x+57; m[6].y:=y+8;
m[7].x:=x+32; m[7].y:=y+13;
SetColor(3);
SetLineStyle(0,0,3);
DrawPoly(7,m); { Рисует самолет }
SetLineStyle(0,0,1);
End;
{ Гашение самолетика }
Procedure TSamolet.Hide;
Var p,color:Word;
Begin
color:=GetColor;
p:=GetBkColor;
SetColor(p);
SetLineStyle(0,0,3);
DrawPoly(7,m);
SetColor(color);
SetLineStyle(0,0,1);
End;
{ Описание методов объекта типа TGraphWorld "графический мир" }
Procedure TGraphWorld.InitWorld(gd,gm:Integer;Path:String);
Begin
GraphDriver:=gd;
GraphMode:=gm; { Заполнение полей }
InitGraph(GraphDriver,GraphMode,Path); { Инициализация графики }
End;
Procedure TGraphWorld.EndWorld;
Begin
CloseGraph { Закрытие графики }
End;
End.
Данная программа является узко направленной и может использоваться в области обороны (конкретно, противовоздушной обороны) для быстрого определения зон опасности, а так же в других областях с целью определения незащищенных зон границы какого-либо объекта.
Название программы: SAMOLETU.
Существует как SAMOLETU.pas или SAMOLETU.exe. Для запуска программы можно использовать TPascal 7.0. Программа написана на языке программирования Turbo Pascal. Требования к аппаратному обеспечению: ПЭВМ типа IBM. Требования к системному программному обеспечению: Pascal 7.0
Для своевременного отражения возможной воздушной агрессии на город необходимо обнаруживать средства воздушного нападения противника в момент подлета к границе «опасной зоны» - на некотором расстоянии от центра города.
Имеется некоторое количество комплексов ПВО, расположенных на границе города. Координата каждого комплекса ПВО задается углом поворота от нулевого направления. Для каждого комплекса известен радиус его действия.
Данная программа выполняет следующее:
1) определяет, надежно ли защищен город от нападения, т.е. верно ли, что обнаружение происходит при подлете к границе «опасной зоны» с любого направления;
2) в случае отрицательного ответа на первый пункт определяет диапазоны «опасных» направлений, т.е. таких направлений, с которых при подлете обнаружение не происходит.
3) Если есть опасные зоны, определяет, куда надо поместить дополнительные комплексы ПВО, чтобы город был защищен надежно, а также радиусы этих комплексов.
Данная программа является узко направленной и может использоваться в области обороны (конкретно, противовоздушной обороны) для быстрого определения зон опасности, а так же в других областях с целью определения незащищенных зон границы какого-либо объекта.
Однако в данной программе не предусмотрено отслеживание высоты, на которой обнаружение несанкционированного вторжения в черту города становится невозможным. Предполагается, что имеется какая-либо минимальная стандартная высота, в пределах которой все комплексы ПВО должны производить обнаружение вторжения. Также не предусмотрена зависимость эффективности обнаружения средства воздушного нападения противника от его типа, скорости, технических и других характеристик, а также зависимость эффективности от внешних факторов и условий, в которых работают комплексы ПВО.
Используемые технические средства
Для обеспечения нормальной работы программы требуется операционная среда Windows, а также наличие среды Turbo Pascal 7.0.
Требования к аппаратному обеспечению: ПЭВМ типа IBM.
Вызов и загрузка программы
Так как программа содержится в виде SAMOLETU.pas, то ее можно запусти при помощи среды Turbo Pascal 7.0.
Выполнение программы начинается с графической заставки. Она представляет собой: графические изображении, связанные с тематикой данной программы, а так же содержит название работы.
После появления заставки, на экране отображается запрос нажатия кнопки [Enter]. После нажатия кнопки [Enter] появляется основное окно, видно описание задачи, далее появляется запрос на ввод данных.
Входные данные
Входными данными программы являются различные характеристики города и комплексов ПВО:
1) Количество комплексов ПВО (M)- целочисленный тип данных без знака (Word).
Это количество уже установленных на границе города комплексов. Для количества комплексов в программе установлено ограничение - оно не должно превышать 1000, так как в большем количестве нет необходимости.
2) Радиус города в километрах (RG)- вещественный тип данных (Real)
Радиус города представляет собой радиус окружности, которая принимается за границу города. Для радиуса города в программе установлено ограничение - он должен быть строго больше 0, это объясняется физическим смыслом данной величины.
3) Характеристики комплекса ПВО (PVO): координата (b) и радиус действия (r).
Характеристика комплекса представляет собой запись с двумя полями: 1- координата, 2-радиус действия
Координата - это угол, на который нужно повернуть ось Ох, чтобы оказаться в точке на окружности (границе города), где установлен данный комплекс ПВО. Тип координаты - вещественный (Real). Радиус действия - вещественный тип данных (Real)
Координата и радиус действия ПВО вводятся через пробел.
На координату и радиус действия в программе установлено ограничение: координата должна быть больше или равна 0о, но меньше 360о, так как этого диапазона достаточно, чтобы задать любую точку на окружности; радиус действия должен быть строго больше 0, это объясняется физическим смыслом данной величины.
Все введенные характеристики последовательно помещаются в файл.
Выходные данные
Выходными данными программы являются два файла (файл с исходными данными о комплексах ПВО и файл с некоторыми результатами выполнения программы), а также различные сообщения с результатами выполнения или сведениями об ошибке.
1) Файл с исходными данными о комплексах ПВО - это типизированный файл, элементами которого являются записи характеристик комплексов. Характеристика комплекса (PVO) представляет собой запись с двумя полями: 1- координата, 2-радиус действия.
Координата - это угол, на который нужно повернуть ось Ох, чтобы оказаться в точке на окружности (границе города), где установлен данный комплекс ПВО. Тип координаты - вещественный (Real). Радиус действия - вещественный тип данных (Real)
Файл ={ PVO 1, PVO2 , …, PVO n}
2) Файл с некоторыми результатами выполнения программы - файл, содержащий информацию об опасных зонах города. Это типизированный файл, элементами которого являются записи опасных зон.
Опасная зона представляет собой запись с двумя полями (Dang): 1- начальная координата опасной зоны, 2 - конечная координата опасной зоны. Начальная и конечная координата имеют вещественный тип данных (Real).
Файл ={ Dang 1, Dang 2 , …, Dang n}
4) Сообщения с результатами выполнения представляют собой:
- Сообщение о безопасности города
- Сообщение с информацией о координатах пересечения зон действия комплексов ПВО и зоны города.
- Если есть опасные зоны, выводится сообщение с информацией об этих зонах (их диапазоны), а также сообщение с рекомендациями: координаты и радиусы действия необходимых дополнительных комплексов ПВО.
- Сообщение об ошибке (недопустимые вводимые данные). Если вводимые данные недопустимы, завершения программы не происходит, выводится сообщение о том, какие из данных недопустимы, и ожидается повторный ввод.
Размещено на Allbest.ru
Подобные документы
Компьютерные атаки и технологии их обнаружения. Сетевые системы нахождения атак и межсетевые экраны. Программные средства анализа защищенности и отражения угроз. Внедрение программных средств выявления атак для информационной системы предприятия.
курсовая работа [53,6 K], добавлен 16.03.2015Общая характеристика информационных технологий и модели угроз компьютерной сети. Изучение средств защиты периметра сети и построение системы активного отражения атак в корпоративных сетях. Система обнаружения вторжений и автоматического отражения атаки.
дипломная работа [770,6 K], добавлен 19.10.2011Основания для разработки программы: назначение и сферы практического использования, главные предъявляемые требования. Характеристика логической структуры и используемые технические средства. Программа и методика испытаний. Эксплуатационные документы.
курсовая работа [2,4 M], добавлен 16.12.2013Разработка программы, реализующей метод принятия решения на основе паутинной диаграммы, исходя из количества объектов исследования, их весов и критериев оценки. Листинг программного кода и пример работы программы: расчет площади многоугольников-объектов.
контрольная работа [1,1 M], добавлен 10.06.2011Объектно-ориентированное программирование: понятие и содержание, история зарождения и развития, особенности и принципы реализации. Структура и назначение разрабатываемой программы, используемые технические и программные средства, формирование инструкции.
курсовая работа [1,2 M], добавлен 17.04.2013Назначение и область применения, технические характеристики, постановка задачи, описание алгоритма и организация входных и выходных данных для программы. Разработка, описание логической структуры, используемые технические средства и условия выполнения.
курсовая работа [969,3 K], добавлен 26.03.2009Назначение и область применения программы, ее общее описание, функциональные особенности и задачи, логистическая структура, используемые технические средства. Создание руководства оператора. Расчет технико-экономических показателей создаваемой программы.
курсовая работа [1,2 M], добавлен 09.11.2013Выбор состава технических и программных средств для создания данного приложения "Экзаменатор", использование среды разработки Borland Delphi. Основные компоненты и спецификация программы. Используемые технические средства, описание и запуск программы.
курсовая работа [540,8 K], добавлен 18.07.2012Описание и функциональное назначение программы по оптимизации функции, ее логическая структура и используемые технические средства. Практическое применение программы, вызов и загрузка, входные и выходные данные, выполнение контрольного примера и листинг.
курсовая работа [337,4 K], добавлен 26.02.2012Контекстная диаграмма системы обслуживания и диаграмма декомпозиции. Обоснование необходимости внедрения информационной системы. Обзор существующих программных продуктов. ER-диаграмма системы, описание таблиц базы данных. Используемые системы кодирования.
дипломная работа [577,2 K], добавлен 27.01.2014