Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Формальные параметры-массивы без указания границСодержание книги
Поиск на нашем сайте
В части II приводились примеры подпрограмм с параметрами-массивами. Тип массивов объявлялся до описания подпрограмм в разделе типов, причем размеры выбирались по максимальной длине фактических массивов, используемых в данной задаче. Такой подход, несомненно, имеет два недостатка: во-первых, теряется универсальность подпрограммы, а, во-вторых, память по фактические массивы объявляется с избытком. В рассматриваемых версиях Паскаля допускается в списке формальных параметров использовать конструкцию Array of тип без указания границ массивов. Такие массивы называются открытыми. Соответствующим фактическим параметром может быть как динамический, так и статический массив произвольного размера. Открытые массивы могут быть только одномерными, но их компоненты могут иметь сложный тип. Нумеруются элементы открытых массивов начиная с нуля. При работе с открытыми массивами, наряду с функциями High, Low, Length, может быть полезна функция Пример 1. Приведенная программа вычисляет максимальные значения элементов двух одномерных массивов. Подпрограммы ввода и обработки используют открытые массивы. program Project1; Var A:Array[1..5] of real; B:Array[1..8] of real; Procedure masin(c:char; Var A:array of real); Var i:integer; begin writeln('input vector',c,' size of ',Length(A)); for i:=Low(A) to High(a)do read(A[i]); readln; end{masin}; Function max(Var A:array of real):real; Var i:integer;mx:real; begin mx:=a[Low(A)]; for i:=Low(A)+1 to High(A) do if mx<A[i]then mx:=A[i]; max:=mx end{max}; begin masin('A',A); masin('B',B); writeln('maxa=',max(A),' maxb=',max(b)); readln end. Пример 2. В отличие от примера 1, приведенная программа позволяет обрабатывать не все элементы массивов (в соответствии с описанием), а только совокупность первых элементов массивов, число которых задается вводом. Эта возможность обеспечивается применением функции Slice. program Project2; Var A:Array[1..10] of real; B:Array[1..10] of real; nA,nB:integer; Procedure masin(c:char; Var A:array of real); Var i:integer; begin writeln('input vector',c,' size of ',Length(A)); for i:=Low(A) to High(a)do read(A[i]); readln; end{masin}; Function max(Var A:array of real):real; Var i:integer;mx:real; begin mx:=a[0]; for i:=Low(A)+1 to High(A) do if mx<A[i]then mx:=A[i]; max:=mx end{max}; begin writeln('Input number of components of array A'); readln(nA); masin('A',Slice(A,nA)); writeln('Input number of components of array B'); readln(nB); masin('B',Slice(B,nB)); writeln('maxa=',max(Slice(A,nA)),' maxb=',max(Slice(B,nB))); readln end. Пример 3. Этот пример показывает, как использовать подпрограммы с формальными параметрами, являющимися открытыми массивами, для обработки динамических матриц. Программа вычисляет и выводит сумму элементов каждой из двух матриц. Размеры матриц задаются вводом. На значения размеров не накладывается никаких ограничений. program Project3; Type str=array of real;{тип строки матрицы – динамический массив} Var nA,mA,nB,mb:integer; A,B:array of str; Function Sum(n,m:integer; Var a:array of str):real; Var s:real; i,j:integer; Begin s:=0; for i:=0 to n-1 do for j:=0 to m-1 do s:=s+a[i][j]; sum:=s End {Sum}; Procedure InMatr(n,m:integer; c:char;Var A:array of str); Var i,j:integer; Begin writeln('input matrix ', c, ' size of ', n, '*', m); for i:=0 to n-1 do begin SetLength(a[i],m); for j:=0 to m-1 do read(a[i][j]); end; readln; End; begin writeln ('Input sizes of matrix A'); readln (nA,mA); SetLength(A,nA); InMatr(nA,mA,'A',A); writeln ('Input sizes of matrix B'); readln (nB,mB); SetLength(B,nB); InMatr(nB,mB,'B',B); writeln('sumA=',Sum(nA,mA,A):6:1,' sumB=',Sum(nB,mB,B):6:1); readln; end. Приложение 1. Краткая инструкция по работе в среде · Вызов среды: bp (turbo) (или указать полное имя файла bp.exe (turbo.exe)); директория, из которой вызвали среду, будет считаться текущей, т. е. из нее будут браться (по умолчанию) и в ней сохраняться программы. · Изменение текущей директории: гл.меню/FILE/Change Dir. · · Создание нового файла: главное меню/FILE/NEW; после этого в окне среды можно набирать текст новой программы. · Сохранение файла: гл.меню/FILE/SAVE или SAVE AS (под другим именем) · Открытие ранее созданного файла: главное меню/FILE/OPEN · Трансляция программы: Compile/Compile Запуск программы на выполнение: Главное меню/RUN/RUN Просмотр результатов: ALT-F5 Переход в окно с нужным номером: ALT-№окна или с помощью пункта главное меню/ WINDOW или мышью. Просмотр каталога:File/Open, в качестве имени файла ввести имя_каталога\*.* Отладка программы: Организации трассировки программы: F8 - без захода в процедуры; F7 - с заходом в процедуры; F4 – запустить программу до места, указанного курсором. Просмотр значений переменных в ходе трассировки: Ctrl-F4 или Ctrl-F7. Работа с точками прерывания: главное меню/DEBUG. Выход из среды: File/EXIt или Alt-X. Внимание! Путь к файлам модулей должен быть указан в пункте меню OPTIONS/DIRECTORIES/UNIT DIRECTORIES
|
||||
Последнее изменение этой страницы: 2017-02-07; просмотров: 214; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.133.214 (0.005 с.) |