78208

Особенности использования массивов в качестве параметров

Лекция

Информатика, кибернетика и программирование

Открытый массив представляет собой формальный параметр подпрограммы описывающий базовый тип элементов массива но не определяющий его размерности и границы: Procedure MyProcOpenrry: rry of Integer; Внутри подпрограммы такой параметр трактуется как одномерный массив с нулевой нижней границей. Используя минимальный индекс как ноль и значение возвращаемое функцией HIGH как максимальный индекс подпрограмма может обрабатывать...

Русский

2015-02-07

57.5 KB

1 чел.

екция: Особенности использования массивов в качестве параметров      Страница  2 из 2

Оглавление

[1] Оглавление

[2] Параметры-массивы и параметры-строки

[2.1] Контрольные вопросы

Комбинированный урок №10

Тема: Метод пошаговой детализации. Особенности использования массивов в качестве параметров.

Цель: изучить приемы составления программ с использованием массивов в качестве параметров на примерах.

Параметры-массивы и параметры-строки 

Может сложиться впечатление, что объявление переменных в списке формальных параметров подпрограммы ничем не отличается от объявления их в разделе описания переменных. Действительно, в обоих случаях много общего, но есть одно существенное различие: типом любого параметра в списке формальных параметров может быть только стандартный или ранее объявленный тип. Поэтому нельзя, например, объявить следующую процедуру:

Procedure S (a: array [1..10] of Real);

так как в списке формальных параметров фактически объявляется тип-диапазон, указывающий границы индексов массива.

Если необходимо передать какой-то элемент массива, то проблем, как правило, не возникает, но если в подпрограмму передается весь массив, то следует первоначально описать его тип. Например:

type atype = array [1..10]of Real; 

Procedure S(a: atype);

....... 

Поскольку строка является фактически своеобразным массивом, ее передача в подпрограмму осуществляется аналогичным образом:

type  intype = String [15] ;

outype = String [30] ; 

Function St (s : intype): outype;

.......

Открытый массив представляет собой формальный параметр подпрограммы, описывающий базовый тип элементов массива, но не определяющий его размерности и границы:

Procedure MyProc(OpenArray: array of Integer);

Внутри подпрограммы такой параметр трактуется как одномерный массив с нулевой нижней границей. Верхняя граница открытого массива возвращается функцией HIGH. Используя минимальный индекс как «ноль», и значение, возвращаемое функцией HIGH, как максимальный индекс, подпрограмма может обрабатывать одномерные массивы произвольной длины:

Пример 1: Иллюстрация использования открытых массивов: программа выводит на экран содержимое двух одномерных массивов разной длины с помощью одной процедуры ArrayPrint .

Procedure  ArrayPrint(aArray: array of Integer); 

var  k: Integer; 

begin

for k := 0 to High(aArray) do  Write(aArray[k]:8);

WriteLn 

end;

const A:array [-1..2] of Integer = (0,1,2,3); 

B: array [5..7] of Integer = (4,5,6); 

begin

 ArrayPrint(A);

 ArrayPrint(B) 

end.

Как видно из этого примера, фактические границы массивов А и В, передаваемых в качестве параметров вызова процедуре ArrayPrint, не имеют значения. Однако размерность открытых массивов (количество индексов) всегда равна 1. За этим следит компилятор. Если бы, например, добавить в программу двумерный массив С

var

С: array [1..3,1..5] of Integer;

то обращение

ArrayPrint(С);

вызывало бы сообщение об ошибке

Error26: Type mismatch. 

(Ошибка 26: Несоответствие типов.)

Пример 2: Программа вводит фамилию и выводит на экран фамилию с прописной буквы

uses crt;

type intype =string[15];

    outype = string[25];

var s : intype;

   i : integer;

function st(w: intype):outype;

begin

    w[1]:=upcase(s[1]); { изменение первого символа со строчного на прописной }

    st:=w+' TBiP''2009';{ склеивание символов }

end;

begin

    write('Vvedite famely: ');

    readln(s);

    writeln(st(s));

    readkey;

end.

Контрольные вопросы

1. Как оформляются параметры-массивы и параметры-строки? Приведите примеры.

2. Дайте определение понятию «открытый массив».


 

А также другие работы, которые могут Вас заинтересовать

73708. Поле проводника с постоянным током 70.5 KB
  Из условия стационарности делаем вывод что цепь постоянного тока замкнута. Рассмотрим проводник тока малый настолько что его можно считать трубкой тока. Выберем положительное направление обхода в направлении потока тока. произведение алгебраической величины тока на сопротивление равна разности потенциалов и ЭДС сторонних сил.
73709. Закон Джоуля-Ленца для участка цепи 387 KB
  Проводимость шариков много больше проводимости земного шара. Будем считать что в среде выполняется закон Ома в дифференциальной форме где проводимость среды в данной точке. Проводимость анизотропных сред. линейная проводимость квадратичная проводимость.
73710. Постоянное магнитное поле. Сила Лоренца 227.5 KB
  Постоянное магнитное поле. Можно полагать что в процессе движения заряд создает некоторое поле которое называется магнитное поле. Если один заряд или система зарядов создали поле с вектором то на другой заряд движущийся в этом поле действует сила. Поместим проводник в магнитное поле.
73713. Теорема о циркуляции вектора индукции магнитного поля 223 KB
  Рассмотрим провод с током выделим в нем прямолинейный участок и выделим в нем замкнутый контур. Выполним такое разбиение для каждого участка контура и просуммируем учтя что индукция магнитного поля созданного длинным проводом равна. Пусть теперь имеется много проводов и они пересекают поверхность натянутую на контур.
73715. Граничные условия для векторов и на границах раздела двух сред 384.5 KB
  Гаусса для вектора. Запишем поток вектора через поверхность. Устремим к нулю тогда где нормальная компонента вектора. получаем граничные условия вектора Выбреем замкнутый контур в виде прямоугольника со сторонами и и запишем теорему о циркуляции для вектора по данному замкнутому контуру.
73716. Парамагнетики. Диамагнетики. Ферромагнетики 164 KB
  Поместим наше тело во внешнее магнитное поле. Поле будем считать однородным. Суммарное поле будет больше. Если поместить атом во внешнее магнитное поле то электронная орбита начнет прецессироватьподробнее в лекции № 18.