Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АОПИ. Сортировка и интерполяция.pdf
Скачиваний:
19
Добавлен:
05.02.2022
Размер:
3.39 Mб
Скачать

ПРОЕКТИРОВАНИЕ

1.В качестве языка программирования выбран C++ (стандарт: ISO C++ 11).

2.В качестве среды программирования выбрана Dev-C++ 5.11 (от 27.04.2015) со встроенным компилятором TDM-GCC 4.9.2 32/64-bit.

3.Разработка осуществляется на компьютере с установленной операционной системой Microsoft Windows 8.1 (для одного языка) x64 (оперативная память: 8

Гб, процессор: Intel Core i5-7300HQ CPU 2.50GHz, видеокарта: NVidia GeForce GTX 1050).

4.В качестве типа контейнера выбрана двусторонняя очередь (англ. deque). Преимущества показаны в таблице:

Операция

Сложность операции4

 

Произвольный доступ к элементу

Постоянная

 

 

 

 

Вставка и удаление элементов с начала

Амортизированная постоянная (1)

и с конца

Вставка и удаление элементов не с

Линейная

 

начала или конца

 

( )

 

 

 

Обоснование. Так как ПО будет часто использовать произвольный

доступ к

элементам(1) идобавлениеэлементоввконец (2), то данный выборгарантирует наибольшую скорость выполнения большинства используемых операций. Удаление произвольных элементов (3) используется функцией удаления некоторых данных и функцией для удаления дубликатов по X координате5.

5.В качестве типа числовых данных контейнера выбран вещественный тип повышенной точности long double (16 байт), который позволит обеспечить наиболее точную работу с данными по сравнению с остальными типами.

6.Программное обеспечение состоит из двух исполняемых файлов. Первый

файл занимается вычислениями, второй файл (dpipe.exe) — рисованием

4 Источник: https://ru.cppreference.com/w/cpp/container/deque

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

9

графиков. Причем первый файл запускает второй, когда рисование необходимо. Коммуникация между сервером и клиентом осуществляется при помощи именованного канала "\\.\pipe\GraphPipe". Первый (родительский) процесс является клиентом, который пишет в канал, а второй (дочерний) процесс (dpipe.exe) является сервером, который принимает сообщения от клиента.

7. Дополнительные вспомогательные сообщения об ошибках.

ID

Ошибка

Описание

 

 

 

 

 

Ошибка открытия файла.6

 

 

Возникает в следующих случаях:

3

!> File open error. Try

1. Файл уже открыт в другой программе.

again later.

2. Файл недоступен (ограничение прав доступа со

 

 

 

 

 

стороны системного ПО).

 

 

3. Файл не найден (при открытии на чтение).

 

 

 

 

!> File read error. Pair

Ошибка при чтении числовых данных.7

4

#N# — порядковый номер пары элементов в

number: #N#.

 

файле.

 

 

 

 

 

 

!> Number of points

Превышено максимально допустимое количество

5

точек при чтении (с консоли / файла). Возврат к

exceeded.

 

меню.

 

 

 

 

 

6

!> Mutex was not

Мьютекс не был освобожден.

released.

Пользователю нужно перезапустить программу.

 

 

 

 

 

!> WaitForSingleObject

Ошибка ожидания объекта.

7

#details# — детали ошибки.

error: #details#

 

Пользователю нужно перезапустить программу.

 

 

 

 

 

8

!> Timeout exceeded.

Превышено время ожидания.

Пользователю нужно перезапустить программу.

 

 

 

 

 

9

CreateMutex error:

Ошибка создания объекта мьютекса.

#details#

Пользователю нужно перезапустить программу.

 

 

 

 

6 Операция прерывается. Происходит возврат к меню.

7 Некорректный ввод игнорируется. Операция считывания продолжается.

10

ID

Ошибка

Описание

 

 

 

10

CreateSemaphore error:

Ошибка создания объекта семафора.

#details#

Пользователю нужно перезапустить программу.

 

 

 

 

11

CreateEvent error:

Ошибка создания объекта события.

#details#

Пользователю нужно перезапустить программу.

 

 

 

 

12

CreateWaitableTimer

Ошибка создания объекта ожидающего таймера.

error: #details#

Пользователю нужно перезапустить программу.

 

 

 

 

13

CreateThread error:

Ошибка создания потока.

#details#

Пользователю нужно перезапустить программу.

 

 

 

 

14

SetWaitableTimer error:

Ошибка активации объекта ожидающего таймера.

#details#

Пользователю нужно перезапустить программу.

 

 

 

 

15

ReleaseMutex error:

Ошибка освобождения объекта мьютекса.

#details#

Пользователю нужно перезапустить программу.

 

 

 

 

16

ReleaseSemaphore error:

Ошибка освобождения объекта семафора.

#details#

Пользователю нужно перезапустить программу.

 

 

 

 

17

SetEvent error: #details#

Ошибка освобождения объекта события.

Пользователю нужно перезапустить программу.

 

 

 

18

CancelWaitableTimer

Ошибка закрытия объекта таймера.

error: #details#

Пользователю нужно перезапустить программу.

 

 

 

 

 

!> An error occurred

Ошибка создания процесса dpipe.exe.

 

Пользователю нужно убедиться в том, что в

19

while trying to create a

каталоге с программой имеется файл dpipe.exe.

 

process dpipe.exe.

 

Если его нет, то рисование графиков невозможно.

 

 

 

 

 

20

!> The process is not

Ошибка запуска процесса dpipe.exe.

running.

Пользователю нужно перезапустить программу.

 

 

 

 

 

!> Error sending

Ошибка отправки данных в канал.

21

Пользователю нужно перезапустить программу.

information to the pipe.

 

 

 

 

 

11

ID

Ошибка

Описание

 

 

 

22

!> Error opening pipe

Ошибка открытия канала на запись.

Пользователю нужно перезапустить программу.

 

 

 

 

 

 

!> An error occurred

Ошибка закрытия дочернего процесса dpipe.exe.

23

while the process is

Пользователю нужно перезапустить программу.

 

complete

 

 

 

 

 

 

!> Memory was not

Ошибка выделения памяти.

24

Пользователь должен убедиться, что свободной

allocated.

 

оперативной памяти больше 200 Мбайт.

 

 

 

 

 

12