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

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

Пример 22.4

VAR

s: string;

BEGIN

s:='Honest Lincoln';

Insert('Abe',s,8); { Honest Abe Lincoln }

writeln(s);

END.

Функция Int

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

Пример 22.5

VAR

r: real;

BEGIN

r:=Int(123.456); { 123 }

r:=Int(-123.456); { -123 }

END.

Функция IOResult

Назначение: Возвращает целое значение, представляющее собой состояние последней выполненной операции ввода-вывода.
Описание: function IOResult: Integer;
Примечания: Чтобы перехватить ошибки ввода-вывода с помощью функции IORеsult, проверка ввода-вывода должна быть выключена (директива компилятора {$I-}). Если проверка ввода-вывода выключена и происходит ошибка ввода-вывода, то, пока выполняется обращение к функции IORеsult, все последующие операции ввода-вывода игнорируются. Обращение в функции IORеsult сбрасывает ее внутренний флаг ошибки.

Пример 22.6

VAR

f: text;

e: integer;

BEGIN

{$I-}

assign(f,'text.txt');

reset(f);

e:=IOResult;

if e<>0 then

writeln('Ошибка ввода-вывода = ',e)

else writeln('Ошибки ввода-вывода не произошло.');

close(f);

END.

См. также пример 7.

Функция Length

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

Пример 22.7

VAR

st: string;

BEGIN

writeln('Введите строку:');

readln(st);

writeln('Вы ввели строку длиной = ', Length(st), ' сим.');

END.

Функция Ln

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

Пример 22.8

VAR

a: real;

BEGIN

a:=Ln(15);

writeln(a:3:2);

END.

Функция Lo

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

Пример 22.9

VAR

a: word;

BEGIN

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

END.

Функция Low

Назначение: Возвращает младшее значение в диапазоне аргумента.
Описание: function Low(X);
Примечания: Параметр X - это идентификатор типа или ссылка на переменную. Тип, обозначенный X, или тип переменной, обозначенный X, должен быть порядковым типом, типом массива или строковым типом. Для порядкового типа функция Low возвращает младшее значение в диапазоне типа. Для типа массива Low возвращает младшее значение в диапазоне индексного типа массива. Для строкового типа Low возвращает 0. Для открытого массива или строкового параметра Low возвращает 1.

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

Функция MaxAvail

Назначение: Возвращает размер наибольшего свободного блока в динамически распределяемой области памяти.
Описание: function MaxAvail: Longint;
Примечания: MaxAvail возвращает размер наибольшего непрерывного свободного блока в динамически распределяемой области памяти, который можно распределить с помощью процедуры New или GetMem. Для получения общего объема свободной динамически распределяемой памяти используйте функцию MemAvail.

См. пример 21.7

Функция MemAvail

Назначение: Возвращает число свободных блоков в динамически распределяемой области памяти.
Описание: function MemAvail: Longint;
Примечания: Данное число определяется путем сложения размеров всех свободных блоков, расположенных ниже указателя динамически распределяемой области памяти, с объемом свободной памяти, расположенной выше указателя динамически распределяемой области. Заметим, что пока нет обращений к процедурам Dispose и FrееМем, из-за фрагментации динамически распределяемой области памяти маловероятно, что будет доступен блок памяти, размер которого соответствует возвращаемому значению. Для получения размера наибольшего свободного блока используйте функцию МахAvail.

См. пример 21.7

Процедура MkDir

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

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

Пример 23.1

BEGIN

MkDir('New-dir');

END.

Процедура Move

Назначение: Копирует заданное число непрерывных байт из заданного диапазона в указанный целевой диапазон.
Описание: procedure Моvе(var Src, Dst; Count: Word);
Примечания: Параметры Src и Dst представляют собой ссылки на переменные любого типа. Параметр Count - это выражение типа Word. Процедура Моvе копирует байтовый блок из Src, размер которого (в байтах) задается параметром Count, в блок, начинающийся первого байта, заданного параметром Dst. С данной процедурой следует работать аккуратно, поскольку никаких проверок не выполняется.

Когда области, задаваемые параметрами Src и Dst, находятся в одном сегменте, то есть когда адреса сегментов у них совпадают, то процедура Моvе автоматически обнаруживает и компенсирует какие-либо перекрытия. Для статически и динамически распределяемых переменных внутрисегментных перекрытий никогда не происходит (если только это не делается специально) и, таким образом, они не могут обнаруживаться.

Там, где это возможно, для определения параметра Count следует использовать функцию SizeOf.

Пример 23.2

VAR

a,b: array[1..4] of byte;

i:byte;

BEGIN

for i:=1 to 4 do a[i]:=i*2;

Move(a, b, SizeOf(a));

for i:=1 to 4 do writeln('b[',i,']=',b[i]);

END.

Процедура New

Назначение: Создает новую динамическую переменную и устанавливает на нее указатель.
Описание: procedure New(var p: Pointer);
Примечания: Параметр p является переменной-указателем и относится к указателям любого типа. Размер выделяемого блока памяти соответствует размеру того типа, на который указывает p. На вновь созданную переменную можно ссылаться с помощью p. Если для выделения памяти под новую динамическую переменную в динамически распределяемой области недостаточно свободной памяти, то во время выполнения программы происходит ошибка.

