SlideShare a Scribd company logo
1 of 16
Download to read offline
Базовые сведения                Методы                Задачи   References




                                 Ruby: массивы

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


                                 20 октября 2011 г.




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



Введение

           Одним из базовых типов переменных является массив.
           Ранее мы рассматривали переменные типа число (integer,
           float), немного строки (string).
           (Формально): Массив ряд переменных, доступ к
           которым определён по индексу.
           (Упрощённо): Массив группа переменных,
           пронумеранных начиная с нуля, хранящихся в единой
           переменной.
           Массивы позволяют упростить доступ к однотипным
           данным.
           Например, в виде массива легко хранить температуру за
           30 последних дней.
           Массивы бывают двумерными          когда элементы массива
           сами являются массивами.
                   Информатика 10-11 классы
Базовые сведения                 Методы                      Задачи                    References



Табличная форма


                                      Рассмотрим массив, состоящий из 5
                                      элементов (см. таблицу слева)
                                      В ruby такой массив записывается
       Ключ        Значение           следующим образом:
         0            5.3
         1            4.2        Listing 1: Создание массива
         2            2.0
                                               a r r = [ 5 . 3 , 4 . 2 , 2 . 0 , −0.8 , 1 . 5 ]
         3           -0.8
         4            1.5             где arr        название массива.
                                      Чтобы вывести на экран, например,
                                      элемент с ключом 3 достаточно
                                      написать puts arr[3]:


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



Создание массива
           Зададим массив, состоящий из 6 последовательных
           натуральных чисел.

      Listing 2: Способы создания массива
            arr = [1 ,2 ,3 ,4 ,5 ,6]

            arr     =    A r r a y . new
            arr    [0]    = 1
            arr    [1]    = 2
            arr    []     = 3
            ...

            a r r = ( 1 . . 6 ) . to_a

           1 способ обычный, 2 ручной (обратите внимание, что
           ключ при добавлении элемента в конец указывать
           необязательно), 3 через диапазон.
                         Информатика 10-11 классы
Базовые сведения                 Методы        Задачи           References



Методы
           Чтобы изменить массив, к нему нужно применить так
           называемый метод.
           Метод это то, что меняет переменную по заданному
           правилу.
           Например, метод sort сортирует массив.
           Для разных типов переменных могут быть разные методы.
           Чтобы применить к переменной var метод method
           достаточно написать:

      Listing 3: Применение метода
            v a r . method

           Обратите внимание! Обычный метод не меняет саму
           переменную. Хотите изменить присвойте результат
           другой переменной или этой же самой (var = var.method)
                    Информатика 10-11 классы
Базовые сведения                Методы           Задачи               References



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

           Рассмотрим массив arr = [6,3,5,1,2,4].
       Метод                Описание                      Результат
       arr.size             количество элементов                6
       arr.min              минимальный элемент                 1
       arr.max              максимальный элемент                6
       arr.sort             сортировка                    [1,2,3,4,5,6]
       arr.reverse          перевернуть                   [4,2,1,5,3,6]
       arr.sort.reverse     отсортировать и перевернуть   [6,5,4,3,2,1]
       arr.include?(6)      есть ли в массиве элемент 6       true
       arr.empty?           пуст ли массив                    false
       arr.any?             есть ли хоть один элемент         true
       arr.delete(6)        удалить элемент 6*             [3,5,1,2,4]
       arr.delete_at(1)     удалить элемент с ключом 1     [6,5,1,2,4]

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



Сумма

           Допустим дана средняя температура за 5 дней: arr = [5.3,
           2.1, 5.2, 1.8, -0.2].
           Как вычислить сумму?

      Listing 4: Сумма
             a r r = [ 5 . 3 , 2 . 1 , 5 . 2 , 1 . 8 , −0.2]
             sum = a r r . i n j e c t ( 0 ) { | r e s , elem | r e s+elem }


                                          res=0

                                по всем элементам массива

                                                            res=res+elem




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



