Основные методы работы с массивами в ruby. Примеры задач.
1 of 16
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 классы