Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Содержание сайт... 65535
Вызов хранимых ... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Организация зап... 64610
Создание потоко... 61819
Модуль Forms 61233
Создание отчето... 61178
ТЕХНОЛОГИИ ДОСТ... 57633
Пример работы с... 55131
Имитационное мо... 53028
Реклама
Сейчас на сайте
Гостей: 8
На сайте нет зарегистрированных пользователей

Пользователей: 13,067
новичок: senata7
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Расчет размера дохода на одного человека в Turbo Pascal
База данных междугородних телефонных разговоров на Delphi
Метод конечных разностей для интерполяции/экстраполяции на Delphi

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Массив


Тип-массив представляет собой фиксированное количество упорядоченных однотипных компонент, снабженных индексами. Он может быть однономерным и многомерным. Чтобы задать тип-массив, используется зарезервированное слово array, после которого следует в квадратных скобках указать тип индекса (индексов) компонент и далее после слова of - тип самих компонент:
type <имя типа> = аггау[<тип индекса(индексов)>] of <тип компонент>;



Пример 1. Объявление типов-массивов
type
Arr = array[1..3] of Real; {Тип-массив из трех вещественных чисел}
Matrix = array[1..3, 1..2] of Integer;
{Тип - двумерный массив целых чисел, состоящий из 3 строк и 2 столбцов}



Вместо квадратных скобок можно использовать круглые скобки с точками:
type
Arr = array(. 1 ..3.) of Real; {Тип-массив из трех вещественных чисел}
Matrix = array(.1..3, 1..2.) of Integer;
{Тип - двумерный массив целых чисел, состоящий из 3 строк и 2 столбцов}



После описания типа-массив можно задать переменные или типизированные константы этого типа.
Размерность массива может быть любой, компоненты массива могут быть любого (в том числе и структурированного) типа, индекс (индексы) может (могут) быть любого порядкового типа, кроме типа Longint. При употреблении в качестве типа индекса типа Integer или Word можно использовать только его диапазон.
Пример 2. Объявление типов-массивов
type
Arr = array[1..n] of Real; {Тип-массив из n вещественных чисел}
Matrix = array[1..2] of Arr;
{Тип - двумерный массив целых чисел, состоящий из 3 строк и 2 столбцов}



В данном случае массив Arr описан с использованием константы n, которая должна быть определена до определения типа. Попытки использовать ввод для задания значеия n будут ошибочны.
При задании значений константе-массиву компоненты указываются в круглых скобках и разделяются запятыми, причем, если массив многомерный, внешние круглые скобки соответствуют левому индексу, вложенные в них круглые скобки - следующему индексу и т. д. При этом все компоненты массива должны быть заполнены.
Пример. Задание переменных-массивов
Для введенных выше типов можно задать, например, следующие переменные и константы:
var
М1, М2: Arr; Matr: Matrix; const
M3: Arr = (1,2,3);
Mat: Matrix = ((1, 2), (3, 4), (5, 6));



Последняя константа соответствует следующей структуре:
1 2
3 4
5 6



Примечание. Тип-массив можно вводить непосредственно и при определении соответствующих переменных или типизированных констант.
Пример. Другое задание переменных-массивов
var
М1, М2: array[1..3] of Real; Matr: array[1..3, 1..2] of Integer;



Здесь определены те же массивы, что и в предыдущем примере.
При таком объявлении массивов следует помнить, что их типы не будут идентичными никаким другим типам, даже если они имеют одинаковую структуру. Поэтому передавать их как параметры в подпрограмму нельзя, нельзя также присваивать им значения других массивов (и наоборот), даже если их структуры совпадают - в таком случае допустимо лишь покомпонентное присваивание.
Доступ к компонентам массива осуществляется указанием имени массива, за которым в квадратных скобках помещается значение индекса (индексов) компоненты. В общем случае каждый индекс компоненты может быть задан выражением соответствующего типа.
Пример обращения к элементам массива:
М1[2], Matr[X, Y], и т. д.
Одному массиву можно присвоить значение другого массива, но только идентичного типа. Так, если заданы следующие массивы:
var А, В: array[1..5] of Integer, С: array[1..5] of Integer,



то допустим оператор
А:=В; С другой стороны, оператор
С:=А; недопустим, так как массивы А и С - неидентичных типов.

