---

name: Логический тип
theory: |

  Кроме арифметических операций со школы нам известны операции сравнения. Например, `5 > 4`. Это звучит как вопрос: «5 больше 4?». В данном случае ответ «да». В других случаях ответом может быть «нет» (например, для `3 < 1`).

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

  Языки программирования адаптировали все математические операции сравнения практически в неизменном виде. Единственное серьезное отличие – операторы равенства и неравенства. В математике для этого используется обычное равно `=`, но в программировании такое встречается не часто. Во многих языках символ `=` используется для присваивания значений переменным, поэтому для сравнения взяли `==` или `===`.

  Список операций сравнения:

  * `<` меньше
  * `<=` меньше или равно
  * `>` больше
  * `>=` больше или равно
  * `===` равно
  * `!==` не равно

  _Небольшая ремарка: для равенства и неравенства также существуют операторы `==` и `!=`, которые мы не будем использовать из-за потенциальной опасности. Мы поговорим об этом в будущих уроках._

  Логическая операция типа `5 > 4` или `$password === $text` — это выражение, и его результат — специальное значение `true` («истина») или `false` («ложь»). Это новый для нас тип данных — bool. Он содержит всего лишь два этих значения.

  ```php
  <?php

  $result = 5 > 4;
  print_r($result); // => true
  print_r('one' !== 'one'); // => false
  ```

  Наряду со строками (string) и целыми и рациональными числами, тип bool (булев) — это один из примитивных типов данных в PHP.

  ---

  Попробуем написать примитивную функцию, которая принимает на вход возраст ребенка и определяет, младенец ли он. Младенцами считаются дети до года:

  ```php
  <?php

  function isInfant($age)
  {
      return $age < 1;
  }
  ```

  Пользуемся тем фактом, что любая операция — это выражение, поэтому единственной строчкой функции пишем «вернуть то значение, которое получится в результате сравнения `$age < 1`».

  В зависимости от пришедшего аргумента, сравнение будет либо истинным (`true`), либо ложным (`false`), а `return` вернёт этот результат.

  Вызовем функцию и выведем на экран результат. Для вывода bool нужно использовать `var_dump()`, а не `print_r()`:

  ```php
  <?php

  function isInfant($age)
  {
      return $age < 1;
  }

  var_dump(isInfant(3));
  ```

  <pre class='hexlet-basics-output'>bool(false)</pre>

  А теперь проверим ребенка, которому полгода:

  ```php
  <?php

  var_dump(isInfant(0.5));
  ```

  <pre class='hexlet-basics-output'>bool(true)</pre>


instructions: |

  Напишите функцию `isPensioner()`, которая принимает возраст в качестве единственного аргумента и проверяет, является ли этот возраст пенсионным. Пенсионным считается возраст 60 лет и больше.

  Примеры вызова:

  ```php
  <?php

  isPensioner(75); // true
  isPensioner(18); // false
  ```

definitions:
  - name: "Логический тип (bool)"
    description: "тип данных с двумя возможными значениями: true (истина) и false (ложь)."
