Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Массивы переменной длины (динамические массивы) и открытые массивы (с неопределёнными границами) в параметрах процедуры.Содержание книги
Поиск на нашем сайте Обычно размеры массива неизменны и поэтому должны описываться явно с помощью констант, задающих нижнюю и верхнюю границы диапазона, или назва- ний типов. Такие массивы называются статическими. Паскаль позволяет опреде- лять также динамические массивы, размер которых заранее не известен и может меняться во время работы программы. Для описания динамических массивов ука- зывать диапазоны значений его измерений не нужно. type TDynArray: array of integer; Первоначально в переменной, описанной как динамический массив, нет ни одного элемента. Ее размер задается с помощью стандартной процедуры SetLengthQ. В качестве первого параметра указывается имя переменной, в качестве второго — число элементов в массиве. Если новое число элементов больше старого, то новые элементы добавляются в конец массива, а ихзначения исходно будут не определены. Если новое число элементов меньше старого, то последние элементы массива отбра- сываются и теряются. Отсчет элементов динамического массива всегда начинается с нуля. var a: TDynAirray; begin SetLengthl a, 1); а[0]:= 2; Чтобы освободить память, выделенную динамическому массиву, и сделать его длину нулевой, надо соответствующей переменной присвоить значение nil: а:= nil; 'J ЗАМЕЧАНИЕ Ключевое слово языка Паскаль nil обозначает «отсутствие значе- ния». Определение собственных типов данных 43 После этого в массиве а не окажется ни одного значения. В дальнейшем длину массива а можно изменить снова. Как и статические массивы, динамические массивы могут иметь несколько изме- рений. Для каждого из измерений при описании массива надо повторить описание array of. Например, если требуется объявить динамический массив целых чисел с двумя измерениями, надо записать так: type ТЗПАггау = array of array of integer; Далее надо объявить размер этого массива по каждому измерению. Реализация динамических массивов в Паскале позволяет, в отличие от описания статических массивов, задавать разные диапазоны для одного измерения. Например, когда опи- сан двумерный массив (обычно это карта, график, иоле), сначала задается размер по первому измерению (число столбцов): var D: ТЗВАггау; begin SetLength(D,4); Далее нужно указать число элементов для каждого из четырех столбцов (при опи- сании статических массивов это число считается одинаковым для всех столбцов). Длина соответствующего столбца задается указанием имени массива с номером столбца с помощью процедуры SetLength(): SetLength(D[0], 3); SetLengthl D[l], 5); SetLengthf D[2], 30 ],- SetLengthf D[3], 1); ПОДСКАЗКА Динамические массивы позволяют существенно экономить память и запрашивать ее у операционной системы по мере необходимо- сти, однако работа с ними в программе происходит значительно медленнее, чем со статическими массивами. Передача массивов в качестве параметров Стандартный прием Паскаля состоит в описании массива как типа данных и ука- зании этого типа для параметра подпрограммы. Однако таким способом удается обрабатывать только динамические массивы и статические массивы заранее задан- ной длины. Часто требуется, чтобы подпрограмма не ограничивалась конкретными размерами массива. Например, функция, вычисляющая сумму всех элементов мас- сива, должна уметь получать в качестве параметра массив любой длины. Динами- Подпрограммы 59 ческие массивы использовать не всегда удобно и не всегда правильно, так как они ухудшают эффективность работы программы. В Паскале разрешается указывать в качестве параметров массив с неопределенными границами. procedure Sum(A: array of Byte); ВНИМАНИЕ Данное описание похоже но описание динамического массива, но не является токовым. Это просто форма записи параметра подпро- граммы для передачи статического массива заранее не известной длины. Теперь массив, описанный как var Ar: array [1..25] of Byte; можно без проблем передавать в процедуру Sum: Sum(Ar]; При этом внутри тела подпрограммы действуют следующие правила: О Нумерация элементов массива начинается с нуля (число элементов можно определить с помощью стандартной функции SizeOf); О Функция High возвращает верхнюю границу массива (равную SizeOf()-l); О Копирование массива одним оператором присваивания не разрешается; О Вместо массива в подпрограмму может быть передана обычная переменная соответствующего типа. Внутри подпрограммы она будет представлена в виде массива из одного элемента (с индексом 0).__
|
||
|
Последнее изменение этой страницы: 2017-02-21; просмотров: 381; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.10 (0.007 с.) |