SlideShare 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

Алгоритмы на 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
 
Общие сведения о языке программирования Паскаль
Общие сведения о языке программирования ПаскальОбщие сведения о языке программирования Паскаль
Общие сведения о языке программирования Паскаль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
 

What's hot (18)

Алгоритмы на ruby: жадные алгоритмы
Алгоритмы на ruby: жадные алгоритмыАлгоритмы на ruby: жадные алгоритмы
Алгоритмы на ruby: жадные алгоритмы
 
Ruby: основы ООП
Ruby: основы ООПRuby: основы ООП
Ruby: основы ООП
 
элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данных
 
Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.
 
Конструирование алгоритмов
Конструирование алгоритмовКонструирование алгоритмов
Конструирование алгоритмов
 
Лекция 10 NP-полнота
Лекция 10 NP-полнотаЛекция 10 NP-полнота
Лекция 10 NP-полнота
 
Программирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовПрограммирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмов
 
Java. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторыJava. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторы
 
Java. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операцииJava. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операции
 
десант презентация
десант презентациядесант презентация
десант презентация
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
Java. Методы
Java. Методы Java. Методы
Java. Методы
 
Общие сведения о языке программирования Паскаль
Общие сведения о языке программирования ПаскальОбщие сведения о языке программирования Паскаль
Общие сведения о языке программирования Паскаль
 
04 классическая логика предикатов
04 классическая логика предикатов04 классическая логика предикатов
04 классическая логика предикатов
 
Способы записи алгоритмов
Способы записи алгоритмовСпособы записи алгоритмов
Способы записи алгоритмов
 
Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"
 
введение в паскаль
введение в паскальвведение в паскаль
введение в паскаль
 
Рекурсия. Поиск
Рекурсия. ПоискРекурсия. Поиск
Рекурсия. Поиск
 

Viewers also liked

Вторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ruВторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ruAlexander 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 в OpenproviderIgor Dolzhikov
 
Обзорная экскурсия по runit
Обзорная экскурсия по runitОбзорная экскурсия по runit
Обзорная экскурсия по runitAlexander Shcherbinin
 
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнесРИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнесAnton Piskunov
 
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует GoArtem Kovardin
 
Dynamic Ruby. Lesson #1: Object model
Dynamic Ruby. Lesson #1: Object modelDynamic Ruby. Lesson #1: Object model
Dynamic Ruby. Lesson #1: Object modelAlex 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
 
Go meetup smotri+ 23.04.2015
Go meetup smotri+ 23.04.2015Go meetup smotri+ 23.04.2015
Go meetup smotri+ 23.04.2015Mikhail 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, BDDKrivoy Rog IT Community
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноKrivoy Rog IT Community
 
Объектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyОбъектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyEvgeny Smirnov
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsDaniel Podolsky
 
Machine Learning in Magento 2
Machine Learning in Magento 2Machine Learning in Magento 2
Machine Learning in Magento 2Alexander Makeev
 
Применение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахПрименение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахAlex Chistyakov
 

Viewers also liked (20)

Вторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ruВторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ru
 
Мобильные приложения в школе
Мобильные приложения в школеМобильные приложения в школе
Мобильные приложения в школе
 
NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.
 
Go в автобусе
Go в автобусеGo в автобусе
Go в автобусе
 
Codefest 2016 - Go в Openprovider
Codefest 2016 - Go в OpenproviderCodefest 2016 - Go в Openprovider
Codefest 2016 - Go в Openprovider
 
Обзорная экскурсия по runit
Обзорная экскурсия по runitОбзорная экскурсия по runit
Обзорная экскурсия по runit
 
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнесРИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
 
Golang
GolangGolang
Golang
 
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует Go
 
Dynamic Ruby. Lesson #1: Object model
Dynamic Ruby. Lesson #1: Object modelDynamic Ruby. Lesson #1: Object model
Dynamic Ruby. Lesson #1: Object model
 
Dynamic Inventory: no more host lists!
Dynamic Inventory: no more host lists!Dynamic Inventory: no more host lists!
Dynamic Inventory: no more host lists!
 
OOP в Go
OOP в GoOOP в Go
OOP в Go
 
BeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демоновBeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демонов
 
Go meetup smotri+ 23.04.2015
Go meetup smotri+ 23.04.2015Go meetup smotri+ 23.04.2015
Go meetup smotri+ 23.04.2015
 
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
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
 
Объектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyОбъектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в ruby
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwords
 
Machine Learning in Magento 2
Machine Learning in Magento 2Machine Learning in Magento 2
Machine Learning in Magento 2
 
