---

name: Типы данных
theory: |

  Бывают разные способы представлять данные в программах.

  Есть **строки** — наборы символов в кавычках, вроде `"Hello, World!"`. Есть **целые числа** — например, `7`, `-198`, `0`. Это две разные категории информации — два разных **типа данных**.

  Операция умножения имеет смысл для целых чисел, но не имеет смысла для строк: умножать слово «мама» на слово «блокнот» — бессмыслица.

  **Тип данных определяет, что можно делать с элементами конкретного множества элементов**

  Язык программирования распознает типы. Поэтому PHP не позволит нам умножать строку на строку («умножать текст на текст»). Но позволит умножать целое число на другое целое число. Наличие типов и таких ограничений в языке защищает программы от случайных ошибок.

  В отличие от строк, числа оборачивать в кавычки не нужно. Чтобы напечатать число 5, достаточно написать:

  ```php
  <?php

  print_r(5);
  ```

  Обратите внимание, что число `5` и строка `'5'` — совершенно разные вещи, хотя вывод у `print_r` для этих данных идентичный.

  Целые числа (`1`, `34`, `-19` и т.д.) и рациональные числа (`1.3`, `1.0`, `-14.324` и т.д.) — это два отдельных **типа данных**. Такое разделение связано с особенностями устройства компьютеров. **Есть и другие типы**, с ними мы познакомимся позже.

  Вот ещё один пример, но уже с рациональным числом:

  ```php
  <?php

  print_r(10.234);
  ```

  Типы данных «строка», «целое число» и «рациональное число» — это *примитивные* типы, они встроены в сам язык PHP. В язык встроены также и некоторые составные типы данных, но пока мы будем работать только с примитивными. Программисты также могут создавать собственные типы данных.

  (По-английски строки в программировании называются "strings", а строчки текстовых файлов называются "lines". Например, в коде выше есть три строчки (lines), и нет никаких строк (strings). В русском иногда может быть путаница, поэтому во всех уроках мы будем говорить **строка** для обозначения типа данных «строка», и **строчка** для обозначения строчек (lines) в файлах).

instructions: |
  Выведите на экран число `-0.304`.

tips:
  - |
    [Литерал](https://ru.wikipedia.org/wiki/%D0%9B%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D0%BB_(%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0))
  - |
    [Статья о дробных числах](https://habrahabr.ru/post/112953/)

definitions:
  - name: "Тип данных"
    description: "множество данных в коде (разновидность информации). Тип определяет, что можно делать с элементами конкретного множества. Например, целые числа, рациональные числа, строки — это разные типы данных."
  - name: "Примитивные типы данных"
    description: "простые типы, встроенные в сам язык программирования."
  - name: "Строка (string)"
    description: |
      тип данных, описывающий набор символов (иными словами — текст); например, `'text'` или `"text"`.
