Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Основы языка программирования Ruby

Покупка
Новинка
Артикул: 842312.01.99
Доступ онлайн
800 ₽
В корзину
Приведены сведения, необходимые для понимания языка программирования Ruby. Представлены примеры, рассматривающие ключевые для этого языка моменты. Последовательно раскрыты как базовые средства языка, так и его возможности, позволяющие существенно увеличить эффективность написания программ, включая объектные и функциональные принципы программирования. Для студентов МГТУ им. Н.Э. Баумана, обучающихся по направлению "Информатика и вычислительная техника" и изучающих дисциплины "Языки интернет-программирования" и "Практикум по интернет-программированию".
Самарев, Р. С. Основы языка программирования Ruby : учебное пособие / Р. С. Самарев. - Москва : Издательство МГТУ им. Баумана, 2015. - 100 с. - ISBN 978-5-7038-4219-5. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2169604 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Московский государственный технический университет 
имени Н. Э. Баумана 
 
 
 
 
Р. С. Самарев 
 
 
 
Основы языка программирования Ruby 
 
 
Учебное пособие 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1 


УДК 681.3.06 
ББК 22.18 
 С17 
 
Издание доступно в электронном виде на портале ebooks.bmstu.ru  
по адресу: http://ebooks.bmstu.ru/catalog/255/book1271.html 
 
Факультет «Информатика и системы управления» 
Кафедра «Компьютерные системы и сети» 
 
Рекомендовано Редакционно-издательским советом  
МГТУ им. Н.Э. Баумана в качестве учебного пособия 
 
Рецензент  
канд. техн. наук, доцент В.А. Мартынюк 
 
 
Самарев, Р. С.  
 
Основы языка программирования Ruby : учебное пособие / 
С17 
Р. С. Самарев. — Москва : Издательство МГТУ им. Н. Э. Баумана, 
2015. — 98, [2] с. : ил. 
ISBN 978-5-7038-4219-5 
Приведены сведения, необходимые для понимания языка программирования Ruby. Представлены примеры, рассматривающие 
ключевые для этого языка моменты. Последовательно раскрыты как 
базовые средства языка, так и его возможности, позволяющие существенно увеличить эффективность написания программ, включая 
объектные и функциональные принципы программирования.  
Для студентов МГТУ имени Н.Э. Баумана, обучающихся по 
направлению «Информатика и вычислительная техника» и изучающих дисциплины «Языки интернет-программирования» и «Практикум по интернет-программированию». 
 
УДК 681.3.06 
ББК 22.18 
 
 
 
 
 
 
© МГТУ им. Н. Э. Баумана, 2015 
© Оформление. Издательство 
ISBN 978-5-7038-4219-5   
    МГТУ им. Н. Э. Баумана, 2015
2 


 
 
Предисловие 
Подготовка специалистов, имеющих отношение к вычислительным системам, подразумевает изучение современных технологий, получение практических навыков в использовании одного или 
нескольких языков программирования, а также понимание основных принципов построения языков программирования. При этом 
предполагается изучение как базовых алгоритмов, так и перспективных направлений развития программной отрасли. Невозможно 
предложить один-единственный язык программирования, который 
удовлетворил бы всем современным требованиям, поскольку 
большинство языков программирования имеет ту или иную специализацию. 
Данное учебное пособие посвящено одному из популярных 
языков программирования — языку Ruby. Этот язык отличается 
стройной объектной моделью и чрезвычайной гибкостью, позволяющей быстро и эффективно реализовывать написанные на Ruby 
программы, начиная от вспомогательных программ и программ 
для автоматического тестирования приложения и заканчивая 
сложными веб-приложениями. 
Язык Ruby для студентов полезен тем, что позволяет познакомиться с семейством скриптовых языков программирования, а 
также получить представления о функциональном программировании. При этом он может быть использован в очень широком 
диапазоне задач как учебного, так и практического характера. Для 
более глубокого понимания программирования на языке Ruby следует изучить работы [1– 6]. 
Вопросы и замечания по данной работе просьба направлять автору на адрес: samarev@acm.org. 
3 


 
 
