Одномерные массивы — это поименованный набор, который состоит из однотипных компонентов.
Введение
Массивы считаются самым распространённым методом структурного оформления данных, который позволяет очень удобно размещать и обрабатывать в компьютерных устройствах значительные информационные объёмы.
Замечание 1
Массив является набором данных одинакового типа, которые имеют одно общее имя, называемое именем массива, и отличающихся расположением в массиве.
В языке С++ массив не считается стандартизированным видом данных, более того, у него имеются разные типы: ìnt, char, float, double и так далее. Имеется возможность формировать массивы массивов, и многие другие. В массивах сохраняются конкретные величины, называемые элементами массива. Все, составляющие массив, элементы обязаны быть однотипными.
У каждого элемента массива имеется свой индекс, который определяет положение компонента в составе массива. Размерность массива — это число измерений массива, то есть это количество индексов. Объём по всем измерениям массива совместно с видом его компонентов задаёт число байт, которое необходимо для сохранения массива в памяти. Эта количество байт определяется при работе компилятора. По этой причине размерность массива может задаваться только целым неотрицательным числом или выражением. К примеру, так:
ЧТО ТАКОЕ МАССИВЫ | ОДНОМЕРНЫЙ МАССИВ C# ПРИМЕРЫ | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 24
ìnt a[10]; // определение одномерного массива из десяти элементов int b[2][5]; // определение двумерного массива из двух строк и пяти столбцов const ìnt n = 10; ìnt a[n]; // размеры массива определяются константой
Задание объёмов массива удобнее выполнять при помощи поименованных констант. Для определения размерности массивов надо проверить, как он был объявлен.
Когда указывается только один индекс, то это означает, что массив одномерный. Если указано два индекса, то это двумерный массив и так далее. Массивы, имеющие более одного индекса, считаются многомерными.
Одномерные массивы
Одномерный массив является набором элементов одного типа, обращение к которым возможно с использованием одного индекса. Все компоненты массива хранятся в памяти в последовательном порядке, при этом начальному (первому) компоненту присваивается индекс с номером нуль (последующие компоненты имеют индексы один, два и так далее). То есть под индексом понимается порядковый номер компонента в составе массива.
Для того, чтобы массив можно было использовать в дальнейшем в программе, его, как и просто переменные, необходимо сначала объявить. Выполнить объявление одномерного массива возможно так:
«Одномерные массивы»
Готовые курсовые работы и рефераты
Решение учебных вопросов в 2 клика
Помощь в написании учебной работы
тип_элементов имя_массива[размер_массива];
- тип_элементов – используемый в С++ тип компонентов массива;
- имя_массива – имя задаётся точно также, как и имена других переменных;
- размер_массива – задаётся число компонентов массива.
Приведём возможные способы объявления одномерных массивов разных видов:
Паскаль с нуля [ч7]. Одномерные массивы.
ìnt a[9]; // массив из девяти компонентов типа ìnt float array[5]; // массив из пяти компонентов типа float char mas[41]; // массив из сорока одного компонента типа char
Необходимо помнить, что применение безымянных констант для задания массива лучше не использовать. Однотипные массивы возможно объявить при помощи списка через запятые, при этом можно включать в список и однотипные переменные. Например:
ìnt maxY, maxZ, ar[11], mas[8];
Когда объявляется массив, нужно всегда иметь в виду, что начало отсчёта индексов идёт от нуля. То есть первому элементу массива соответствует индекс нуль. Таким образом, допустимый диапазон индексных значений расположен от нуля до величины размера массива за минусом единицы. К примеру, если объявлено
ìnt mas[11];
то это означает присутствие одиннадцати переменных с индексами от нуля до десяти. Если обращаться к компоненту массива с недопустимым индексом, то это ведёт к появлению ошибки, которая вызвана запросом зоны памяти, не входящей в массив.
Операция инициализации одномерного массива
Процедура инициализации одномерного массива заключается в задании исходных величин его компонентам, которая выполняется при объявлении. Это действие выполняется путём указания в фигурных скобках исходных величин:
ìnt mas[6] = ;
Когда выполнятся инициализация массива, но задаётся меньшее количество исходных значений, чем объём массива, то оставшимся компонентам присваиваются нулевые значения. То есть, если объявляется:
ìnt mas[11] = ;
то формируется массив из одиннадцати компонентов целочисленного вида. При этом начальные четыре элемента получат указанные в скобках значения, а все другие будут равны нулю. Это свойство возможно применить при инициализации массива, у которого все компоненты равны нулю:
ìnt mas[21] = ;
Но, как уже указывалось выше, при задании величин больше, чем заданный объём массива, то при компиляции программы появится ошибка. При выполнении инициализации не обязательно указывать число компонентов массива:
ìnt mas[] = ;
Объём массива в этом случае задаётся числом величин в перечне инициализируемых компонентов. Число компонентов массива в таком варианте, возможно задать так:
const ìnt n = (sizeof(mas) / sizeof(mas[0])); sizeof(mas) это число байт, которое отведено массиву mas. sizeof(mas[0]) это число байт, которое отведено одному компоненту.
Если возникает необходимость, то возможно задание массива, состоящего из констант, так:
const ìnt array[] = ;
В этом случае компоненты массива array не подлежат изменению.
Обработка одномерных массивов
В языке С++ допускается лишь работа с каждым отдельным компонентом массива. Когда mas — это массив с размером n, то каждый его компонент имеет обозначение как имя массива и далее располагается индекс нужного компонента. К примеру, это может быть mas[i]. Величина индекса лежит в пределах от нуля до n-1. Номером компонента массива могут быть:
- Константа, например, mas[4].
- Переменная, например, mas[i].
- Выражение, например, mas[4 * (i+3)].
Все компоненты массива считаются проиндексированными переменными.
Источник: spravochnick.ru
Глава 10. Массивы
В математике для удобства записи различных операций часто используют индексированные переменные: векторы, матрицы и т.п. Так, вектор
Матрица А – это таблица чисел (аij, i=1. n; j=1. m), i –номер строки,j– номер столбца. Операции над матрицами и векторами обычно имеют короткую запись, которая обозначает определенные, порой сложные действия над их индексными компонентами. Например, произведение двух векторов записывается как.
Произведение матрицы на вектор .
Таким образом, если с группой величин одинакового типа требуется выполнять однообразные действия, им дают одно имя, а различают по порядковому номеру.
Введение индексированных переменных в языках программирования также позволяет значительно облегчить реализацию многих сложных алгоритмов, связанных с обработкой массивов однотипных данных.
Например, использование массивов данных позволяет компактно записывать множество операций с помощью циклов.
В языке Си для этой цели используется сложный тип данных – массив, представляющий собой упорядоченную конечную совокупность элементов одного типа. Число элементов массива называют егоразмером. Каждый элемент массива определяется идентификатором массива и своим порядковым номером –индексом.
Индекс– целое число, по которому производится доступ к элементу массива. Индексов может быть несколько. В этом случае массив называют многомерным, а количество индексов одного элемента массива является его размерностью.
Описание массива в программе отличается от описания простой переменной наличием после имени квадратных скобок, в которых задается количество элементов массива. Например, double a [10]; – описание массива из 10 вещественных чисел.
При описании массивов квадратные скобки являются элементом синтаксиса, а не указанием на необязательность конструкции.
Размеры массивов предпочтительнее вводить с клавиатуры как значения целочисленных переменных или задавать с помощью именованных констант, поскольку при таком подходе для ее изменения достаточно скорректировать значение константы всего лишь в одном месте программы.
10.2. Одномерные массивы
В программе одномерный массив объявляется следующим образом:
типID_массива[размер] = ;
тип– базовый тип элементов массива (целый, вещественный, символьный);размер– количество элементов в массиве.
Список начальных значений используется при необходимости инициализировать данные при объявлении, он может отсутствовать.
При декларации массива можно использовать также атрибуты «класс памяти» и const.
Размер массива вместе с типом его элементов определяет объем памяти, необходимый для размещения массива, которое выполняется на этапе компиляции, поэтому размер массива задается только константой или константным выражением. Нельзя задавать массив переменного размера, для этого существует отдельный механизм – динамическое выделение памяти.
Пример объявления массива целого типа: int a[5];
Индексы массивов в языке Си начинаются с 0, т.е. в массивеапервый элемент:а[0], второй –а[1], … пятый –а[4].
Обращение к элементу массива в программе на языке Си осуществляется в традиционном для многих других языков стиле – записи операции обращения по индексу [] (квадратные скобки), например:
Пример объявления массива целого типа с инициализацией начальных значений:
Если в группе список значений короче, то оставшимся элементам присваивается 0.
Внимание. В языке Си с целью повышения быстродействия программы отсутствует механизм контроля выхода за границы индексов массивов. При необходимости такой механизм должен быть запрограммирован явно.
Источник: studfile.net
Одномерные массивы в delphi
Во втором занятии мы рассмотрели несколько типов переменных: char, string, integer и double. Для решения простых задач этого уже достаточно. Но на практике требуется значительно большее разнообразие типов переменных.
Рассмотрим ещё один тип данных — массив. Собственно, в delphi 7 массив это даже не отдельный тип данных, а просто способ хранения некоторого количества данных одного типа.
Данные в массиве хранятся в последовательной цепочке байт. Адрес первого байта записывают в переменную, называемую именем массива.
Элементы массива пронумерованы. Эти номера называются индексом элемента. Если, например, имя массива будет vArr и массив хранит 10 элементов, то обращение к восьмому элементу будет иметь вид: vArr[7].
Как происходит обращение к элементу массива? Мы сказали, что адрес первого байта массива хранится в переменной массива. Если, например, массив хранит элементы целого типа integer, то под каждый элемент отводится 4 байта.
Почему индекс равен 7, а не 8? Это происходит из-за того, что первый элемент массива всегда имеет номер 0.
Очевидно, что для массива мощностью 10 элементов допустимые номера индекса от 0 до 9.
Если ввести другое значение индекса, то компилятор Delphi выдаст ошибку.
Посмотрим, как вычисляется адрес элемента массива с номером i.
Если адрес первого байта массива равен n, то адрес элемента с индексом i будет равен n+i*4. При i:=0 мы попадаем в начала массива, при i:=1 сдвигаемся на 4 байта и попадаем в начало первого элемента, и так далее.
Типы массивов в delphi
Не во всех языках программирования строго требуется, чтобы все элементы массива были одного типа.
Поэтому особо подчёркивается, что в delphi массивы являются «типизированными». В ряде случаев нетипизированные массивы более удобны и позволяют решать задачу более элегантно. Но одновременно они наряду с дополнительными удобствами привносит и свои трудности. Нетипизированные массивы могут быть источниками трудно определяемых ошибок.
Массивы подразделяют на одномерные и многомерные.
Например, для хранения данных из таблицы применяют в delphi двумерный массив. Обращение к элементу двумерного массива будет выглядеть, например, следующим образом: vArr[2,7].
Или в общем виде vArr[i,j]. Индекс i ассоциируют с номером столбца, а j — с номером строки.
Аналогично определяются массивы трёх и более измерений.
Наконец, имеется особый вид массива, называемый динамическим. Своё название он получил в силу того, что в процессе работы программы можно изменять размерность массива.
Надо ли Вам будет использовать динамические массивы — Вы решите сами по мере усложнения поставленных задач.
Элементы массива целого типа
Значения, хранящиеся в массиве, называются элементами массива.
Рассмотрим пример. Пусть нам надо хранить десять целых чисел. Можно поступить так: объявить десять переменных типа Integer. А если их сто, тысяча, миллион?
Имеется более элегантная возможность. Значения располагают в памяти одно за другим. Запоминают адрес первого числа, а потом указывают, на каком месте последовательности стоит то число, которое надо прочитать.
В терминах delphi это выглядит так. Объявляется тип данных array с помощью ключевого слова type :
type TArray=array[1..15] of integer;
Далее объявляется переменная типа TArray следующим образом:
var massiv:TArray;
Можно объявить переменную-массив и обычным образом:
var massiv:array[1..15] of integer;
Однако первый способ предпочтительнее.
Объявляя переменную «massiv» типа array, мы тем самым декларировали, что будем хранить цепочку из пятнадцати целых чисел.
Выше мы говорили, что обратится к конкретному элементу массива можно по его индексу.
Например, если «у» является переменной целого типа, то справедливо выражение:
Обмен данными между массивами
Обменяться данными между переменными очень просто. Достаточно поставить оператор равенства между переменными. Например, x:=y; (оператор равенства — выражение «:=»).
Так же можно поступить и с массивами, но при соблюдении определённых условий. Если мы объявим массив одним из двух способов:
type Tarray=array[1..3] of integer; var x: Tarray; y: Tarray;
var x,y:array[1..3] of integer; То справедливо будет написать: x:=y;
компилятор воспримет как ошибочную. Это надо запомнить!