Справка
Телеграм чат начинающих программистов. Общаемся и помогаем друг другу
Если ссылка не открывается, можно найти нас в поиске по чатам @rubyrush
или
пойти другим путем
В четвёртом уроке мы приступаем к самым азам программирования — переменным и операции if-else
(если-иначе), которая позволяет программе выбрать, по какому пути пойти при выполнении.
if-else
, логический тип данных.В реальном мире все состоит из объектов: люди, животные, дома, горы, реки, планеты, дожди и т. д.
Современные программы принято тоже создавать из объектов. Но объектов «абстрактных», то есть виртуальных, существующих только в тексте программы и в памяти компьютера.
Например в программе на Руби любое число или любая строка — это объект.
В жизни у любого конкретного объекта есть его тип. Например, дом, в котором вы живете имеет тип «дом», как и множество других домов, даже непохожих на ваш. Или вы сами — объект типа «человек».
В программировании тип конкретного объекта называется класс. Чтобы узнать класс любого объекта в Ruby можно написать после этого объекта .class.name
.
Вот несколько примеров классов в Ruby:
Строка:
puts "Я строка".class.name
Выведет в консоли:
String
Целое число (что такое целое число):
puts 5.class.name
Выведет:
Fixnum
Число с плавающей точкой (что такое число с плавающей точкой):
puts 15.2.class.name
Выведет:
Float
Наш обычный мир состоит не только из объектов, но из различных процессов, действий, взаимодействий между объектами («люди» ходят в «магазины», «рыбы» плавают в «водоёмах» и т. д.).
Программы в современных языках программирования тоже по большому счету состоят из объектов и различных взаимодействий между ними. Этот вопрос мы еще подробнее раскроем в других уроках.
Для того, чтобы обращаться с объектами, нам нужно их как-то назвать, повесив на объект ярлык. Например при рождении нового объекта типа «человек» ему обычно дают имя. И вместе с фамилией и отчеством это позволяет отличить этого ребенка от десятков других в этом же роддоме.
Вся эта уникальная информация записывается в свидетельство о рождении и позже и в паспорт. Эти документы для этого и придуманы, чтобы точно определять конкретного человека из миллионов других.
В программе чтобы оперировать объектами их тоже нужно как-то отличать, как-то на них ссылаться.
Для этого в программировании есть такое понятие как переменные. Итак, грубо говоря, переменная — это ярлычок, указывающий на конкретный объект.
Сама по себе переменная в Ruby — просто уникальный набор символов английского алфавита и цифр, который можно использовать в программе для действий с объектом. Этот набор символов называемся «имя переменной» и вы сами придумываете имена своих переменных.
Связь объекта с переменной происходит с помощью знака =
.
hello = 'Привет, пацаны!'
Таким образом мы переменной hello
присвоили объект 'Привет, пацаны!'
класса «строка» (String).
Обратите внимание, что таким образом мы создали объект, он теперь сохранён в памяти компьютера. В этом случае принято говорить, что мы присвоили переменной hello
значение 'Привет, пацаны!'
.
Если мы после этого напишем
puts hello
То программа выведет эту строку из переменной hello
на экран, потому что программа уже знает, что такое hello
и что в этой переменной лежит.
Переменная может быть пустой, то есть не указывать ни на какой конкретный объект. Как пустой бланк паспорта. А может указывать на один объект, а потом на другой, если мы так захотим.
Такие номера проделывают с паспортами разные жулики, к счастью в программировании в отличие от реальной жизни, это не является правонарушением. :)
Это самая важная, самая простая и самая часто применяющаяся конструкция, которая есть в любом языке программирования.
Суть этой операции в проверке какого-то условия и выполнении определённых действий в зависимости от того, выполнено это условие или нет.
if (условие)
сделать, если условие выполнено
else
сделать, если условие не выполнено
end
Для того, чтобы записать условие, важно понять, что такое «Логический тип».
По-другому он называется булевский тип (по-английски Boolean) — это такой тип данных, который может содержать только одно из двух значений: true
или false
, истина или ложь. Думайте об этом как об ответе на закрытый вопрос, на который можно ответить только «Да» или «Нет».
Для формулировки условия нам нужно записать тот самый закрытый вопрос и для этого в Ruby есть специальный синтаксис.
В самом простом случае нам нужно проверить, совпадает ли значение переменной с каким-то нашим ожиданием. В этом нам поможет оператор «равно-равно» ==
, который сравнивает то, что справа от него, с тем, что слева от него, и говорит true
, если эти два объекта совпадают и false
, если нет.
Запись if
в этом случае будет выглядеть вот так:
if (hello == 'Привет, пацаны')
puts 'Здорово!'
else
puts 'Ты кто?'
end
Условие в Ruby можно записывать и без скобок, но, пока вы новичок, очень рекомендуем вам писать именно так. В приведённом примере если в переменной hello
содержится строка 'Привет, пацаны'
, то программа выведет на экран текст «Здорово», а если это условие не выполнено, то напишет текст «Ты кто?».
Если нам необходимо сравнить два объекта и сделать что-то, если они не совпадают, нам необходимо использовать оператор «не-равно» !=
:
if (hello != 'Здравствуйте, Господа')
puts 'Не изволите ли поздороваться, сударь?'
else
puts 'И вам не хворать, любезнейший'
end
В этом случае если в переменной hello
содержится что-то, отличное от строки "Здравствуйте, Господа"
, мы пойдём по верхнему пути, а если (вдруг) содержится, то по нижнему.
Если нам нужно проверить сложное условие, которое состоит из двух сравнений, то нам понадобятся операторы ||
и &&
— это операторы ИЛИ и И. Они позволяют объединять вместе сразу несколько сравнений.
Они используются для сложных проверок:
if (hello == 'Здравствуйте, Господа' || hello == 'Привет, пацаны')
puts 'Привет!'
else
puts 'Хам!'
end
Если в переменной hello
строка 'Здравствуйте, Господа'
или строка 'Привет, пацаны'
, то этот код напишет нам «Привет». Если же нет, всё пойдёт по другому сценарию и программа будет ругаться.
if (hello != 'Здравствуйте, Господа' && hello != 'Привет, пацаны')
puts 'Хам!'
else
puts 'Привет!'
end
Всё то же самое. Обратите внимание на логику: если в переменной hello
не содержится 'Здравствуйте, Господа'
и не содержится 'Привет, пацаны'
, то значит, с нами не поздоровались. Имеем право возмутиться. :)
Важно четко запомнить — оператор И объединяет другие условия в одно большое условие, и это большое условие выполняется только когда все условия выполняются.
Оператор же ИЛИ объединяет другие условия в одно большое условие, и это большое условие выполняется когда хотя бы одно из условий выполняются.
Про другие операторы сравнения и логические операции можно почитать по ссылкам:
Итак, в этом уроке мы узнали, что такое переменные и объекты. Также мы научились управлять программой в зависимости от того, какие значения содержаться в наших переменных.
Чтобы закрепить материал, обязательно выполните домашнее задание, а в следующем уроке мы будем использовать полученные нами знания, что написать простенькую текстовую игрушку-квест.
Мы покажем, что даже этих простых знаний уже достаточно для того, чтобы написать что-то разумное и интересное.