Разработка генератора логических выражений на языке программирования С++ | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Несмотря на коронавирус, электронный вариант журнала выйдет 6 июня.

Опубликовать статью в журнале

Библиографическое описание:

Разработка генератора логических выражений на языке программирования С++ / Е. В. Коптенок, А. А. Прощенков, Н. А. Зверев [и др.]. — Текст : непосредственный // Молодой ученый. — 2020. — № 19 (309). — С. 128-130. — URL: https://moluch.ru/archive/309/69865/ (дата обращения: 29.05.2020).



В настоящий момент задания для студентов создаются с помощью устаревших и трудоемких методов, в связи с чем большое количество времени уходит на составление заданий. Программа «Генератор логических выражений» позволяет создавать случайно-генерируемые задания любой, свободно настраиваемой сложности, что ускоряет работу над ними преподавателям. А встроенные возможности вывода ответа позволят также ускорить проверку работ.

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

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

Критерии, по которым происходило сравнение программы-генератора и аналогов:

– возможность генерации логических выражений;

– возможность построения таблиц истинности;

– возможность приведения функции к виду сднф и скнф;

– возможность сохранения логических выражений в удобном виде;

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

Существуют программы, частично реализующие описанный выше функционал, а именно web-ресурсы [1] [2] [3] [4], предоставляющие следующие возможности:

– Построение СДНФ и СКНФ.

– Построение таблиц истинности.

Таким образом, от аналогов программу отличает возможность генерации логических выражений с заданными параметрами и их сохранения в файл. Большинство похожих программ и сервисов предоставляют возможности построения таблиц истинности, СДНФ и СКНФ логических выражений (то есть решать логические выражения), но не позволяют создавать новые логические функции.

Программа обладает следующими функциональными возможностями:

– Удалить одну выделенную сгенерированную функцию.

– Удалить все сгенерированные функции.

– Построить СДНФ для одной выделенной функции, вывести в указанный файл.

– Построить СДНФ для всех функций, вывести в указанный файл.

– Построить СКНФ для одной выделенной функции, вывести в указанный файл.

– Построить СКНФ для всех функций, вывести в указанный файл.

– Построить таблицу истинности для одной выделенной функции, вывести в указанный файл.

– Построить таблицу истинности для всех функций, вывести в указанный файл.

– Сохранить одну выделенную сгенерированную функцию в указанный файл.

– Сохранить все сгенерированные функции в указанный файл.

– Генерация за один сеанс работы разных функций, прошлые сгенерированные функции удаляются.

– Возможность смены внешнего вида операций в настройках.

– Возможность смены внешнего вида переменных в настройках.

– Возможность смены языка. Доступные языки: русский, английский, немецкий.

– Возможность смены темы приложения в настройках. Доступные темы: светлая, темная.

Генерация логических выражений выполняется по следующим параметрам:

– Количество переменных (и сколько их встречается в выражении). Всего переменных может быть 10.

– Операции, участвующие в выражении (Базовые: логическое И, логическое ИЛИ, логическое НЕ (отрицание). Не базовые: следование (импликация), сложение по модулю два (исключающее ИЛИ), эквиваленция. Специфические: штрих Шеффера, стрелка Пирса).

– Наличие логических констант (ложь (0), истина (1)).

– Количество формул, не более 500.

Программа написана на языке С++11 с использованием кроссплатформенного фреймворка Qt 5.14.1.

Алгоритм генерации:

  1. Подготавливаем вектор (std::vector) указателей на переменные или логические константы basic, вектор операций operation, вектор указателей на вершины сгенерированных деревьев head.
  2. Проходим в цикле по вектору operation, создаем новый узел операции, потомки — две переменные или логические константы (если операция отрицание, то одна), добавляем полученный узел в конец вектора basic, удаляем из basic использованные переменные или логические константы. Выполняем действие 3. После каждой итерации цикла восстанавливаем, восстанавливаем массив basic: добавляем потомки созданной операции в вектор, удаляем указатель на операцию.
  3. Если длина basic не равна единице, возвращаемся в действие 2. Если длина basic равна единице, добавляем указатель на вершину сгенерированного дерева в вектор head.
  4. Когда использованы все операции и сгенерированы все формулы — получен вектор указателей на вершины полученных формул.

Демонстрация работы приложения отображена на рРис. 1 и на рРис. 2.

Рис. 1. Демонстрация работы приложения «Генератор логических выражений»: а) главное меню; б) настройки; в) меню генерации; г) взаимодействие со сгенерированными формулами.

Рис. 2. Темная тема в приложении: а) главное меню; б) меню генерации

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

