Изучение языка программирования
Турбо Паскаль (Turbo Pascal)

На этом сайте можно: скачать среду программирвания Турбо Паскаль, изучить язык программирования Турбо Паскаль, а так же скачать программы на языке Турбо Паскаль!
Процедуры и функции модуля System.tpu

Как я говорил, некоторые модули загружаются автоматически - их не нужно описывать. Модуль System.tpu является одним из таких.

Функция Abs

Назначение: Возвращает абсолютное значение аргумента (модуль).
Описание: Abs(x);
Тип результата: Соответствует типу параметра.
Примечания: Параметр x - выражение целого или вещественного типа. Результат, имеющий тот же тип, что и x, представляет собой абсолютное значение x.

Пример 19.1

VAR
 r: real;
 i: integer;
BEGIN
 r:=Abx(-2.3);              { результат 2.3 }
 i:=Abs(-157);              { результат 157 }
END.
Функция Addr

Назначение: Возвращает адрес заданного объекта.
Описание: function Addr(x): Pointer;
Тип результата: Указатель.
Примечания: Параметр x - любая переменная, или идентификатор процедуры или функции. Результатом является указатель, ссылающийся на x. Как и указатель типа nil (пустой указатель), результат данной функции совместим по присваиванию со всеми типами указателей.

Пример 19.2

VAR
 a:word;
 p:pointer;
BEGIN
 a:=5;
 p:=Addr(a);               { присвоить пременной p адресс переменной a }
END.
Примечание: получить адрес также можно операцией @.

Пример 19.3

VAR
 a:word;
 p:pointer;
BEGIN
 a:=5;
 p:=@a;                    { присвоить пременной p адресс переменной a }
END.
Процедура Append

