Файл: Принципы разработки безопасных программных продуктов.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 24.04.2023

Просмотров: 526

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

1.2.3 Метод введения переменной состояния

Данный метод был впервые предложен Ашкрофтом и Манной.

Рассмотрим применение этого на примере неструктурированной программы, алгоритм которой представлен на рисунке 6.

Рисунок 6. Схема алгоритма исходной неструктурированной программы

Данная схема не является структурированной, так как из цикла, состоящего из блоков 1 и 3, существует 2 выхода. Таким образом, нарушено условие «один вход – один выход», которому должны удовлетворять структурированные схемы

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

1. Каждому блоку неструктурированной схемы приписывают номер. Обычно первому блоку присваивается 1, последнему – 0.

2. В программу вводится дополнительная переменная целого типа (например I), называемая переменной состояния.

3. Функциональные блоки исходной схемы заменяются блоками, выполняющими помимо основных функций преобразование переменной I: переменной I присваивается значение, равное номеру блока-приемника в исходной схеме.

4. Аналогично преобразуются логические блоки. При этом если в логическом блоке условие истинно, то это соответствует одному значению I, если ложно – другому.

5. Исходная схема преобразуется к виду, предложенному Ашкрофтом – Манной – рисунок 7.

Рисунок 7. Схема алгоритма Ашкрофта – Манны

На данной схеме блоки la – na являются аналогами соответствующих блоков исходной схемы и, помимо этого, присваивают значение переменной I.

В результате преобразований Ашкрофта – Манны исходная неструктурированная схема принимает вид, изображенный на рисунке 8.

Рисунок 8. Исходная схема, преобразованная по методу Ашкрофта – Манны

При выполнении алгоритма, реализованного по методу Ашкрофта – Манны, переменная состояния I устанавливается в начальное значение, равное номеру первого блока не преобразованной схемы (как правило, это единица). Затем осуществляется последовательный опрос переменной I, начиная с нуля и заканчивая максимальным номером блока исходной схемы (в нашем примере он равен 5). Выполняется тот блок исходной схемы, номер которого соответствует текущему значению I. Помимо этого в I заносится значение, равное номеру того блока исходной схемы, который должен выполняться за текущим блоком. Когда значение I станет равным нулю, выполняется последний раз блок непреобразованной схемы (блок с номером 0) и осуществляется выход из алгоритма.


Полученная по методу Ашкрофта – Манны схема алгоритма является структурированной. Для доказательства этого достаточно последовательно преобразовать данную схему к одному функциональному блоку.

1.2.4 Концептуальное программирование

Концепция – определенный способ понимания или трактовки какого-либо явления или процесса, основная точка зрения, руководящая идея, ведущий замысел, конструктивный принцип различных видов деятельности.

Концепция – это совокупность взаимосвязанных представлений или взглядов на какую-либо проблему (противоречие).

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

Концептуальное программирование включает такой сорт программирование как объектно-ориентированное.

При стратегии сначала в ширину дерево поиска обходится ярус за ярусом сверху вниз. Она гарантирует нахождение решения, если оно существует. Однако стратегия требует значительно большего объема памяти и поэтому получила сравнительно небольшое распространение.

Одно из достоинств языков логического программирования состоит в том, что на их основе достаточно удобно реализовать стратегии параллельного типа, причем порядок обхода дерева не столь важен; существен лишь тот факт, что должно быть обойдено все дерево. Именно последнее обстоятельство и дает принципиальную возможность вести поиск параллельно.

Обычно различают два типа параллелизма: ИЛИ - параллелизм, означающий одновременное применение для выделенной подцели из цели всех правил из базы знаний, и И-параллелизм, означающий параллельную обработку одновременно всех литералов (подцелей) целевого утверждения. Кроме того, параллелизм возможен и необходим при унификации (так как эта операция применяется часто). Наибольшие перспективы имеют именно параллельные стратегии, но для их эффективной реализации необходимы соответствующие процессоры, использующие принципы параллельной архитектуры.

К дедуктивным подходам решения задач относится и концептуальное программирование [7]. Этот метод ориентирован в основном на решение так называемых вычислительных задач, т. е. задач, которые могут быть сформулированы в следующем виде.


При заданном описании условий задачи М по значениям переменных х\, х2, ..., хт, удовлетворяющих М, вычислить значения переменных уi, у2, ..., у„, также удовлетворяющих М.

Основу концептуального программирования составляет метод структурного синтеза программ, использующий две эквивалентные формы представления знаний о задачах: формульное представление; графовое представление.

2. ПРАКТИЧЕСКАЯ ЧАСТЬ

2.1 Delphi. Основные понятия и определения

Delphi — среда программирования, в которой используется язык программирования Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.

Изначально среда разработки была предназначена исключительно для разработки приложений Microsoft Windows, затем был реализован также для платформ Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и, вскоре после этого, было объявлено о поддержке Microsoft .NET. При этом высказывались предположения, что эти два факта взаимосвязаны.

Реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, Mac OS X и Windows CE.

Также предпринимались попытки использования языка в проектах GNU и написания компилятора для GCC.

2.2 Процесс написания программы

Для начала запустим Delphi. Назовем главную форму приложения «БД Товары». Для этого нажмем на главную форму и в окне инспектора свойств изменим свойство Caption – рисунок 9.

Рисунок 9. Изменение названия главной формы

После этого перейдем в меню инструментов на вкладку ADO – рисунок 10.

Рисунок 10. Вкладка ADO

