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

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

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

Пример 20.2

VAR

i: byte;

BEGIN

for i:=1 to 20 do

begin

writeln('i=',i);

Continue; { продолжить цикл (сверху) }

writeln('Эта строка не будет написана.');

end;

END.

Функция Cos

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

Пример 20.3

VAR

a:real;

BEGIN

a:=Cos(1710); { результат ~ 0.56 }

END.

Функция CSeg

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

Пример 20.4

VAR

x: word;

BEGIN

x:=CSeg;

writeln(x);

END.

Процедура Dec

Назначение: Уменьшает значение переменной.
Описание: procedure Dec(var x[; n: Longint]);
Примечания: Параметр x представляет собой переменную перечислимого типа, а n - целочисленное выражение. Значение x уменьшается на 1 (или на n в случае явного задания n). То есть Dес(x) соответствует x:=x-1, а Dес(x,n) соответствует x:=x-n. Функция Dес порождает оптимизированный код и особенно полезна в больших циклах.

Пример 20.5

VAR

x: word;

BEGIN

x:=10;

Dec(x); { уменьшить x на 1 (x=9) }

Dec(x,3); { уменьшить x на 3 (x=6) }

END.

Процедура Delete

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

Пример 20.6

VAR

st: string;

BEGIN

st:='треугольник';

Delete(st,4,7); { результат: st='трек' }

END.

Процедура Dispose

Назначение: Уничтожает динамическую переменную.
Описание: procedure Dispose(var p: Pointer [, Destructor]);
Примечания: Параметр p является переменной-указателем и может иметь тип, соответствующий любому типу указателя. Для этого параметра должно быть предварительно выполнено присваивание с помощью процедуры New или ему должно быть присвоено значащее значение с помощью оператора присваивания.

Данная процедура уничтожает переменную, на которую указывает p и возвращает занимаемую ей память в динамически распределяемую область памяти. Значение p становится неопределенным, и последующие ссылки вида p являются ошибкой. Ограничения: Если p не указывает на область в динамической памяти (p=nil), то происходит ошибка этапа выполнения.

Пример 20.7

VAR

p: string;

x,y,z:word;

BEGIN

x:=maxavail; { сколько памяти сначало }

New(p); { занять память для переменной }

y:=maxavail; { сколько осталось памяти }

Dispose(p); { освободить память }

z:=maxavail; { сколько памяти после освобождения }

writeln('Было памяти =',x);

writeln('Заняли под переменную, стало =',y);

writeln('Освободили память =',z);

END.

Функция DSeg

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

Пример 20.8

VAR

x: word;

BEGIN

x:=DSeg;

writeln(x);

END.

Функция Eof

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

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

Пример 20.9

VAR

f: text;

s: char;

BEGIN

assign(f,'test.txt');

reset(f); { октрыть файл для чтения }

repeat

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

write(s); { отобразить символ на экран }

until Eof(f); { повторять пока не будет конец файла, Eof(f)=true }

close(f);

END.

Функция Eoln

Назначение: Для файлов возвращает состояние "конец строки" (end-of-line).
Описание: function Eoln [ (var f : text) ]: Boolean;
Примечания: Параметр f представляет собой файловую переменную, определяющую текстовый файл. Если этот параметр опущен, то подразумевается использование стандартной файловой переменной Input. Если текущая позиция в файле находится на метке конца строки, то функция Eоln(f) возвращает значение Truе. В противном случае она возвращает значение False.

При проверке состояния "конец строки" для стандартного ввода, направление которого изменено не было, следующая программа ожидает, пока не будет введен символ возврата каретки, а затем передает управление функции Eoln.

BEGIN

writeLn(Eoln); { Это приведет к тому, что программа будет ожидать }

{ ввода с клавиатуры }

END.

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

Пример 20.10

VAR

f: text;

s: char;

BEGIN

assign(f,'test.txt');

reset(f); { октрыть файл для чтения }

repeat

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

write(s); { отобразить символ на экран }

until Eoln(f); { повторять пока не будет конец строки, Eoln(f)=true }

colose(f);

END.

Процедура Erase

Назначение: Стирает внешний файл.
Описание: procedure Erase (var f);
Примечания: Параметр f представляет собой файловую переменную любого файлового типа. Внешний файл, связанный с переменной f, стирается.

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

Пример 20.11

VAR

f: text;

BEGIN

assign(f,'test.txt');

Erase(f); { удалить файл test.txt }


Процедуры и функции модуля System.tpu
(продолжение 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 будут приводить к ошибке.

Пример 21.7

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.


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

Функция Hi

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

Пример 22.1

VAR

a: word;

BEGIN

a:=Hi($1234); { a=$12 }

END.

Функция High

Назначение: Возвращает старший байт аргумента.
Описание: function Нigh(x);
Примечания: Параметр x представляет собой идентификатор ссылочной переменной. Обозначенный x тип или тип переменной, обозначенной x, должен быть порядковым типом, массивом или строковым типом. Для порядкового типа High возвращает старшее значение в диапазоне индексного типа массива. Для строкового типа High возвращает описанный размер строки. Для открытого массива или строкового параметра High возвращает значение типа Word, показывая число элементов в фактическом параметре, минус 1.

Пример 22.2

VAR

a:array[1..10]of byte;

BEGIN

write(high(a)); { 10 }

END.

Процедура Inc

Назначение: Увеличивает значение переменной.
Описание: procedure Inc(x [ ; n : longint ] );
Примечания: Параметр x представляет собой переменную перечислимого типа, а n - целочисленное выражение. Значение x увеличивается на 1 (или на n в случае явного задания n). То есть Inс(x) соответствует x:=x+1, а Inс(x,n) соответствует x:=x+n.

Функция Inс порождает оптимизированный код и особенно полезна в больших циклах.

Пример 22.3

VAR

x: word;

BEGIN

x:=10;

Inc(x); { увеличить x на 1 (x=11) }

Inc(x,3); { увеличить x на 3 (x=14) }

END.

Процедура Include

Назначение: Включает элемент в множество.
Описание: procedure Include(var S: set of T; I: T);
Примечания: S - это переменная множественного типа, а I - выражение типа, совместимого с базовым типом S. Заданный I элемент включается в множество, заданное S.

Процедура Insert

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