Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование на паскале2.doc
Скачиваний:
145
Добавлен:
31.03.2015
Размер:
935.94 Кб
Скачать

2.6.3. Использование модулей

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

Program ppp;

Uses crt,graph;{программа ppp использует модули crt и graph}

Если модуль использует другие модули, то предложение USESможет стоять либо после словаINTERFACE, либо после словаIMPLEMENTATION. Модули, подключенные в интерфейсной части, доступны в любой точке рассматриваемого модуля; модули, подключенные в исполняемой части, доступны в любом месте модуля, за исключением интерфейной части.

Чтобы файлы с расширением .TPUбыли доступны средеTurbo(Borland)Pascal, их следует поместить в текущий каталог или указать их содержащий каталог в диалоговом окне опцииOPTIONS/DIRECTORIES/UNIT DIRECTORIES.

В Delphiсуществуют специальные возможности для подключения модуля к проекту; кроме того, директория местоположения модуля может быть указана в предложенииUSES:

Uses имя_модуляinимя директории

Пример

Ниже приведена программа, использующая модуль VECTORиз §2.6.2.

Program Primunit;

{Даны два вектора а и b в трехмерном пространстве;}

{вычисляется длина вектора с (с=а+b) и угол между вектором с и плоскостью XOY}

Uses VECTOR; {используется модуль VECTOR}

Var a,b,c,cpr:Ar;{тип ar объявлен в модуле}

Begin

Writeln(' Введите координаты исходных векторов');

Inp(a,3);Inp(b,3); {ввод а и в}

Sum(a,b,c,3); {c=a+b}

Writeln(' Длина вектора-суммы:', Lngth(c,3):10:3);

cpr[1]:=c[1]; cpr[2]:=c[2]; cpr[3]:=0;

{cpr - проекция с на плоскость XOY}

If Lngth(cpr,3)< 1.0e-6 then

Writeln('вектор c ортогонален плоскости XOY')

Else

Begin

Write(

' Угол между вектором с и плоскостью XOY:',UngleGr(c,cpr,3):6:1);

Writeln(' градусов');

End;

Readln;

End.

2.6.4. Модули как средство программирования

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

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

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

В модуле могут присутствовать инициирующая и завершающая части, обеспечивающие грамотное использование модуля.

Часть. Обработка символьной информации и документов сложной структуры

3.1. Обработка символьной информации

3.1.1. Символьный тип

Здесь мы углубим знания, полученные в части Iпособия. Символьные (или литерные) переменные - это переменные типаchar. Они принимают значения на множестве символов данной ЭВМ. Пример описания символьной переменнойА:

var A: char;

Все символы упорядочены, имеют свой номер, зависящий от системы кодирования, так что символьный тип является порядковым типом. В средах программированияTurbo(Borland)Pascal(ориентированных на шестнадцатиразрядные персональные ЭВМ типа IBM PC и операционную системуMSDOS) используется система кодированияASCII, в которой код символа занимает 1 байт. В версиях среды программированияDelphiдля 32-разрядных персональных компьютеров имеется также символьный типwidechar, основанный на системе кодированияUnicode, в которой на код символа отводится 2 байта. Типcharдля этих компьютеров поддерживается однобайтовой таблицейANSI. Первые 256 кодов таблицыUnicodeсовпадают с таблицейANSI.

К символьным переменным (как и к переменным любого порядкового типа) применимы встроенные функции ORD(определение порядкового номера, т. е. кода, символа),SUCC (определение следующего символа) иPRED (определение предшествующего символа); функцияCHRпо коду определяет символ.

В дальнейшем также потребуется функция UPCASE(CH). Это функция типаCHAR; возвращает символCHв верхнем регистре, если он определен для него, либо сам символCH, если для него нет верхнего регистра. Например,UPCASE('a')вернетА, в то время какUPCASE('2')вернет2.

Cимвольная константа - это соответствующий символ, заключенный в апострофы. Оператор А:='A'означает, что символьной переменной с именемАприсваивается значение символаА.

Для обозначения символьных констант используется также значок #,действие которого эквивалентно функцииCHR. Например,#97- символ, код которого равен 97 (символ a),#90- символ, код которого равен 90 (символZ). Особенно удобно такое обозначение для специальных символов; например,#27соответствует клавишеEsc, #10-сдвигу курсора на одну строку вниз,#13- перемещению курсора на левую границу окна; последовательность символов#13#10соответствует нажатию клавишиEnter.

Рассмотрим массивы символов. Например,

Var L,LP: array[1..10] of char;

Допустимо присваивать значение массиву символов одним оператором, например: L:='ABC '; LP:='1234567890';L:=LP; размеры массивов в левой и правой частях должны совпадать. Разрешено использовать имя массива символов без указания индексов в операторе вывода. Ввод массивов осуществляется только поэлементно.

Над массивами символов определены операции сравнения. Сравнение массивов осуществляется как сравнение последовательностей битов (каждый символ заменяется своим кодом). Допустимо сравнивать только массивы одинаковой длины.

Применительно к массивам символов знак +означает конкатенацию (сцепление) массивов. ОператорL:=L1+L2показывает, что массив символовLполучен присоединением справа к массивуL1массиваL2.

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