ݺߣ

ݺߣShare a Scribd company logo
Строки   Создание и базовые операции     Методы   Задачи   References




                              Ruby: строки

                                Информатика
                                10-11 классы


                             10 ноября 2011 г.




             Информатика 10-11 классы
Строки      Создание и базовые операции    Методы   Задачи         References



Строки


         Строки наиболее популярный тип в любом языке
         программирования.
         При вводе / выводе информации любой тип данных
         преобразуется в строку.
         Имя, фамилия, условие задачи и даже программа       всё
         это строки.
         Строки очень похожи на массивы. Строка суть набор букв,
         то есть, массив.
         Поэтому работа со строками столь же проста в ruby, как и
         с массивами.



                Информатика 10-11 классы
Строки      Создание и базовые операции    Методы   Задачи     References



История о возможностях ruby

         Студенты четвёртого курса МЭТТ ГАИ поступили на
         подготовительные курсы в МГИУ. Там им начали
         преподавать основы программирования на Ruby.
         И одна из заданных им задач была: “Дано число,
         необходимо поменять порядок цифр на обратный”.
         Задача сложная, но наши студенты об этом не знали и
         решили её преобразованием к строке: given.to_s.reverse.
         Преподаватели были поражены и впредь запретили им
         использовать преобразования к строке в своих программах.
         И всё потому, что это сильно упрощало решение и давало
         студентам огромное преимущество перед остальными
         слушателями курсов. (ВикиУчебник)


                Информатика 10-11 классы
Строки    Создание и базовые операции    Методы   Задачи   References



Ruby     это просто




              Информатика 10-11 классы
Строки           Создание и базовые операции     Методы        Задачи        References



Создание строк


             Простейший способ задания строки             через кавычки ".
             Можно преобразовать число к строке с помощью to_s.
             В строках можно выводить значение переменных с
             помощью конструкции var

         Listing 1: Способы создания строки

               name   = " Ivan Ivanov "
               age    = 5 6 . to_s
               var    = 35
               puts   " v a r = #{v a r }"




                      Информатика 10-11 классы
Строки           Создание и базовые операции     Методы   Задачи   References



Конкатенация (сложение строк)

             Строки можно складывать. Следующая программа
             выведет на экран строку “Help us Obi Wan Kenobi”:

         Listing 2: Конкатенация строк

                h e l p = " Help us "
                p u t s h e l p + " Obi Wan Kenobi "

             Строки можно умножать на целые числа. Пример ниже
             выведет строку “axaxaxax”:

         Listing 3: Умножение строк

             p u t s " ax " ∗4


                      Информатика 10-11 классы
Строки            Создание и базовые операции     Методы     Задачи      References



Методы работы со строками


             s = “Во дворе - дрова, а в дровах - трава!”.
         Метод                      Описание (результат)
         s.size                     количество символов (33)
         s[3]                       четвёртый (с учётом нулевого) символ (д)
         s[−1]                      последний символ (в обратную сторону) (!)
         s[3..7]                    символы с 3-го по 7-й (дворе)
         s[3..7].reverse            перевернуть (еровд)
         s.sub(“трава”, “мясо”)     заменить одно слово “трава” на слово “мя-
                                    со”
         s.gsub(“а”, “о”)           заменить все “а” на “о”
         s.split(“слово”)           разделить строку по слову (вернёт массив
                                    подстрок)


                       Информатика 10-11 классы
Строки            Создание и базовые операции         Методы            Задачи   References



Подсчёт количества слов


             Решим простую задачу о подсчёте количества слов в
             строке.
             Известно, что слова отделяются пробелами.
             Поэтому разобьём строку по пробелам и подсчитаем
             количество получившихся подстрок.

         Listing 4: Слова

               s = " A l l y o u r b a s e s a r e b e l o n g t o us ! "
               substrings_array = s . s p l i t (" ")
               puts substrings_array . s i z e




                      Информатика 10-11 классы
Строки           Создание и базовые операции      Методы          Задачи            References