Применение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахПрименение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектах
 

Similar to Ruby строки

Ada in education-09-oct06
Ada in education-09-oct06Ada in education-09-oct06
Ada in education-09-oct06Pavel 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_3Vladimir Krylov
 
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...Alexey Noskov
 
Презентация Neo4j на ADD-3
Презентация Neo4j на ADD-3Презентация Neo4j на ADD-3
Презентация Neo4j на ADD-3Evgeny Gazdovsky
 
Яндекс Малый ШАД - лингвистика в поиске
Яндекс  Малый ШАД - лингвистика в поискеЯндекс  Малый ШАД - лингвистика в поиске
Яндекс Малый ШАД - лингвистика в поискеЕвгений Летов
 
sphinx Hlpp2008
sphinx Hlpp2008sphinx Hlpp2008
sphinx Hlpp2008Ontico
 
Функции в языке программирования QBasic
Функции в языке программирования QBasicФункции в языке программирования QBasic
Функции в языке программирования QBasickvlar
 
word2vec (part 1)
word2vec (part 1)word2vec (part 1)
word2vec (part 1)Denis Dus
 
Внешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlibВнешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlibAndrey 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 longTimur Shemsedinov
 

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

Ada in education-09-oct06
Ada in education-09-oct06Ada in education-09-oct06
Ada in education-09-oct06
 
2013 09 21 языки программирования
2013 09 21 языки программирования 2013 09 21 языки программирования
2013 09 21 языки программирования
 
Статический анализ и регулярные выражения
Статический анализ и регулярные выраженияСтатический анализ и регулярные выражения
Статический анализ и регулярные выражения
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.
 
лек7
лек7лек7
лек7
 
лек7
лек7лек7
лек7
 
лек8
лек8лек8
лек8
 
!Predictive analytics part_3
!Predictive analytics part_3!Predictive analytics part_3
!Predictive analytics part_3
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
 
Презентация Neo4j на ADD-3
Презентация Neo4j на ADD-3Презентация Neo4j на ADD-3
Презентация Neo4j на ADD-3
 
Яндекс Малый ШАД - лингвистика в поиске
Яндекс  Малый ШАД - лингвистика в поискеЯндекс  Малый ШАД - лингвистика в поиске
Яндекс Малый ШАД - лингвистика в поиске
 
Автоматическое извлечение синтаксических контекстов из текстовой коллекции
Автоматическое извлечение синтаксических контекстов из текстовой коллекцииАвтоматическое извлечение синтаксических контекстов из текстовой коллекции
Автоматическое извлечение синтаксических контекстов из текстовой коллекции
 
sphinx Hlpp2008
sphinx Hlpp2008sphinx Hlpp2008
sphinx Hlpp2008
 
Функции в языке программирования QBasic
Функции в языке программирования QBasicФункции в языке программирования QBasic
Функции в языке программирования QBasic
 
Ruwikt
RuwiktRuwikt
Ruwikt
 
word2vec (part 1)
word2vec (part 1)word2vec (part 1)
word2vec (part 1)
 
ООП_лекция_11
ООП_лекция_11ООП_лекция_11
ООП_лекция_11
 
Внешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlibВнешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlib
 
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
 

More from 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, ч.2Evgeny Smirnov
 
Мастер-класс: Anki карточки
Мастер-класс: Anki карточкиМастер-класс: Anki карточки
Мастер-класс: Anki карточкиEvgeny Smirnov
 
Мастер-класс: Quiz up
Мастер-класс: Quiz upМастер-класс: Quiz up
Мастер-класс: Quiz upEvgeny Smirnov
 
Мастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox AlgebraМастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox AlgebraEvgeny Smirnov
 
Мастер-класс: начало
Мастер-класс: началоМастер-класс: начало
Мастер-класс: началоEvgeny Smirnov
 
LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)Evgeny Smirnov
 
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Evgeny Smirnov
 
Образовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методистуОбразовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методистуEvgeny Smirnov
 
Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Evgeny Smirnov
 
Введение в алгоритмы
Введение в алгоритмыВведение в алгоритмы
Введение в алгоритмыEvgeny Smirnov
 
Построение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицамПостроение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицамEvgeny Smirnov
 
Функции для работы с электронными таблицами
Функции для работы с электронными таблицамиФункции для работы с электронными таблицами
Функции для работы с электронными таблицамиEvgeny Smirnov
 
Электронные таблицы
Электронные таблицыЭлектронные таблицы
Электронные таблицыEvgeny Smirnov
 

More from Evgeny Smirnov (20)

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

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 классы