ݺߣ

ݺߣShare a Scribd company logo
Базовые сведения                Методы                Задачи   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

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