Введение 
Язык Ruby разработан под влиянием таких языков, как Perl, 
Python, Smalltalk. Основной акцент сделан на удобство написания 
программы и последующего ее восприятия. Язык является мультипарадигменным. Программист может писать программы в стиле 
языков типа Pascal, C/C++ или в стиле скриптовых языков программирования типа Perl, Python.  
Возможности языка Ruby не исчерпываются тем, что он позволяет имитировать другие языки программирования для человека, который впервые пытается написать на нем программу. Ruby обладает 
развитой объектной моделью, заимствованной от Smalltalk, имеет 
изначально заложенные средства, дающие возможность писать программы в стиле функциональных языков программирования.  
Язык Ruby позволяет использовать кодировку UNICODE, поэтому программа может быть написана даже на русском языке, 
включая названия классов, методов, переменных. Основные принципы Ruby – минимальное количество кода при максимальной его 
выразительности, а код программы должен восприниматься как 
код на естественном языке. Кажущаяся избыточность способов 
реализации одной и той же программы (за что Ruby критикуют те, 
кто его не использует) обусловлена предоставлением программисту возможности выбрать те имена методов, которые являются 
наиболее выразительными в данном конкретном случае. 
4 


 
1. БАЗОВЫЙ СИНТАКСИС 
Для написания программы на языке Ruby до версии 2.0 использовалась 7-битная ASCII-кодировка. В Ruby версии 2.0 по умолчанию 
применяется кодировка UTF-8. Идентификаторы можно написать на 
русском языке. Комментарии и строки могут содержать символы в 
любой кодировке, однако это необходимо указывать явно. 
В строке может быть сколь угодно много лексем, разделенных 
пробелами. Если в одной строке пишется несколько выражений, 
необходимо использовать точку с запятой, иначе строка может быть 
отброшена. 
В современных версиях Ruby логические выражения и последовательности вызова методов можно переносить на несколько 
строк. В ранних версиях Ruby (до версии 1.9) для этого необходимо было использовать символ переноса строки — обратную косую 
черту «'\». 
Программа выполняется сверху вниз. Отдельной главной 
функции не существует. Если по тексту встречается код функций 
(методов), он будет реализован только в том случае, если был 
осуществлен их явный вызов. 
Зарезервированные слова: 
alias     and     BEGIN   begin    break   case    class    def  
defined?  do      else    elsif    END     end     ensure   false  
for       if      in      module   next    nil     not      or  
redo      rescue  retry   return   self    super   then     true  
undef     unless  until   when     while   yield 
Скобки при вызове методов можно опускать, например: 
foobar 
foobar () 
foobar  a, b, c 
foobar ( a, b, c ) 
Рассмотрим случай, когда пробел существен. 
Следующие выражения эквивалентны: 
x = y + z 
x = y+z 
x = y+ z 
5 


