Пример разработки собственного модуля
Разработку собственного модуля рассмотрим на следующем примере: Пусть дано задание: разработать личную библиотеку, включив в нее процедуры: · ввода элементов числовой матрицы размером N*N; · транспонирования матрицы; · вывода результирующей матрицы. В основной программе ввести размер матрицы N. Начнем разработку модуля, который будет носить название Matrix. Программно это будет выглядеть так: Unit Matrix; {Зарезервированное слово Unit служит для указания имени библиотеки. Это имя должно совпадать с именем PAS-файла библиотеки (т.е библиотека Matrix должна находиться с файле Matrix.Pas), а иначе компилятор даст ошибку при попытке использования такой библиотеки} Interface {Секция Interface содержит описания общедоступных типов данных, констант, процедур и функций. Т.е. все, что будет здесь находиться можно будет использовать при подключении данной библиотеки.} Type TMatrix = array [1..10,1..10] of Integer; { Квадратная матрица } procedure MatrInput (Var m: TMatrix; n: Integer); { ввод матрицы } procedure MatrOutput (Var m: TMatrix; n: Integer); { вывод матрицы } procedure MatrTransp (Var m: TMatrix; n: Integer); { транспонирование } Implementation {Секция Implementation содержит реализацию тел процедур и функций, описанных в Interface. Также здесь могут содержаться типы данных, константы, процедуры и функции, необходимые для работы, но которые не будут видны программе при подключении библиотеки.} {Процедура обмена местами двух элементов матрицы (x1,y1) и (x2,y2). Эта процедура используется при транспонировании матрицы, но ее нельзя вызвать при подключении библиотеки, т.к. она не объявлена в секции Interface. } procedure Swap (Var m: TMatrix; x1,y1,x2,y2: Integer); var temp: Integer; begin temp:= m[x1,y1]; m[x1,y1]:= m[x2,y2]; m[x2,y2]:= temp; end; {Ввод матрицы с клавиатуры. Параметры процедуры здесь не указаны, т.к. они есть в секции Interface }
procedure MatrInput; var i,j: Integer; begin for i:=1 to n do begin Write(i:3,'-я строка: '); for j:=1 to n do Read(m[i,j]); ReadLn; end; end; {Транспонирование матрицы.} procedure MatrTransp; var i,j: Integer; begin for i:=1 to n-1 do for j:=i+1 to n do Swap (m,i,j,j,i); end; {Вывод матрицы на экран.} procedure MatrOutput; var i,j: Integer; begin for i:=1 to n do begin Write(i:3,'-я строка: '); for j:=1 to n do Write (m[i,j]:4); WriteLn; end; end; {Эта секция может использоваться для инициализации работы библиотеки.} Begin End. Создание модуля закончено. Теперь необходимо создать файл, который будет содержать текст основной программы, в которой будет подключаться разработанный выше модуль. {Это отдельный файл, содержащий основную программу} Uses Crt, { Библиотека стандартных процедур управления экраном и клавиатурой } Matrix; {Наш разработанный модуль-библиотека работы с квадратными матрицами (личная)} Var m: TMatrix; { Объявляем матрицу - максимальный размер 10*10 } n: Integer; { Размер матрицы } Begin { Повторяем ввод размера, пока не будет введено корректное значение} repeat ClrScr; Write('Введите размер матрицы (1..10): '); ReadLn(n); until (n >= 1) and (n <= 10); WriteLn; WriteLn('Введите матрицу размера',n,'*',n,'по строкам:'); MatrInput (m,n); {вызов процедуры ввода матрицы, определенной в модуле Matrix} {Транспонируем ее } MatrTransp (m,n); {вызов процедуры транспонирования матрицы, определенной в модуле Matrix} { Выведем результат на экран } WriteLn; WriteLn('Транспонированная матрица:'); MatrOutput (m,n); {вызов процедуры вывода матрицы, определенной в модуле Matrix} End.
Читайте также: b) Пример классического. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|