Руководство для начинающих по программированию на .NET 5 и C#

В этой статье исследуются несколько законов булевой алгебры ориентированным на программиста способом, оставляя в стороне математическую нотацию. Эти законы могут быть полезны при работе с булевой логикой для упрощения сложных условий. Эта статья очень проста в объяснении и раскрывает законы использования C#. Не волнуйтесь, я не перерабатываю себя учителем математики.

Эта статья является частью серии статей об обучении программированию, в которых вам не нужны предварительные знания в области программирования. Если вы хотите научиться программировать и хотите научиться этому, используя .NET/C#, это правильное место. Я предлагаю прочитать всю серию по порядку, начиная с Создание вашей первой программы на .NET/C#, но это не обязательно.

Эта статья является частью подсерии, начинающейся с Введение в булевую алгебру и логические операторы. Не обязательно читать все статьи по порядку, но настоятельно рекомендую, особенно если вы новичок. Если вы уже читаете всю серию по порядку, откажитесь от этого совета.

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

В примерах все переменные ( A, B, C) являются логическими, например:

bool A, B, C;

Закон поглощения

Закон поглощения выглядит следующим образом:

  • A && (A || B) всегда равно A
  • A || A && B всегда равно A

Закон об аннулировании

Закон об аннулировании выглядит следующим образом:

  • A && false всегда false
  • A || true всегда true

Ассоциативный закон

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

  • A || (B || C)
  • (A || B) || C
  • (A || C) || B
  • A || B || C

Дополнить Закон

Закон дополнения выглядит следующим образом:

  • A && !A всегда false
  • A || !A всегда true

Коммутативное право

Коммутативный закон выглядит следующим образом:

  • A && B совпадает с B && A
  • A || B совпадает с B || A

Закон консенсуса

Закон консенсуса звучит следующим образом:

  1. (A || B) && (!A || C) && (B || C) эквивалентно (A || B) && (!A || C)
  2. A && B || A && C || B && C эквивалентно A && B || A && C

Этих двух может быть труднее понять, поэтому вот мое краткое объяснение:

  1. В первых двух сравнениях (A || B) && (!A || C) && (B || C), A и !A почти самоуничтожаются, оставляя результат сравнения B и C. Исходя из этого факта, независимо от значений, последнее сравнение && (B || C) становится бесполезным (уже оценено).
  2. Второй аналогичный. В первых двух сравнениях A && B || A && C || B && C мы проверяем B и C, в результате чего последнее сравнение || B && C становится недействительным.

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

Законы де Моргана

Это очень интересно и может быть удобно время от времени. Говоря простым языком, законы Де Моргана таковы:

  • negation из disjunction - это conjunction из negations.
  • negation из conjunction - это disjunction из negations.

Логический conjunction означает И (&&), а логический disjunction означает ИЛИ (||). Если вы не увлекаетесь математикой, вам не нужно об этом помнить.

Теперь к той части, которая нас интересует, в C# законы Де Моргана таковы:

  • !(A || B) эквивалентно !A && !B
  • !(A && B) эквивалентно !A || !B

Распределительное право

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

  • A && B || A && C эквивалентно A && (B || C)
  • (A || B) && (A || C) эквивалентно A || B && C

Закон двойного отрицания

Закон двойного отрицания гласит, что два отрицания отрицают сами себя. В С# это выглядит так:

  • !!A эквивалентно A

Закон о личности

Закон тождества звучит следующим образом:

  • A && true всегда равно A
  • A || false всегда равно A

Идемпотентный закон

Закон идемпотента выглядит следующим образом:

  • A && A всегда равно A
  • A || A всегда равно A

Закон об избыточности

Закон избыточности выглядит следующим образом:

  • (A || B) && (A || !B) всегда равно A
  • A && B || A && !B всегда равно A
  • (A || !B) && B эквивалентно A && B
  • A && !B || B эквивалентно A || B

Заключение

В этой статье мы рассмотрели ряд законов булевой алгебры с точки зрения программиста на C#. Вы можете найти информацию о них, включая математические доказательства, в Интернете или в книгах, если вы увлекаетесь математикой. Лично я предпочитаю простую версию C#, поэтому я перевел их сюда. Даже если некоторые из этих законов могут показаться слишком сложными для запоминания, не расстраивайтесь; даже самые простые из них полезны: начните с этого.

Программирование похоже на игру в кубики LEGO®: мы можем комбинировать все эти законы, которые представляют собой логические закономерности. Например, !(!A || !B) выглядит сложным, но после применения закона Де Моргана становится эквивалентным !(!(A && B)). Удалив бесполезную скобку, мы получим !!(A && B), что обнажает двойное отрицание. Применение закона двойного отрицания приводит к A && B. Эта упрощенная версия исходного условия выглядит намного проще, не так ли?

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

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

Пожалуйста, оставьте свои вопросы или комментарии ниже или напишите мне в Твиттере.

Следующий шаг

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

Первоначально опубликовано на https://www.forevolve.com 29 августа 2021 г.