Однако выражение 
x = y +z 
не эквивалентно выражениям, приведенным выше. 
Последнее выражение интерпретируется как вызов метода «y» 
с параметром +z, т. е. x = y(+z). 
Ключевое слово then для if не является обязательным. Блок 
(или код, который должен быть выполнен для указанного метода) 
может быть представлен в коде программы либо символом «{…}», 
либо словами do … end. 
Основной принцип Ruby — DRY (Don't repeat yourself) code, что 
означает в вольном переводе «сухой код без повторений». Кроме 
того, в концепции Ruby делается акцент на то, что программа должна быть написана на языке, максимально приближенном к естественному (например, к английскому). 
Студентам рекомендуется самостоятельно проверить все приведенные в пособии примеры. Для этого необходимо знать, что 
программа на языке Ruby — это текстовый файл, обычно имеющий расширение rb, который может быть запущен в консоли командой: ruby file.rb. Для отладки программ или изучения Ruby полезно использовать команду irb (т. е. интерактивный Ruby), 
которая позволяет вводить или выполнять операции построчно. 
Процесс установки Ruby описан в приложении 1. 
1.1. Правила именования 
В языке Ruby существуют определенные правила именования переменных, методов и классов. Их знание необходимо как 
для понимания смысла ранее созданных программ, так и для 
написания программ, которые будут понятны другим. Написание идентификатора определяет его предназначение (empty? 
или empty!). 
Имена идентификаторов приведены в табл. 1.1. 
Правила именования применительно к методам классов заключаются в использовании суффиксов метода (empty?, sub!,...): 
если «?» — метод является предикатом, т. е. утверждением с 
результатом ИСТИНА или ЛОЖЬ; 
если «!» — метод производит изменение данных, т. е. является 
деструктивным. 
6 


Таблица 1.1 
Имена идентификаторов 
Запись идентификатора 
Назначение 
Пример 
Со строчной буквы 
или со знака '_' 
Имена локальных  
переменных 
local_variable 
__FILE__ 
$global_variable 
Со знака доллара $ 
Имена глобальных 
переменных 
@instance_variable 
Со знака @ 
Переменные  
экземпляра класса 
Со знака @@ 
Переменные класса 
@@class_variable 
С прописной буквы 
Имена констант 
TRUE 
 
Примеры использования методов класов: 
  obj.empty? # объект пуст? (истина/ложь) 
  Numeric.nonzero? # число не нуль? (истина/ложь) 
  obj.upcase! # Перевести буквы в верхний регистр 
  obj.ident! # Добавить отступы в строку 
  obj.capitalize! # Сделать все слова с заглавной буквы 
Обратите внимание на то, что метод obj.ident без суффикса ! не 
должен изменять объект obj, а должен возвращать измененную 
копию модифицируемых данных! 
1.2. Предопределенные переменные и константы 
В качестве справочной информации приведем списки псевдопеременных и предопределенных переменных Ruby, которые 
доступны в любом месте программы. Отметим, что бóльшая часть 
специальных переменных унаследована из языка Perl. 
Псевдопеременные представлены в табл. 1.2, предопределенные 
переменные — в табл. 1.3, глобальные константы — в табл. 1.4. 
Таблица 1.2 
Псевдопеременные 
Имя  
переменной 
Описание 
Self 
Объект, выполняющий данный метод 
Nil 
Единственный экземпляр класса NilClass  
(представляет false)
7 


Окончание табл. 1.2 
Имя  
переменной 
Описание 
True 
Единственный экземпляр класса TrueClass (ИСТИНА) 
False 
Единственный экземпляр класса FalseClass (ЛОЖЬ) 
__FILE__ 
Имя текущего файла 
__LINE__ 
Номер строки выполнения в текущем файле 
 
Таблица 1.3 
Предопределенные переменные  
Имя  
переменной 
Описание 
$! 
Текст сообщения об исключении, установленном 
инструкцией 'raise' 
$@ 
Массив стека вызовов на момент последнего исключения 
$& 
Строка, соответствующая последнему успешному 
совпадению при поиске по шаблону 
$` 
Содержит строку слева от шаблона последнего 
успешного поиска 
$' 
Содержит строку справа от шаблона последнего 
успешного поиска 
$+ 
Содержит последнюю группу символов, соответствующую шаблону последнего успешного поиска 
$1 
Содержит N-ю группу символов, соответствующую 
шаблону последнего успешного поиска. Может быть 
больше единицы 
$~ 
Информация о шаблоне последнего поиска 
$= 
Флаг нечувствительного к регистру поиска.  
По умолчанию nil 
$/ 
Разделитель записей. По умолчанию перевод строки 
$\ 
Разделитель записей при выводе для print и IO#write. 
По умолчанию nil 
$, 
Разделитель полей при выводе для print и Array#join 
$; 
Разделитель по умолчанию для String#split 
$. 
Номер строки, прочитанной из файла 
8 


Окончание табл. 1.3 
Имя  
переменной 
Описание 
$> 
Вывод по умолчанию для print, printf. По умолчанию 
$stdout 
$_ 
Последняя полученная методами gets или readline 
строка 
$0 
Содержит имя выполняемого в данный момент 
скрипта. Может быть переопределен 
$* 
Параметры командной строки, переданные скрипту 
$$ 
Идентификатор процесса Ruby, который выполняет 
данный скрипт 
$? 
Статус выполнении последнего запущенного  
дочернего процесса 
$: 
Путь загрузки для скриптов и бинарных модулей  
для инструкций «load» или «require» 
$" 
Массив, который содержит имена модулей,  
загруженных инструкцией «require» 
$DEBUG 
Состояние опции -d 
$FILENAME 
Имя файла ввода из переменной $<. Аналогично  
вызову $<.filename 
$LOAD_PATH 
Синоним $: 
$stderr 
Стандартный вывод ошибок 
$stdin 
Стандартный ввод 
$stdout 
Стандартный вывод 
$VERBOSE 
Флаг подробного вывода сообщений, который  
устанавливается опцией ruby -v 
$-0 
Синоним $/ 
$-a 
True, если опция -a установлена. Только чтение 
$-d 
Синоним $DEBUG. 
$-F 
Синоним $; 
$-I 
Синоним $: 
$-l 
True, если опция -l установлена. Только чтение 
$-p 
True, если опция -p установлена. Только чтение 
$-v 
Синоним $VERBOSE 
$-w 
True, если опция -w установлена 
 
9 


Таблица 1.4 
Предопределенные глобальные константы 
Имя переменной 
Описание 
TRUE 
true 
FALSE 
false 
NIL 
nil 
STDIN 
Стандартный ввод. По умолчанию $stdin 
STDOUT 
Стандартный вывод. По умолчанию 
$stdout 
STDERR 
Стандартный вывод ошибок. По умолчанию $stderr 
ENV 
Хеш (коллекция пар ключ — значение), 
который содержит переменные окружения 
ARGF 
Синоним  $< 
ARGV 
Синоним $* 
DATA 
Бинарные данные за директивой __END__ 
в коде, если она присутствует. Иначе не 
определена 
RUBY_VERSION 
Строка версии Ruby (константа VERSION 
устарела) 
RUBY_RELEASE_DATE 
Строка даты выпуска Ruby 
RUBY_PLATFORM 
Идентификатор платформы 
1.3. Комментарии 
Однострочные комментарии устанавливаются символом «#» и 
распространяется он до конца текущей строки: 
# Выражение на Ruby 
if b == 2 
 true      # случай 1 
else 
 prime?(b) # случай 2 
end 
Многострочные комментарии: 
=begin 
Пример многострочного комментария 
print "Какой-то текст для отображения". 
=end 
10 


Доступ онлайн
800 ₽
В корзину