Литература:

  1. Онлайн инструменты по математической логике: сайт / tablica-istinnosti.ru: сайт по математической логике. — URL: https://tablica-istinnosti.ru/ru/ (дата обращения: 07.05.2020). — Текст: электронный.
  2. Калькулятор математической логики: сайт / Контрольная работа онлайн: решение задач. — URL: https://www.kontrolnaya-rabota.ru/s/mathlogic/ (дата обращения 07.05.2020). — Текст: электронный.
  3. Таблица истинности онлайн с примерами — логика: сайт / uchim.org: сайт с материаламы для учёбы. — URL: https://uchim.org/matematika/tablica-istinnosti (дата обращения: 07.05.2020). — Текст: электронный.
  4. Построение таблицы истинности. СДНФ. СКНФ. Полином Жегалкина: сайт / Programforyou.ru: сайт для помощи с программированием. — URL: https://programforyou.ru/calculators/postroenie-tablitci-istinnosti-sknf-sdnf (дата обращения: 07.05.2020). — Текст: электронный.
Основные термины (генерируются автоматически): указанный файл, выражение, функция, программа, выделенная функция, Возможность смены, выделенная сгенерированная функция, главное меню, вектор указателей, возможность генерации.


Похожие статьи

Применение булевых функций к релейно-контактным схемам

Библиографическое описание: Медведева, Я. С. Применение булевых функций к релейно-контактным схемам / Я. С. Медведева.

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

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

Главный из них — отсутствие настоящей генерации вариантов.

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

Одним из векторов развития программы является разработка алгоритма, позволяющего преподавателю моделировать собственные задачи.

Один способ генерации графа | Статья в журнале...

Один способ генерации графа. Автор: Мирошниченко Никита Максимович.

Существует возможность регулировать размер кластеров.

Описанный выше алгоритм генерации работает относительно стабильно, однако требует доработки.

Метод выявления информационных связей в программном...

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

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

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

Разработка программного обеспечения для генерации вариантов...

Рис. 1 Программа для генерации задач по дисциплине «Информатика».

Логика работы программы с данным шаблоном предусматривает возможность работы с любыми

После этого программа сохраняет шаблон в служебный файл и добавляет его в список доступных...

Использование компьютерной программы Advanced grapher как...

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

Обзор различных средств фаззинга как инструментов...

LibFuzzer имеет возможность осуществлять анализ функций API напрямую.

И. Исаев, Д. Сидоров. Применение динамического анализа для генерации входных данных, демонстрирующих критические ошибки и уязвимости в программах.

Многомерная интерполяция сеточной вектор-функции

Рассмотрена задача интерполяции функции, заданной на регулярной сетке, для случая большого

Число компонент m вектор-функции F в данном случае равно двум: e, s, число переменных

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

Корреляционные методы пеленгования источников излучения

Соответствующий угловой спектр функции приведён на рисунке 3. 2 Г. Обобщенный метод Кейпона. Очевидно, что методы Кейпона и теплового шума могут быть рассмотрены с единой точки зрения и на основе этого могут быть предложены новые методы свехразрешения.

Похожие статьи

Применение булевых функций к релейно-контактным схемам

Библиографическое описание: Медведева, Я. С. Применение булевых функций к релейно-контактным схемам / Я. С. Медведева.

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

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

Главный из них — отсутствие настоящей генерации вариантов.

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

Одним из векторов развития программы является разработка алгоритма, позволяющего преподавателю моделировать собственные задачи.

Один способ генерации графа | Статья в журнале...

Один способ генерации графа. Автор: Мирошниченко Никита Максимович.

Существует возможность регулировать размер кластеров.

Описанный выше алгоритм генерации работает относительно стабильно, однако требует доработки.

Метод выявления информационных связей в программном...

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

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

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

Разработка программного обеспечения для генерации вариантов...

Рис. 1 Программа для генерации задач по дисциплине «Информатика».

Логика работы программы с данным шаблоном предусматривает возможность работы с любыми

После этого программа сохраняет шаблон в служебный файл и добавляет его в список доступных...

Использование компьютерной программы Advanced grapher как...

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

Обзор различных средств фаззинга как инструментов...

LibFuzzer имеет возможность осуществлять анализ функций API напрямую.

И. Исаев, Д. Сидоров. Применение динамического анализа для генерации входных данных, демонстрирующих критические ошибки и уязвимости в программах.

Многомерная интерполяция сеточной вектор-функции

Рассмотрена задача интерполяции функции, заданной на регулярной сетке, для случая большого

Число компонент m вектор-функции F в данном случае равно двум: e, s, число переменных

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

Корреляционные методы пеленгования источников излучения

Соответствующий угловой спектр функции приведён на рисунке 3. 2 Г. Обобщенный метод Кейпона. Очевидно, что методы Кейпона и теплового шума могут быть рассмотрены с единой точки зрения и на основе этого могут быть предложены новые методы свехразрешения.

Задать вопрос