Пример 23.4

VAR

p: string;

BEGIN

new(p); { выделяет в динамически распределяемой }

{ области памяти 256 байт }

p:='проверка...';

writeln(p);

dispose(p); { освобождает память, выделенную для }

{ динамической переменной }

writeln(p);

END.

Функция Odd

Назначение: Проверяет, является ли аргумент нечетным числом.
Описание: function Odd(x: Longint): Boolean;
Примечания: Параметр x - это выражение длинного целого типа. Результат принимает значение Truе, если x представляет собой нечетное число и False - в противном случае.

Пример 23.5

BEGIN

if Odd(5)=true then writeln('Число не четное!')

else writeln('Число четное!');

END.

Функция Ofs

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

Пример 23.6

VAR

x:word;

BEGIN

writeln('Смещение для переменной x = ', Ofs(x));

END.

Функция Ord

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

Пример 23.7

TYPE

tip1=(red, green, blue);

VAR

x:tip1;

BEGIN

writeln('Порядковый номер = ', Ord(blue));

writeln('Порядковый номер символа @ типа Char = ', Ord('@'));

END.

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

Функция ParamCount

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

Пример 24.1

BEGIN

if ParamCount<1 then writeln('В командной строке нет параметров')

else writeln(ParamCount,' параметров');

END.

Функция ParamStr

Назначение: Возвращает заданный параметр командной строки.
Описание: function РаrамStr(Indx): String;
Примечания: Параметр Indx представляет собой выражение типа Word. Данная функция возвращает из командной строки параметр, номер которого задается параметром Indx, или пустую строку, если Indx равняется нулю или больше, чем РаrамCоunt.

Пример 24.2

VAR

i:word;

BEGIN

for i:=1 to ParamCount do writeln(ParamStr(i));

END.

Функция Pi

Назначение: Возвращает значение 3.1415926535897932385 (значение числа Pi).
Описание: function Pi: Real;

Пример 24.3

VAR

s,r:real;

BEGIN

r:=5;

s:=2*Pi*r;

writeln('Длина окружности радиуса r=', r:1:0,' равна: ',s:3:1);

END.

Функция Pos

Назначение: Ищет подстроку в строке.
Описание: function Pos(Sub, S: String): Byte;
Примечания: Параметры Sub и S являются выражениями строкового типа. Данная функция ищет подстроку, заданную параметром Sub, в строке S и возвращает целое значение, являющееся позицией первого символа подстроки в строке S. Если подстрока не найдена, то функция возвращает значение 0.

Пример 24.4

BEGIN

if Pos('def','abcdefg')>0 then writeln('подстрока найдена!')

else writeln('подстрока не найдена!')

END.

Функция Pred

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

Пример 24.5

TYPE

tip1=(red, green, blue);

VAR

x:tip1;

BEGIN

writeln(Pred(blue));

writeln('Перед символом @ типа Char стоит символ = ', Pred('@'));

END.

Функция Ptr

Назначение: Преобразует адрес, заданный в виде базового сегмента и смещения, в значение типа указатель.
Описание: function Ptr(Seg, Offs: Word): Pointer;
Примечания: Параметры Seg (сегмент) и Offs (смещение) представляют собой выражения типа Word. Результатом является указатель на адрес, заданный параметрами Seg и Offs. Как и указатель типа nil, результат функции Рtr совместим по присваиванию с указателями любых типов.

Пример 24.6

VAR

p: byte;

BEGIN

p:= Ptr($0040, $49);

writeln('Текущим видеорежимом является ', p);

END.

Функция Random

Назначение: Возвращает случайное число.
Описание: function Random[ (Range: Word) ];
Примечания: Если параметр Range (диапазон) не задан, то результатом будет вещественное число x в диапазоне 0<=х<1. Если задан параметр Range, то он должен представлять собой выражение целого типа, а результатом будет случайное число длиной в слово в диапазоне 0<=х
Пример 24.7

VAR

i: byte;

BEGIN

randomize;

for i:=1 to 5 do writeln('Случайное вещественное число ',random);

for i:=1 to 5 do writeln('Случайное целое число ',random(10));

END.

Процедура Randomize

Назначение: Инициализирует встроенный генератор случайных чисел случайным значением.
Описание: procedure Randomize;
Примечания: Случайное значение получается от системного таймера. Число, получаемое в результате работы генератора случайных чисел, хранится в предописаной переменной с именем RandSeed.

См. пример 24.7

Процедура Read (текстовые файлы)

Назначение: Считывает одно или более значений из текстового файла в одну или более переменных.
Описание: procedure Read( [ var f: Text; ] v1, [, v2,...,vn] );
Примечания: Параметр f (если он указан) является файловой переменой, соответствующей текстовому файлу (text). Если он опущен, то подразумевается использование стандартной файловой переменной Input. Каждый параметр v является переменной символьного, строкового, целого или вещественного типа.

