Структура программы языка Турбо Паскаль Программа на языке Турбо Паскаль имеет вид

Вид материалаПрограмма
См. пример
Write и Writeln
Подобный материал:
1   2   3   4   5   6

См. пример 24.8

Процедура RmDir

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

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

Пример 25.2

BEGIN

RmDir('123'); {удаляет в текущем каталоге подкаталог с именем 123}

END.

Функция Round

Назначение: Округляет значение вещественного типа до значения целого типа.
Описание: function Round(x: Real): Longint;
Примечания: Параметр x представляет собой выражение вещественного типа. Функция Round возвращает значение длинного целого типа, которое является значением x, округленным до ближайшего целого числа. Если значение x находится точно посередине между двумя целыми числами, то результатом будет число с большим абсолютным значением. Если округленное значение x не соответствует диапазону представления длинного целого типа, то во время выполнения происходит ошибка.

Пример 25.3

VAR

a:real;

b:word;

BEGIN

a:=15.234;

b:=round(a);

writeln('Число b целое = ',b);

END.

Процедура RunError

Назначение: Останавливает выполнение программы и генерирует ошибку этапа выполнения.
Описание: procedure RunError [ (ErrCode : Word ) ];
Примечания: Процедура RunError аналогична процедуре Halt, но в дополнение к остановке программы она генерирует на текущем операторе ошибку этапа выполнения. Параметр ErrCode представляет собой номер ошибки этапа выполнения (0 опущен).

Пример 25.4

VAR

p:pointer;

BEGIN

if p=nil then RunError(204);

END.


Процедуры и функции модуля System.tpu
(продолжение 7)

Процедура Seek

Назначение: Перемещает текущую позицию в файле к заданному элементу.
Описание: procedure Seek(f, n: Longint);
Примечания: Параметр f является любой файловой переменной, кроме текстовой, а n представляет собой выражение целого типа. Текущая позиция в файле f перемещается к элементу с номером n. Номер первого элемента файла равен 0.
Sееk(f,FileSize(f)) перемещает текущую позицию в файле в конец файла.

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

Ограничения: Процедуру нельзя использовать для текстовых файлов. Файл должен быть открыт.

Пример 26.1

VAR

f: file of char;

s: char;

BEGIN

assign(f,'test.txt');

reset(f); {открыть файл }

seek(f,5); {переместить указатель на 5-й символ (байт) }

s:='@';

write(f,s); {записать новый символ }

close(f); {закрыть файл }

END.

Пример 26.2

VAR

f: file of string[3]; {тип файла занимет 3 байта }

s: string[3];

BEGIN

assign(f,'test.txt');

reset(f); {открыть файл }

seek(f,5); {переместить указатель на 5*3-й символ (байт)}

s:='DoS';

write(f,s); {записать строку символов }

close(f); {закрыть файл }

END.

Функция SeekEof

Назначение: Возвращает для файла состояние "конец файла" (end-of-file).
Описание: function SeekEof [ (var f: Text) ]: Boolean;
Примечания: За исключением того, что функция SееkEof пропускает все пробелы, знаки табуляции и метки конца строки, она полностью соответствует функции Eof. Ее полезно использовать при считывании числовых значений из текстового файла.

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

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

Пример 26.3

VAR

f: text;

s:char;

BEGIN

assign(f,'test.txt');

reset(f); {открыть файл }

while SeekEof(f)=false do {ЦИКЛ - если еще не конец файла, то }

begin

read(f,s); {считать символ из файла }

write(s); {и показать его на экране }

end;

close(f); {закрыть файл }

writeln;

writeln('Конец файла!');

END.

Функция SeekEoln

Назначение: Возвращает для файла состояние "конец строки" (end-of-line).
Описание: function SeekEoln [ (var f: Text) ]: Boolean;
Примечания: За исключением того, что функция SееkEоln пропускает все пробелы, знаки табуляции и метки конца строки, она полностью соответствует функции Eoln. Ее полезно использовать при считывании числовых значений из текстового файла.

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

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

Пример 26.4

VAR

f: text;