Действия над массивами:

Для работы с массивом как с единым целым используется идентификатор массива без указания индексов в квадратных скобках.
Массив может участвовать только в операциях отношения («=», «<>») и в операторе присваивания.
Массивы, участвующие в этих действиях, должны быть идентичны по структуре, то есть иметь одинаковые базовые типы и типы индексов.

Имеются некоторые отличия в работе с одномерными массивами символов. Так, типизированным константам этого вида можно присвоить значение, как обычным строковым константам, указав строку символов в одинарных кавычках, например:
const
A: array[1..5] of Char='aaaaa'
В: array[1..3] of Сhаг=’BBB';



При этом совершенно необязательно, чтобы размер строковой константы совпадал с размером массива - константа может быть меньшего размера.
Для таких массивов, как и для строк, можно использовать операции сравнения (даже если они неидентичных типов, и даже если имеют различный размер) и объединения. Их можно использовать в операторах вывода Write и WriteLn. Например, для введенных выше массивов можно написать:
if A > В then
WriteLn(A) else
WriteLn(B);



Пример. Создание массива значений функции sin(x) с заданным шагом
Напишем программу, которая вычисляет 101 значение функции sin(x) и выводит первое отрицательное значение синуса.
Заметим, что для работы с массивами обычно удобно использовать какой-либо из циклов, чаще всего цикл FOR. Программа будет выглядеть следующим образом:
program EXAMPLE27; {Заголовок программы}
{Вычисление функции sin(x)} label 1; var
Si: array[0..100] of Real; {Массив вещественных чисел}
Step: Real; {Шаг}
X: Real; {Значение аргумента}
i: Integer, {Параметр цикла}
begin
Write('Введите шаг вычисления: '); {Запрос на ввод шага вычисления}
ReadLn[Slep); {Чтение значения шага вычисления}
X := 0; {Начальный аргумент}
for i := 0 to 100 do {Цикл расчета значений синуса}
begin
Si[i]:=Sin(X); X := X + Step; end;
for i := 0 to 100 do {Проверка знака значения}
if Si[i] < 0 then {Если число отрицательное...}
begin Writeln('Первое отрицательное значение синуса:', Si[i],' Номер элемента:', i);
{Вывод сообщения}
goto 1; {На завершение программы}
end; WriteLn('HeT отрицательного значения");
{Сообщение, что нет отрицательного значения}
1: ReadLn; {Приостановка программы}
end.


Опубликовал Kest April 07 2010 19:29:55 · 1 Комментариев · 7346 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Владислав June 01 2015 18:12:02
Хорошо написано, подробно
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Профессиональное ...
Шифрование по алг...
Assembler. Учебни...
Пример работы с р...
Профессиональное ...
Программирование ...
Панель Наша Кнопка
DragMe [Исходник ...
DFileDeleter
Мод "проверочный ...
PHP 5. Полное рук...
Архив Апгрейтов с...
Delphi. Разработк...
3D Тетрис [Исходн...
Черный круг двига...
PDPcheck
isoCanvas (Редакт...
начисление процен...
Run
Создание меню на ...

Топ загрузок
Приложение Клие... 100384
Delphi 7 Enterp... 83530
Converter AMR<-... 20051
GPSS World Stud... 11301
Borland C++Buil... 11234
Borland Delphi ... 8176
Turbo Pascal fo... 6987
Visual Studio 2... 4970
Калькулятор [Ис... 4416
FreeSMS v1.3.1 3516
Случайные статьи
ЭЛЕМЕНТЫ ПРОЦЕДУРЫ...
Приложение XHTML B...
Распределение траф...
Если импульсный от...
Сжатие страниц на PHP
Бизнес-процессы
Информационные и с...
Перечислимый тип в...
Объект класса Matr...
Задание области пе...
Форум на вашем сер...
4.1. Пишем программу
Часто задаваемые в...
5. Что нужно сдела...
Работа в среде Тур...
Элементарная комби...
SIMULATE (МОДЕЛИРО...
Несколько слов о ш...
Игровые автоматы....
Комментарии в языке С
Программа TidyGUI
4.3. Смысл верифик...
Компиляция - Проло...
Активация
Закон поглощения л...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?