Тема 1.1 Создание собственного модуля. Компиляция модулей.



 

 

Модуль - это автономно компилируемая программная единица, включающая в себя раз­личные компоненты раздела описаний (типы, константы, переменные, процедуры и функ­ции) и, возможно, некоторые исполняемые операторы инициирующей части.

Модули представляют собой прекрасный инструмент для разработки библиотек при­кладных программ и мощное средство модульного программирования. Важная особен­ность модулей заключается в том, что компилятор Турбо Паскаля размещает их программ­ный код в отдельном сегменте памяти. Максимальная длина сегмента не может превышать 64 Кбайта, однако количество одновременно используемых модулей ограничивается лишь доступной памятью, что дает возможность создавать весьма крупные программы.

Модуль имеет следующую структуру:

Unit<имя>;

Interface

<интерфейсная часть>

Implementation

<исполняемая часть>

Initialization < инициирующая часть>

Finalization <завершающая часть>

End.

Здесь unit - зарезервированное слово (единица); начинает заголовок модуля; <имя> - имя модуля (правильный идентификатор);

interface - зарезервированное слово (интерфейс); начинает интерфейсную часть модуля;

implementation - зарезервированное слово (выполнение); начинает исполняемую часть;

initialization -зарезервированное слово (инициация); начинает инициирующую часть модуля;

finalization - зарезервированное слово (завершение); начинает завершающую часть модуля;

end - зарезервированное слово - признак конца модуля.

Таким образом, модуль состоит из заголовка и четырех составных частей, любая из которых может быть пустой.

Заголовок модуля состоит из зарезервированного слова unit и следующего за ним имени модуля. Для правильной работы среды Object Pascal и возможности подключения средств, облегчающих разработку крупных программ, это имя должно совпадать с именем дискового файла, в который помещается исходный текст модуля. Если, например, имеем заголовок

Unit Global;

то исходный текст соответствующего модуля должен размещаться в дисковом файле global. pas. Имя модуля служит для его связи с другими модулями и основной программой. Эта связь устанавливается специальным предложением

Uses <сп.модулей>

Здесь uses - зарезервированное слово (использует);

<сп.модулей> -список модулей, с которыми устанавливается связь; элементами списка являются имена модулей, отделяемые друг от друга запятыми, например:

Uses Windows, SysUtils, MyUnit;

Интерфейсная часть открывается зарезервированным словом interface. В этой части содержатся объявления всех глобальных объектов модуля (типов, констант, переменных и подпрограмм), которые должны стать доступными основной программе и/или другим модулям.

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

Инициирующая и завершающая части чаще всего отсутствуют.

 

Компиляция модулей.

В среде Турбо Паскаля имеются средства, управляющие способом компиляции модулей и облегчающие разработку крупных программных проектов. В частности, определены три режима компиляции: COMPILE, МАКЕи BUILD. Режимы отличаются только способом связи компилируемого модуля или основной программы с другими модулями, объявленными в предложении USES.

При компиляции модуля или основной программы в режиме COMPILE (Alt+F9)все упоминаю­щиеся в предложении USESмодули должны быть предварительно откомпилированы и результаты компиляции помещены в одноименные файлы с расширением TPU.

Файл с расширением TPU(от англ. Turbo Pascal Unit)создается автоматически в результате компиляции модуля.

В режиме МАКЕ (F9)компилятор проверяет наличие ТРU файлов для каждого объявленного модуля. Если какой-либо из файлов не обнаружен, система пытается отыскать одноименный файл с расширением PAS,т.е. файл с исходным текстом модуля, и, если искомый файл найден, приступает к его компиляции. Кроме того, в этом режиме система следит за возможными из­менениями исходного текста любого используемого модуля. Если в PAS-файле(исходный текст модуля) внесены какие-либо изменения, то независимо от того, есть ли уже в каталоге соответ­ствующий TPU-файлили нет, система осуществляет его компиляцию перед компиляцией основной программы. Более того, если изменения внесены в интерфейсную часть модуля, то будут перекомпилированы также и все другие модули, обращающиеся к нему. Режим МАКЕ,таким образом, существенно облегчает процесс разработки крупных программ с множеством модулей: программист избавляется от необходимости следить за соответствием существующих TPU-файлов их исходному тексту, так как система делает это автоматически.

