Сделай Сам Свою Работу на 5

Стандартные процедуры и функции.





В языке программирования Турбо Паскаль все используемые процедуры и функции объединены в стандартные модули. К основным модулям можно отнести следующие:

· 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 Все материалы защищены законодательством РФ.