Студопедия — Вопрос массивы. синтаксис и применение
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Вопрос массивы. синтаксис и применение






Массивы

На самом деле массив в PHP - это упорядоченное отображение, которое устанавливает соответствие между значением и ключом. Этот тип оптимизирован в нескольких направлениях, поэтому вы можете использовать его как собственно массив, список (вектор), хэш-таблицу (являющуюся реализацией карты), словарь, коллекцию, стэк, очередь и, возможно, что-то еще. Так как значением массива может быть другой массив PHP, можно также создавать деревья и многомерные массивы.

Объяснение этих структур данных выходит за рамки данного справочного руководства, но вы найдете как минимум один пример по каждой из них. За дополнительной информацией вы можете обратиться к соответствующей литературе по этой обширной теме.

Синтаксис

Определение при помощи array()

Массив (тип array) может быть создан языковой конструкцией array(). language construct. В качестве параметров она принимает любое количество разделенных запятыми пар key =>; value (ключ => значение).

Простые типы данных позволяют использовать в программе одиночные объекты -- числа, символы, строки и т.п. В Турбо Паскале могут использоваться также объекты, содержащие множество однотипных элементов. Это массивы -- формальное объединение нескольких однотипных объектов (чисел, символов, строк и т.п.), рассматриваемое как единое целое. К необходимости применения массивов мы приходим всякий раз, когда требуется связать и использовать целый ряд родственных величин. Например, результаты многократных замеров температуры воздуха в течение года удобно рассматривать как совокупность вещественных чисел, объединенных в один сложный объект -- массив измерений.
При описании массива необходимо указать общее число входящих в массив элементов и тип этих элементов. Например:

Var

а: array [1..10] of real;

b: array [0..50] of Char;

с: array [-3..4] of Boolean;

Как видим, при описании массива используются зарезервированные слова ARRAY и OF (массив, из). За словом ARRAY в квaдрaтныx скобкax указывается тип-диапазон, с помощью которого компилятор oпеределяет общее число элементов массива. Тип-диапазон задается левой и правой границами изменения индекса массива так что массив А состоит из 10 элементов, массив В - из 31, а массив C - из 8 элементов. За словом OF указывается тип элементов, образующих массив.
Доступ к каждому элементу массива в программе осуществляется с помощью индекса - целого числа (точнее, выражения порядкового типа), служащего своеобразным именем элемента в массиве (если левая граница типа-диапазона равна 1, индекс элемента совпадает с его порядковым номером). При упоминании в программе любого элемента массива сразу за именем массива должен следовать индекс элемента в квадратных скобках, например:

Var

a: array [1..10] of Integer;

b: array [0..40] of Char;

c: array [-2..2] of Boolean;

k: Integer;

Begin

b[17]:= 'F';

c[-2]:= a[1] > [2];

for k:= 1 to 10 do

a[k]:= 0;

.....

End.

В правильно составленной программе индекс не должен выходить за пределы, определенные типом-диапазоном. Например, можно использовать элементы А[1], В[38], С[0], но нельзя А[0] или С[38]. Турбо Паскаль может контролировать использование индексов в программе на этапе компиляции и на этапе счета программы.
Для иллюстрации приемов работы с массивами составим программу, которая создает массив случайных целых чисел, подсчитывает их среднее арифметическое, а также определяет и выводит на экран минимальное и максимальное из этих чисел.

Program Average;

{Программа создает массив из N случайных целых чисел, равномерно распределенных

в диапазоне от 0 до MAX_VALUE-1, подсчитывает среднее арифметическое этих чисел,

а также минимальное и максимальное из них.}

Const

N = 1000; {Количество элементов массива}

MAX_VALUE = 100+1; {Диапазон значений случайных чисел}

Var

m: array [1..N] of Integer; {Массив чисел}

i: Integer; {Индекс массива}

max, min: Integer; {Максимальное и минимальное число}

s: real; {Сумма чисел}

Begin

{Наполняем массив случайными числами:}

for i:= 1 to N do

m[i]:= random(MAX_VALUE);

{Задаем начальные значения переменных:}

s:= 0;

max: = m[1];

min:= m[1];

{Цикл вычисления суммы всех случайных чисел и поиска минимального и максимального:}

for i:= 1 to N do

Begin

s:= s + m [i];

if m[i] < min then

min:= m[i]

Else

if m[i] > max then

max:= m[i]

end;

{Вычисляем среднее значение и печатаем результат:}

WriteLn('Мин = ', min, ' Макс = ', max, 'Среднее = ', s/N)