Разбор метода inject

      Listing 5: Общий вид inject
            r e s = a r r . i n j e c t ( s t a r t ) { | r e s u l t , element | e x p r e s s i o n }

           start чему изначально равна переменная result.
           Например, если внутри inject вы будете умножать, то
           нельзя делать переменную равной нулю, так как ноль
           умножить на любое число ноль.
           result переменная, в которую записывается результат.
           element текущий элемент массива (переменная меняется
           с каждой итерацией).
           expression выражение для переменных result и element.
           Обратите внимание! На этом слайде названия
           переменных и выражение даны в виде схемы! Реальный
           пример на предыдущем слайде.
                      Информатика 10-11 классы
Базовые сведения                Методы        Задачи             References



Задания




           Напишите программу, вычисляющую с помощью inject
           произведение элементов массива (массив можно задать
           любой).
           Напишите программу, вычисляющую среднее
           арифметическое и среднее геометрическое элементов
           массива.




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



Поиск элементов

           В ряде задач нам нужно извлечь из массива определённые
           элементы.
           Допустим дана средняя температура за 5 дней: arr = [5.3,
           2.1, 1.2, -0.8, -0.2].
           Вычислим, сколько дней была отрицательная температура.

      Listing 6: Метод find_all
            a r r = [ 5 . 3 , 2 . 1 , 1 . 2 , −0.8 , −0.2]
            a r r _ n e g = a r r . f i n d _ a l l { | elem | ( elem < 0 ) }
            puts arr_neg . s i z e

            p u t s [ 5 . 3 , 2 . 1 , 1 . 2 , −0.8 , − 0 . 2 ] .
                    f i n d _ a l l { | elem | ( elem > 0 ) } . s i z e


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



Разбор метода find_all


      Listing 7: Общий вид find_all
            arr_res = a r r . f i n d _ a l l { | element | c o n d i t i o n }

           element текущий (рассматриваемый) элемент массива
           (переменная меняется с каждой итерацией).
           condition логическое выражение или несколько
           выражений, связанных логическими операциями
           (конъюнкция, дизъюнкция, отрицание).
           Метод извлекает из массива arr все элементы,
           удовлетворяющие условию condition, и записывает
           результат в массив arr_res.



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



Задания




           Дан массив из 10 целых чисел (любых). Вывести на экран
           все элементы массива, меньшие нуля и делящиеся на три.
           Дан массив из 10 целых чисел (любых). Вывести на экран
           сумму все чётных положительных элементов массива.




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



Изменение элементов массива


           Предположим, у нас есть массив цен на нефть в долларах
           США за последние 5 дней.
           Как перевести все цены в рубли, зная курс рубля по
           отношению к доллару?

      Listing 8: Метод map
            arr = [99.23 , 101.42 , 99.87 , 96.49 , 95.11]
            usd_to_rub = 3 1 . 2 3
            a r r _ i n _ r u b = a r r . map { | elem | elem ∗ usd_to_rub }
            puts arr_in_rub




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



Разбор метода map


      Listing 9: Общий вид map
            a r r _ r e s = a r r . map { | e l e m e n t | e x p r e s s i o n }

           element текущий (рассматриваемый) элемент массива
           (переменная меняется с каждой итерацией).
           expression выражение, показывающее, как надо менять
           элемент массива.
           Метод проходит по всему массиву arr и меняет каждый
           элемент в соответствии с выражением expression.
           Результат записывается в массив arr_res.



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



Задания




           Дан массив температуры за последние 10 дней (любые
           разумные числа) в градусах по Цельсию. Вывести на экран
           температуру на каждый день в градусах по Фаренгейту и
           по Кельвину.




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



References




           Все презентации доступны на http://school.smirik.ru!
           Вопросы, предложения, д/з: smirik@gmail.com




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

More Related Content

What's hot

элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данных
Елена Ключева
 

What's hot (18)

элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данных
 
Java. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторыJava. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторы
 
Динамическое программирование на ruby
Динамическое программирование на rubyДинамическое программирование на ruby
Динамическое программирование на ruby
 
Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.
 
Рекурсия. Поиск
Рекурсия. ПоискРекурсия. Поиск
Рекурсия. Поиск
 
Java. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операцииJava. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операции
 
Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.
 
Java. Методы
Java. Методы Java. Методы
Java. Методы
 
Конструирование алгоритмов
Конструирование алгоритмовКонструирование алгоритмов
Конструирование алгоритмов
 
Запись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка ПаскальЗапись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка Паскаль
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.
 
Ruby: основы ООП
Ruby: основы ООПRuby: основы ООП
Ruby: основы ООП
 
java 8
java 8java 8
java 8
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
Программирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовПрограммирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмов
 
Алгоритмы и языки программирования
Алгоритмы и языки программированияАлгоритмы и языки программирования
Алгоритмы и языки программирования
 
дистанционка
дистанционкадистанционка
дистанционка
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.
 

Viewers also liked

Вторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ruВторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ru
Alexander Shcherbinin
 
Основы математической логики
Основы математической логикиОсновы математической логики
Основы математической логики
Evgeny Smirnov
 
Электронные таблицы
Электронные таблицыЭлектронные таблицы
Электронные таблицы
Evgeny Smirnov
 
Основы формальной и математической логи
Основы формальной и математической логиОсновы формальной и математической логи
Основы формальной и математической логи
Evgeny Smirnov
 
Логические задачи
Логические задачиЛогические задачи
Логические задачи
Evgeny Smirnov
 
Введение в алгоритмы
Введение в алгоритмыВведение в алгоритмы
Введение в алгоритмы
Evgeny Smirnov
 

Viewers also liked (20)

Вторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ruВторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ru
 
Мобильные приложения в школе
Мобильные приложения в школеМобильные приложения в школе
Мобильные приложения в школе
 
Хэши в ruby
Хэши в rubyХэши в ruby
Хэши в ruby
 
Основы математической логики
Основы математической логикиОсновы математической логики
Основы математической логики
 
Электронные таблицы
Электронные таблицыЭлектронные таблицы
Электронные таблицы
 
Основы формальной и математической логи
Основы формальной и математической логиОсновы формальной и математической логи
Основы формальной и математической логи
 
25 интернет сервисов
25 интернет сервисов25 интернет сервисов
25 интернет сервисов
 
Логические задачи
Логические задачиЛогические задачи
Логические задачи
 
Введение в алгоритмы
Введение в алгоритмыВведение в алгоритмы
Введение в алгоритмы
 
Блок-схемы
Блок-схемыБлок-схемы
Блок-схемы
 
NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.
 
ФРИИ интернет предпринимательство - Целевая аудитория.Сегментация и профиль п...
ФРИИ интернет предпринимательство - Целевая аудитория.Сегментация и профиль п...ФРИИ интернет предпринимательство - Целевая аудитория.Сегментация и профиль п...
ФРИИ интернет предпринимательство - Целевая аудитория.Сегментация и профиль п...
 
ФРИИ интернет предпринимательство - Ценностное предложение
ФРИИ интернет предпринимательство - Ценностное предложениеФРИИ интернет предпринимательство - Ценностное предложение
ФРИИ интернет предпринимательство - Ценностное предложение
 
Codefest 2016 - Go в Openprovider
Codefest 2016 - Go в OpenproviderCodefest 2016 - Go в Openprovider
Codefest 2016 - Go в Openprovider
 
Go в автобусе
Go в автобусеGo в автобусе
Go в автобусе
 
Обзорная экскурсия по runit
Обзорная экскурсия по runitОбзорная экскурсия по runit
Обзорная экскурсия по runit
 
Golang
GolangGolang
Golang
 
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнесРИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
 
Как ВКонтакте использует 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
 