Жи-ши пиши с И


             Напишем программу, исправляющую некоторые ошибки в
             написании.
             Правила будут следующие: “жи–ши пиши с и, ча-ща пиши
             с а”.
             Для замены воспользуемся методом gsub.

         Listing 5: Правила

              s = "Начяльника , моя жыть хочет , дай денег на чяй ! "
              c o r r e c t _ s = s . gsub ( "жы" , "жи" ) . gsub ( "шы" , "ши" )
                                    . gsub ( "чя" , "ча" ) . gsub ( "щя" , "ща" )
              puts correct_s




                     Информатика 10-11 классы
Строки      Создание и базовые операции    Методы   Задачи    References



Метод each



         Для прохода по массивам / строкам помимо уже
         изученных методов есть ещё несколько весьма полезных.
         Метод each позволяет пройтись по каждому элементу
         массива и выполнить какое–либо действие.
         По принципу он очень похож на методы map, inject и др.
         Посчитаем длину каждого слова в строке.
         Для этого разобьём строку на слова (в виде массива), а
         затем пройдёмся по массиву и посчитаем длину каждого
         слова.




                Информатика 10-11 классы
Строки            Создание и базовые операции          Методы        Задачи   References



Метод each


         Listing 6: Метод each        краткая запись

           s = " T h i s i s SPARTA! "
           s_arr = s . s p l i t ( " " )
           s _ a r r . e a c h { | elem | p u t s elem . s i z e }


         Listing 7: Метод each        полная запись

          s = " T h i s i s SPARTA! "
          s_arr = s . s p l i t ( " " )
          s _ a r r . e a c h do | elem |
             p u t s elem . s i z e
          end




                       Информатика 10-11 классы
Строки        Создание и базовые операции       Методы      Задачи         References



Ещё несколько полезных методов

         s.trim убирает лишние пробелы в начале и в конце
         строки.
         s.empty?        проверяет, пуста ли строка.
         s.include?(other_s)           содержит ли строка подстроку
         other_s.
         Продвинутые методы:
         s.each do |char|         проходит по всем символам строки.
         s.each_line do |line|          проходит по всем строкам текста.
         s[1].chr      номер ASCII–символа.
         97.ord       перевод из ASCII–кода в символ.
         n     символ перевода строки (“ rn” в Windows).


                    Информатика 10-11 классы
Строки      Создание и базовые операции    Методы   Задачи     References



Задания

         Напишите программу, выводящую на экран среднюю
         длину слова в заданной строке (ответ представить в виде
         целой части получившегося числа).
         Напишите программу, выводящую на экран слова, чья
         длина превышает среднюю. В конце программы укажите
         число таких слов.
         (Повышенной сложности) Палиндромом называют слово
         (или буквосочетание), одинаково читающееся в обоих
         направлениях: топот, А роза упала на лапу Азора (Фет).
         Задача: вывести на экран все палиндромы–слова,
         встречающиеся в строке.
         (МегаПовышенной сложности) Вывести на экран все
         палиндромы (включая словосочетания), встречающиеся в
         строке.
                Информатика 10-11 классы
Строки      Создание и базовые операции    Методы   Задачи      References



References




         Все презентации доступны на http://school.smirik.ru!
         Вопросы, предложения, д/з: smirik@gmail.com
         Благодарности: ВикиУчебник, Википедия, Гугол, мозг.




                Информатика 10-11 классы

More Related Content

What's hot (18)

