Массивы

Мы изучили базовые типы данных такие как Boolean, String, Integer и изучили последовательность Range. Давайте поговорим про базовую структуру данных - массив.

Массив (Array) - множество значений объединенных в одной структуре данных. По сути это структура, которая содержит в себе упорядоченное множество элементов. Это может быть массив строк, или массив чисел, а может включать и то и то. Хорошей практикой является хранить в массиве элементы одного и того же типа данных, так как часто приходится обрабатывать этот массив, а если в нем содержатся и строки и числа, то поведение программы поменяется. Пожалуй проще всего представлять массив на большую коробку, в которой есть набор маленьких коробок, внутри которых содержится значение

# способ создания массива
 # как можно увидеть, при создании мы перендаем сразу несколько значений
arr = Array.new(1, 2, 3, 4)

# Ранее мы работали с циклом на примере Range
# Но массив как и Range это лишь один из варианта реализации множества
for x in arr
  # В данном случае мы сначала распечатаем 1, потом 2, потом 3, потом 4
  puts x
end

# А этог упрощенный способ создания массивов
arr_simplify = [5, 6, 7, 8]

for x in arr_simplify
  # В данном случае мы сначала распечатаем 5, потом 6, потом 7, потом 8
  puts x
end

Мы также можем получать полезную информацию о массиве, например его длину. Важно длина массива соответсвует реальному размеру, а не индексу. Важно всегда про это помнить, чтобы не допускать ошибки

Кроме того мы можем получать точечный доступ к нашим элементам по его индексу. Индекс - местоположение элемента по счету. Так как массив это упорядоченная структура данных, то элементы расположены строго в том порядке, в каком они были добавлены. Важно индекс массива начнается с 0, а не с 1 как это можно подумать.

Можно подумать, что примеров использования у массива не так много, но давайте посмотрим на пример конструкции (метода) .split у String:

Даже если пойти немного глубже, то можно выяснить, что сама по себе строка это всего лишь массив симолов и работать мы можем с ней точно также как и с массивом

Также массив это изменяемая структура. Мы можем добавлять новые элементы, изменять значения, удалять элементы.

А что будем если изменить индекс, которого не существует ?

Старайтесь аккуратнее работать с массивом на уровне индексов, так как в последующем при обработке массива придется лишний раз проверять является ли элемент nil или нет, что заметно усложнит структуру кода.

Как мы помним массив может содержать любые значения в себе, в том числе и сам массив или любую другую структуру данных, как и любая другая структура данных может хранить в себе массив. Массив, который содержит себе вложенный массив называется двумерным, массив, который состоит из массивов, которые состоят из массивов называется трехмерный и тд.

Задание reverse

  • Получите из консоли введенную пользователем строку и разбейте ее на массив слов

  • разверните массив в обратную сторону

  • *Реализуйте 2 пункт с помощью инструментов из урока не прибегая к использованию новых

Пример:

Hello world -> [Hello, world] -> [world, Hello]

Задание med_clinic

  • Создайте массив типа Float с температурами 30 пациентов (от 32 до 40 градусов).

  • Напишите код, который выводит среднюю температуру по больнице и количество здоровых пациентов (с температурой от 36,2 до 36,9), а также температуры всех пациентов.

Рекомендации:

  • Помним про rand(...)

  • При написании программы выносите 'магические числа' в отдельные переменные

Задание cross

Создайте с помощью циклов двумерный массив строк. При его распечатке в консоли должен выводиться крестик из X:

Задание todo_list

Разработайте список дел, который управляется командами в консоли. Команды: LIST, ADD, EDIT, DELETE.

Принцип работы команд:

  • LIST — выводит дела с их порядковыми номерами;

  • ADD — добавляет дело в конец списка или дело на определённое место, сдвигая остальные дела вперёд, если указать номер;

  • EDIT — заменяет дело с указанным номером;

  • DELETE — удаляет.

Примеры команд

  • LIST

  • ADD Какое-то дело

  • ADD 4 Какое-то дело на четвёртом месте

  • EDIT 3 Новое название дела

  • DELETE 7 Команды вводятся одной строкой пользователем в консоль.

Дополнительный материал

Last updated