simka, я так понял, что всё сработало, включая Hello world.
Тогда некоторые стартовые сведения.
Ruby - такой язык, который понимает разнообразный синтаксис конструкций. Собственно, затем он и был придуман одним японцем. Это не научит дисциплине, зато не будет утомлять на первых порах, на которых и без того забот хватает.
Ruby - язык объектный, следовательно, всё, что есть в программе, является теми или иными объектами. Объекты - тема обширная, поэтому ограничимся самым минимумом. Обычно разделяют понятия "инструкция" (как предписание выполнить известное компьютеру действие) и "данные" - то, над чем компьютер выполняет инструкции.
Например, инструкция "2 + 3": тут "+" - оператор, указывающий компьютеру, какое именно действие надо сделать; "2" и "3" - данные (числа). Инструкция "открыть дверь": тут "открыть" - оператор, описывающий действие, "дверь" - данные для обработки (конкретная дверь). В последнем случае для начала компьютер должен быть обучен тому, что в природе есть двери, и что их можно открывать.
Объект - это увязка вместе данных и каких-то действий по их обработке. Например та же дверь и операция её открытия могут быть увязаны в объект. Тогда говорят, что у объекта "дверь" будет операция "открыть".
Можно считать, что в Ruby все операции относятся к каким-то объектам, а на вид "бесхозные" операции относятся к объекту "программа" или "компьютер".
Например, та же операция "puts", печатающая на экране строчку с текстом, на вид "бесхозная". Если бы компьютер что-то понимал в дверях и их открывании, "бесхозная" операция "открыть дверь" в Ruby выглядела бы так:
open door
или так
open(door)
что одно и то же.
На самом деле любая операция - это особый объект, который называется функцией, и он означает примерно то, что мы выше называли подпрограммой. Т.е. он нужен, чтобы "обучить" компьютер делать новую операцию. Новая операция внутри функции записывается алгоритмом, составленным из ранее известных компьютеру операций.
У функции могут быть аргументы или параметры. Они записываются после имени функции через запятую. Либо же они записываются внутри круглых скобок после имени функции тоже через запятую. В строчках выше door (дверь) - это параметр функции open (открыть).
Если же мы имеем делом с объектом, то принадлежащая ему операция (функция) записывается через точку после объекта. Например:
door.open
или
door.open();
Здесь у объекта door (дверь), вызывается операция open (открыть). Эта операция не имеет параметров.
В конце любого выражения, являющегося отдельной инструкцией, можно ставить точку с запятой, чтобы отделить предыдущую инструкцию от последующей. Если же договориться, что каждую инструкцию мы будем записывать в отдельной строке, то точки с запятой ставить необязательно.
Ещё один важный момент. Названия в Ruby записываются только латинскими буквами. Причём пока настоятельно рекомендуется использовать лишь строчные буквы. Вывод на экран тоже лучше делать латинскими буквами - так не возникнет сложностей с кодировками.
Помимо операций ещё важно понимать, что такое "константа" и "переменная".
Константа - это прямо в тексте программы указанные данные. Например, 2 - это числовая константа, а "Hello world" (в кавычках) - это текстовая константа (текстовая строка или просто строка). Числовые константы бывают целыми (то же 2) и вещественными (дробными, например, 2.5 - записывается через десятичную точку). Ещё есть логические константы true (правда) и false (ложь), и особая константа nil, которая означает буквально ничего (т.е. пустоту, отсутствие чего бы то ни было).
Переменная - это название, придуманное самим программистом, и означающее место в памяти компьютера, в котором что-то лежит. Программисту не следует выбирать названия, уже что-то означающие в программе. Названия должны быть новыми. Положенное в переменную нечто называется "значением переменной". Когда внутрь переменной помещается конкретное значение, говорят, что происходит присваивание значения переменной. Например:
x = 2 # переменной x присвоили значение, соответствующее константе 2
y = x # переменной y присвоили значение, соответствующее значению переменной x (т.е. 2, поскольку выше в x положено 2)
x = nil # очистили переменную x от значения, теперь внутри x ничего нет
Здесь "решётка" - это значок, который говорит компьютеру, что текст за ним до конца строки к программе не относится и обрабатываться не должен. Такой текст называется комментарием, и там программист волен писать что угодно без всяких правил. Значок "равно" означает операцию присваивания значения. Важно помнить, что слева находится переменная
куда, записывается значение, а справа находится нечто (константа, другая переменная или инструкция),
откуда берётся значение для записи.
Теперь назад к пуговицам
Поскольку компьютер про пуговицы ничего не знает, договоримся, что факт застёгивания пуговицы компьютер будет изображать нам надписью на экране. Например, (по-английски)
button up
или что-то такое. Напомню, что надпись выводит функция puts.
Первое, с чего мы начнём, это напишем программу для застёгивания 4-х пуговиц, а затем будем её улучшать, обсуждая разные тонкости.
Как такая простейшая программа будет выглядеть?