s:char;

BEGIN

assign(f,'test.txt');

reset(f); {открыть файл }

while SeekEoln(f)=false do {ЦИКЛ - если еще не конец строки, то }

begin

read(f,s); {считать символ из файла }

write(s); {и показать его на экране }

end;

close(f); {закрыть файл }

writeln;

writeln('Конец файла!');

END.

Функция Seg

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

Пример 26.5

VAR

x:real;

BEGIN

writeln(Seg(x));

readln;

END.

Процедура SetTextBuf

Назначение: Перемещает текущую позицию в файле к заданному элементу.
Описание: procedure SetTextBuf(var f: Text; var Buf[Size: Word]);
Примечания: Параметр f представляет собой файловую переменную, соответствующую текстовому файлу. Параметр Buf (буфер) - любая переменная, а параметр Size (размер) - необязательное выражение длиной в слово.

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

Процедура SetTextBuf переназначает буфер, используемый для текстового файла f: вместо внутреннего буфера файла f используется буфер, заданный параметром Buf. Параметр Size задает размер буфера в байтах. Если этот параметр опущен, то подразумевается использование SizeOf(Buf), то есть по умолчанию в качестве буфера используется вся область памяти, занятая буфером. Новый буфер действует до тех пор, пока для f вновь не выполняется процедура Assign.

Ограничения: Данная процедура никогда не должна применяться для открытого файла.
Borland Pascal не обеспечивает существования буфера на все время выполнения операций ввода-вывода для файла. Общей ошибкой, в частности, является введение в качестве буфера локальной переменной и затем использование файла вне процедуры, в которой описывается буфер.

Пример 26.6

VAR

f: text;

ch: char;

buf: char; { буфер 10 К }

BEGIN

assign(f, 'test.txt');

SetTextBuffer(f, buf); {ввести для более быстрого чтения }

{буфер большего размера }

reset(f);

{ вывести текстовый файл на экран }

while not Eof(f) do

begin

read(f, ch);

write(ch);

end;

readln;

END.

Функция Sin

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

Пример 26.7

BEGIN

writeln(Sin(30*Pi/180):3:1); {синус 30 градусов}

readln;

END.

Функция SizeOf

Назначение: Возвращает число байт, занимаемых аргументом.
Описание: function SizeOf(x): Word;
Примечания: Параметр x является ссылкой на переменную или идентификатором типа. Данная функция возвращает число байт памяти, занимаемых x.

При передаче значений функциям FillChar, Моvе, GetМем всегда следует использовать функцию SizeOf:
FillChar(s, SizeOf(s), 0);
GetMem(p, SizeOf(RecordType));

Пример 26.8

VAR

s:string[3];

x:integer;

y:longint;

z:byte;

BEGIN

writeln('s - ',SizeOf(s), ' байт');

writeln('x - ',SizeOf(x), ' байт');

writeln('y - ',SizeOf(y), ' байт');

writeln('z - ',SizeOf(z), ' байт');

readln;

END.

Функция SPtr

Назначение: Возвращает текущее значение регистра SP.
Описание: function SPtr: Word;
Примечания: Результат длиной в слово представляет собой смещение указателя стека внутри сегмента стека.

Пример 26.9

BEGIN

writeln(SPtr);

readln;

END.

Функция Sqr

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

Пример 26.10

BEGIN

writeln('52 = ',Sqr(5)); {52 =25}

readln;

END.

Функция Sqrt

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

Пример 26.11

BEGIN

writeln(Sqr(25)); {= 5 }

readln;

END.

Функция SSeg

Назначение: Возвращает текущее значение регистра SS.
Описание: function SSeg: Word;
Примечания: Результат типа Word представляет собой адрес сегмента стека.

Пример 26.12

BEGIN

writeln(SSeg);

readln;

END.


Процедуры и функции модуля System.tpu
(продолжение 8 - конец)

Процедура Str

