Навигация
Главная
Поиск
Форум
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
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 14
На сайте нет зарегистрированных пользователей

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

Моделирование процесса поступления заявок в систему, состоящую из трёх Э...
Расчет размера дохода на одного человека в Turbo Pascal
Моделирование системы управления качеством производственного процесса на...

Массив


Тип-массив представляет собой фиксированное количество упорядоченных однотипных компонент, снабженных индексами. Он может быть однономерным и многомерным. Чтобы задать тип-массив, используется зарезервированное слово 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 15:29:55 · 1 Комментариев · 8935 Прочтений · Для печати

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


Комментарии
Владислав June 01 2015 15: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...
Шаблон для новост...

Случайные загрузки
Crypt32
Delphi World 6.0
Globus VCL Extent...
Printgrid
Советы от Даниилы...
Comdrv
JBlabel3D
Простой пример ка...
RbControls
Drag&Drop
Конвертирование и...
FatScrollbar
PBEditPack
Таймер и секундомер
Учебник по создан...
Основы программир...
Пример OpenGL гра...
De Knop
Введение в станда...
Усложнённый кальк...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97836
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14191
Borland Delphi ... 10291
Turbo Pascal fo... 7374
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Правила описания т...
Использование MIPS...
Деструктор
Где уклономер купить
Многоплановые прот...
Поисковые машины и...
На томе NTFS разре...
Как узнать - прису...
Простое открытое н...
Domain Admins Admi...
Прямой метод решен...
Исходные положения...
Можно рассматриват...
Слежение
Сканеры и камеры и...
Сжатие и кодирован...
Таблицы имеют след...
Возможности дальне...
Континент дверной
Одномерный объект ...
Кошачий туалет зак...
Переключитесь в ре...
10.3. Форма запис...
Найдите лучшие RTP...
Основные управляющ...
Статистика



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


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