|
Стандартные процедуры и функции.
В языке программирования Турбо Паскаль все используемые процедуры и функции объединены в стандартные модули. К основным модулям можно отнести следующие:
· SYSTEM – включает стандартные процедуры и функции языка; при использовании этого модуля его не требуется подключать с помощью USES, так как он подключен по умолчанию;
· DOS – содержит процедуры и функции для взаимодействия с MS DOS;
· CRT - объединяет процедуры и функции для работы с экраном в текстовом режиме и клавиатурой;
· GRAPH - состоит из процедур и функций для работы с экраном в графическом режиме;
· OVERLAY - обеспечивает работу с оверлеями (то есть частями программы), используется для обработки программ большого объема при недостатке оперативной памяти;
· PRINTER – модуль для работы с принтером.
Процедуры и функции модуля SYSTEM наиболее часто встречаются в программах. Рассмотрим некоторые из них.
Математические функции.
Имя функции
| Назначение функции
| Tип результата
| Abs(X)
| Абсолютное значение (модуль) аргумента
Abs(-3.5)=3.5
| Совпадает с типом Х
| ArcTan(X)
| Арктангенс аргумента в радианах
ArcTan(1)=7.8539816340E-01
| Real
| Cos(X)
| Косинус аргумента в радианах
Сos(PI/3)=5.0000000000E-01
| Real
| Exp(X)
| Экспонента аргумента (E в степени X)
Exp(1)=2.7182818285E+00
| Real
| Ln(X)
| Натуральный логарифм
Ln(10)=2.3025850930E+00
| Real
| PI
| Значение числа p PI=3.1415926536E+00
( более точно 3.1415926535897932385 )
| Real
| Random
| Случайное число из диапазона от 0 до 1
| Real
| Random(X)
| Случайное число из диапазона от 0 до Х
| Word
| Sin(X)
| Синус аргумента в радианах
Sin(PI/3)=8.6602540378E-01
| Real
| Sqr(X)
| Квадрат аргумента
Sqr(-12)=144
| Совпадает с типом Х
| Sqrt(X)
| Квадратный корень аргумента
Sqrt(841)=2.9000000000E+01
| Real
|
При необходимости вычисления некоторых математических функций, для которых не существует стандартных функций в языке Турбо Паскаль, их выражают через имеющиеся стандартные функции. Например:
tg(X)=Sin(X)/Cos(X)
lg(X)=Ln(X)/Ln(10)
Xn=Exp(n*Ln(X))
Перед использованием функций Random или Random(X) обычно предварительно выполняют процедуру Randomize(процедура без параметров), которая обеспечивает несовпадение последовательностей случайных чисел, генерируемых функцией Randomили Random(X).
Функции округления и преобразования типов.
Имя функции
| Тип аргумента
| Тип результата
| Назначение функции
| Chr(X)
| Целый Chr(66)=’B’
Chr(Ord(‘M’)=’M’
| Char
| Преобразование ASCII-кода в символ
(0-255)
| Frac(X)
| Real
Frac(-12.34)=-.34
| Real
| Дробная часть вещественного числа Х-Int(Х)
| Int(X)
| Real
Int(-12.34)=-12
| Real
| Целая часть вещественного числа
| High(X)
| Порядковый,
массив, строка,
открытый массив
| Совпадает с аргументом
| Получение максимального значения номера элемента
| Low(X)
| Порядковый,
массив, строка,
открытый массив
| Совпадает с аргументом
| Получение минимального значения номера элемента
| Ord(X)
| Порядковый
Ord( ‘A’)=65
Ord(Chr(86))=86
| LongInt
| Возвращает число, соответствующее символу Х в ASCII- таблице
| Round(X)
| Real
Round(-1.2)=-1
Round(-1.5)=-2
Round(1.2)=1
Round(1.5)=2
| LongInt
| Округление до ближайшего целого
| Trunc(X)
| Real
Trunc(-1.2)=-1
Trunc(-1,5)=-1
Trunc(1.2)=1
Trunc(1.5)=1
| LongInt
| Отбрасывание дробной части
|
Функции порядкового типа.
Имя функции
| Назначение функции
| Odd(X)
| Проверяет, является ли аргумент нечетным числом
Odd(0)=false
Odd(1)=true
Odd(2)=false
Odd(-1)=true
| Pred(X)
| Возвращает предшествующее значение аргумента
Pred(10)=9
Pred(-10)=-11
| Succ(X)
| Возвращает последующее значение аргумента
Succ(10)=11
Succ(-10)=-9
|
Процедуры порядкового типа.
Имя процедуры
| Назначение процедуры
| Dec(X [,dx])
| Уменьшает значение переменной Х на величину dx (если параметр dx не задан, то на –1)
k:=5; Dec(k)=4
Dec(k,2)=3
Dec(k,-2)=7
| Inc(X [,dx])
| Увеличивает значение переменной Х на величину dx (если параметр dx не задан, то на +1)
k:=5; Inc (k)=6
Inc (k,2)=7
Inc (k,-2)=3
|
Строковые функции.
Имя функции
| Назначение функции
| Concat(<строка1>,<строка2>,..)
| Сцепление строк
Сoncat(‘A’,’BC’,’_1’)=’ABC_1’
| Copy(<строка>,<позиция>,<количество>)
| Копирование части строки с заданной позиции
Copy (‘INFORMATION’,3,5) = ’FORMA’
| Length(<строка>)
| Определение текущей длины строки
Length('строка’)=6
| Pos(<подстрока>,<строка>)
| Определение позиции первого вхождения подстроки в строку
Pos(‘e’,‘Определение’)= 4
Pos(‘к’,‘Определение’)= 0
|
Для функции Concat общая длина полученной строки не должна превышать 256 байт. Знак «+» для строковых данных также означает операцию конкатенации.
Для функции Copy, если позиция в строке превышает длину этой строки, то результатом будет пустая строка. Если <позиция>+ <количество> больше длины строки, то копируются лишь последние символы. Если же <позиция> не принадлежитинтервалу [1,255], то возникает ошибка при выполнении программы.
Строковые процедуры.
Имя процедуры
| Назначение процедуры
| Delete(<строка>,<позиция>,<количество>)
| Удаление части строки с заданной позиции
1) S:=’abcdefgh’;
Delete(S,2,4);
Результат: S=’afgh’
2) S:=’abcdefgh’;
Delete(S,2,10);
Результат: S=’a’
| Insert(<подстрока>,<строка>,<позиция>)
| Вставка подстроки в строку с заданной позиции
S:=’abcdefgh’;
Insert(‘XXL’,S,3);
Результат: S=’abXXLcdefgh’
| Str(<число>,<строка>)
| Преобразование числового значения в строку символов
1) Str(567,A);
Результат: A=’567’
2) )B:=567; {B:integer}
Str(B:5,A);
Результат: A=’_ _567’
3) B:=5.67E+3; {B:real}
Str(B:8:0,A);
Результат: A=’_ _ _ _5670’
| Val (<строка>,<число>,<код>)
| Преобразование строки в числовое значение (если нет ошибки, то < код>=0)
1)A:=’135’;
Val(A,R,Code);
Результат: R=135; Code=0
2)A:=’_135’;
Val(A,R,Code);
Результат: R=не определено;
Code=1
3)A:=’2.5Е+4’;
Val(A,R,Code);
Результат: R=25000; Code=0
|
Для процедуры Delete,если <позиция> больше длины строки, то строка не меняется. Если <позиция> + <количество> больше длины строки, то удаляется конец строки с указанной позиции. Если же <позиция> не принадлежитинтервалу [1,255], то возникает ошибка при выполнении программы.
Для процедуры Insert, если в результате вставки получается строка, длина которой превышает максимальную длину исходной строки, то последние символы вставляемой строки не добавляются. Если <позиция> превышает фактическую длину исходной строки, определяемой функцией Length, то результатом является сцепленная строка.
Для процедуры Val в строке не разрешаются предшествующие преобразуемому числу и последующие за числом пробелы.
Прочие процедуры и функции.
Имя функции
| Модуль
| Назначение процедуры или функции
| Keypressed
| Crt
| Функция. Возвращает значение True, если на клавиатуре была нажата клавиша и False в противном случае
| ReadKey
| Crt
| Функция. Приостанавливает выполнение программы до нажатия на любую клавишу
| SizeOf(X)
| System
| Функция. Возвращает число байт, занимаемых аргументом
| WhereX
| Crt
| Функция. Возвращает горизонтальную координату текущей позиции курсора относительно текущего окна
| WhereY
| Crt
| Функция. Возвращает вертикальную координату текущей позиции курсора относительно текущего окна
| ClrScr
| Crt
| Процедура. Очищает экран
| Delay (Х)
| Crt
| Процедура. Приостанавливает работу программы на Х миллисекунд
| Exit
| System
| Процедура. Преждевременное завершение процедуры, функции или основной программы
| FillChar(X,COUNT,Value)
| System
| Процедура. Заполняет заданное количество COUNT последовательных байт переменной Х значением Value
| GetDate(<год>,<месяц>,
<число>,<деньнедели>)
| Dos
| Процедура. Возвращает текущую дату
| GotoXY(X,Y)
| Crt
| Процедура. Перемещает курсор в нужное место экрана
| Window(X1,Y1,X2,Y2)
| Crt
| Процедура. Определяет текстовое окно на экране(X1,Y1- координаты верхнего левого угла; X2,Y2- координаты правого нижнего угла)
|
Процедуры ввода данных.
Ввод данных в языке Турбо Паскаль выполняется стандартными процедурами (операторами) READ или READLN, вывод - процедурами WRITE или WRITELN. Процедуры READ и READLN используют для ввода символов (тип данных CHAR), строк (тип данных STRING) или числовых данных (тип данных INTEGER, BYTE, REAL и др.).
Вызов процедуры READ имеет следующий вид:
READ ([<имя файла>,]<список переменных>);
Для процедуры READLN соответственно:
READLN ([<имя файла>,]<список переменных>);
При отсутствии <имени файла>считывание данных производится из стандартного файла INPUT; при этом стандартными устройствами считаются клавиатура или дисплей, связанные с файлом INPUT.
Каждому оператору ввода соответствует свой поток данных, в котором перечисляются значения констант, присваиваемые переменным, указанным в списке переменных. Присваивание значений из входного потока происходит слева направо в соответствии с порядком следования переменных в списке переменных.
Необходимо помнить:
- Типы переменных и констант должны совпадать (исключение составляет только тип данных REAL, для которых можно при вводе указывать переменные и константы типа INTEGER).
- Вводимые числовые данные должны быть разделены одним или несколькими пробелами; нельзя отделять пробелами знак от числа и цифру от цифры одного и того же числа.
- Если вводится строка (тип данных STRING), то READ считывает столько символов, сколько допустимо по максимальной длине, заданной в описании VAR.
- При вводе последовательности символов (тип данных CHARили STRING) пробел воспринимается как символ.
Например.
А) Ввод числовых данных:
Var B,A,D: Real;
K:Integer;Входной поток данных:
. . . 2.5 –4.95 20 1.25Е2
Read(A,D);После ввода:
Read(K,B); A=2.5; D=-4.95; K=20; B=125
Б) Ввод числовых и строковых данных.
Var A: Real;
B:Integer;
C1,C2,C3: Char;Входной поток данных:
D: String[5]; 2.5 10 KLMКОШКА
. . . После ввода:
Read(A,B,C1,C2,C3,D); A=2.5; B=10; C1=’ ’;
C2=’K’;C3=’L’;
D=’MКОШК’
Из примера видно, что ввод смешанных данных (и числовых и строковых) из одного входного потока осуществляется не совсем верно. Если же во входном потоке данных после 0 не поставить пробел, то это приводит к ошибке ввода данных (ERROR 106). Поэтому рекомендуется вводить числовые значения отдельно от символов или строк.
При выполнении оператора READ конец строки ввода (нажатие клавиши <Еnter>) приравнивается к вводу пробела, разделяющего элементы данных во входном потоке; в этом случае нет перехода к следующей строке данных во входном потоке, а входные данные последовательно считываются в соответствующие переменные.
Например, для одних и тех же операторов ввода входной поток может быть разным:
Read(A,B,C); Входной поток:2 9 5 3 7 или
Read(D,Е); Входной поток 1 строка:2 9 5
2 строка 3 7
Отличие оператора READ от READLN состоит в том, что после считывания последней переменной при READLN остаток строки ввода игнорируется. Следующий за ним оператор READ или READLN считывает данные с начала новой строки, т.е. оператор READLN реагирует на конец строки (нажатие клавиши <Еnter>) и в случае его обнаружения происходит переход к следующей строке данных во входном потоке данных. Возможно использование оператора READLNбез параметров; в этом случае обеспечивается безусловный переход к следующей строке данных во входном потоке.
Например, рассмотрим ввод элементов двумерного массива разными способами:
1) For I:=1 to 2 DO
Begin
For J:=1 to 3 do
Read (A[I,J]);
Readln
End;
Входной поток: 3 5 1
-4 7 9
2) For I:=1 to 2 do
For J:=1 to3 do
Read (A[I,J]);
Входной поток: 3 5 1
-4 7 9
3) For I:=1 to 2 do
For J:=1 to 3 do
Readln(A[I,J]);
Входной поток: 3
-4
В следующем примере наглядно показано, что при использовании READLNданные, находящиеся в конце строки, игнорируются.
Var A,B,C,D:integer;Входной поток:
1 строка: 10 20 30 40 50
…2 строка:60
Readln(A,B,C);
Readln(D);Результат:
A=10;B=20;C=30;D=60
Процедуры вывода данных.
Процедура (оператор) WRITEпредназначена для вывода выражений следующих типов: Integer, Byte, Real, Char, String, Boolean и др.
WRITE ([<имя файла или устройства>,]
<список выражений>);
Если <имя файла>отсутствует, то вывод осуществляется в стандартный файл OUTPUT (на экран дисплея). Если указано < имя файла >, этот файл должен быть описан или подготовлен заранее.
Для вывода на печать используется логическое устройство LST; при этом должен быть подключен стандартный модуль PRINTER (т.е. в начале программы должно быть предложение Uses Printer;).
Оператор WRITE выводит значения выражений из списка на текущую строку до ее заполнения. Если за ним следует оператор вывода, а текущая строка еще не заполнена, то вывод осуществляется на ту же строку.
Например:
X:=5; Y:=10;
Write (‘X=’, X);
Write (‘ Y=’,Y); На печать:X=5 Y=10
При выводе на печать для величин стандартного типа отводится определенное число позиций, зависящее от реализации Паскаля. Существует возможность задавать ширину поля (число позиций) для выводимой величины.
Оператор вывода с форматом:
WRITE ([<имя файлаили устройства>,]R1:N1,R2:N2,…, Rm:Nm);
Здесь - R1,R2,…,Rm- выводимые переменные;
N1,N2,…,Nm- ширина поля.
Если ширина поля избыточна, то слева помещаются пробелы. Если же ширины поля не хватает для вывода, то заданное значение для ширины поля игнорируется и выводится реальное число.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|