Назначение: Преобразует численное значение в его строковое представление.
Описание: procedure Str(х [: Size [:Dec ] ], var S: String);
Примечания: Параметр x является выражением целого или вещественного типа. Параметры Size и Dec представляют собой выражения целого типа. Параметр s - строковая переменная. Данная функция преобразует x в его строковое представление в соответствии в параметрами форматирования Size (размер) и Dec. За исключением того, что результирующая строка сохраняется в параметре s, а не записывается в текстовый файл, результат выполнения процедуры будет в точности тот же самый, что и при обращении к стандартной процедуре Write.

Пример 27.1

VAR

x:integer;

st:string;

BEGIN

x:=-160;

Str(x, st); { x=-160 ; st='-160' }

END.

Функция Succ

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

Пример 27.2

TYPE

tip_1=(RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET);

VAR

s: tip_1; {новый перечислимый тип}

ch: char; {тип символов }

BEGIN

s:=Succ(YELLOW); {s=GREEN }


ch:=Succ('+'); {ch=',' }

writeln('ch = ', ch);

readln;

END.

Функция Swap

Назначение: Переставляет местами старший и младший байты аргумента.
Описание: function Swap(x);
Примечания: Параметр x - выражение типа Integer или Word.

Пример 27.3

VAR

x: word;

BEGIN

x:=Swap($1234); { $3412 }

END.

Функция Trunc

Назначение: Округляет значение вещественного типа до значения целого типа.
Описание: function Trunc(x: Real): Longint;
Примечания: Параметр x представляет собой выражение вещественного типа. Функция Round возвращает значение длинного целого типа, которое является значением x, округленным в сторону нуля.

Ограничения: Если округленное значение x не соответствует диапазону представления длинного целого типа, то происходит ошибка этапа выполнения.

Пример 27.4

VAR

x: byte;

BEGIN

x:=round(100/7); {100/7=14.28571428 ; x=14}

writeln('x = ', x);

readln;

END.

Процедура Truncate

Назначение: Усекает размер файла до текущей позиции в файле.
Описание: procedure Truncate(var f);
Примечания: Параметр f является файловой переменной любого типа. Все записи после текущей позиции в файле f удаляются, и текущая позиция в файле становится концом файла (функция Eof(f) принимает значение True).

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

Ограничения: Файл f должен быть открыт.

Пример 27.5

VAR

f: file of char;

BEGIN

assign(f, 'test.txt');

reset(f); {открыть файл }

Seek(f,10); {переместить позицию в файле на 10 символов}

Truncate(f); {стереть все данные после текущей позиции }

close(f); {закрыть файл }

readln;

END.

Функция TypeOf

Назначение: Возвращает указатель на таблицу виртуальных методов объекта (VMT).
Описание: function TypeOf(X): Pointer;
Примечания: X - идентификатор объекта или экземпляра объект иного типа. В любом случае TypeOf возвращает адрес таблицы виртуальных методов объектного типа. TypeOf может применяться только к объектным типам, имеющим таблицу виртуальных методов. Все другие методы дают в результате ошибку.

Функция UpCase

Назначение: Преобразует символ в верхний регистр.
Описание: function UpCase(Ch: Char);
Примечания: Параметр Ch представляет собой выражение символьного типа. Результатом символьного типа будет символ, задаваемый параметром Ch, преобразованный в символ верхнего регистра. Значения символов, не лежащие в диапазоне а...z, остаются без изменений.

Пример 27.6

VAR

ch:char;

BEGIN

ch:='m';

ch:=UpCase(ch); { ch='M' }

writeln('ch = ',ch);

readln;

END.

Процедура Val

Назначение: Преобразует строковое значение в его численное представление.
Описание: procedure Val(s: String; var v; var Code:Integer);
Примечания: Параметр s представляет собой выражение строкового типа. Параметр v является переменной целого или вещественного типа. Параметр Code - это переменная целого типа, которая формирует все число со знаком. Функция Val преобразует строку s в ее численное представление и сохраняет результат в v. Если где-либо в строке встречается недопустимый символ, то его номер сохраняется в параметре Code. В противном случае этот параметр равен нулю.

