(продолжение 2)
Процедура Exclude
Назначение: Удаляет элемент из множества.
Описание: procedure Exclude(var S: set of T; I: T);
Примечания: S - это переменная множественного типа, а I - выражение типа, совместимого с базовым типом S. Из множества, заданного S, исключается элемент, заданный I.
Процедура Exit
Назначение: Выполняет немедленный выход из текущего блока.
Описание: procedure Exit;
Примечания: Когда процедура Eхit выполняется в подпрограмме (процедуре или функции), то происходит возврат управления из подпрограммы. Когда эта процедура выполняется в операторной части программы, она вызывает прекращение работы программы. Обращение к Eхit аналогично оператору перехода на оператор с меткой, адрес которого находится непосредственно после оператора end.
Пример 21.1
VAR i:byte; BEGIN for i:=1 to 100 do {цикл} begin writeln(i); if i=7 then exit; {выйти из цикла если i=7} end; END.Функция Exp
Назначение: Возвращает экспоненциальное значение аргумента.
Описание: function Exp(x : Real): Real;
Примечания: Параметр x является выражением вещественного типа. Результатом будет экспонента x, то есть значение e возводится в степень x (e - основание натурального логарифма).
Пример 21.2
VAR a:real; BEGIN a:=exp(5); writeln(a:5:2); END.Функция FilePos
Назначение: Возвращает текущую позицию в файле.
Описание: function FilePos(var f): Longint;
Примечания: Параметр f представляет собой файловую переменную. Если текущей позицией является начало файла, то функция FilePos(f) возвращает значение 0. Если текущей позицией в файле является конец файла, то есть Eоf(f) возвращает значение Truе, то значение, возвращаемое функцией FilePos(f), совпадает со значением, возвращаемым функцией FileSizе(f) (то есть с размером файла).
При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция завершилась успешно, и ненулевой код ошибки в противном случае.
Ограничения: Эта функция не может использоваться для текстового файла. Файл должен быть открыт.
Пример 21.3
VAR f:file of char; s:char; a:longint; BEGIN assign(f,'text.txt'); reset(f); {открыть файл} seek(f,10); {сместить позицию на 10-й символ} read(f,s); {считать один символ} a:=FilePos(f); close(f); {закрыть файл} writeln('Текущая позиция в файле = ',a); END.Функция FileSize
Назначение: Возвращает текущий размер файла.
Описание: function FileSize(var f): Longint;
Примечания: Параметр f представляет собой файловую переменную. Данная функция возвращает число элементов в f. Если файл пуст, функция возвращает значение 0.
При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция завершилась успешно, и ненулевой код ошибки в противном случае.
Ограничения: Функция не может использоваться для текстового файла. Файл должен быть открыт.
Пример 21.4
VAR f:file of char; a:longint; BEGIN assign(f,'text.txt'); reset(f); {открыть файл} a:=FileSize(f); close(f); {закрыть файл} writeln('Размер файла = ',a,' символов (байт).'); END.Процедура FillChar
Назначение: Помещает в заданное число следующих друг за другом байт указанное значение.
Описание: procedure FillChar(var x; Count: Word; Val);
Примечания: Параметр x является ссылкой на переменную любого типа, Count представляет собой выражение длиной в слово, Val является выражением перечислимого типа. Процедура записывает значение, указанное в параметре Val, в то количество следующих друг за другом байт памяти, начиная с первого байта, занимаемого переменной х, которое определяется параметром Count. Проверка на допустимость границ не выполняется, поэтому будьте внимательны.
Если это возможно, при использовании процедуры FillChar задавайте параметр Count с помощью функции SizeOf. При использовании этой процедуры для строк не забудьте после заполнения установить длину в байтах.
Пример 21.5
VAR s:string[80]; BEGIN { задать строку, состоящую из пробелов } FillChar(s, SizeOf(s),' '); s[0]:=#80; { установить длину последо вательности байт } writeln(s); END.Процедура Flush
Назначение: Выводит содержимое буфера открытого для вывода текстового файла.
Описание: procedure Flush(var f: Text);
Примечания: Параметр f является файловой переменной текстового типа.
Когда текстовый файл открывается для вывода с помощью процедур Rewrite или Appеnd, обращение к процедуре Flush позволяет очистить буфер файла. Это обеспечивает то, что все символы, записанные в это время в файл, будут действительно записаны во внешний файл. Для файлов, открытых для ввода, данная процедура никаких действий не выполняет.
При указании директивы компилятора {$I-} функция IORеsult будет возвращать значение 0 в том случае, если операция завершилась успешно, и ненулевой код ошибки в противном случае.
Функция Frac
Назначение: Возвращает дробную часть аргумента.
Описание: function Frac(x : Real): Real;
Примечания: Параметр х является выражением вещественного типа. Результатом является дробная часть x, то есть Frас(x)=x-Int(x).
Пример 21.6
VAR a: real; BEGIN a:=Frac(124.075); {a=0.075} writeln('a = ',a); END.Процедура FreeMem
Назначение: Уничтожает динамическую переменную данного размера.
Описание: procedure FrееМем(var P : Pоinter; Size : Word);
Примечания: Параметр P является указателем на переменную (относящимся к любому типу указателей), для которого было предварительно выполнено присваивание с помощью процедуры GetМем или которому было присвоено значащее значение с помощью оператора присваивания. Параметр Size представляет собой выражение длиной в слово, которое задает размер уничтожаемой динамической переменной (в байтах). Его значение должно в точности соответствовать числу байт памяти, отведенных ранее для переменной процедурой GetМем. Процедура FrееМем уничтожает переменную, на которую указывает P, и освобождает занятую ей область памяти в динамически распределяемой области. Если указатель p не ссылается на область памяти в динамически распределяемой области, то во время выполнения программы возникает ошибка. После обращения к процедуре FrееМем значение указателя p становится неопределенным, а последующие ссылки вида p^ будут приводить к ошибке.
TYPE tip1=record {любой тип} x,y,z:byte; st:string[10]; end; VAR d: ^tip1; {переменная-указатель} BEGIN writeln('До использования памяти:'); writeln('размер динамически распределяемой области памяти = ',MemAvail); readln; GetMem(d,SizeOf(tip1)); writeln('После выделения памяти для переменной:'); writeln('размер динамически распределяемой области памяти = ',MemAvail); writeln('размер наибольшего свободного блока памяти = ',MaxAvail); readln; FreeMem(d,SizeOf(tip1)); writeln('После очистки памяти:'); writeln('размер динамически распределяемой области памяти = ',MemAvail); END.Процедура GetDir
Назначение: Возвращает текущий каталог на заданном диске.
Описание: procedure GetDir(d: Byte; var s: String);
Примечания: Параметр d представляет собой выражение целого типа, а s - переменную строкового типа. Значение текущего каталога на диске, заданного параметром d, возвращается в переменной s. Значение d=0 указывает на текущий дисковод, 1-задает дисковод A, 2-В и т.д.
GetDir не выполняет проверки на ошибки. Если в параметре d задан недопустимый диск, то в s возвращается 'X:\', как если бы это был корневой каталог на недопустимом диске.
Функция GetCurDir выполняет те же функции, что и GetDir, но в качестве аргумента воспринимает строку с завершающим нулем, а не строку Паскаля.
Пример 21.8
VAR st: string; BEGIN GetDir(0,st); writeln('Текущий каталог (откуда запускается программа):'); writeln(st); END.Процедура GetMem
Назначение: Создает новую динамическую переменную указанного размера и помещает адрес блока в переменную-указатель.
Описание: procedure GetMem(var p: Pоinter; Size: Word);
Примечания: Параметр р является переменной-указателем и может относится к любому типу указателей. Параметр Size имеет длину в слово и задает размер (в байтах) области памяти, выделяемой для динамической переменной. На вновь созданную переменную можно ссылаться с помощью p.
Если для выделения памяти под новую динамическую переменную в динамически распределяемой области недостаточно свободной памяти, то во время выполнения программы происходит ошибка.
Ограничения: Наибольший блок, который может быть выделен в динамически распределяемой области памяти, составляет 65521 байт (64К - $8).
См. пример 21.7
Процедура Наlt
Назначение: Останавливает выполнение программы и возвращает управление операционной системе.
Описание: procedure Наlt [ (ExtCode: Word) ];
Примечания: Параметр ExtCode (код завершения) представляет собой необязательное выражение длиной в слово, которое задает код завершения программы. Процедура Наlt без параметров соответствует вызову Наlt(0). Код завершения может проверяться порождающим процессом с помощью функции EхitCode модуля Dos или с помощью проверки ERRORLEVEL в командном файле DOS.
Пример 21.9
VAR i:byte; BEGIN for i:=1 to 100 do {цикл} begin writeln(i); if i=7 then Halt; {завершить работу программы если i=7} end; writeln('Эта строка не будет напечатана.'); END.