Значения вещественных типов определяют произвольное число лишь с некоторой конечной точностью, зависящей от внутреннего формата вещественного числа.
| Название | Длина, байт | Кол-во значащих цифр | Диапазон значений | Примечание |
| Real | 11...12 | 2,9*10-39...1,7*1039 | При наличии сопроцессора использовать нежелательно, т.к. замедляет работу | |
| Single | 7...8 | 1,5*10-45…3,4*1038 | - | |
| Double | 15...16 | 5,0*10-324...1,7*10308 | - | |
| Extended | 19...20 | 3,4*10-4951...1,1*104932 | Применяется наиболее часто | |
| Comp | 19...20 | -263...+263-1 | Дробная часть отсутствует | |
| Currency | 19...20 | ±922337203685477,5807 | Длина дробной части 4 десятичных разряда |
Для работы с вещественными типами имеются стандартные функции:
| Обращение | Тип параметра | Тип результата | Примечание |
| abs(x) | вещественный, целый | Тип аргумента | Модуль аргумента |
| ArcTan(x) | вещественный | вещественный | Арктангенс (в радианах) |
| Cos(x) | вещественный | вещественный | Косинус (в радианах) |
| Exp(x) | вещественный | вещественный | Экспонента |
| Frac(x) | вещественный | вещественный | Дробная часть числа |
| Int(x) | вещественный | вещественный | Целая часть числа |
| Ln(x) | вещественный | вещественный | Логарифм натуральный |
| Pi | --- | вещественный | p =3.141592653... |
| Random | — | вещественный | Псевдослучайное число, равномерно распределенное в диапазоне 0...[1] |
| Random(x) | целый | целый | Псевдослучайное целое число, равномерно распределенное в диапазоне 0...x |
| Randomize | --- | --- | Инициация генератора псевдослучайных чисел |
| Sin (x) | вещественный | вещественный | Синус (в радианах) |
| Sqr(x) | вещественный | вещественный | Квадрат аргумента |
| Sqrt(x) | вещественный | вещественный | Корень квадратный |
ПЗ.6. Тип дата-время
Тип дата - время определяется идентификатором TDateTime и предназначен для одновременного хранения и даты, и времени. Над данными типа TDateTime определены те же операции, что и над вещественными числами, а в выражениях этого типа могут участвовать константы и переменные целого и вещественного типов.
Приложение 4
ПРИЛОЖЕНИЕ 4. Процедуры и функции для работы со строками
Для работы со строками применяются следующие процедуры и функции (в квадратных скобках указываются необязательные параметры).
| Процедуры и функции для работы со строками | |
| Function Concat(S1 [, S2,..., SN]: String): String; | Возвращает строку, представляющую собой сцепление строк-параметров S1. S2, …, SN |
| Function Copy(St: String; Index, Count: Integer): String; | Копирует из строки St Count символов, начиная с символа с номером Index |
| Procedure Delete(St: String; Index, Count: Integers; | Удаляет Count символов из строки St начиная с символа с номером Index |
| Procedure Insert(SubSt: String; St, Index: Integer); | Вставляет подстроку SubSt в строку St начиная с символа с номером Index |
| Function Length(St: String): Integer; | Возвращает текущую длину строки St |
| Function Pos(SubSt, St: String): Integer; | Отыскивает в строке St первое вхождение подстроки SubSt и возвращает номер позиции, с которой она начинается. Если подстрока не найдена, возвращается ноль |
| Procedure SetLength(St: String; NewLength: Integer); | Устанавливает новую (меньшую) длину NewLength строки St, если NewLength больше текущей длины строки, обращение к SetLength игнорируется |
| Подпрограммы преобразования строк в другие типы т | |
| Function StrToCurr(St: String): Currency; | Преобразует символы строки St в целое число типа Currency. Строка не должна содержать ведущих или ведомых пробелов |
| Function StrToDate(St: String): TDateTime; | Преобразует символы строки St в дату. Строка должна содержать два или три числа, разделенных правильным для Windows разделителем даты (в русифицированной версии таким разделителем является «.») Первое число - день, второе – месяц, если указано третье число, оно задает год |
| Function StrToDateTime(St: String): TDateTime; | Преобразует символы строки St в дату и время. Строка должна содержать дату и время, разделенные пробелом |
| Function StrToFloat(St: String): Extended; | Преобразует символы строки St в вещественное число. Строка не должна содержать ведущих или ведомых пробелов |
| Function StrToInt(St: String): Integer; | Преобразует символы строки St в целое число. Строка не должна содержать ведущих или ведомых пробелов |
| Function StrToIntDef(St: String; Default: Integer): Integer; | Преобразует символы строки St в целое число. Если строка не содержит правильного представления целого числа, возвращается значение Default |
| Function StrToIntRange(St: String; Min, Max: Longint): Longint; | Преобразует символы строки St в целое число и возбуждает исключение ERangeError, если число выходит из заданного диапазона Mm Max |
| Function StrToTime(St: String): TDateTime; | Преобразует символы строки St во время |
| Procedure Val(St: String; var X; Code: Integer); | Преобразует строку символов St во внутреннее представление целой или вещественной переменной X, которое определяется типом этой переменной. Параметр Code содержит ноль, если преобразование прошло успешно, и тогда в Х помещается результат преобразования; в противном случае он содержит номер позиции в строке St, где обнаружен ошибочный символ, и в этом случае содержимое X не меняется. В строке St могут быть ведущие и (или) ведомые пробелы |
| Подпрограммы обратного преобразования | |
| Function DateToStr(Value: TDateTime): String; | Преобразует дату из параметра Value в строку символов |
| Function DateTimeToStr(Value: TDateTime): String; | Преобразует дату и время из параметра Value в строку символов |
| Procedure DateTimeToString (var St: String; Format: String; Value: TDataTime); | Преобразует дату и время из параметра Value в строку St |
| Function FormatDateTime (Format: String; Value: TDateTime): String; | Преобразует дату и время из параметра Value в строку символов |
| Function FloatToStr(Value: Extended): String; | Преобразует вещественное значение Value в строку символов |
| Function FloatToStrF(Value: Extended; Format: TFloatFor-mat; Precision, Digits: Integer): String; | Преобразует вещественное значение Value в строку символов с учетом параметров Precision и Digits (см. пояснения ниже) |
| Function FormatFloat(Format: String; Value: Extended): String; | Преобразует вещественное значение Value в строку |
| Function IntToStr(Value: Integer): String; | Преобразует целое значение Value в строку символов |
| Function TimeToStr(Value: TDateTime): String; | Преобразует время из параметра Value в строку символов |
| Procedure Str(X [:width [:Decimals]]; var St: String); | Преобразует число Х любого вещественного или целого типа в строку символов St; параметры Width и Decimals, если они присутствуют, задают формат преобразования: Width определяет общую ширину поля, выделенного под соответствующее символьное представление вещественного или целого числа X, a Decimals –количество символов в дробной части (этот параметр имеет смысл только в том случае, когда Х - вещественное число) |
Правила использования параметров функции FloatToStrF показаны ниже:
| Значение Format | Описание |
| fFfExponent | Научная форма представления с множителем еХХ («умножить на 10 в степени XX»). Precision задает общее количество десятичных цифр мантиссы. Digits - количество цифр в десятичном порядке XX. Число округляется с учетом первой отбрасываемой цифры: 3.1416Е+00 |
| ffFixed | Формат с фиксированным положением разделителя целой и дробной частей. Precision задает общее количество десятичных цифр в представлении числа. Digits - количество цифр в дробной части. Число округляется с учетом первой отбрасываемой цифры: 3,14 |
| ffGeneral | Универсальный формат, использующий наиболее удобную для чтения форму представления вещественного числа. Соответствует формату ffFixed, если количество цифр в целой части меньше или равно Precision, а само число - больше или равно 0,00001, в противном случае соответствует формату ffExponent: 3,1416 |
| ffNumber | Отличается от ffFixed использованием символа - разделителя тысяч при выводе больших чисел (для русифицированной версии Windows таким разделителем является пробел). Для Value = p* 1000 получим 3 141,60 |
| ffCurrency | Денежный формат. Соответствует ffNumber, но в конце строки ставится символ денежной единицы (для русифицированной версии Windows - символы «р.»). Для Value = p*1000 получим: 3 141,60р |
Приложение 5
ПРИЛОЖЕНИЕ 5. Математические формулы
Язык Object Pascal имеет ограниченное количество встроенных математических функций. Поэтому при необходимости использовать другие функции следует применять известные соотношения. В таблице приведены выражения наиболее часто встречающихся функций через встроенные функции языка Object Pascal.
| Функция | Соотношение | Соотношение на языке Object Pascal |
|
| Ln(x)/Ln(a) |
|
| Exp(a*Ln(x)) |
|
| Sin(x)/Cos(x) |
|
| Cos(x)/Sin(x) |
|
| ArcTan(Sqrt(x/(1-sqr(x)))) |
|
| Pi/2- ArcTan(Sqrt(x/(1-sqr(x)))) |
|
| Pi/2-ArcTan(x) |
|
| (Exp(x)-Exp(-x))/2 |
|
| (Exp(x)+Exp(-x))/2 |
|
| 1/Sin(x) |
|
| 1/Cos(x) |
Литература
1. Фаронов В.В. VISUAL STUDIO 3. Учебный курс. – М.: Нолидж, 1998. –400 с.
2. Дарахвелидзе П.Г., Марков Е.П. Visual Studio – среда визуального программирования: - СПб.: ВНV –Санкт-Петербург, 1996. – 352 с.
3. Федеоров А.Г. Visual Studio 3.0. для всех: – М.: КомпьютерПресс, 1998. – 544 с.
4. Марко Кэнту., Visual Studio 4 для профессионалов – СПб: Издательство «Питер», 1999. – 1120 с.: ил.
5. Архангельский А.Я., Программирование в Visual Studio – СПб: Бином, 2008. – 816 с.: ил.