В режиме BUILD ( пункт меню Compile à Build )существующие TPU-файлы игнорируются, и система пытается оты­скать (и компилировать) соответствующий PAS-файkдля каждого объявленного в предло­жении USESмодуля. После компиляции в режиме BUILDпрограммист может быть уверен в том, что учтены все сделанные им изменения в любом из модулей.

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

 

Пример:Найти сумму 2 чисел используя свой модуль UnitSum и функцию Summa.

 

Модуль (файл UnitSum.pas)

unit UnitSum;

interface

uses crt;

function Summa (a1,b1:integer) : Real;

 implementation

function Summa;

      Begin

Summa:=a1+b1;

      End;

end.

Программа (файл Sum2Chs.pas)

uses crt, UnitSum;

var a, b : integer;

begin

clrscr;

write('Введите 1 число = ');

readln(a);

write('Введите 2 число = ');

readln(b);

write(' Сумма = ', Summa(a,b):10:2);

readkey;

end.

Задание №1 : Создать программу используя собственный модуль.

 

Вариант № 1

Вычислить периметр и площадь прямоугольного треугольника по заданным длинам двух катетов а и b.

Вариант № 2

Заданы координаты трех вершин треугольника (x1 y1), (x2 y2), (x3 y3). Найти его периметр и площадь.

 

Вариант № 3

Даны два числа. Найти среднее арифметическое кубов этих чисел и среднее геометрическое модулей этих чисел.

 

Вариант № 4

Вычислить расстояние между двумя точками с данными координатами (x1 ,y1 ) и (x2, y2).

 

Вариант №5

Даны два действительных числа х и у. Вычислить их сумму, разность, произведение и частное.

 

Вариант № 6

Вычислить корни квадратного уравнения ах2 + bх + с = 0, заданного коэффициентами а, b и с (предполагается, что а =0 и что дискриминант уравнения неотрицателен).

Вариант № 7

Текущее показание электронных часов: m часов (0 < m<23) n мин (0 < n < 59), k сек (0 < k < 59). Какое время будут показывать часы через P часов Q мин R сек?

Вариант № 8

    Ввести любой символ и определить его порядковый номер, а также указать предыдущий и последующий символы.

Вариант № 9

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

Вариант № 10

Даны три действительные числа. Возвести в квадрат те из них, значения которых неотрицательны, и в четвертую степень — отрицательные.

Вариант № 11

Даны две точки А(x1,y1) и В(x2,y2) Составить алгоритм, определяющий, которая из точек находится ближе к началу координат.

Вариант № 12

Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник. Если да, то будет ли он прямоугольным.

Вариант № 13

Даны действительные числа х и у, не равные друг другу. Меньшее из этих двух чисел заменить половиной их суммы, а большее — их удвоенным произведением.

Вариант № 14

Даны целые числа т, п. Если числа не равны, то заменить каждое из них одним и тем же числом, равным большему из исходных, а если равны, то заменить числа нулями.        

Вариант № 15

Дано трехзначное число N. Проверить, будет ли сумма его цифр четным числом

 

Задание №2 : Создать программу, используя собственный модуль.

 

Вариант №1

Ввести произвольную последовательность символов, предшествующих точке и выяснить, есть ли среди них буквы, входящие в слово ЭВМ и сколько раз они встречались.

 

Вариант №2

Ввести последовательность символов, предшествующих символу * и выяснить сколько среди них букв S, A, R. Все буквы S заменить на точку.

 

Вариант №3

Ввести произвольную последовательность символов, предшествующую символу “.“ и определить: сколько символов введено, есть ли среди них символ пробел, все встретившиеся буквы “A“ заменить символом “*“.

 

Вариант №4

Вывести произвольную последовательность из 15 символов и определить, есть ли среди них буквы, входящие в слово «Мера». Если они найдены, заменить их символом пробел.

 

Вариант №5

Ввести строку символов, состоящую из N слов, разделённых пробелом и определить, сколько слов введено, кроме того, вывести все слова отдельно «столбцом».

Вариант №6

Ввести произвольную последовательность из 30 символов и определить, есть ли среди них буквы входящие в слово “ШИНА” и сколько среди символов пробелов.

 

Вариант №7

Ввести последовательность символов, предшествующую символу "пробел" и выяснить: есть ли среди них буква Н, сколько раз встретился символ «=» , заменить букву «Н» на «?».

 

Вариант №8

Ввести произвольную последовательность из 20 символов и выяснить, - сколько среди них точек, сколько среди них пробелов, сколько среди них букв Ш.

Вариант №9

Ввести последовательность символов, предшествующих точке и выяснить, встретились ли среди них буквы, входящие в слово МИР.

 

Вариант №10

Ввести последовательность символов, предшествующих символу « - » и выяснить сколько среди них букв Н, Ю, Х. Все буквы Ю заменить на точку.

 

Вариант №11

Дан массив натуральных чисел А(10). Найти сумму элементов, кратных данному К.

 

Вариант №12

Дана последовательность целых чисел а1, …, а10. Выяснить, какое число встречается раньше – положительное или отрицательное.

 

Вариант №13

Дана последовательность действительных чисел а1 , …, а10. Заменить все ее члены, большие данного Z, этим числом. Подсчитать количество замен.

 

Вариант №14

Дан массив действительных чисел, размерность которого 10. Подсчитать сколько в нем отрицательных, положительных и нулевых элементов.

 

Вариант №15

    Даны целые числа а1, а2, …, а10.Вывести на печать только те числа, для которых выполняется а[i] < i.

 

Задание №3 :

Вариант №1

Даны натуральные числа а1, а2, …, а10.Подсчитать количество чисел у которых остаток от деления на М равен L (O <L <M - 1).

 

Вариант №2

При поступлении в вуз абитуриенты, получившие “двойку” на первом экзамене, ко второму не допускаются. В массиве А[10] записаны оценки экзаменующихся, полученные на первом экзамене. Подсчитать, сколько человек не допущено ко второму экзамену.

 

Вариант №3

Дана последовательность чисел, среди которых имеется один нуль. Вывести на печать все числа, включительно до нуля.

 

Вариант №4

Дана последовательность действительных чисел а1, а2, …, а10. Подсчитать те ее элементы, которые принадлежат отрезку [c, d].

 

Вариант №5

Дана последовательность целых положительных чисел. Найти произведение только тех чисел, которые больше заданного числа М. Если таких нет, то выдать сообщение об этом.

 

Вариант №6

Последовательность а1, а2, …, аn состоит из нулей и единиц. Поставить в начало этой последовательности нули, а затем единицы.

 

Вариант №7

В последовательности действительных чисел а1, а2, …, а10, есть только положительные и отрицательные элементы. Вычислить произведение отрицательных элементов P1 и произведение положительных элементов P2. Сравнить модуль Р2 с модулем Р1 указать, какое из произведений по модулю больше.

 

Вариант №8

Дан массив действительных чисел. Среди них есть равные. Найти первый максимальный элемент массива и заменить его нулём

 

Вариант №9

Даны целые числа а1, а2, …, а10. Наименьший член этой последовательности заменить целой частью среднего арифметического всех членов, остальные члены оставить без изменений.

 

Вариант №10

Даны действительные числа а1, а2, …, а10. Требуется умножить все члены последовательности на квадрат ее наименьшего члена, если а10 > 0, и на квадрат ее наибольшего члена, если а10 < 0.

 

Вариант №11

Ввести последовательность символов, предшествующую символу "пробел" и выяснить: есть ли среди них буква А, сколько раз встретился символ "." , заменить букву В на *

 

Вариант №12

Ввести произвольную последовательность из 20 символов и выяснить, - сколько среди них точек, сколько среди них пробелов, сколько среди них букв Д.

 

Вариант №13

Ввести произвольную последовательность символов, предшествующую символу ! и выяснить, есть ли среди них буквы, входящие в слово КУРС и сколько раз какая из этих букв встретилась.

Вариант №14

Ввести последовательность символов, предшествующих точке и выяснить, встретились ли среди них буквы, входящие в слово ТУР.

 

Вариант №15

Ввести последовательность символов, заканчивающихся * выяснить: сколько пробелов, сколько букв А, сколько букв С, все буквы А заменить на точку

 

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

 

1. Что такое модуль?

2. Из каких частей состоит модуль?

3. Виды компиляции модулей.

 


 


Дата добавления: 2018-08-06; просмотров: 486; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!