Основы языка программирования Ruby
Покупка
Новинка
Тематика:
Программирование и алгоритмизация
Автор:
Самарев Роман Станиславович
Год издания: 2015
Кол-во страниц: 100
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7038-4219-5
Артикул: 842312.01.99
Приведены сведения, необходимые для понимания языка программирования Ruby. Представлены примеры, рассматривающие ключевые для этого языка моменты. Последовательно раскрыты как базовые средства языка, так и его возможности, позволяющие существенно увеличить эффективность написания программ, включая объектные и функциональные принципы программирования.
Для студентов МГТУ им. Н.Э. Баумана, обучающихся по направлению "Информатика и вычислительная техника" и изучающих дисциплины "Языки интернет-программирования" и "Практикум по интернет-программированию".
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Московский государственный технический университет имени Н. Э. Баумана Р. С. Самарев Основы языка программирования 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