Similar to Ruby: работа с массивами

Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Java
metaform
 
Практикум по выполнению блока с информатика
Практикум по выполнению блока с информатикаПрактикум по выполнению блока с информатика
Практикум по выполнению блока с информатика
Екатерина Луговова
 
Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2
Technopark
 
лабораторная работа №7
лабораторная работа №7лабораторная работа №7
лабораторная работа №7
Gulnaz Shakirova
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1
Technopark
 
массивы в паскале
массивы в паскалемассивы в паскале
массивы в паскале
Ann Eres
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
Technopark
 
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Nikolay Grebenshikov
 
291 цикл уроков на тему массивы
291 цикл уроков на тему  массивы291 цикл уроков на тему  массивы
291 цикл уроков на тему массивы
sany0507
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013
AliyaAringazinova
 
Презентация на тему: Методические особенности подготовки учащихся к выполнени...
Презентация на тему: Методические особенности подготовки учащихся к выполнени...Презентация на тему: Методические особенности подготовки учащихся к выполнени...
Презентация на тему: Методические особенности подготовки учащихся к выполнени...
2berkas
 

Similar to Ruby: работа с массивами (20)

Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Java
 
04 array
04 array04 array
04 array
 
87
8787
87
 
Основы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторыОсновы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторы
 
Практикум по выполнению блока с информатика
Практикум по выполнению блока с информатикаПрактикум по выполнению блока с информатика
Практикум по выполнению блока с информатика
 
Основы NumPy
Основы NumPyОсновы NumPy
Основы NumPy
 
Одномерные массивы целых чисел
Одномерные массивы целых чиселОдномерные массивы целых чисел
Одномерные массивы целых чисел
 
Алгоритмы поиска
Алгоритмы поискаАлгоритмы поиска
Алгоритмы поиска
 
Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2
 
лабораторная работа №7
лабораторная работа №7лабораторная работа №7
лабораторная работа №7
 
лабораторная работа №7
лабораторная работа №7лабораторная работа №7
лабораторная работа №7
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1
 
массивы в паскале
массивы в паскалемассивы в паскале
массивы в паскале
 
ввод и вывод элементов массива
ввод и вывод элементов массиваввод и вывод элементов массива
ввод и вывод элементов массива
 
массив
массивмассив
массив
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
 
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
 
291 цикл уроков на тему массивы
291 цикл уроков на тему  массивы291 цикл уроков на тему  массивы
291 цикл уроков на тему массивы
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013
 
Презентация на тему: Методические особенности подготовки учащихся к выполнени...
Презентация на тему: Методические особенности подготовки учащихся к выполнени...Презентация на тему: Методические особенности подготовки учащихся к выполнени...
Презентация на тему: Методические особенности подготовки учащихся к выполнени...
 

More from 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
 
Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42
Evgeny Smirnov
 
Построение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицамПостроение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицам
Evgeny Smirnov
 
Функции для работы с электронными таблицами
Функции для работы с электронными таблицамиФункции для работы с электронными таблицами
Функции для работы с электронными таблицами
Evgeny Smirnov
 
Импликация и логические уравнения
Импликация и логические уравненияИмпликация и логические уравнения
Импликация и логические уравнения
Evgeny Smirnov
 

More from Evgeny Smirnov (20)

Внедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатикиВнедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатики
 
Инновации которые не мешают
Инновации которые не мешаютИнновации которые не мешают
Инновации которые не мешают
 
Порядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системеПорядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системе
 
Ruby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизмRuby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизм
 
Объектно-ориентированное программирование в 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
 
Построение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицамПостроение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицам
 
Функции для работы с электронными таблицами
Функции для работы с электронными таблицамиФункции для работы с электронными таблицами
Функции для работы с электронными таблицами
 
LMS42 в школьном образовании
LMS42 в школьном образованииLMS42 в школьном образовании
LMS42 в школьном образовании
 