В зависимости от состояния {$R} и типа параметра v функция Val по-разному выполняет проверку диапазона.
Если состояние проверки диапазона установлено, то есть задано {$R+}, то выражения, выходящие за границу диапазона, всегда будут генерировать ошибку этапа выполнения.
Если состояние проверки диапазона сброшено, то есть задано {$R-}, то выражения, выходящие за границу диапазона, будут вызывать эффект, зависящий от их типа. Если v имеет тип real или longint, то значение v становится неопределенным и в параметре Code возвращается ненулевое значение. Для любого другого числового типа в параметре Code возвращается нулевое значение, а v будет содержать результат вычислений с переполнением (если предположить, что строковое значение попадает в диапазон представления длинного целого).

Таким образом, передав процедуре Val переменную длинного целого типа (longint) и перед тем, как присваивать полученное значение, следует выполнять проверку диапазона. Например:

{$R-}

Val('65536', LongIntVar, Code);

if (Code <>0) or

(LOngIntVar < 0) or (LongIntVar > 65535) then

. { ошибка }

.

.

else

WordVar := LongIntVar;

В этом примере LongIntVar будет установлена в 65536, а Code будет равно 0. Поскольку для переменной Word значение 65536 выходит за допустимый диапазон, будет сообщаться об ошибке.

Пример 27.6

VAR

i,code: integer;

st:string;

BEGIN

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

readln(st);


Val(st, i, code);

{ ошибка при преобразовании в целое значение? }

if code <> 0 then writeln('Ошибка на позиции :', code)

else writeln('Значение = ', i);

readln;

END.

Процедуры Write и Writeln

Назначение: Записывает одно или более значений из одной или более переменных в файл или выводит на экран.
Описание: procedure Write( [var f: Text/File;] v1 [,v2,...,vn]);
Примечания: тут


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

Процедуры и функции модуля CRT.tpu

Процедура AssignCrt

Назначение: Связывает текстовый файл с устройством CRТ (терминалом).
Описание: procedure AssignCrt(var f: Text)
Примечания: Процедура AssignCrt работает точно также, как стандартная процедура Assing, за исключением того, что имя файла не указывается. Вместо этого текстовый файл связывается с устройством CRТ (терминалом).
Это позволяет ускорить вывод (или ввод) по сравнению с той скоростью, которая была бы возможна при использовании стандартного вывода (или ввода).

Пример 28.1

uses crt;

var

i:longint;

f:text;


BEGIN

writeln('Вывод тектста на экран с обычной скоростью. Нажми Enter...');

readln;

for i:=1 to 100000 do writeln(i,' - вывод на экран!');

writeln('Выполнено с обычной скоростью');

readln;


writeln('Вывод тектста на экран с быстрой скоростью. Нажми Enter...');

readln;

AssignCrt(f);

rewrite(f);

for i:=1 to 100000 do writeln(f,i,' - вывод на экран!');

close(f);

writeln('Выполнено с быстрой скростью');

readln;

END.

Процедура ClrEol

Назначение: Стирает все символы, начиная от позиции курсора, до конца строки. Курсор при этом не перемещается.
Описание: procedure ClrEol;
Примечания: Все позиции символов заполняются пробелами. При этом используется текущее определение текстовых атрибутов. Таким образом, если в TextВаckground не задан черный цвет, то в позициях, начиная от курсора и до правой границы, экран приобретает фоновый цвет.

Пример 28.2

uses crt;


BEGIN

write('Следующая строка будет заменена пробелами на зеленом фоне. Нажми Enter...');

readln;

TextBackGround(10);

ClrEol;

readln;

END.

Процедура ClrScr

Назначение: Очищает экран и помещает курсор в верхний левый угол экрана.
Описание: procedure ClrScr;
Примечания: Все позиции символов заполняются пробелами. При этом используется текущее определение текстовых атрибутов. Таким образом, если для TextВасkGround не задан черный цвет, то для всего экрана устанавливается фоновый цвет. Это относится также к позициям символов, очищенных с помощью процедур ClrEоl, InsLine и DelLine, а также к пустым строкам,образующимся при пролистывании экрана.