если компонентами массива являются массивы то такой массив называется
Работа с массивами данных.
Одномерные и двумерные массивы
Одномерные и двумерные массивы
Количество индексов элементов массива определяет размерность массива.
В данном примере будет объявлен одномерный массив А, состоящий из 10 элементов.
В данном примере будет объявлен двумерный массив М, который можно представить в виде таблицы, состоящей из 4-х строк по 5 ячеек в каждой строке.
Содержимое элементов массива при объявлении равно нулю.
Работа с массивами
После объявления массива каждый его элемент можно обработать, указав идентификатор (имя) массива и индекс элемента в квадратных скобках. Например, запись M[2] позволяет обратиться ко второму элементу массива M.
При работе с двумерным массивом указываются два индекса. Например, запись
M[3,4] делает доступным для обработки значение элемента, находящегося в третьей строке четвертого столбца массива M.
Индексированные элементы массива называются индексированными переменными и могут быть использованы так же, как и простые переменные. Например, они могут находиться в выражениях в качестве операндов или использоваться в качестве аргументов в командах.
Присваивание значений элементам массива
Третьему элементу массива А будет присвоено значение 15.
Элементу массива М, находящемуся во второй строке четвертого столбца, будет присвоено значение 25.
Ввести значение в элемент массива можно также при помощи команды СПРОСИ.
Загрузка данных в массив
Загрузить данные в массив можно при помощи команды ЗАГРУЗИ.
Примеры для одномерного массива А.
загрузи в A
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
конец загрузки
загрузи в A
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
конец загрузки
Если данных будет недостаточно, то часть элементов останется незаполненной. Если избыточно, то они отсекутся.
Пример для двумерного массива М.
загрузи в M
15 17 25 36 24 56 78 56 36 24
56 78 56 36 24 15 17 25 36 25
15 17 25 36 24 56 78 56 36 24
78 56 36 24 15 17 17 25 36 25
36 24 56 78 24 56 78 56 36 24
39 78 56 36 24 25 15 15 89 71
15 17 25 36 24 56 78 56 36 24
78 56 36 24 15 17 17 25 36 25
36 24 56 78 24 56 78 56 36 24
39 78 56 36 24 25 15 15 89 71
конец загрузки
Заполнение массива с помощью циклов
Заполнение одномерного массив.
повторить для x от 1 до 10 <
M[x] = 555
>
Заполнение двумерного массив с помощью вложенных циклов.
повторить для x от 1 до 5 <
повторить для y от 1 до 7 <
M[x,y] = 555
>
>
Заполнение массива случайными числами
Заполнить массив случайными числами можно при помощи цикла.
Пример заполнения элементов массива А псевдослучайными целыми числами в диапазоне от 10 до 99:
массив А[100]
переменная х
повторить для х от 1 до 100 <
А[х] = Int(случайное * 89) + 10
>
Вывод значений элементов массива
На экран будет выведено значение третьего элемента одномерного массива А.
Будут выведены значения всех элементов массива А.
Вывод массива в графическом виде
Необязательные параметры и взяты в скобки. Они обеспечивают отступ от начала координат (верхнего левого угла).
Замена и копирование значений в массивах
Команда для замены во всем массиве одного значения на другое.
Команда для копирования всех значений одного массива в другой массив. Количество элементов и размерность массивов должны совпадать.
Одномерные и двумерные массивы
Массив это пронумерованная последовательность величин одинакового типа, обозначаемая одним именем. Элементы массива располагаются в последовательных ячейках памяти, обозначаются именем массива и индексом. Каждое из значений, составляющих массив, называется его компонентой (или элементом массива).
Массив данных в программе рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться как на массив данных в целом, так и на любую из его компонент.
Вообще, массив – однородный, упорядоченный структурированный тип данных с прямым доступом к элементам.
Переменные, представляющие компоненты массивов, называются переменными с индексами в отличие от простых переменных, представляющих в программе элементарные данные. Индекс в обозначении компонент массивов может быть константой, переменной или выражением порядкового типа (целочисленный, логический, символьный, перечислимый, диапазон).
Например, A[7] седьмой элемент массива А; D[6] шестой элемент массива D.
Для размещения массива в памяти ЭВМ отводится поле памяти, размер которого определяется типом, длиной и количеством компонент массива. В языке Pascal эта информация задается в разделе описаний. Массив описывается так:
Базовый тип элементов массива может быть любым простым или структурированным, за исключением файлового.
Кроме того, массив можно объявить с использованием собственного типа:
Заполнить массив можно следующим образом:
1) с помощью оператора присваивания. Этот способ заполнения элементов массива особенно удобен, когда между элементами существует какая-либо зависимость, например, арифметическая или геометрическая прогрессии, или элементы связаны между собой рекуррентным соотношением.
Задача 1. Заполнить одномерный массив элементами, отвечающими следующему соотношению:
Другой вариант присваивания значений элементам массива заполнение значениями, полученными с помощью датчика случайных чисел.
Задача 2. Заполнить одномерный массив с помощью датчика случайных чисел таким образом, чтобы все его элементы были различны.
Над элементами массивами чаще всего выполняются такие действия, как
б) сортировка элементов в порядке возрастания или убывания;
в) подсчет элементов в массиве, удовлетворяющих заданному условию.
Задача 3. Дан линейный массив целых чисел. Подсчитать, сколько в нем различных чисел.
Задача 4. Дан линейный массив. Упорядочить его элементы в порядке возрастания.
Если два массива являются массивами эквивалентных типов, то возможно присваивание одного массива другому. При этом все компоненты присваиваемого массива копируются в тот массив, которому присваивается значение. Типы массивов будут эквивалентными, если эти массивы описываются совместно или описываются идентификатором одного и того же типа. Например, в описании типы переменных A, B эквивалентны, и поэтому данные переменные совместимы по присваиванию; тип переменных C, D также один и тот же, и поэтому данные переменные также совместны по присваиванию. Но тип переменных C, D не эквивалентен типам переменных A, B, E, поэтому, например, A и D не совместны по присваиванию. Эти особенности необходимо учитывать при работе с массивами.
При работе с массивами целесообразно использовать процедуры и функции. Вот типовые процедуры:
Задача 5. Дан линейный массив. Найти: сумму минимального и максимального элементов; количество отрицательных элементов, стоящих на чётных местах. Изменить массив, вычеркнув из него нечетные элементы.
Например, данные о планетах Солнечной системы представлены следующей таблицей:
Планета | Расст. до Солнца | Относ. обьем | Относ. масса |
---|---|---|---|
Меркурий | 57.9 | 0.06 | 0.05 |
Венера | 108.2 | 0.92 | 0.81 |
Земля | 149.6 | 1.00 | 1.00 |
Марс | 227.9 | 0.15 | 0.11 |
Юпитер | 978.3 | 1345.00 | 318.40 |
Сатурн | 1429.3 | 767.00 | 95.20 |
Их можно занести в память компьютера, используя понятие двумерного массива. Положение элемента в массиве определяется двумя индексами. Они показывают номер строки и номер столбца. Индексы разделяются запятой. Например: A[7, 6], D[56, 47].
Заполняется двумерный массив аналогично одномерному: с клавиатуры, с помощью оператора присваивания. Например, в результате выполнения программы: элементы массива примут значения A[1, 1] = 457; A[1, 2] = 457; A[2, 1] = 458; A[2, 2] = 458; A[3, 1] = 459; A[3, 2] = 459.
При описании массива задается требуемый объем памяти под двумерный массив, указываются имя массива и в квадратных скобках диапазоны изменения индексов.
При выполнении инженерных и математических расчетов часто используются переменные более чем с двумя индексами. При решении задач на ЭВМ такие переменные представляются как компоненты соответственно трех-, четырехмерных массивов и т.д.
Однако описание массива в виде многомерной структуры делается лишь из соображений удобства программирования как результат стремления наиболее точно воспроизвести в программе объективно существующие связи между элементами данных решаемой задачи. Что же касается образа массива в памяти ЭВМ, то как одномерные, так и многомерные массивы хранятся в виде линейной последовательности своих компонент, и принципиальной разницы между одномерными и многомерными массивами в памяти ЭВМ нет. Однако порядок, в котором запоминаются элементы многомерных массивов, важно себе представлять. В большинстве алгоритмических языков реализуется общее правило, устанавливающее порядок хранения в памяти элементов массивов: элементы многомерных массивов хранятся в памяти в последовательности, соответствующей более частому изменению младших индексов.
Задача 6. Заполнить матрицу порядка n по следующему образцу:
Задача 7. Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали.
Если компонентами массива являются массивы то такой массив называется
Массивы. Типы массивов.
В тех случаях, когда какой-либо объект описывается рядом однотипных значений (например, ежедневное количество осадков на протяжении года), используют не множество переменных простых типов, а структуры данных, в частности, массивы. Вообще структуры данных характеризуются такими свойствами, как упорядоченность (указан ли порядок следования элементов, пронумерованы ли они каким-либо образом), однородность (содержит ли структура величины одного или разных типов), ограниченность (фиксировано ли количество элементов), способ доступа.
Массив − это пронумерованная последовательность величин одинакового типа, обозначаемая одним именем. По указанным выше свойствам массивы относятся к упорядоченным однородным ограниченным структурам данных с произвольным доступом. Величины, составляющие массив, располагаются в последовательных ячейках памяти, обозначаются именем массива и индексом (номером). Каждое из значений, входящих в массив, называется его компонентой (или элементом массива). Элементами массива могут быть величины как простых, так и составных типов.
Массив данных в программе рассматривается как переменная структурированного типа. Массив получает имя, посредством которого можно ссылаться на него как на единое целое, так и на любую из его компонент.
Переменные, представляющие компоненты массивов, называются переменными с индексами, в отличие от простых переменных, представляющих в программе элементарные данные. Чаще всего индекс в обозначении компонент массивов может быть константой, переменной или выражением целого типа (хотя возможны и другие варианты).
Если местоположение элемента в массиве определяет только один его порядковый номер, то такой массив называется линейным (или одномерным). Вообще количество индексов элементов массива определяет размерность массива. По этому признаку массивы делятся на одномерные (линейные), двухмерные (прямоугольные таблицы или матрицы), трехмерные и т.д.
Размер массива определяется количеством его элементов. Размер может быть общим и текущим. Довольно часто память выделяется под весь массив сразу же, но при этом не вся она может быть занята элементами, т.е. текущий размер меньше или равен общему.
Практически все языки программирования высокого уровня требуют явного описания массивов.
Таким образом, одномерный массив описывается следующим образом:
Можно определить, какой объем оперативной памяти потребуется для хранения элементов массива. Для этого нужно общий размер массива умножить на объем памяти, занимаемой одной величиной базового для массива типа. В нашем примере это 100×2=200 байт.
Для того чтобы обратиться к элементу этого массива, необходимо указать имя массива и в квадратных скобках − номер элемента. Например, первый элемент массива А − А[0], а пятый − А[4].
Заполнить массив можно различными способами.
Задача 1. Заполнить одномерный массив с помощью датчика случайных чисел таким образом, чтобы все его элементы были различны.
Задача 2. Заполнить массив вводом с клавиатуры. Turbo Pascal
Задача 3. Третий способ заполнения массива − чтение значений элементов из файла. Можно заранее создать типизированный файл одномерных массивов (например, по тридцать элементов), а затем считывать из него сразу целый массив. Но мы воспользуемся текстовым файлом, так как его создавать намного удобнее. Пусть в файле записано несколько строк, а в каждой из них по 30 целых чисел. Тогда вся программа может быть такой:
С использованием массива чаще всего решают такие учебные задачи:
Сумму элементов массива можно подсчитать по формуле S=S+A[i], первоначально задав S=0. Количество элементов массива, отвечающих заданному условию, можно подсчитать по формуле К=К+1 для всех А[i], удовлетворяющих условию, первоначально задав К=0. Произведение элементов массива можно подсчитать по формуле Р=Р×A[i], первоначально задав Р=1.
Рассмотрим еще две задачи обработки массивов.
Задача 4. Дан массив натуральных чисел. Найти сумму элементов, кратных заданному числу.
Идея решения. Будем суммировать элементы, удовлетворяющие данному условию, то есть только те, которые делятся нацело на заданное число (остаток от деления на данное число равен 0).
Базовыми и простейшими способами сортировки массивов являются сортировка выбором, сортировка обменами (иногда ее еще называют «пузырьковой») и сортировка вставками. На этих способах основаны более быстрые методы сортировки. Рассмотрим реализацию одного из этих методов.
Задача 5. Выполнить сортировку заданного линейного массива, используя алгоритм сортировки выбором.
Кратко опишем алгоритм сортировки выбором. Пусть некоторая часть массива отсортирована. В неотсортированном фрагменте массива выбираем минимальный элемент и меняем его местами с первым элементом неотсортированного фрагмента. Первоначально отсортированная часть массива состоит из нулевого количества элементов. В конечном итоге получаем отсортированный в порядке возрастания массив.
При решении практических задач часто приходится иметь дело с различными таблицами данных, математическим эквивалентом которых служат матрицы. Такой способ организации данных, при котором каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен, называется двухмерным массивом, или прямоугольной таблицей.
При описании массива задается требуемый объем памяти под двухмерный массив, указываются имя массива и в квадратных скобках диапазоны изменения индексов.
Формирование двухмерного массива можно осуществлять всеми тремя способами, описанными для одномерных массивов, то есть: вводом с клавиатуры, посредством генератора случайных чисел или с помощью файла.
При выполнении инженерных и математических расчетов часто используются переменные более чем с двумя индексами. При решении задач на ЭВМ такие переменные представляются как компоненты соответственно трех-, четырехмерных массивов и т.д.
Однако описание массива в виде многомерной структуры делается лишь из соображений удобства программирования как результат стремления наиболее точно воспроизвести в программе объективно существующие связи между элементами данных решаемой задачи. Что же касается образа массива в памяти ЭВМ, то как одномерные, так и многомерные массивы хранятся в виде линейной последовательности своих компонент, и принципиальной разницы между одномерными и многомерными массивами в памяти ЭВМ нет. В заключение приведем пример обработки двухмерного массива.
Задача 6. Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали.
Массивы: одномерные массивы
Цель лекции: изучить понятия, особенности внутреннего представления, способов генерации и вывода одномерных массивов, научиться выполнять объявление, инициализацию, генерацию и вывод массивов при решении задач на языке C++.
Массив – именованная последовательность областей памяти, хранящих однотипные элементы ( рис. 10.1). Каждая такая область памяти называется элементом массива. Массивы обладают размерностью (большей или равной единице), которой задается число элементов, содержащихся в них, а также измерением, что предполагает возможность описания в программе одно- и многомерных массивов. Количество элементов в массиве называется его размером.
Тип элемента массива может быть одним из базовых ( скалярных), типом другого массива, типом указателя, типом структуры или объединения.
Все элементы массива имеют одно имя – имя массива и отличаются индексами – порядковыми номерами в массиве. В определении массива можно задать его размерность по каждому измерению. Допустимо явное задание массива либо с помощью указателя (объекта, хранящего адрес начала области набора значений). Резервирование памяти для массива выполняется на этапе компиляции программы.
При объявлении массива компилятор выделяет для него последовательность ячеек памяти, для обращения к которым в программе применяется одно и то же имя. В то же время массив позволяет получить прямой доступ к своим отдельным элементам.
Объявление одномерных массивов
Синтаксис определения массива без дополнительных спецификаторов и модификаторов имеет два формата:
Массивы: понятие, виды, описание.
Массив— ряд (последовательность, набор) величин одного типа (например, real,integer или char), имеющих одно имя (один идентификатор).
С точки зрения компьютера речь идет о массиве однотипных ячеек его памяти:
С точки зрения программиста массив удобнее представлять в виде таблицы (отсюда и другое название: табличная величина):
· имя массива (общее имя всего набора величин);
· индекс (номер) элемента.
С элементами массивов можно оперировать так же, как и с переменными базового типа. Например (прежде чем выполнить первую команду, обратите внимание на последние),
Однако, использование элементов массива в качестве обычных переменных не дает никакой выгоды. Массивы ценны тем, что индексы в свою очередь могут быть переменными или выражениями, обеспечивая доступ к последовательным элементам. Достаточно вспомнить многострадальный цикл из предыдущего урока, присваивающий значение 5 всем элементам массива a:
for i := 1 to 100 do a[i] := 5; |
Итак, подведем итоги:
Массив—упорядоченный набор фиксированного количества перенумерованных величин. Сами эти величины называются его элементами, а их номера- индексами. Причем все элементы должны быть одного и того же типа, который называется базовым типом или типом компонент.
Как обычно, каждому используемому в программе массиву должно быть дано свое имя, которое является общим для всего набора величин. Элементы массива «отдельных» имен не имеют. Каждый элемент массива может быть явно обозначен путем указания имени массива, за которым следует взятый в квадратные скобки индекс. Для обозначения, например, 73-го элемента массива k используется запись k[73].
В общем случае в качестве индекса может использоваться выражение, в которое могут входить переменные. При изменении значений этих переменных меняется и значение индекса элемента массива. Таким образом, одна и та же переменная с индексом в процессе выполнения программы может обозначать различные элементы массива.
Пример.
Введя тип-массив, можно затем задать переменные или типизированные константы этого типа.
Размерность массива может быть любой, компоненты массива могут быть любого, в том числе и структурированного, типа, индекс (индексы) может быть любого порядкового типа, кроме типа Longint.
Так, для введенных выше типов можно задать, например, следующие переменные и константы:
Последняя константа соответствует следующей структуре:
Примечание. Тип-массив можно вводить непосредственно и при определении соответствующих переменных или типизированных констант. Например:
var
Ml, M2: array[1..3] of Real;
Matr: array[1..3, 1..2] of Integer;
Здесь определены те же массивы, что и в предыдущем примере.
При таком объявлении массивов следует помнить, что их типы не будут идентичными никаким другим типам, даже если они имеют одинаковую структуру. Поэтому передавать их как параметры в подпрограмму нельзя (см. п. 10.3), нельзя также присваивать им значения других массивов (и наоборот), даже если их структуры совпадают.
Доступ к компонентам массива осуществляется указанием имени массива, за которым в квадратных скобках помещается значение индекса (индексов) компоненты. В общем случае каждый индекс компоненты может быть задан выражением соответствующего типа, например:
Одному массиву можно присвоить значение другого массива, но только идентичного типа. Так, если заданы следующие массивы:
varА, В: array[1..5] ofInteger;
С: array[1..5] ofInteger;
то допустим следующий оператор:
С другой стороны, оператор
const
A: array[1..5] of Char=’aaaaa’;
В: array[1..3] of Char=’bbb’;
if A >В then
WriteLn(A)
else
WriteLn(B);
13 Модули и библиотеки стандартных программ в универсальных языках программирования. Основные виды библиотечных функций по назначению (на примере языка программирования Паскаль или С++)
Структура модулей
Модуль имеет следующую структуру:
Unit ;
Interface
Implementation
[ Begin ]
End.
Таким образом, модуль состоит из заголовка и трех составных частей, любая из которых может быть пустой.
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого.
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим.