Массивы (Презентации)
Описание файла
Файл "Массивы" внутри архива находится в папке "Презентации". PDF-файл из архива "Презентации", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве МПУ. Не смотря на прямую связь этого архива с МПУ, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "информатика" в общих файлах.
Просмотр PDF-файла онлайн
Текст из PDF
ПрограммированиеМассивыМассивыМассивы - экземпляры класса Array. Массивесть просто коллекция (набор) элементов, вкотором доступ к элементу возможен по егономеру (целому числу). Нумерация элементовмассива начинается с нуля.Массив в Ruby может содержать элементы,принадлежащие различным классам.Создание массиваЧтобы создать экземпляр класса Array, егоэлементы, разделенные запятыми, заключаютв квадратные скобки, например, [1, 2, 3].Можно только создать массив, не заполняяего элементами, например,a=[]b = Array.new()d = Array.new(5)pd# => [nil, nil, nil, nil, nil]Печать массиваar = [1,2,3,4,5,6,7]for a in ar doputs aendputs arp arОсобенно удобен метод p, отображающийструктуру массива.
Однако и у него естьнедостаток - вместо русских букв он печатаетих ASCII-коды.Создание массива строкДлязаданиямассивастрокможноиспользоватьформусиспользованиемвыражения %w: запись %w(раз два три)эквивалентна записи ["раз", "два", "три"].Между символом %w и открывающей скобкойне должно быть пробела.ar = %w(раз два три)Доступ к элементам массиваПолучение элемента с указанным индексомосуществляется методом at или его синонимом[ ], например, a.at(0) или a[0]. Если аргументявляется отрицательным числом, то индексотсчитывается с конца.a = ["a", "b", "c", "d"]puts a[-2]# => cprint a[0 .. 2] # => abcprint a[2, 2]# => cdДобавление и удаление элементаиз конца массиваМетод push и его синоним << добавляютэлементы в конец массива.
Метод popвозвращает последний элемент массива,удаляя его из массива.a = ["a", "b"]a.push("c", "d") # => ["a", "b", "c", "d"]a << 1# => ["a", "b", "c", "d", 1]b = [1, 2, 3]p b.pop# => 3pb# => [1, 2]Добавление и удаление элементаиз начала массиваМетод unshift добавляет элемент в началомассива со сдвигом остальных, а метод shift возвращает первый элемент, удаляя его измассива.a = ["b", "c"];p a.unshift("a")b = ["b", "c"];p b.shiftpb# => ["a", "b", "c"]# => "b"# => ["c"]Удаление группы элементовМетод clear удаляет все элементы массива,а метод compact удаляет все объекты nil измассива.a = ["a", "b", "c", "d"]a.clearpap ["a", nil, "b", nil].compact# => []# => ["a", "b"]Преобразование всех элементовмассиваМетод map возвращают массив, полученный путемпреобразования каждого элемента исходного массивас помощью блокаоператоров, заключенных вфигурные скобки.a = ["1", "2", "3", "4"]p a.map do |i| i.to_i endp a.map do |i| i+"!" end# => [1, 2, 3, 4]# => ["1!", "2!", "3!", "4!"]p a.map do |x| x.to_i*3 end# => [3, 6, 9, 12]Склейка и разрезание массиваМассив строк может быть преобразован вединую строку и наоборот с помощью методовjoin (соединить) иsplit (разделить)соответственно:p [ "a", "b", "c" ].join# => "abc"p [ "a", "b", "c" ].join(", ")# => a, b, c"p "1:2:3".split(":")# => ["1", "2", "3"]Определение количестваэлементов массиваМетоды length и size возвращают количество элементов массива:p [ 1, 2, 3, 4, 5 ].size # => 5Инвертирование массиваДля получения массива, содержащего всеэлементы исходного, но в обратном порядкеиспользуется метод reverse:p [ 1, 2, 3, 4, 5 ].reverse# => [5, 4, 3, 2, 1]Сортировка массиваМетод sort сортирует элементы массива впорядке«возрастания».Онжессоответствующимблокомпозволяетотсортировать массив в обратном порядке:a = ["d", "a", "c"]p a.sort# => ["a", "c", "d"]Итераторы как средствообработки массиваРанее рассмотренные итераторы, такие какfor и each, позволяет осуществить обработкувсехэлементовмассива,например,следующий код позволит вычислить суммувсех элементов массива чисел:s=0ar = [1, 2, 3, 4, 5, 6]for a in ar dos += aendputs s# => 21Итераторы как средствообработки массиваs=0ar = [1, 2, 3, 4, 5, 6]for i in 0..ar.size dos += ar[i]endputs s# => 21s=0ar = [1, 2, 3, 4, 5, 6]ar.each do |a| s += a endputs s# => 21Методы max и minВозвращают максимальный и минимальныйэлемент коллекции соответственно.ar = [11, 12, 23, 45, 34, 21]puts ar.max# => 45puts ar.min# => 11Ввод массива чисел с клавиатурыprint "Укажите размерность массива: "n = gets.to_iar = Array.new(n)for i in 0 ...
nprint "ar[#{i}] = "ar[i] = gets.to_fendp arПримерСледующаяпрограммаколичествочетныхчиселвведенном с клавиатуры.определяетвмассиве,print "Введите массив целых чисел, разделяяих пробелами: "n=0ar = gets.split.map { |x| x.to_i }for x in arif x%2 == 0 then n+=1 endendputs nСлучайные числаДля получения случайного целого числа вдиапазоне от 0 до n используется методrand(n+1). Случайное число в диапазоне от 0до 1 получается с помощью этого же методабез указания параметра.puts randputs rand(100)# => 0.7408769294# => 21ПримерПрограмма находит количество нулей вмассиве, содержащем 1000 случайных чисел вдиапазоне от -10 до 10 (включительно).num = 0ar = Array.new(1000)for i in 0 ...
ar.sizear[i] = rand(21)-10num += 1 if ar[i]==0endputs numМногомерные массивыВRubyмногомерныемассивымоделируются путем размещения массива вкачестве элемента другого массива. Такойподход позволяет создавать, например, длядвумерныхмассивовнетолькопрямоугольные, но и массивы любой другойформы:a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]b = [[1, 1, 1], [1, 1], [1]]Доступ к элементам многомерногомассиваДля доступа к соответствующим элементаммногомерногомассива,операция[]применяется соответствующее число раз,например,a = [[1, 2, 3, 4, 5],[6, 7, 8, 9, 10],[9, 8, 7, 6, 5]]p a[1][4]# => 10ПримерНайтисуммуразмерностью 3x3.a = [[1, 2, 3 ],[6, 7, 8 ],[9, 8, 7]]s=0for i in 0...a.sizefor j in 0...a[i].sizes+=a[i][j]endendputs sэлементовматрицыРабота со строкамиСтрока - это массив символов, поэтомубольшая часть методов для работы смассивами подходят и для работы состроками.puts "Строка".sizeputs "aa"+"bb"puts "Строка"[2..3]puts "Строка"[2,3]# => 6# => "aabb"# => "ро"# => "рок"Особенность при работе сострокамиПри обращении к элементу строки припомощи метода [ ] в качестве результатавозвращаетсяASCII-кодсимвола,находящегося на указанной позиции строки(отсчет начинается с нуля).
Для того чтобыполучить код символа необходимо применитьметод chr:"abcdef"[0]# => 97"abcdef"[0].chr # => "a"ПримерСколько раз встретилась буква 'а'предложении введенном с клавиатуры?print 'Введите предложение: 'str = getscount = 0for i in 0...str.size doif str[i].chr == 'а' thencount += 1endendputs countв.