На данной вкладке выберем компонент ADOConnection и положим его на главную форму приложения. Компонент «ADOConnection» используется для создания соединения с базой данных другой системы. В нашем случае соединение будет создаваться с разработанной базой данных «Товары».


Для настройки соединения выделим компонент ADOConnection1 и найдем в инспекторе свойств свойство ConnectionString – рисунок 11.

Рисунок 11. ConnectionString

Для назначения конкретной базы данных необходимо нажать Build. После чего выбираем необходимого поставщика услуг – рисунок 12.

Рисунок 12. Выбор поставщика связи

Далее переходим непосредственно к выбору базы данных. Для этого выбираем вкладку «Подключение» и выбираем конкретную базу данных – рисунок 13.

Рисунок 13. Выбор базы данных

После выбора базы данных, нажимаем Ок и переходим на главную форму приложения. Чтобы ADOConnection1 стало активным и другие компоненты смогли бы его использовать, необходимо свойство Connected установить в True. В появившемся окне (рисунок 14) не нужно ничего вводить. Достаточно нажать Ок.

Рисунок 14. Запрос логина и пароля

Разместим на главной форме приложения следующие компоненты с вкладки ADO меню компонент. - ADOTable1. Данный компонент необходим для работы с таблицами базы данных.

После этого переходим на вкладку DataAccess – рисунок 15.

Рисунок 15. Вкладка DataAccess

На этой вкладке выбираем компонент и кладем его на форму. Переходим на складку DataControls - рисунок 16.

Рисунок 16. Вкладка DataControls

Выбираем компонент DBGrid и кладем его на главную форму приложения.

Теперь перейдем к настройкам каждого из выбранных компонент. Для каждого из описанных компонент необходимо установить следующие свойства:

ADOTable1.Connection := ADOConnection1;

ADOTable1.TableName := ‘goods’;

ADOTable1.Active := ‘true’;

DataSource1.DataSet := ADOTable1;

DBGrid1.DataSource := DataSource1;

После чего ты увидим, что товары появились на форме – рисунок 16.

Для удобной навигации по базе данных необходимо разместить на главной форме приложения DBNavigator1. Этот компонент предназначен для быстрого перемещения по базе данных, а также вставки, удаления, редактирования базы данных.

Рисунок 17. БД Товары на форме


Настроим его следующим образом:

DBNavigator1. DataSource := DataSource1;

Запустим приложение при помощи кнопки запуска – рисунок 18.

Рисунок 18. Запуск приложения

После запуска приложение будет выглядеть следующим образом – рисунок 19.

Рисунок 19. Запущенное приложение

Данное приложение позволяет работать с базой данных «товары».

ЗАКЛЮЧЕНИЕ

В процессе написания курсовой работы и программы были получены навыки работы в среде разработки Delphi 7, достигнуты поставленные задачи и цели: разработка программы «Построитель графиков», написание руководства пользователя и т.д.

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

В главе Руководство пользователя были рассмотрены определения и правила написания руководства пользователя.

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

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

Написанная программа называется «Построитель графиков». Она может претендовать на математический, физиологический инструмент, в помощь тем, кто пишет рефераты, курсовые, дипломные используя в них графики. Основное отличие от аналогов – график рисуется по точкам, в процессе соединение точек можно убрать, что очень удобно для наглядности.

К основным возможностям программы можно отнести то, что значения вводятся в таблицу x,y от 0 до 13, вывод графика на Form2, возможность корректировать значения Form1 не выключая Form2 и получить другой результат, а также внешний вид программы прост и понятен в использовании.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Ахо А., Ульман Дж. «Теория синтаксического анализа, перевода и компиляции» в 2 тт., том 1, М., Мир, 2016.
  2. Братчиков И.Л. «Синтаксис языков программирования» Наука, М: Инси, 2015. – 344 с.
  3. Гулидов А.И., Наберухин Ю.И. Диалектика необходимого – случайного в свете концепции динамического хаоса. 2017. – № 1(9). – С.33–46.
  4. Дейкстра Э. Заметки по структурному программированию - М: Дрофа, 2016, - 455 с.
  5. Ершов А.П. Введение в теоретическое программирование - М: РОСТО, 2018, - 288 с.
  6. Захарова И.Г. Информационные технологии в образовании: Учеб. пособие для студ. высш. пед. учеб. заведений. – М.: Издательский центр «Академия», 2015. – 192 с.
  7. Кнут Д. Искусство программирования для ЭВМ, т.1. М.: 2016, 735 с.
  8. Коган Д.И., Бабкина Т.С. «Основы теории конечных автоматов и регулярных языков. Учебное пособие» Издательство ННГУ, 2017. - 97 с.
  9. Майерс Г. Надежность программного обеспечения - М: Дрофа, 2018, - 360 с.
  10. Мендельсон Э. Введение в математическую логику, М: Инси, 2018, - 320 с.
  11. Рудаков А. В. Технология разработки программных продуктов. М: Издательский центр "Академия", 2016. – 306 с.
  12. Свешникова Е.Ю. Анализ режимов детерминированного хаоса в переходных процессах электроэнергетических систем. М: Издательство «Агат», 2016. - 181 с.
  13. Тыугу, Э.Х. Концептуальное программирование. - М.: Наука, 2017, - 256 с.
  14. Хопкрофт Дж., Мотвани Р., Ульман Дж. «Введение в теорию автоматов, языков и вычислений» - М.: Издательство ВИЛЬЯМС, 2018. - 527с.
  15. Хьюз Дж., Мичтом Дж. Структурный подход к программированию -М: Мир, 2016, - 278 с.