1lytics

Рефакторинг исходного кода

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

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

Использование формального метода при составлении условных выражений

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

// ...
if ( (!x1 && !x2 && !x3 && !x4)
    || (!x1 && !x2 && x3 && !x4)
    || (x2 && !x3 && x4)
    || (!x1 && x2 && x3 && x4)
    || (!x1 && x2 && !x4)
    || (x1 && x2 && x3 && x4)
    || (x1 && !x3 && x4)
    || (x1 && !x2 && x3 && !x4) )
    {
    }
// ...

Запишем аналитическое выражение для минимизации (символы операторов '&&' и '||' поддерживаются наравне с одиночными '&' и '|'):

F = (!x1 && !x2 && !x3 && !x4) || (!x1 && !x2 && x3 && !x4)
    || (x2 && !x3 && x4) || (!x1 && x2 && x3 && x4)
    || (!x1 && x2 && !x4) || (x1 && x2 && x3 && x4)
    || (x1 && !x3 && x4) || (x1 && !x2 && x3 && !x4);

Запустим программу Gorgeous Karnaugh, выберем пункт меню "File/New/From analytic form" и введем составленную на предыдущем шаге логическую функцию. После ввода выражения выберем пункт меню "Minimize all with espresso" и выберем более короткий из полученных вариантов (по 1 или по 0). В окне "Minimization results" на вкладке C/C++ проверим полученное выражение и скопируем полученный код для вставки в программу:

// ...
/* F */
if (x2&&x4 || !x1&&!x4 || x1&&!x3&&x4 || !x2&&x3&&!x4)
    {
    /* true branch */
    }
else
    {
    /* false branch */
    }
// ...

Использование выражений в условных операторах

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

$SUBSTEXPR x1 = i!=End;
$SUBSTEXPR x2 = i>A;
$SUBSTEXPR x3 = j==Begin;
$SUBSTEXPR x4 = j<=B;
F = (!x1 && !x2 && !x3 && !x4) || (!x1 && !x2 && x3 && !x4)
    || (x2 && !x3 && x4) || (!x1 && x2 && x3 && x4)
    || (!x1 && x2 && !x4) || (x1 && x2 && x3 && x4)
    || (x1 && !x3 && x4) || (x1 && !x2 && x3 && !x4);

В результате обработки вышеприведенной функции будет получено следующее выражение на C:

/* F */
if ((i>A)&&(j<=B) || !(i!=End)&&!(j<=B) || (i!=End)&&!(j==Begin)&&(j<=B) || !(i>A)&&(j==Begin)&&!(j<=B))
    {
    /* true branch */
    }
else
    {
    /* false branch */
    }

Gorgeous Karnaugh для различных языков программирования

Мы показали, как можно использовать программное обеспечение Gorgeous Karnaugh для минимизации условных выражений на языке C/C++. Языки C#, ObjectiveC, Java, JavaScript, PHP и Perl обладают сходным с языком C++ синтаксисом, и программное обеспечение Gorgeous Karnaugh может быть использовано для минимизации выражений на этих языках. Gorgeous Karnaugh также поддерживает языки с отличным от C синтаксисом условных выражений - такие, как Pascal, Lua, Ruby и Python.

Версия Gorgeous Karnaugh для программистов

Если вы программист, мы рекомендуем к использованию версию программного обеспечения Gorgeous Karnaugh Standard.

Скачать Gorgeous Karnaugh Standard.

Купить Gorgeous Karnaugh Standard.