Процедура Read (типизированные файлы)

Назначение: Считывает в переменную элемент файла.
Описание: procedure Read(f, v1, [, v2,...,vn]);
Примечания: Параметр f является файловой переменной, соответствующей любому типу файла, кроме текстового, а каждый элемент v представляет собой переменную того же типа, что и элемент файла f. При каждом считывании в переменную текущая позиция в файле продвигается к следующему элементу. Попытка считывания следующего элемента файла в тот момент, когда текущая позиция файла находится в конце файла (то есть когда Eof(f) имеет значение Truе) является ошибкой.

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

Пример 24.8

{программа телефонная книга}

TYPE

tip_f=record

name, namber:string; {имя и номер телефона}

end;

VAR

f: file of tip_f; {для файла }

d: array[1..3]of tip_f; {для данных}

i: byte;

BEGIN

{$I-}

assign(f,'test.txt');

reset(f);

{$I+}

if ioresult=0 then

begin

writeln('Данные из файла:');

for i:=1 to 3 do read(f,d[i]);

for i:=1 to 3 do writeln(i,') ',d[i].name,' - ',d[i].namber);

end else

begin

writeln('Создается файл с данными!');

d[1].name:='Иванов'; d[1].namber:='93-45-16';

d[2].name:='Петров'; d[2].namber:='93-15-06';

d[3].name:='Сидоров'; d[3].namber:='19-43-77';

rewrite(f);

for i:=1 to 3 do write(f,d[i]);

close(f);

writeln('Данные занесены в файл!');

end;

END.

Процедура ReadLn (типизированные файлы)

Назначение: Выполняет процедуру Rеаd, затем переходит к следующей строке файла.
Описание: procedure Readln([ var f: Text; ] v1 [, v2,...,vn] );
Примечания: Процедура RеаdLn является расширением процедуры Rеаd и определена для текстовых файлов. После выполнения процедуры Rеаd процедура RеаdLn делает пропуск до начала следующей строки. Вызов функции RеаdLn(f) без параметров приводит к перемещению текущей позиции файла на начало следующей строки (если она имеется, в противном случае происходит переход к концу файла). Функция RеаdLn без списка параметров полностью соответствует обращению RеаdLn(Input).

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

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


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

Процедура Rename

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

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

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

Пример 25.1

VAR

f: text;

BEGIN

assign(f,'test.txt');

rename(f,'new_name.txt');

END.

Процедура Reset

Назначение: Открывает существующий файл.
Описание: procedure Reset(f [: file; Size : Word ] );
Примечания: Параметр f является файловой переменной, соответствующей любому типу файла. Он должен быть связан с внешним файлом с помощью процедуры Assign. Параметр размера Size представляет собой необязательное выражение длиной в слово и может указываться только в том случае, если f является нетипизированным файлом. Процедура Reset открывает существующий внешний файл, имя которого было присвоено f. Если внешний файл с указанным именем отсутствует, то это является ошибкой. Если файл f уже открыт, то он сначала закрывается, а затем открывается вновь. Текущая позиция в файле устанавливается на начало файла. Если f было присвоено пустое имя (например, Assign(f'')), то после обращения к процедуре Reset f будет ссылкой на стандартный файл ввода(стандартный канал 0).
Если f - текстовый файл, то он становится доступным только по чтению. После обращения к процедуре Reset Eof(f) принимает значение Truе, если файл пуст, и значение False в противном случае.
Если f является нетипизированным файлом, то параметр Size определяет размер записи, который должен использоваться при передаче данных. Если этот параметр опущен, то он подразумевается равным по умолчанию 128 байтам.

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

См. пример 24.8

Процедура Rewrite

Назначение: Создает и открывает новый файл.
Описание: procedure Rewrite(f [ : file; Size: Word ] );;
Примечания: Параметр f является файловой переменной, соответствующей любому типу файла. Он должен быть связан с внешним файлом с помощью процедуры Assign. Параметр размера Size представляет собой необязательное выражение длиной в слово и может указываться только в том случае, если f является нетипизированным файлом. Если этот параметр опущен, то подразумевается размер записи в 128 байт.
Процедура Rewrite создает новый внешний файл, имя которого присвоено f. Если внешний файл с указанным именем уже существует, то он удаляется, и на его месте создается новый пустой файл. Если файл f уже открыт, то он сначала закрывается, а затем открывается вновь. Текущая позиция в файле устанавливается на начало файла.
Если f было присвоено пустое имя (например, Assign(f,'')), то после обращения к процедуре Reset(f) будет ссылкой на стандартный файл ввода (стандартный описатель файла номер 1).
Если f - текстовый файл, то он становится доступным только по записи. После обращения к процедуре Rewrite Eof(f) принимает значение Truе, если файл пуст, и значение False в противном случае.
Если f является нетипизированным файлом, то параметр Size определяет размер записи, который должен использоваться при передаче данных. Если этот параметр опущен, то он подразумевается равным по умолчанию 128 байтам.

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