Куперс

Бухучет и анализ

C проверка на четность

Назначение

В данной статье описывается принцип работы логических операторов ISBL: and, or, not, а также рассматривается возможность их использования не только в условиях.
Статья, в первую очередь, направлена на расширение кругозора и позволит лучше понять, как работает интерпретатор ISBL.
Также в статье есть пример нестандартного использования логических операторов — определение четности целого числа.

Принцип работы

Логические операторы and (и), or (или), not (не) в ISBL по сути являются побитовыми. Для наглядности можно провести аналогию с операторами из C-подобных языков:

ISBL C# / C++ / Java / … Описание
and & Побитовое И
or | Побитовое ИЛИ
not ~ Побитовое отрицание

Логические операторы в ISBL, в первую очередь, работают с логическими значениями TRUE и FALSE, которые являются системными константами, значения которых -1 и 0 соответственно. Т.к. мы знаем, что логические операторы производят побитовые вычисления, разложим эти значения на битовые представления:

Константа Значение Битовое представление
TRUE -1 1111…1111
FALSE 0 0000…0000

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

Примечание: из-за этого, если в условии забыть написать сравнение какого-то целого числа (например, if List.IndexOfName(‘name’)), то ошибки не будет, но условие будет отрабатывать неверно.

Применение

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

  • Использование логических операторов не по прямому назначению снижает понятность кода;
  • Использовать в условиях not над математическими выражениями и числами надо осторожно, т.к. оба выражения «if 3» и «if not 3» дадут истину. Ложь можно получить только как «if not -1»;
  • Целые числа в IS-Builder’е представляются 32 разрядами, и лучше воздержаться от логических операций с числами, не попадающими в диапазон 32х разрядных чисел.

Примеры

Проверка четности

Хорошим примером применимости логических операторов является определение четности целого числа. Предполагается, что это проверка будет оформлена в виде функции, которая возвращает логическое значение.
Выражение «and 1» даст нам последний бит числа, результатом будет являться 1 для нечетных и 0 для четных. Далее их нужно привести к стандартным значениям TRUE и FALSE, сделать это можно вычитанием единицы.

Код функции:

Assert(Round(Value; 0) = Value; «Переданное значение не является целым числом») Result = (Value and 1) — 1

Условие наличия элемента в списке

Простой пример, просто показывающий, что так можно, но такая реализация плохо читается, хотя и может пригодиться в сложных условиях.
Вот 3 идентичных варианта написания условия наличия элемента в списке для использования в if’e:

// Обычный if List.IndexOfName(ValueName) -1 // Какие-то вычисления endif // -1 инвертируется в 0, остальные значения в ненулевое целое число if not List.IndexOfName(ValueName) // Какие-то вычисления endif // Подобно примеру с четностью if List.IndexOfName(ValueName) + 1 // Какие-то вычисления endif

Проверка является ли число чётным одна из самых распространённых задач в программировании. Особенно, если учесть, что в C# отсутствует готовая функция для её решения.

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

  • Деление с остатком на 2;
  • Использование побитового «И».

Рассмотрим их более подробно.

Деление с остатком на 2

Если число нечётное, то остаток от его деления на 2 будет больше нуля. Таким образом, для проверки числа на чётность необходимо проверить, равен ли нулю остаток отделения числа на 2.

C#

1 2 3 4 private bool IsEven(int a) { return (a % 2) == 0; }

Здесь всё предельно просто. Если число чётное, то логическое выражение в методе IsEven будет иметь значение «Истина» и сам метод вернёт значение «Истина».

Использование побитового «И»

Этот способ основан на том, что у нечётного числа младший бит, равен 1. Для проверки числа на чётность необходимо выполнить его побитовое умножение (побитовое «И») на 1. Если результат равен нулю, число чётное.

Проверка числа на четность и нечетность. Введение

В работе, я уже неоднократно сталкивался с необходимостью проверки числа на четность и нечетность, но почему-то не придавал этому особого значения, поэтому не затрагивал данную тему ранее. Но мне уже несколько раз присылали вопросы и просили помочь с задачами, в которых проверка четности числа может помочь в реализации. Поэтому я решил описать проблему и решение в статье.
Рассмотрим самую распространенную задачу, в которой проверка четности числа может все расставить на свои места. Допустим, у нас имеется массив данных, в котором хранится имена и фамилии людей. Необходимо вывести эти данные таким образом, чтобы каждое имя и фамилия начинались с новой строки и каждая вторая строка имела отступ 20 пикселей.
Решение задачи:
Необходимо при выводе каждого элемента массива считать номер элемента, если он четный, то есть 2, 4, 6 и тд, то будем делать отступы.

Проверка числа на четность и нечетность. Код

// массив данных $array_users = array( «Иван Иванов», «Иван Петров», «Петр Иванов», «Петр Петров», «Сидор Иванов», «Сидор Петров» ); // вывод данных $num = 1; foreach($array_users as $value){ // проверяем четность if(($num % 2) == 0){ // если четное, то делаем отступ echo «<span style=’padding-left: 20px;’>$value</span><br/>»; }else{ // если не четное, то просто выводим echo «<span>$value</span><br/>»; } $num ++; }

Задача решена.

Вся суть сводится к тому, что необходимо проверить остаток от деления числа на два. если остаток равен нулю, значит число четное.

$a = 5; if(($a % 2) == 0){ echo «Число четное»; }else{ echo «Число не четное»; }

С помощью такого же кода, можно добавлять стили для каждого третьего, каждого четвертого и тд элемента, только уже сравнивать остаток после деления на 2, 3, 4 и тд.

Чётность в теории чисел

— характеристика целого числа, определяющая его способность делиться нацело на два. Если целое число делится на два, оно называется чётным (примеры: 2, 28, —8, 40), если нет — нечётным (примеры: 1,3, 75, —19). Ноль считается чётным числом.

Чётное число — целое число, которое делится на 2 без остатка: …−4,−2,0,2,4,6,8,10…

Например, 4 ─ это чётное число, его можно разделить на 2. Это помогает в сложении.

Нечётное число — целое число, которое не делится на 2 без остатка: …−3,−1,1,3,5,7,9…

Иными словами чётное и нечётное — собственные названия классов вычетов и по модулю 2.

Признак чётности

Если в десятичной форме записи последняя цифра числа делится на два без остатка — число чётное. Если не делится — то нечётное.

Арифметика

Сложение и вычитание

  • чётное ± чётное = чётное
  • чётное ± нечётное = нечётное
  • нечётное ± чётное=нечётное
  • нечётное ± нечётное = чётное

Умножение:

  • чётное × чётное = чётное
  • чётное × нечётное = чётное
  • нечётное × нечётное = нечётное

Деление:

  • чётное / чётное — может быть любым
  • чётное / нечётное = чётное, если целое
  • нечётное / чётное — не может быть целым
  • нечётное / нечётное = нечётное, если целое

История и культура

Понятие чётности чисел известно с глубокой древности, и ему часто придавалось мистическое значение. Так, в древнекитайской мифологии нечётные числа соответствовали Инь, а чётные — Ян.

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

Примечания

  1. См., например, статью «Чётные числа» в большой советской энциклопедии.

ar:أعداد فردية و زوجية bg:Четни и нечетни числа ca:Nombre senar cs:Sudá a lichá čísla da:Lige og ulige tal

el:Άρτιοι και περιττοί αριθμοί

eu:Zenbaki bakoiti

he:מספר זוגי hu:Páros és páratlan számok io:Para e ne-para nombri is:Oddatala

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Наверх