Разработка контрольно обучающей программы по теме “Марковские цепи и системы массового обслуживания”.
В работе была выбрана среда Borland C++ Builder Enterprise Suite 6.0.
Написание сложных уравнений в C++.
Одна из задач, которую нужно было решить, как написать длинные уравнения матричной арифметики. Например, нужно возвести матрицу в квадрат. В этом случае можно использовать возможности пакета MathCAD. Для этого откроем программу и введем матрицу. После выделим нашу матрицу и нажмем в меню Символьные операции -> Вычислить -> Аналитически.
Полученное решение копируем в блокнот и делаем замену на элементы массива.
Стоит заметить, что в языках C символ ^ не означает возведение в степень. Теперь мы можем использовать эти уравнения в программе.
Таким образом, можно писать сложные большие уравнения, совершенно не опасаясь, что совершить ошибку. К примеру, как эти уравнения по нахождению статистических вероятностей.
Заметим, что писать подобные уравнения в ручную долго, а вероятность совершения ошибки достаточно высока.
Использование облачных технологий
Следующая задача – добавить функцию по автоматической проверке обновлений.
Здесь можно использовать “Облако Mail.Ru” — облачное хранилище данных российской компании “Mail.Ru Group”.
Загружаем файл с версией на сервис и получаем его ссылку. Но есть проблема, полученная ссылка не является прямой, и, поэтому невозможно загрузить файл, вместо этого загрузится веб страница. Воспользуемся сервисом rocld.com.
На сайте написано “С помощью Rocld.com, вы всегда можете легко создать
прямую ссылку на любой файл в любом облаке, которое поддерживается сервисом!” Итак, мы получаем прямую ссылку на файл.
У сервиса также есть API. Посылаем GET запрос и получаем ответ от сервиса в формате JSON. Ознакомиться подробно можно на сайте.
В данной программе запишем следующий код
Нужно писать запрос именно в таймере, так как в другом месте запрос вызовет зависание программы до тех пор, пока файл не будет скачен.
Ну а далее сравниваем версию и сообщаем информацию пользователю.
Для загрузки файла нужно использовыать Indy компоненты, TIdHTTP и IdSSLIOHandlerSocketOpenSSL.
IdSSLIOHandlerSocketOpenSSL необходим для общения с сервисами по протоколу HTTPS. HTTPS - расширение протокола HTTP, для поддержки шифрования в целях повышения безопасности. Данные в протоколе HTTPS передаются поверх криптографических протоколов SSL или TLS. Если не подключать этот компонент к TIdHTTP то запрос на сервер завершиться с ошибкой. Подключается TIdSSLIOHandlerSocketOpenSSL к TIdHTTP очень просто, для этого добавляем его на форму
И устанавливаем в свойствах компонента IdHTTP1 параметр IOHandler на IdSSLIOHandlerSocketOpenSSL1
Проверим, как все работает.
Компонент IdSSLIOHandlerSocketOpenSSL1 требует для работы две библиотеки, libeay32.dll и ssleay32.dll которых по умолчанию в системе не предусмотрены. Делать инсталлятор для программы тоже нет смысла – не такая уж она и большая. Чтобы программа “таскала” с собой два файла было решено упаковать ее в архив с помощью программы WinRAR. Для этого выделяем нужные файлы -> ПКМ -> Добавить в архив…
Отмечаем “Создать SFX-архив”,”Протестировать файлы после упаковки” и ”Добавить данные для востановления”.
Далее выбираем вкладку Дополнительно -> Параметры SFX -> Установка. Пишем в поле “Выполнить после распаковки” название программы и устанавливаем галочку “Ждать и устанавливать код возврата”.
На вкладке “Режимы” устанавливаем галочку “Распаковать во временную папку” и выбираем пункт “Cкрыть все”.
На вкладке “Обновление” выбираем пункт “Перезаписать все файлы без запроса”, а на вкладке “Текст и графика” выбираем значок для программы. Далее закрываем окна, нажав “Ok”.После проделанных действий мы получаем один единственный файл. Если откроем в режиме архива, то увидим следующее.
Ссылка на программу “Система массового обслуживания - Марковские цепи” https://cloud.mail.ru/public/CD9t/zDBMX375r
Список литературы
1. Новиковский, Е. А. Учебное пособие «Работа в системе MathCAD» Барнаул: Типография АлтГТУ, 2013. – 114 с.
2. Архангельский А. Я. Программирование в C++ Builder 6. 2006.
3. Романов Е. Л. Практикум по программированию на C++ -. ВУЗ:
СумГУ, 2004.–321с.
6