|
||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[20] ции и т. д. Модуль определяется как программа, начинающаяся со служебного слова "Unit" и включающая в себя интерфейсную, исполняемую и инициирующую части. Интерфейсная часть модуля начинается со служебного слова "Interface" и состоит из раздела описания глобальных имен типов, меток, констант, переменных, а также заголовков процедур, доступных основной программе. Исполняемая часть модуля начинается со служебного слова "Implementation" и содержит полное описание процедур (заголовок, разделы описания и выполнения), заголовки которых перечислены в интерфейсной части, а также локальных имен типов, меток, констант и переменных, используемых в инициирующей части. Инициирующая часть модуля начинается со служебного слова "Begin" и содержит блок операторов, выполняемых при подключении модуля к основной программе. Инициирующая часть вместе со словом "Begin" может отсутствовать или быть пустой. Заканчивается модуль служебным словом "End. " с точкой. Содержимое исполняемой и инициирующей частей не доступно основной программе, связь модуля с основной программой осуществляется через интерфейсную часть модуля. Структура модуля имеет вид: Unit Name M; { Name M - имя модуля } {-----------------------------------------------------------------} Interface{ Интерфейсная часть модуля} { ------------------------------------раздел описания глобальных имен} Type MM= array[1..10, 1..10] of real;{ описание типа} Var Max F, Min F: real;{описание глобальных переменных} {----------------------------------------------------------------- } Procedure Name P(p1: real; p2: MM); { описание заголовков процедуры} Function Name f(p3, p4: real): real;{и функции} {----------------------------------------------------------------- } Implementation{ Исполняемая часть модуля} { --------------------------------------раздел описания локальных имен} Const C = Подключен модуль Name M;{ задание локальной константы} Procedure Name P;{Полное описание процедуры} { Раздел описания процедуры} Begin { Раздел выполнения процедуры}End; Function Name f: real;{Полное описание функции} { Раздел описания функции} Begin { Раздел выполнения функции}End; { ---------------------------------------------------------------- } BEGIN{ Инициирующая часть модуля} Writeln(C); { операторы модуля} Отметим, что в интерфейсной части модуля запрещается делать опережающее описание процедур. Запрещается также рекурсия модулей. Модуль записывается в файл с именем модуля, например, Name M. pas. Затем файл компилируется, при этом получается файл с расширением ". tpu", например, Name M. tpu, который автоматически записывается в каталог, указанный в опции Options, Directories, EXE & TPU, иначе - в текущий каталог. При запуске программы, использующей модуль, файл с расширением ". tpu" ищется в каталоге, указанном в опции Options, Directories, EXE & TPU или Unit Directories, либо в текущем каталоге. Подключение модулей осуществляется в начале основной программы с помощью служебного слова "Uses" с указанием имен модулей, например: Program Pr 1; Uses Name M1, Name M2; Если в основной программе имя идентификатора совпадает с именем, объявленным в интерфейсной части подключенного модуля, то используются значения, присвоенные идентификатору в программе. Если одинаковые имена встречаются в интерфейсной части подключенных модулей (например в Name M1 и Name M2), то используются значения, присвоенные идентификатору в последнем описанном модуле, т. е. в Name M2. Приведем пример разработки и подключения модуля. В модуле опишем процедуры работы с матрицами. Unit MATR 1; {-----------------------------------------------------------------} Interface {-----------------------------------------------------------------} Type M = array[1..10, 1..10] of real; M1 = array[1..10] of real; Procedure MAT 1(a:M; var b:M; n: word); Procedure MAT 2(a:M; var b:M1; n: word); {-----------------------------------------------------------------} Implementation {-----------------------------------------------------------------} Procedure MAT 1;{создание матрицы "B", транспонированной к "A"} var i, j: word; begin for i:=1 to N do for j:=1 to N do b[i,j]:=a[j,i] end; {-----------------------------------------------------------------} Procedure MAT 2;{расчет квадратов диагональных элементов} var i, j: word; begin for i:=1 to N do b[i]:=a[i,i]*a[i,i] end; {-----------------------------------------------------------------} В основной программе PR 1 подключается модуль MATR 1 и используются процедуры MAT 1 и MAT 2. Program PR 1; Uses MATR 1; Type MM = M; MM1 = M1; Var a1,a2,a3: MM; b1,b2: MM1; i,j,n: word; Begin Writeln(введите размерность матрицы N=); Readln(n); Randomize; for i:=1 to n do for j:=1 to n do a1[i,j]:=random(20)+1; MAT 1(a1, a2, n); MAT 1(a2, a3, n); MAT 2(a1, b1, n); MAT 2(a2, b2, n) end. В результате двойного транспонирования исходной матрицы "a1" (из "a1" в "a2", из "a2" в "a3") получается матрица "a3" тождественная "a1" . Матрицы "b1" и "b2" содержат квадраты диагональных элементов матриц "a1" и "a2". Типы массивов фактических параметров должны соответствовать типам массивов формальных параметров, описанных в модуле MATR 1. Можно использовать имена типов, заданные в интерфейсной части модуля или задавать новые имена типов. Практическое задание N 1. 33 1.Написать и отладить программы с использованием модуля, содержащего процедуры расчета элементов линейных массивов " В", являющихся: 1 1.суммой элементов в столбцах матрицы "A" (NxM), 1 2.суммой элементов в строках матрицы "A" (NxM), 1 3.наибольшими элементами в строках матрицы "A" (NxM), 1 4.наименьшими элементами в строках матрицы "A" (NxM). 1 5.наибольшими элементами в столбцах матрицы "A" (NxM), 1 6.наименьшими элементами в столбцах матрицы "A" (NxM). N=30, M=10. Значения элементов матрицы "A" определяются в основной программе функцией Random(10), N=15, M=6. Программа выводит на экран значения элементов массивов "A" и "В". 2.Составить модуль, содержащий процедуры или функции для расчета: 2 1. скалярного произведения двух векторов "A" и "B" длиной "N", т. е. С= A * B = a1*b1 + a2*b2 + ... + aN*bN, где N<=100. 2 2. суммирования двух матриц "A" и "B" размером (МxN), N<=30, M<=30, т. е. С= A + B , где c11= a11+ b11; b12 = a12+ b12; и т. д. cMN = aMN+ bMN. 2 3. умножения двух матриц "A" (№fxN) и "B" (NxK) , N<=30, K <=30, M<=30, т. е. С= A * B , где cij= ai1* b1j+ ai2* b2j + ... + aiN* bNj ; и т. д. Элемент с индексом "i, j" новой матрицы "С" (МхК) получается как сумма произведений элементов i -ой строки матрицы "A" на соответствующие элементы j -ого столбца матрицы "В". Значения элементов матрицы "A" определяются в основной программе функцией Random(200), М=5, N=10. Программа выводит на экран массивы "A", "В" и "С". 1. 14. Модуль СRT 1. 14. 1. Управление экраном в текстовом режиме |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||