Типы данных, переменные и операции
Любая наша программа состоит из каких-то данных и каких-то операций над ними. Это могут быть простые данные (примитивные) такие как строки, числа и тд, так и сложные, такие как дата, время и тд. В сегодняшнем уроке мы подробно поговорим о том как выглядят эти самые базовые типы данных и что мы можем делать с ними.
Базовые типы данных
В Ruby у нас есть 4 базовых (примитивных) типа данных:
#
- служит для написания комментариев в коде. Эти комментарии служат подсказкой для разработчика, но в самой программе ничего, что есть в комментарии, выполняться не будет
Переменные
Наши значения по ходу работы программы мы может записывать в специальные контейнеры, которые будут хранить в себе это значение. Такие контейнеры называют переменные (Variable). Посмотрим на пример:
Как можно заметить переменные имеют имена, которые ты как разработчик можешь придумать самостоятельно. Единственное что нельзя делать - называть переменные словами, которые зарезервированы системой. Список слов тут.
Сразу запоминаем правила:
переменные всегда пишем на английском
всегда маленькими буквами
если переменная состоит из 2 слов, то соединяем из нижним подчеркиванием
_
(это называется snake case)
Но что можно делать с этим ? Давайте разберем
Операции
Начнем с базовых математических операций. Что можно делать с числами ? Все тоже самое. что и в математике: умножать, складывать, вычитать и тд.
В данном примере мы складывали простые числа. А теперь попробуем сложить целые числа и дробные.
Как можем заметить, при сложении дробного и целого числа мы получаем новое дробное число. Важно запомнить, что при математических операциях где хоть одно из чисел является дробным мы получим новое дробное число. Возможно возникнет вопрос: а что тут важного ? Давайте посмотрим на деление одного целого числа на другое.
Первое, что мы заметим, результат нашей операции не является дробное число. Если мы совершаем математическую операцию между двумя целыми числами, то и получаем целое число.
Второе, что мы заметим, здесь не работает правило округления как в математике. Если мы вспомним математическое правило, то при остатке от деления больше, чем 0.4
число должно округлиться до ближайшего числа в большую сторону. Ruby вместо этого просто напросто отбрасывает дробную часть как будто ее и нет вовсе. Как же тогда нам получить верное значение ? Для этого воспользуется правилом выше. Нам необходимо, чтобы хотя бы одно из чисел было дробным.
или тоже самое, но уже через переменные
В примере выше мы воспользовались функцией .to_f
, которая превратит наше натуральное число в дробное, что позволит нам получить верное значение. Если вам по какой то причине нужна возможность округлять числа в ту или иную сторону, то можно воспользоваться следующими функциями:
.round
- округление по правилам математики.ceil
- округление числа в большую сторону.floor
- коругление числа в меньшую сторону
Помимо числовых операций мы также можем манипулировать и строками. Если при сложении чисел мы получаем их сумму, то при сложении строк мы получаем объединенную новую строку.
В некоторых языках программирования существует невидимое преобразование числа в строку при попытке сложить его с другой строкой, но в Ruby это не работает
Для того, чтобы решить эту проблему нам необходимо явно превращать наше число в строку с помощью функции .to_s
Но вызывать каждый раз функцию .to_s
банально неудобно, да и не принято в сообществе. Самым простым способом для сложение строк - использование интерполяции строк. Она позволяет нам вставлять любое значение внутрь строки используя синтаксис #{}
, в котором мы можем размещать любые значения, будь то числа или даже какое то вычисление, при этом сам Ruby вызовет у конечного результата метод .to_s
. Главное правило для интерполяции - использование двойных кавычек, а не одинарных.
Помимо этого мы можем изменять значение в одной и той же переменной
Или даже можем менять значения разных типов данных (что делать не рекомендуется во избежание запутанности кода)
Задание greeting
попросите пользователя ввести свое имя в консоль и запишите его в переменную с помощью gets
Распечатайте в консоль сообщение
Hi, имя_пользователя
Дополнительный материал
Last updated