Структура программы языка Турбо Паскаль Программа на языке Турбо Паскаль имеет вид
Вид материала | Программа |
См. пример Write и Writeln |
- Структура программы на языке Турбо Паскаль Программа, написанная на языке Турбо Паскаль,, 229.09kb.
- Циклические программы. Структурированный тип данных. Структура сложной программы, 860.21kb.
- Программа на языке программирования Паскаль (Турбо Паскаль) имеет следующий вид: Заголовок, 60.23kb.
- Структура программы в Турбо Паскаль. Простые операторы в Турбо Паскаль, 7.57kb.
- Уроки №1-2 тема: "введение в паскаль. Среда турбо-паскаль", 120.81kb.
- Лекция №3. Состав и работа системы программирования Турбо Паскаль Язык программирования, 84.43kb.
- Тематическое планирование кружка на 2009/2010 уч г. «Основы алгоритмизации и программирования, 63.72kb.
- Тема 1 Базовые понятия в языке Турбо Паскаль Лекция 1 Общие сведения об алгоритмическом, 205.26kb.
- Прогон и отладка программы Справочная служба Турбо Паскаля, 959.97kb.
- С. В. Элективный курс «Программируем на Паскале» общие вопросы самылкина Н. Н. Программа, 503.53kb.
См. пример 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, а также к пустым строкам,образующимся при пролистывании экрана.