Импликация и логические уравнения
Импликация и логические уравненияИмпликация и логические уравнения
Импликация и логические уравнения
 

Ruby: работа с массивами

  • 1. Базовые сведения Методы Задачи References Ruby: массивы Информатика 10-11 классы 20 октября 2011 г. Информатика 10-11 классы
  • 2. Базовые сведения Методы Задачи References Введение Одним из базовых типов переменных является массив. Ранее мы рассматривали переменные типа число (integer, float), немного строки (string). (Формально): Массив ряд переменных, доступ к которым определён по индексу. (Упрощённо): Массив группа переменных, пронумеранных начиная с нуля, хранящихся в единой переменной. Массивы позволяют упростить доступ к однотипным данным. Например, в виде массива легко хранить температуру за 30 последних дней. Массивы бывают двумерными когда элементы массива сами являются массивами. Информатика 10-11 классы
  • 3. Базовые сведения Методы Задачи References Табличная форма Рассмотрим массив, состоящий из 5 элементов (см. таблицу слева) В ruby такой массив записывается Ключ Значение следующим образом: 0 5.3 1 4.2 Listing 1: Создание массива 2 2.0 a r r = [ 5 . 3 , 4 . 2 , 2 . 0 , −0.8 , 1 . 5 ] 3 -0.8 4 1.5 где arr название массива. Чтобы вывести на экран, например, элемент с ключом 3 достаточно написать puts arr[3]: Информатика 10-11 классы
  • 4. Базовые сведения Методы Задачи References Создание массива Зададим массив, состоящий из 6 последовательных натуральных чисел. Listing 2: Способы создания массива arr = [1 ,2 ,3 ,4 ,5 ,6] arr = A r r a y . new arr [0] = 1 arr [1] = 2 arr [] = 3 ... a r r = ( 1 . . 6 ) . to_a 1 способ обычный, 2 ручной (обратите внимание, что ключ при добавлении элемента в конец указывать необязательно), 3 через диапазон. Информатика 10-11 классы
  • 5. Базовые сведения Методы Задачи References Методы Чтобы изменить массив, к нему нужно применить так называемый метод. Метод это то, что меняет переменную по заданному правилу. Например, метод sort сортирует массив. Для разных типов переменных могут быть разные методы. Чтобы применить к переменной var метод method достаточно написать: Listing 3: Применение метода v a r . method Обратите внимание! Обычный метод не меняет саму переменную. Хотите изменить присвойте результат другой переменной или этой же самой (var = var.method) Информатика 10-11 классы
  • 6. Базовые сведения Методы Задачи References Методы работы с массивом Рассмотрим массив arr = [6,3,5,1,2,4]. Метод Описание Результат arr.size количество элементов 6 arr.min минимальный элемент 1 arr.max максимальный элемент 6 arr.sort сортировка [1,2,3,4,5,6] arr.reverse перевернуть [4,2,1,5,3,6] arr.sort.reverse отсортировать и перевернуть [6,5,4,3,2,1] arr.include?(6) есть ли в массиве элемент 6 true arr.empty? пуст ли массив false arr.any? есть ли хоть один элемент true arr.delete(6) удалить элемент 6* [3,5,1,2,4] arr.delete_at(1) удалить элемент с ключом 1 [6,5,1,2,4] Информатика 10-11 классы
  • 7. Базовые сведения Методы Задачи References Сумма Допустим дана средняя температура за 5 дней: arr = [5.3, 2.1, 5.2, 1.8, -0.2]. Как вычислить сумму? Listing 4: Сумма a r r = [ 5 . 3 , 2 . 1 , 5 . 2 , 1 . 8 , −0.2] sum = a r r . i n j e c t ( 0 ) { | r e s , elem | r e s+elem } res=0 по всем элементам массива res=res+elem Информатика 10-11 классы
  • 8. Базовые сведения Методы Задачи References Разбор метода inject Listing 5: Общий вид inject r e s = a r r . i n j e c t ( s t a r t ) { | r e s u l t , element | e x p r e s s i o n } start чему изначально равна переменная result. Например, если внутри inject вы будете умножать, то нельзя делать переменную равной нулю, так как ноль умножить на любое число ноль. result переменная, в которую записывается результат. element текущий элемент массива (переменная меняется с каждой итерацией). expression выражение для переменных result и element. Обратите внимание! На этом слайде названия переменных и выражение даны в виде схемы! Реальный пример на предыдущем слайде. Информатика 10-11 классы
  • 9. Базовые сведения Методы Задачи References Задания Напишите программу, вычисляющую с помощью inject произведение элементов массива (массив можно задать любой). Напишите программу, вычисляющую среднее арифметическое и среднее геометрическое элементов массива. Информатика 10-11 классы
  • 10. Базовые сведения Методы Задачи References Поиск элементов В ряде задач нам нужно извлечь из массива определённые элементы. Допустим дана средняя температура за 5 дней: arr = [5.3, 2.1, 1.2, -0.8, -0.2]. Вычислим, сколько дней была отрицательная температура. Listing 6: Метод find_all a r r = [ 5 . 3 , 2 . 1 , 1 . 2 , −0.8 , −0.2] a r r _ n e g = a r r . f i n d _ a l l { | elem | ( elem < 0 ) } puts arr_neg . s i z e p u t s [ 5 . 3 , 2 . 1 , 1 . 2 , −0.8 , − 0 . 2 ] . f i n d _ a l l { | elem | ( elem > 0 ) } . s i z e Информатика 10-11 классы
  • 11. Базовые сведения Методы Задачи References Разбор метода find_all Listing 7: Общий вид find_all arr_res = a r r . f i n d _ a l l { | element | c o n d i t i o n } element текущий (рассматриваемый) элемент массива (переменная меняется с каждой итерацией). condition логическое выражение или несколько выражений, связанных логическими операциями (конъюнкция, дизъюнкция, отрицание). Метод извлекает из массива arr все элементы, удовлетворяющие условию condition, и записывает результат в массив arr_res. Информатика 10-11 классы
  • 12. Базовые сведения Методы Задачи References Задания Дан массив из 10 целых чисел (любых). Вывести на экран все элементы массива, меньшие нуля и делящиеся на три. Дан массив из 10 целых чисел (любых). Вывести на экран сумму все чётных положительных элементов массива. Информатика 10-11 классы
  • 13. Базовые сведения Методы Задачи References Изменение элементов массива Предположим, у нас есть массив цен на нефть в долларах США за последние 5 дней. Как перевести все цены в рубли, зная курс рубля по отношению к доллару? Listing 8: Метод map arr = [99.23 , 101.42 , 99.87 , 96.49 , 95.11] usd_to_rub = 3 1 . 2 3 a r r _ i n _ r u b = a r r . map { | elem | elem ∗ usd_to_rub } puts arr_in_rub Информатика 10-11 классы
  • 14. Базовые сведения Методы Задачи References Разбор метода map Listing 9: Общий вид map a r r _ r e s = a r r . map { | e l e m e n t | e x p r e s s i o n } element текущий (рассматриваемый) элемент массива (переменная меняется с каждой итерацией). expression выражение, показывающее, как надо менять элемент массива. Метод проходит по всему массиву arr и меняет каждый элемент в соответствии с выражением expression. Результат записывается в массив arr_res. Информатика 10-11 классы
  • 15. Базовые сведения Методы Задачи References Задания Дан массив температуры за последние 10 дней (любые разумные числа) в градусах по Цельсию. Вывести на экран температуру на каждый день в градусах по Фаренгейту и по Кельвину. Информатика 10-11 классы
  • 16. Базовые сведения Методы Задачи References References Все презентации доступны на http://school.smirik.ru! Вопросы, предложения, д/з: smirik@gmail.com Информатика 10-11 классы