Алгоритмы на ruby: жадные алгоритмы
Алгоритмы на ruby: жадные алгоритмыАлгоритмы на ruby: жадные алгоритмы
Алгоритмы на ruby: жадные алгоритмы
Evgeny Smirnov
Ruby: основы ООП
Ruby: основы ООПRuby: основы ООП
Ruby: основы ООП
Evgeny Smirnov
элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данных
Елена Ключева
Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.
Unguryan Vitaliy
Конструирование алгоритмов
Конструирование алгоритмовКонструирование алгоритмов
Конструирование алгоритмов
Andrey Dolinin
Лекция 10 NP-полнота
Лекция 10 NP-полнотаЛекция 10 NP-полнота
Лекция 10 NP-полнота
simple_people
Программирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовПрограммирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмов
Andrey Dolinin
Java. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторыJava. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторы
Unguryan Vitaliy
Java. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операцииJava. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операции
Unguryan Vitaliy
Java. Методы
Java. Методы Java. Методы
Java. Методы
Unguryan Vitaliy
Общие сведения о языке программирования Паскаль
Общие сведения о языке программирования ПаскальОбщие сведения о языке программирования Паскаль
Общие сведения о языке программирования Паскаль
Andrey Dolinin
04 классическая логика предикатов
04 классическая логика предикатов04 классическая логика предикатов
04 классическая логика предикатов
Julia Gorbatova
Способы записи алгоритмов
Способы записи алгоритмовСпособы записи алгоритмов
Способы записи алгоритмов
Andrey Dolinin
Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"
Fwdays
введение в паскаль
введение в паскальвведение в паскаль
введение в паскаль
isva69
Рекурсия. Поиск
Рекурсия. ПоискРекурсия. Поиск
Рекурсия. Поиск
Olexandra Dmytrenko
Алгоритмы на ruby: жадные алгоритмы
Алгоритмы на ruby: жадные алгоритмыАлгоритмы на ruby: жадные алгоритмы
Алгоритмы на ruby: жадные алгоритмы
Evgeny Smirnov
элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данных
Елена Ключева
Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.
Unguryan Vitaliy
Конструирование алгоритмов
Конструирование алгоритмовКонструирование алгоритмов
Конструирование алгоритмов
Andrey Dolinin
Лекция 10 NP-полнота
Лекция 10 NP-полнотаЛекция 10 NP-полнота
Лекция 10 NP-полнота
simple_people
Программирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовПрограммирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмов
Andrey Dolinin
Java. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторыJava. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторы
Unguryan Vitaliy
Java. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операцииJava. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операции
Unguryan Vitaliy
Общие сведения о языке программирования Паскаль
Общие сведения о языке программирования ПаскальОбщие сведения о языке программирования Паскаль
Общие сведения о языке программирования Паскаль
Andrey Dolinin
04 классическая логика предикатов
04 классическая логика предикатов04 классическая логика предикатов
04 классическая логика предикатов
Julia Gorbatova
Способы записи алгоритмов
Способы записи алгоритмовСпособы записи алгоритмов
Способы записи алгоритмов
Andrey Dolinin
Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"
Fwdays
введение в паскаль
введение в паскальвведение в паскаль
введение в паскаль
isva69

Viewers also liked (20)

Вторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ruВторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ru
Alexander Shcherbinin
Мобильные приложения в школе
Мобильные приложения в школеМобильные приложения в школе
Мобильные приложения в школе
Evgeny Smirnov
NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.
Evgeny Smirnov
Go в автобусе
Go в автобусеGo в автобусе
Go в автобусе
Artem Kovardin
Codefest 2016 - Go в Openprovider
Codefest 2016 - Go в OpenproviderCodefest 2016 - Go в Openprovider
Codefest 2016 - Go в Openprovider
Igor Dolzhikov
Обзорная экскурсия по runit
Обзорная экскурсия по runitОбзорная экскурсия по runit
Обзорная экскурсия по runit
Alexander Shcherbinin
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнесРИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
Anton Piskunov
Golang
GolangGolang
Golang
Dmitry Kakunin
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует Go
Artem Kovardin
Dynamic Ruby. Lesson #1: Object model
Dynamic Ruby. Lesson #1: Object modelDynamic Ruby. Lesson #1: Object model
Dynamic Ruby. Lesson #1: Object model
Alex Mikitenko
Dynamic Inventory: no more host lists!
Dynamic Inventory: no more host lists!Dynamic Inventory: no more host lists!
Dynamic Inventory: no more host lists!
SATOSHI TAGOMORI
OOP в Go
OOP в GoOOP в Go
OOP в Go
Artem Kovardin
BeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демоновBeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демонов
Anton Piskunov
Go meetup smotri+ 23.04.2015
Go meetup smotri+ 23.04.2015Go meetup smotri+ 23.04.2015
Go meetup smotri+ 23.04.2015
Mikhail Salosin
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDkranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
Krivoy Rog IT Community
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
Krivoy Rog IT Community
Объектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyОбъектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в ruby
Evgeny Smirnov
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwords
Daniel Podolsky
Machine Learning in Magento 2
Machine Learning in Magento 2Machine Learning in Magento 2
Machine Learning in Magento 2
Alexander Makeev
Применение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахПрименение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектах
Alex Chistyakov
Вторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ruВторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ru
Alexander Shcherbinin
Мобильные приложения в школе
Мобильные приложения в школеМобильные приложения в школе
Мобильные приложения в школе
Evgeny Smirnov
NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.
Evgeny Smirnov
Codefest 2016 - Go в Openprovider
Codefest 2016 - Go в OpenproviderCodefest 2016 - Go в Openprovider
Codefest 2016 - Go в Openprovider
Igor Dolzhikov
Обзорная экскурсия по runit
Обзорная экскурсия по runitОбзорная экскурсия по runit
Обзорная экскурсия по runit
Alexander Shcherbinin
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнесРИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
Anton Piskunov
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует Go
Artem Kovardin
Dynamic Ruby. Lesson #1: Object model
Dynamic Ruby. Lesson #1: Object modelDynamic Ruby. Lesson #1: Object model
Dynamic Ruby. Lesson #1: Object model
Alex Mikitenko
Dynamic Inventory: no more host lists!
Dynamic Inventory: no more host lists!Dynamic Inventory: no more host lists!
Dynamic Inventory: no more host lists!
SATOSHI TAGOMORI
BeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демоновBeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демонов
Anton Piskunov
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDkranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
Krivoy Rog IT Community
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
Krivoy Rog IT Community
Объектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyОбъектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в ruby
Evgeny Smirnov
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwords
Daniel Podolsky
Применение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахПрименение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектах
Alex Chistyakov

Similar to Ruby строки (20)

