Массивы (1092192)
Текст из файла
ПрограммированиеМассивыМассивыМассивы - экземпляры класса 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в.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.