Файл: Особенности и примеры использования массивов при разработке программ..pdf
Добавлен: 31.03.2023
Просмотров: 344
Скачиваний: 6
Введение
Такой тип данных как массивы был создан на заре компьютерной эры. Тип данных массив – это один из важнейших типов данных. Они используются в большинстве языков программирования и множеством программ. Сложно найти такую программу, где бы они не использовались: сложнейшие операционные системы и офисные пакеты, архиваторы, кодеки и т.п. Даже самый простой калькулятор без них реализовать было бы на порядок сложнее.
В данной курсовой работе мы разберем понятие массива, историю создания, виды массивов, в каких языках этот тип данных представлен и его синтаксис. Также отдельная глава будет посвящена такому вопросу как алгоритмы. В каких алгоритмах применение массива оправданно и без него не обойтись. И в самом конце мы разберем языки, где массив не используется.
Целью данной курсовой работы является ознакомить читателя с таким многогранным типом данных как массив, показать примеры его использования, рассказать о видах массивов. Немного задуматься о будущем этого типа данных.
Тема массивов не потеряет свою актуальность еще очень и очень долго.
Определение массива и его виды
Любое исследование природы какого-либо предмета стоит начать с его определения. Давайте определимся с тем, что мы будем называть в дальнейшем массивом. В популярной интернет энциклопедии Википедия под массивом понимают структуру данных, хранящую набор значений (элементов массива), идентифицируемых по индексу или набору индексов, принимающих целые (или приводимые к целым) значения из некоторого заданного непрерывного диапазона. Нам кажется, что этому определению требуется дополнительная расшифровка. Здесь говорится об элементах массива иными словами о значениях массива. А также об индексах – порядковых номерах этих значений. Стало быть массив – это совокупность данных любых типов и индексов. Иными словами:
Массив — это упорядоченный набор элементов, каждый из которых хранит одно значение, идентифицируемое с помощью одного или нескольких индексов. В простейшем случае массив имеет постоянную длину и хранит единицы данных одного и того же типа, а в качестве индексов выступают целые числа.
Какими же бывают типы данных, которые можно использовать в массивах? Ответ достаточно прост – любыми. Это и текст, и целые числа, и вещественные числа, и другие массивы. Кстати, массивы, содержащие в себе другие массивы, называются многомерными массивами.
Разговор о многомерных массивах плавно подводит нас к еще одному определению – размерности массива. Размерность массива – это количество индексов, необходимое для однозначной адресации элемента в рамках массива. По количеству используемых индексов массивы делятся на одномерные, двумерные, трёхмерные и т. д. Иными словами массивы делятся на одномерные и многомерные.
Как опять же подсказывает нам любимая студентами Вики Особенностью массива как структуры данных (в отличие, например, от связного списка) является константная вычислительная сложность доступа к элементу массива по индексу. Массив относится к структурам данных с произвольным доступом. Это означает, что какой бы длины, размерности и различий в типах элементов массива не было бы, доступ к каждому элементу массива осуществлялся бы в строго определенное и равное время. Одно и тоже время займет обращение к первому и сто первому элементу массива.
Максимально допустимая размерность массива, типы и диапазоны значений индексов, ограничения на типы элементов определяются языком программирования.
В простейшем случае массив имеет фиксированную длину по всем размерностям и может хранить данные только одного, заданного при описании, типа. Ряд языков поддерживает также динамические массивы, длина которых может изменяться по ходу работы программы, и гетерогенные массивы, которые могут в разных элементах хранить данные различных типов. Так же все языки программирования, поддерживающие массивы, могут позволить инициализировать пустой массив. Массив, который не содержит ни одного индекса и элемента массива. Такая конструкция может пригодиться для создания динамического массива.
Динамические массивы используются, как хранилища при передаче данных из источника, длина которого заранее не определена. В этой ситуации такой вид массива становится не заменим.
В языках программирования, допускающих объявления программистом собственных типов, как правило, существует возможность создания типа «массив». В определении такого типа задаются типы и/или диапазоны значений каждого из индексов и тип элементов массива. Объявленный тип в дальнейшем может использоваться для определения переменных, формальных параметров и возвращаемых значений функций. Некоторые языки поддерживают для переменных-массивов операции присваивания (когда одной операцией всем элементам массива присваиваются значения соответствующих элементов другого массива).
Работа с массивами
Прежде чем иметь возможность работать с массивом его нужно инициализировать. Здесь есть два пути. Первый, когда мы знаем, сколько элементов массива у нас будет. Этот способ очень часто используется на уроках по информатике. И второй, когда мы не знаем длину массива. Это происходит гораздо чаще. В первом случаем инициализация происходит путем сопоставления элементов массива его индексам. Чуть позже мы разберем, как это происходит, на примерах в разных языках программирования. Во втором случае инициализируется пустой массив с индексами, которые будут проставляться автоматически, начиная с нуля. А элементы массива будут заноситься в массив из другой структуры.
Для того чтобы работать с элементом массива, к нему надо обратиться из программы. Массивы - это такие же числа или слова, как и любые другие. Для того чтобы работать с элементом массива, надо ввести: название массива[0]. Это позволит выбрать первый элемент массива и проводить с ним операции. Например:
Код ====================================================
print (Arr[0]) – данный фрагмент кода выведет первый элемент массива
Стоит отметить, что если мы собираемся проводить математические операции с массивами, то следует обратить внимание на тип. Это можно сделать, только если у нас имеется массив чисел: целых или с плавающей точкой.
Здесь мы бы хотели подробнее поговорить об индексах. Как правило, в качестве индекса выступают целые числа. Но это не обязательно. В качестве индекса могут также выступить и буквы или целые слова. Вообще в качестве индекса не могут выступать только специально зарезервированные слова (у каждого языка они свои), специальные символы, также не рекомендуется использовать пробел. Массив, в котором у индекса текстовое значение, называется ассоциативным.
Операции с массивами
Типичными операциями при работе с массивами являются:
– вывод данных из массива;
– ввод данных в массив;
– поиск максимального или минимального элемента массива;
– поиск заданного элемента массива;
– сортировка массива.
– объединение массивов.
– математические операции с массивами.
– генерация массивов.
Вывод данных из массива. Под выводом массива понимается вывод на экран монитора (в диалоговое окно) значений элементов массива. Если в программе необходимо вывести значения всех элементов массива, то для этого удобно использовать циклы. К примеру foreach.
Ввод данных в массив. Под вводом массива понимается процесс получения от пользователя (или из файла) во время работы программы значений элементов массива.
Поиск максимального или минимального элемента массива.
Задачу поиска минимального элемента массива рассмотрим на примере массива целых чисел. Алгоритм поиска минимального (максимального) элемента массива довольно очевиден: сначала делается предположение, что первый элемент массива является минимальным (максимальным), затем остальные элементы массива последовательно сравниваются с этим элементом. Если во время очередной проверки обнаруживается, что проверяемый элемент меньше (больше) принятого за минимальный (максимальный), то этот элемент становится минимальным (максимальным) и продолжается проверка оставшихся элементов.
Поиск в массиве заданного элемента. При решении многих задач возникает необходимость определить, содержит ли массив определенную информацию или нет. Задачи такого типа называются поиском в массиве. Для организации поиска в массиве могут быть использованы различные алгоритмы. Наиболее простой — это алгоритм простого перебора. Поиск осуществляется последовательным сравнением элементов массива с образцом до тех пор, пока не будет найден элемент, равный образцу, или не будут проверены все элементы. Алгоритм простого перебора применяется, если элементы массива не упорядочены.
Сортировка массива. Под сортировкой массива подразумевается процесс перестановки элементов массива, целью которого является размещение элементов массива в определенном порядке.
а[3] – обращение к элементу одномерного массива.
b[1,7] – обращение к элементу двумерного массива.
Обращение к элементам массива осуществляется указанием идентификаторов массива и в квадратных скобках номеров элемента через запятую.
Объединение массивов. Позволяет объединить разные элементы двух и более массивов. При этом повторяющихся данных не будет.
Математические операции с массивами. Элементы нескольких массивов можно сложить или перемножить.
История появления массивов
Массивы появились с первым языком программирования низкого уровня – Assembler. Это произошло в 1949 г. благодаря стараниям М.Уилкса. Этот ученый из Кембриджского университета перевел машинные коды в удобоваримый для человека вид. Также он перевел в понятный для программистов вид и типы данных, включая массивы.
Давайте посмотрим, как выглядят массивы на языке Assembler.
Специальных средств описания массивов в программах ассемблера, конечно, нет. При необходимости использовать массив в программе его нужно моделировать одним из следующих способов:
1) Перечислением элементов массива в поле операндов одной из директив описания данных. При перечислении элементы разделяются запятыми. К примеру: массив из 5 элементов. Размер каждого элемента 4 байта:
mas dd 1,2,3,4,5
2) Используя оператор повторения dup. К примеру: массив из 5 нулевых элементов. Размер каждого элемента 2 байта:
mas dw 5 dup (0)
3) Используя директивы label и rept. Пара этих директив может облегчить описание больших массивов в памяти и повысить наглядность такого описания. Директива rept относится к макросредствам языка ассемблера и вызывает повторение указанное число раз строк, заключенных между директивой и строкой endm. К примеру, определим массив байт в области памяти, обозначенной идентификатором mas_b. В данном случае директива label определяет символическое имя mas_b, аналогично тому, как это делают директивы резервирования и инициализации памяти. Достоинство директивы label в том, что она не резервирует память, а лишь определяет характеристики объекта. В данном случае объект — это ячейка памяти. Используя несколько директив label, записанных одна за другой, можно присвоить одной и той же области памяти разные имена и разный тип, что и сделано в следующем фрагменте:
n=0
mas_b label byte
mas_w label word
rept 4
dw 0f1f0h
endm
Работа с массивами в PHP
Здесь, в этой главе мы рассмотрим практические примеры работы с рядом PHP функций для работы с массивами. Посмотрим, как инициализируются массивы в этом языке, синтаксис.
$keys = ['sky', 'grass', 'orange']; - здесь мы инициализируем массив из строк. Здесь $keys – это название массива, 'sky', 'grass', 'orange' – это элементы массива.
$arr = array(); - здесь мы проинициализировали пустой или как его еще называют безразмерный массив.
$arr1 = array(5 => 1, 12 => 2); - здесь мы использовали индексы. У элемента (еще говорят значения) 1 индекс (или ключ) будет равен 5. А у элемента 2 индекс будет равен 12.
Пример ассоциативного массива:
$array = array(
"Пупкин" => "Василий",
"Рост" => "180",
“Вес” => 80,
-100 => 100,
50 => 60,
);
Пример вложенного массива:
$array2 = array(
"Пупкин" => "Василий",
"Рост" => "180",
“Вес” => 80,
-100 => 100,