Ada in education-09-oct06
Ada in education-09-oct06Ada in education-09-oct06
Ada in education-09-oct06
Pavel Zhukov
2013 09 21 языки программирования
2013 09 21 языки программирования 2013 09 21 языки программирования
2013 09 21 языки программирования
Yandex
Статический анализ и регулярные выражения
Статический анализ и регулярные выраженияСтатический анализ и регулярные выражения
Статический анализ и регулярные выражения
Tatyanazaxarova
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.
Unguryan Vitaliy
!Predictive analytics part_3
!Predictive analytics part_3!Predictive analytics part_3
!Predictive analytics part_3
Vladimir Krylov
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
Alexey Noskov
Презентация Neo4j на ADD-3
Презентация Neo4j на ADD-3Презентация Neo4j на ADD-3
Презентация Neo4j на ADD-3
Evgeny Gazdovsky
Яндекс Малый ШАД - лингвистика в поиске
Яндекс  Малый ШАД - лингвистика в поискеЯндекс  Малый ШАД - лингвистика в поиске
Яндекс Малый ШАД - лингвистика в поиске
Евгений Летов
Автоматическое извлечение синтаксических контекстов из текстовой коллекции
Автоматическое извлечение синтаксических контекстов из текстовой коллекцииАвтоматическое извлечение синтаксических контекстов из текстовой коллекции
Автоматическое извлечение синтаксических контекстов из текстовой коллекции
Спецсеминар "Искусственный Интеллект" кафедры АЯ ВМК МГУ
sphinx Hlpp2008
sphinx Hlpp2008sphinx Hlpp2008
sphinx Hlpp2008
Ontico
Функции в языке программирования QBasic
Функции в языке программирования QBasicФункции в языке программирования QBasic
Функции в языке программирования QBasic
kvlar
word2vec (part 1)
word2vec (part 1)word2vec (part 1)
word2vec (part 1)
Denis Dus
Внешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlibВнешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlib
Andrey Vlasovskikh
How to get knowledge and improve it all your professional life long
How to get knowledge and improve it all your professional life longHow to get knowledge and improve it all your professional life long
How to get knowledge and improve it all your professional life long
Timur Shemsedinov
Ada in education-09-oct06
Ada in education-09-oct06Ada in education-09-oct06
Ada in education-09-oct06
Pavel Zhukov
2013 09 21 языки программирования
2013 09 21 языки программирования 2013 09 21 языки программирования
2013 09 21 языки программирования
Yandex
Статический анализ и регулярные выражения
Статический анализ и регулярные выраженияСтатический анализ и регулярные выражения
Статический анализ и регулярные выражения
Tatyanazaxarova
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.
Unguryan Vitaliy
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
Alexey Noskov
Презентация Neo4j на ADD-3
Презентация Neo4j на ADD-3Презентация Neo4j на ADD-3
Презентация Neo4j на ADD-3
Evgeny Gazdovsky
Яндекс Малый ШАД - лингвистика в поиске
Яндекс  Малый ШАД - лингвистика в поискеЯндекс  Малый ШАД - лингвистика в поиске
Яндекс Малый ШАД - лингвистика в поиске
Евгений Летов
sphinx Hlpp2008
sphinx Hlpp2008sphinx Hlpp2008
sphinx Hlpp2008
Ontico
Функции в языке программирования QBasic
Функции в языке программирования QBasicФункции в языке программирования QBasic
Функции в языке программирования QBasic
kvlar
Внешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlibВнешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlib
Andrey Vlasovskikh
How to get knowledge and improve it all your professional life long
How to get knowledge and improve it all your professional life longHow to get knowledge and improve it all your professional life long
How to get knowledge and improve it all your professional life long
Timur Shemsedinov

More from Evgeny Smirnov (20)

Внедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатикиВнедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатики
Evgeny Smirnov
Инновации которые не мешают
Инновации которые не мешаютИнновации которые не мешают
Инновации которые не мешают
Evgeny Smirnov
Порядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системеПорядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системе
Evgeny Smirnov
Ruby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизмRuby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизм
Evgeny Smirnov
Мобильные приложения в образовании
Мобильные приложения в образованииМобильные приложения в образовании
Мобильные приложения в образовании
Evgeny Smirnov
Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2
Evgeny Smirnov
Мастер-класс: Anki карточки
Мастер-класс: Anki карточкиМастер-класс: Anki карточки
Мастер-класс: Anki карточки
Evgeny Smirnov
Мастер-класс: Quiz up
Мастер-класс: Quiz upМастер-класс: Quiz up
Мастер-класс: Quiz up
Evgeny Smirnov
Мастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox AlgebraМастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox Algebra
Evgeny Smirnov
Мастер-класс: начало
Мастер-класс: началоМастер-класс: начало
Мастер-класс: начало
Evgeny Smirnov
LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)
Evgeny Smirnov
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Evgeny Smirnov
Образовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методистуОбразовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методисту
Evgeny Smirnov
Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42
Evgeny Smirnov
Введение в алгоритмы
Введение в алгоритмыВведение в алгоритмы
Введение в алгоритмы
Evgeny Smirnov
Построение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицамПостроение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицам
Evgeny Smirnov
Функции для работы с электронными таблицами
Функции для работы с электронными таблицамиФункции для работы с электронными таблицами
Функции для работы с электронными таблицами
Evgeny Smirnov
Электронные таблицы
Электронные таблицыЭлектронные таблицы
Электронные таблицы
Evgeny Smirnov
Внедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатикиВнедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатики
Evgeny Smirnov
Инновации которые не мешают
Инновации которые не мешаютИнновации которые не мешают
Инновации которые не мешают
Evgeny Smirnov
Порядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системеПорядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системе
Evgeny Smirnov
Ruby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизмRuby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизм
Evgeny Smirnov
Мобильные приложения в образовании
Мобильные приложения в образованииМобильные приложения в образовании
Мобильные приложения в образовании
Evgeny Smirnov
Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2
Evgeny Smirnov
Мастер-класс: Anki карточки
Мастер-класс: Anki карточкиМастер-класс: Anki карточки
Мастер-класс: Anki карточки
Evgeny Smirnov
Мастер-класс: Quiz up
Мастер-класс: Quiz upМастер-класс: Quiz up
Мастер-класс: Quiz up
Evgeny Smirnov
Мастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox AlgebraМастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox Algebra
Evgeny Smirnov
Мастер-класс: начало
Мастер-класс: началоМастер-класс: начало
Мастер-класс: начало
Evgeny Smirnov
LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)
Evgeny Smirnov
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Evgeny Smirnov
Образовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методистуОбразовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методисту
Evgeny Smirnov
Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42
Evgeny Smirnov
Введение в алгоритмы
Введение в алгоритмыВведение в алгоритмы
Введение в алгоритмы
Evgeny Smirnov
Построение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицамПостроение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицам
Evgeny Smirnov
Функции для работы с электронными таблицами
Функции для работы с электронными таблицамиФункции для работы с электронными таблицами
Функции для работы с электронными таблицами
Evgeny Smirnov
Электронные таблицы
Электронные таблицыЭлектронные таблицы
Электронные таблицы
Evgeny Smirnov