End.

Для создания массива используется встроенная функция RANDOM (МАХ), которая возвращает случайное целое число, равномерно распределенное в диапазоне от 0 до МАХ-1 (МАХ -- параметр обращения).

Массивы в Турбо Паскале во многом схожи с аналогичными типами данных в других языках программирования. Отличительная особенность массивов заключается в том, что все их компоненты суть данные одного типа (возможно, структурированного). Эти компоненты можно легко упорядочить и обеспечить доступ к любому из них простым указанием его порядкового номера, например:

Type

digit = array [0..9] of char;

matrix = array [byte] of single;

Var

m: matrix;

d: digit;

i: integer;

Begin

.....

m[17]:= ord(d[i-1])/10;

.....

End.

Описание типа массива задается следующим образом:

<имя типа> = ARRAY [ <сп.инд.типов> ] OF <тип>

Здесь

< имя типа > -- правильный идентификатор;
ARRAY, OF -- зарезервированные слова (массив, из);
< сп.инд.типов > -- список из одного или нескольких индексных типов, разделенных запятыми; квадратные скобки, обрамляющие список, -- требование синтаксиса;
< тип > -- любой тип Турбо Паскаля.

В качестве индексных типов в Турбо Паскале можно использовать любые порядковые типы, кроме LONGINT и типов-диапазонов с базовым типом LONGINT.
Определить переменную как массив можно и непосредственно при описании этой переменной, без предварительного описания типа массива, например:

Var

a,b: array [1..10] of real;

Обычно в качестве индексного типа используется тип-диапазон, в как тип, в котором задаются границы изменения индексов. Так как тип < тип >, идущий за словом OF, -- любой тип Турбо Паскаля, то он может быть, в частности, и другим массивом, например:

Type

mat = array [0..5] of array [-2..2] of array [char] of byte;

Такую запись можно заменить более компактной:

Type

mat = array [0..5,-2..2,char] of byte;

Глубина вложенности структурированных типов вообще, а следовательно, и массивов -- произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничено, однако суммарная длина внутреннего представления любого массива, как уже говорилось, не может быть больше 65520 байт. В памяти ПК элементы массива следуют друг за другом так, что при переходе от младших адресов к старшим наиболее быстро меняется самый правый индекс массива. Если, например,

Var

а: array [1..2,1..2] of byte;

Begin

а[1,1]:= 1;

а[2,1]:= 2;

а[1,2]:= 3;

а[2,2]:= 4;

end.

то в памяти последовательно друг за другом будут расположены байты со значениями 1, 3, 2, 4. Это обстоятельство может оказаться важным при использовании стандартной процедуры копирования памяти MOVE.
В Турбо Паскале можно одним оператором присваивания передать все элементы одного массива другому массиву того же типа, например:

va r

a,b: array [1..5] of single;

Begin

.....

a:= b;

.....

end.

После этого присваивания все пять элементов массива А получат те же значения, что и в массиве В, Однако над массивами не определены операции отношения. Нельзя, например, записать

if a = b then...

Сравнить два массива можно поэлементно, например:

Var

a,b: array [1..5] of single;

eq: Boolean;

i: byte;

Begin

.....

eq:= true;

for i:= 1 to 5 do

if a[i] <> b[i] then

eq:= false;

if eq then

.....

end.


Вопрос







Дата добавления: 2015-12-04; просмотров: 238. Нарушение авторских прав; Мы поможем в написании вашей работы!



Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Анализ микросреды предприятия Анализ микросреды направлен на анализ состояния тех со­ставляющих внешней среды, с которыми предприятие нахо­дится в непосредственном взаимодействии...

Типы конфликтных личностей (Дж. Скотт) Дж. Г. Скотт опирается на типологию Р. М. Брансом, но дополняет её. Они убеждены в своей абсолютной правоте и хотят, чтобы...

Гносеологический оптимизм, скептицизм, агностицизм.разновидности агностицизма Позицию Агностицизм защищает и критический реализм. Один из главных представителей этого направления...

Почему важны муниципальные выборы? Туристическая фирма оставляет за собой право, в случае причин непреодолимого характера, вносить некоторые изменения в программу тура без уменьшения общего объема и качества услуг, в том числе предоставлять замену отеля на равнозначный...

Тема 2: Анатомо-топографическое строение полостей зубов верхней и нижней челюстей. Полость зуба — это сложная система разветвлений, имеющая разнообразную конфигурацию...

Виды и жанры театрализованных представлений   Проживание бронируется и оплачивается слушателями самостоятельно...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия