Структура программы языка Турбо Паскаль Программа на языке Турбо Паскаль имеет вид
Вид материала | Программа |
См. пример |
- Структура программы на языке Турбо Паскаль Программа, написанная на языке Турбо Паскаль,, 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.
Назначение: Продолжает выполнение оператора 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 символов.