Навигация
Главная
Поиск
Форум
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
Создание отчето... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Модуль Forms 65535
ТЕХНОЛОГИИ ДОСТ... 63078
Имитационное мо... 58363
Реклама
Сейчас на сайте
Гостей: 4
На сайте нет зарегистрированных пользователей

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

Информационная система - транспортный парк на Turbo Pascal (База данных)...
Моделирование автомойки на GPSS + Отчет + Блок схемы
Моделирование информационно-поисковой библиографической системы на gpss ...

Реклама



Подписывайся на 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 Комментариев · 7682 Прочтений · Для печати

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


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

Случайные загрузки
Java Server Pages...
Indy in Depth Глу...
Пример работы с ф...
JanButtonsV
Globus VCL Extent...
Панель Наша Кнопка
PCXReader. Програ...
Tetris 2002
Простой текстовый...
PolyFlow
Animation (Пример...
OnlineIP
Matrix2D
NotePad Pro [Исхо...
Halcyon
WordReport
PrevInst
Comdrv
CS:Source - монит...
Dealer

Топ загрузок
Приложение Клие... 100481
Delphi 7 Enterp... 87901
Converter AMR<-... 20082
GPSS World Stud... 13568
Borland C++Buil... 12072
Borland Delphi ... 8676
Turbo Pascal fo... 7048
Visual Studio 2... 5005
Калькулятор [Ис... 4912
FreeSMS v1.3.1 3545
Случайные статьи
Отключение коротки...
Классы ORM.
Сложная схема линк...
вание цифровой под...
Поиск максимальног...
Как работает PHP
В программе предпо...
Занятие 2. Аутенти...
ОЧЕРЕДИ
ключу Для двух исп...
Концепция с исполь...
Программирование А...
КАК ПИСАТЬ РЕКУРСИ...
6.7. Формирование...
Определенные циклы
Интеграция журнала...
вычисления значени...
Квадратичное рехеш...
по всему лесу
Представление об о...
Клонирование и дру...
Как идентифицирова...
Перегрузка функций...
Информация о топол...
Установка голубого...
Статистика



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


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