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

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

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






Массивы

На самом деле массив в 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; просмотров: 242. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Разработка товарной и ценовой стратегии фирмы на российском рынке хлебопродуктов В начале 1994 г. английская фирма МОНО совместно с бельгийской ПЮРАТОС приняла решение о начале совместного проекта на российском рынке. Эти фирмы ведут деятельность в сопредельных сферах производства хлебопродуктов. МОНО – крупнейший в Великобритании...

ОПРЕДЕЛЕНИЕ ЦЕНТРА ТЯЖЕСТИ ПЛОСКОЙ ФИГУРЫ Сила, с которой тело притягивается к Земле, называется силой тяжести...

СПИД: морально-этические проблемы Среди тысяч заболеваний совершенно особое, даже исключительное, место занимает ВИЧ-инфекция...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

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