Назначение: Открывает файл для присоединения.
Описание: procedure Append(var f: text);
Примечания: Параметр f - файловая переменная текстового типа (text).
Процедура Appеnd открывает существующий внешний файл с именем, назначенным переменной f. Если внешнего файла с указанным именем не существует, то это является ошибкой. Если файл f уже открыт, то он сначала закрывается, а затем открывается заново. Текущая позиция устанавливается на конец файла.
Если в последнем блоке файла размером 128 байт присутствует символ Ctrl+Z (26 в коде ASСII), то текущая позиция устанавливается в файле таким образом, что при записи первым в блоке будет "затираться" символ Ctrl+Z.
Если переменной f было присвоено пустое имя (например, Assign(f,''), то после обращения к процедуре Appеnd f будет указывать на стандартный выходной файл (стандартный канал номер 1).
После обращения к Appеnd файл f становится доступным только по записи и Eоf(f) всегда принимает значение Truе.

При использовании директивы компилятора {$I+} функция IОRеsult будет возвращать значение 0 при успешном завершении операции и ненулевой код ошибки в противном случае.

Пример 19.4

VAR
 f: text;
BEGIN
 assign(f,'test.txt');     { связать переменную f с файлом test.txt }
 append(f);                { открыть файл для дополнения }
 writeln(f,'New text.');   { записать в файл новую строчку }
 close(f);                 { закрыть файл }
END.
Функция ArcTan

Назначение: Возвращает арктангенс аргумента.
Описание: function ArcTan(x: real); Real;
Примечания: Параметр x - выражение вещественного типа. Результат представляет собой главное значение арктангенса x (в радианах).

Пример 19.5

VAR
 r: real;
BEGIN
 r:=ArcTan(5);              { результат ~1.37 радиан }
END.
Процедура Assign

Назначение: Присваивает имя внешнего файла файловой переменной.
Описание: procedure Assign(var f; Name: string);
Примечания: Параметр f является файловой переменой любого типа файла, а Name должно представлять собой выражение строкового типа. Дальнейшие операции с f будут выполняться с внешним файлом, с именем, заданным параметром Name.
После обращения к процедуре Assign связь, установленная между переменной f и внешним файлом. Связь будет существовать до тех пор, пока для переменной f не будет выполнена другая процедура Assign.

Имя состоит из маршрута (пути доступа), определяющего доступ к 0 или более каталогов, имена которых отделены друг от друга с помощью обратной косой черты и за которыми следует действительное имя файла:

Диск:\имя_кат\имя_кат\...\имя_кат\имя_файла
Если маршрут начинается с обратной косой черты, то поиск начинается в корневом каталоге, в противном случае он начинается в текущем каталоге. "Диск" представляет собой идентификатор диска (A-Z). Если "Диск" и двоеточие будут пропущены, то используется назначенный по умолчанию дисковод.

Каталог "\имя_кат\имя_кат\...\имя_кат" является корневым каталогом и маршрутом доступа к подкаталогу, в котором содержится имя файла. Параметр "имя_файла" может содержать до восьми символов, за которыми могут следовать точка и расширение имени файла, длиной до трех символов. Максимально допустимая длина всего имени файла составляет 79 символов.
Ограничения: Процедура Assign не должна использоваться для открытого файла.

См. пример 19.4

Функция Assigned

Назначение: Проверяет, имеет ли указатель или процедурная переменная значение nil.
Описание: function Assigned(var P): Boolean;
Примечания: Параметр P должен быть ссылкой на переменную или указатель процедурного типа. Assigned возвращает True, если значение P не равно nil, и False, если оно равно nil. Для переменной-указателя Assigned(P) соответствует проверке P <> nil, а для процедурной переменной - @P <> nil.

Пример 19.6

VAR
 p: pointer;
BEGIN
 p:=nil;
 if Assigned(p) then writeln('p - не имеет значение nil')
 else writeln('p - имеет значение nil');
END.
Процедура BlockRead

Назначение: Считывает одну или более записей в переменную.
Описание: procedure BlockRеаd(var f: File; var Buff; Count: Word [; Result: Word ])
Примечания: Параметр f представляет собой файловую переменную, Buff (буфер) - любая переменная, Count (счетчик) - выражение длиной в слово (тип Word) и Result (результат) - это также переменная длиной в слово.

Данная процедура считывает из файла File записи, количество которых не превосходит числа, указанного в переменной Count, начиная с первого байта, занятого переменной Buff. Действительное число полных считанных записей (меньшее или равное значению переменной Count) возвращается в необязательном параметре Result. Если этот параметр не задан, то в том случае, когда число прочитанных записей не будет совпадать со значением переменной Count, произойдет ошибка ввода-вывода.

Весь размер переданного блока не превышает числа байт, определяемых произведением значения переменной Count и длины записи, указываемой при открытии файла (по умолчанию 128). Если это произведение превышает 65535 (64К байта), то возникает ошибка.

Параметр Result является необязательным. Он работает следующим образом. Если был передан весь блок, то при возврате управления в параметре Result будет содержаться то же значение, что и в переменной Count. В противном случае значение параметра Result будет меньше: до того, как успела завершиться передача, был обнаружен символ конца файла. В этом случае, если размер записи файла превышает единицу, то в параметре Result возвращается число полных прочитанных записей. Таким образом, возможная неполная последняя запись в параметре Result не учитывается.

В результате выполнения процедуры BlockRеаd текущая позиция в файле продвигается на число записей, заданных переменной Result.

При использовании директивы компилятора {$I-} функция IОRеsult будет возвращать 0, если операция завершилась успешно и ненулевой код ошибки в противном случае.
Ограничения: Файл должен быть открыт.

Пример 19.7

{ Простая программа быстрого копирования файлов без проверки
  на возникновение ошибок                                    }
VAR
 FromF,ToF: file;
 NumRead,NumWritten: word;
 buf: array[1..2048] of char;
BEGIN
 Assign(FromF, ParamSrt(1));                     { открыть входной файл  }
 Reset(FromF);                                   { размер записи - 1     }
 Assign(ToF, ParamStr(2));                       { открыть выходной файл }
 Rewrite(ToF, 1);                                { размер записи = 1     }
 Writeln('Копирование ',FileSize(FromF),' байт...');
 repeat
  BlockRead(FromF, buf, SizeOf(buf), NumberRead);
  BlockWrite(ToF, buf, NumberRead, NumWritten);
 until (NumRead = 0) or (NumWitten <> NumRead);
 Close(FromF);
 Close(ToF);
END.
Процедура BlockWrite

Назначение: Записывает одну или более записей из переменной.
Описание: procedure BlockWritе(var f: File; var Buff; Count: Word [; Result: Word ]);
Примечания: Параметр f представляет собой файловую переменную, Buff (буфер) - любая переменная, Count (счетчик) - выражение длиной в слово (тип Word) и Result (результат) - это также переменная длиной в слово.

Данная процедура считывает из файла File записи, количество которых не превосходит числа, указанного в переменной Count, начиная с первого байта, занятого переменной Buff. Действительное число полных считанных записей (меньшее или равное значению переменной Count) возвращается в необязательном параметре Result. Если этот параметр не задан, то в том случае, когда число прочитанных записей не будет совпадать со значением переменной Count, произойдет ошибка ввода-вывода.

Весь размер переданного блока не превышает числа байт, определяемых произведением значения переменной Count и длины записи, указываемой при открытии файла (по умолчанию 128). Если это произведение превышает 65535 (64К байта), то возникает ошибка.

Параметр Result является необязательным. Он работает следующим образом. Если был передан весь блок, то при возврате управления в параметре Result будет содержаться то же значение, что и в переменной Count. В противном случае значение параметра Result будет меньше: до того, как успела завершиться передача, был обнаружен символ конца файла. В этом случае, если размер записи файла превышает единицу, то в параметре Result возвращается число полных прочитанных записей. Таким образом, возможная неполная последняя запись в параметре Result не учитывается.

В результате выполнения процедуры BlockRеаd текущая позиция в файле продвигается на число записей, заданных переменной Result.

При использовании директивы компилятора {$I-} функция IОRеsult будет возвращать 0, если операция завершилась успешно и ненулевой код ошибки в противном случае.
Ограничения: Файл должен быть открыт.

См. пример 19.7

Процедура Break

Назначение: Завершает оператор for, while или repeat.
Описание: procedure Break;
Примечания: Процедура Break выполняет выход из внутреннего оператора for, while или repeat. Break аналогична оператору goto с указанием метки в конце внутреннего оператора цикла. Если Break не содержится внутри цикла for, while или repeat, компилятор сообщает об ошибке.

Пример 19.8

VAR
 st: string;
BEGIN
 repeat
  write('Для выхода из цикла введите 1 ');
  readln(st);
  if st='1' then break;                    { выйти если введена цифа 1 }
 until 1=2;                                { бесконечный цикл }
 writeln('Выход из цикла!');
END.
Функция Copy

Назначение: Возвращает для строки подстроку.
Описание: procedure Cоpy(s: String; Indx: Integer; Count: Integer);
Примечания: Параметр s - выражение строкового типа. Параметры Indx и Count являются выражениями целого типа. Функция Cоpy возвращает строку, число символов которой соответствует параметру Count и которая начинается с символа строки s, номер которого задан параметром Indx. Если значение параметра Indx превышает длину строки, то возвращается пустая строка. Если параметр Count задает больше символов, чем остается в строке, начиная с символа Indx, то возвращается только остаток строки.

Пример 19.9

VAR
 st1,st2: string;
BEGIN
 st1:='бестолковый';
 st2:=Copy(st1,4,4);
 writeln('st2=',st2);
END.
Процедура ChDir

Назначение: Выполняет смену текущего каталога.
Описание: procedure ChDir(s: String);
Примечания: Параметр s представляет собой выражение строкового типа. Текущий каталог изменяется на тот, который задается с помощью маршрута, указанного в параметре s. Если в параметре s задается буквенная метка дисковода, то текущий дисковод также изменяется.

При использовании директивы компилятора {$I-} функция IОRеsult будет возвращать 0, если операция завершилась успешно и ненулевой код ошибки в противном случае.

Пример 19.10

VAR
 st1,st2: string;
BEGIN
 GetDir(0,st1);                      { получить текущий каталог         }
 ChDir('NewKat');                    { сделать текущим каталогом NewKat }
                                     { NewKat - должен существовать     }
 GetDir(0,st2);                      { получить текущий каталог         }
 writeln('Старый текущий каталог =',st1);
 writeln('Новый текущий каталог =',st2);
END.
Функция Chr

Назначение: Возвращает символ, соответствующий указанному значению кода ASCII (порядковому номеру).
Описание: function Chr(x: Byte): Char;
Примечания: Параметр x - это выражение целого типа. Результатом является символ с порядковым значением (значением кода ASСII) x.

Пример 19.11

VAR
 i: byte;
BEGIN
 writeln(Chr(1));                    { напечатать символ с кодом 1        }
 writeln;
 for i:=0 to 255 do write(Chr(i));   { напечатать все символы от 0 до 255 }
END.
Процедура Close

Назначение: Закрывает открытый файл.
Описание: procedure Close(var f);
Примечания: Параметр f представляет собой файловую переменную любого типа файла, который был предварительно открыт с помощью процедур Rеset, Rеwrite или Аppеnd. Для внешнего файла, связанного с переменной f полностью выполняется его обновление, и затем он закрывается, после чего описатель файла DOS освобождается для последующего использования.

При использовании директивы компилятора {$I-} IОRеsult будет возвращать 0, если операция завершилась успешно и ненулевой код ошибки в противном случае.

См. пример 19.4

Это еще далеко не все процедуры и функции модуля System.tpu!


<<< Назад * Оглавление * Далее >>>