Ruby строки

  • 1. Строки Создание и базовые операции Методы Задачи References Ruby: строки Информатика 10-11 классы 10 ноября 2011 г. Информатика 10-11 классы
  • 2. Строки Создание и базовые операции Методы Задачи References Строки Строки наиболее популярный тип в любом языке программирования. При вводе / выводе информации любой тип данных преобразуется в строку. Имя, фамилия, условие задачи и даже программа всё это строки. Строки очень похожи на массивы. Строка суть набор букв, то есть, массив. Поэтому работа со строками столь же проста в ruby, как и с массивами. Информатика 10-11 классы
  • 3. Строки Создание и базовые операции Методы Задачи References История о возможностях ruby Студенты четвёртого курса МЭТТ ГАИ поступили на подготовительные курсы в МГИУ. Там им начали преподавать основы программирования на Ruby. И одна из заданных им задач была: “Дано число, необходимо поменять порядок цифр на обратный”. Задача сложная, но наши студенты об этом не знали и решили её преобразованием к строке: given.to_s.reverse. Преподаватели были поражены и впредь запретили им использовать преобразования к строке в своих программах. И всё потому, что это сильно упрощало решение и давало студентам огромное преимущество перед остальными слушателями курсов. (ВикиУчебник) Информатика 10-11 классы
  • 4. Строки Создание и базовые операции Методы Задачи References Ruby это просто Информатика 10-11 классы
  • 5. Строки Создание и базовые операции Методы Задачи References Создание строк Простейший способ задания строки через кавычки ". Можно преобразовать число к строке с помощью to_s. В строках можно выводить значение переменных с помощью конструкции var Listing 1: Способы создания строки name = " Ivan Ivanov " age = 5 6 . to_s var = 35 puts " v a r = #{v a r }" Информатика 10-11 классы
  • 6. Строки Создание и базовые операции Методы Задачи References Конкатенация (сложение строк) Строки можно складывать. Следующая программа выведет на экран строку “Help us Obi Wan Kenobi”: Listing 2: Конкатенация строк h e l p = " Help us " p u t s h e l p + " Obi Wan Kenobi " Строки можно умножать на целые числа. Пример ниже выведет строку “axaxaxax”: Listing 3: Умножение строк p u t s " ax " ∗4 Информатика 10-11 классы
  • 7. Строки Создание и базовые операции Методы Задачи References Методы работы со строками s = “Во дворе - дрова, а в дровах - трава!”. Метод Описание (результат) s.size количество символов (33) s[3] четвёртый (с учётом нулевого) символ (д) s[−1] последний символ (в обратную сторону) (!) s[3..7] символы с 3-го по 7-й (дворе) s[3..7].reverse перевернуть (еровд) s.sub(“трава”, “мясо”) заменить одно слово “трава” на слово “мя- со” s.gsub(“а”, “о”) заменить все “а” на “о” s.split(“слово”) разделить строку по слову (вернёт массив подстрок) Информатика 10-11 классы
  • 8. Строки Создание и базовые операции Методы Задачи References Подсчёт количества слов Решим простую задачу о подсчёте количества слов в строке. Известно, что слова отделяются пробелами. Поэтому разобьём строку по пробелам и подсчитаем количество получившихся подстрок. Listing 4: Слова s = " A l l y o u r b a s e s a r e b e l o n g t o us ! " substrings_array = s . s p l i t (" ") puts substrings_array . s i z e Информатика 10-11 классы
  • 9. Строки Создание и базовые операции Методы Задачи References Жи-ши пиши с И Напишем программу, исправляющую некоторые ошибки в написании. Правила будут следующие: “жи–ши пиши с и, ча-ща пиши с а”. Для замены воспользуемся методом gsub. Listing 5: Правила s = "Начяльника , моя жыть хочет , дай денег на чяй ! " c o r r e c t _ s = s . gsub ( "жы" , "жи" ) . gsub ( "шы" , "ши" ) . gsub ( "чя" , "ча" ) . gsub ( "щя" , "ща" ) puts correct_s Информатика 10-11 классы
  • 10. Строки Создание и базовые операции Методы Задачи References Метод each Для прохода по массивам / строкам помимо уже изученных методов есть ещё несколько весьма полезных. Метод each позволяет пройтись по каждому элементу массива и выполнить какое–либо действие. По принципу он очень похож на методы map, inject и др. Посчитаем длину каждого слова в строке. Для этого разобьём строку на слова (в виде массива), а затем пройдёмся по массиву и посчитаем длину каждого слова. Информатика 10-11 классы
  • 11. Строки Создание и базовые операции Методы Задачи References Метод each Listing 6: Метод each краткая запись s = " T h i s i s SPARTA! " s_arr = s . s p l i t ( " " ) s _ a r r . e a c h { | elem | p u t s elem . s i z e } Listing 7: Метод each полная запись s = " T h i s i s SPARTA! " s_arr = s . s p l i t ( " " ) s _ a r r . e a c h do | elem | p u t s elem . s i z e end Информатика 10-11 классы
  • 12. Строки Создание и базовые операции Методы Задачи References Ещё несколько полезных методов s.trim убирает лишние пробелы в начале и в конце строки. s.empty? проверяет, пуста ли строка. s.include?(other_s) содержит ли строка подстроку other_s. Продвинутые методы: s.each do |char| проходит по всем символам строки. s.each_line do |line| проходит по всем строкам текста. s[1].chr номер ASCII–символа. 97.ord перевод из ASCII–кода в символ. n символ перевода строки (“ rn” в Windows). Информатика 10-11 классы
  • 13. Строки Создание и базовые операции Методы Задачи References Задания Напишите программу, выводящую на экран среднюю длину слова в заданной строке (ответ представить в виде целой части получившегося числа). Напишите программу, выводящую на экран слова, чья длина превышает среднюю. В конце программы укажите число таких слов. (Повышенной сложности) Палиндромом называют слово (или буквосочетание), одинаково читающееся в обоих направлениях: топот, А роза упала на лапу Азора (Фет). Задача: вывести на экран все палиндромы–слова, встречающиеся в строке. (МегаПовышенной сложности) Вывести на экран все палиндромы (включая словосочетания), встречающиеся в строке. Информатика 10-11 классы
  • 14. Строки Создание и базовые операции Методы Задачи References References Все презентации доступны на http://school.smirik.ru! Вопросы, предложения, д/з: smirik@gmail.com Благодарности: ВикиУчебник, Википедия, Гугол, мозг. Информатика 10-11 классы