Как понять переменная в руби
Перейти к содержимому

Как понять переменная в руби

  • автор:

Понять, объявлена ли переменная

Найдите в интернете способ выяснить объявлена ли переменная, и напишите программу, которая пишет, объявлены ли переменные a и b .

Затем объявите переменную a и запустите программу.

Получится примерно так:

Переменная 'a' определена Переменная 'b' не определена 

Выяснить, определена ли переменная можно методом defined?

if defined?(a) puts "Определена переменная a" end 

#2 — Переменные и типы данных

#2 - Переменные и типы данных

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

Видеоурок

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

Типы переменных в языке Ruby не объявляются очевидно, тем не менее они присутствуют. Интерпретатор понимает что записывается в переменную и на основании этого добавляет тип к этой переменной.

В ходе программы мы можем перезаписывать значение переменной, при этом мы можем указывать новый тип переменной.

К примеру, изначально был записан тип float (число с точкой), но потом можно записать другой тип данных:

first_num = 23.2 # Тип данных float first_num = "1" # Тип данных string

Ниже приводим несколько существующих типов данных в языке Ruby:

  • some = 1 Integer — целые числа;
  • some = 1.12 Float — числа с плавающей точкой;
  • some = «Привет» String — строки;
  • some = true Boolean — принимают только true или же false;
  • some = nil Nil — пустое значение переменной.
Весь код будет доступен после подписки на проект!

Ruby/Переменные

Переменные используются, чтобы сохранить промежуточный результат вычислений. Имя переменной в Ruby должно:

  • начинаться с буквы или знака подчёркивания;
  • состоять из латинских букв, цифр или знака подчёркивания.
array variable another_variable 3element # неправильное имя. Начинается с цифры _3element # а вот как можно __ # немного странное, но допустимое имя переменной 

Переменная может иметь имя не только латинское, но и русское. Для этого, правда, требуется, чтобы весь текст программы был написан в кодировке UTF-8, а интерпретатор запускался с параметром -KU .

Присваивание осуществляется знаком равенства ( = ), вот так:

array = [1, 2, 3, 4] variable = array + [1, 2] another_variable = variable - array 

То, что справа от = , прежде чем стать значением переменной, обычно полностью вычисляется. Наша переменная variable будет содержать массив [1, 2, 3, 4, 1, 2] , потому что именно таков результат действия array + [1, 2] . Плюс ( + ) с массивами поступает именно так: прицепляет второй массив в хвост первого. Переменная another_variable теперь содержит пустой массив, поскольку операция минус убирает все вхождения элементов массива array из массива variable .

Переменные указывают на объект [ править ]

girlfriend = "Татьяна" goes_on_a_visit = girlfriend puts girlfriend #=> Татьяна goes_on_a_visit[0] = "Б" # меняем первую (номер ноль) букву у переменной-строки puts girlfriend #=> Батьяна # На первый взгляд странно и неожиданно 

Значение, возвращаемое первой переменной, изменилось потому, что в Ruby переменные содержат лишь ссылку на то, что вы им присваиваете.

Сами данные (объект) лежат где-то в другом месте. Ввиду этого естественно, что при прямом изменении самого объекта, на который указывает переменная, все другие переменные, указывающие на этот объект, будут возвращать изменённое значение (также будут изменяться).

Чтобы girlfriend наша осталась «Татьяна» , надо в переменную занести её клон:

girlfriend = "Татьяна" goes_on_a_visit = girlfriend.clone goes_on_a_visit[0] = "М" # Но изменили мы лишь клон. Дома в сохранности сидит настоящая: puts girlfriend #=> Татьяна 

Можно создавать копии объектов ещё методом .dup . Разница между ними будет понятна позже.

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

# … goes_on_a_visit = "Аристарх" # Создаётся новый объект, переменная переводится на него p girlfriend #=> "Татьяна" 

Объекты, переменные, условный оператор IF

В четвёртом уроке мы приступаем к самым азам программирования — переменным и операции if-else (если-иначе), которая позволяет программе выбрать, по какому пути пойти при выполнении.

План урока

  1. Что такое объекты и переменные в Ruby, как ими пользоваться
  2. Что такое переменная, как управлять объектами с помощью переменных
  3. Операция 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 (если-иначе)

Это самая важная, самая простая и самая часто применяющаяся конструкция, которая есть в любом языке программирования.

Программа на перепутье

Суть этой операции в проверке какого-то условия и выполнении определённых действий в зависимости от того, выполнено это условие или нет.

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 не содержится ‘Здравствуйте, Господа’ и не содержится ‘Привет, пацаны’ , то значит, с нами не поздоровались. Имеем право возмутиться. 🙂

Важно четко запомнить — оператор И объединяет другие условия в одно большое условие, и это большое условие выполняется только когда все условия выполняются.

Оператор же ИЛИ объединяет другие условия в одно большое условие, и это большое условие выполняется когда хотя бы одно из условий выполняются.

Про другие операторы сравнения и логические операции можно почитать по ссылкам:

Итак, в этом уроке мы узнали, что такое переменные и объекты. Также мы научились управлять программой в зависимости от того, какие значения содержаться в наших переменных.

Чтобы закрепить материал, обязательно выполните домашнее задание, а в следующем уроке мы будем использовать полученные нами знания, что написать простенькую текстовую игрушку-квест.

Мы покажем, что даже этих простых знаний уже достаточно для того, чтобы написать что-то разумное и интересное.

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

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