Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Стандартные процедуры и функции, применимые к вещественным типам

Читайте также:
  1. II . Выполнение процедуры
  2. II. Выполнение процедуры
  3. Административные производства и административные процедуры как составные части административного процесса. Административная подведомственность.
  4. Административные процедуры
  5. Алгоритм действий медицинской сестры при проведении душевой процедуры
  6. Арбитражная процессуальная форма как особое интегрированное качество процедуры, регулирующей деятельность суда. Система гарантий.
  7. Арифметические операции, функции, выражения. Арифметический оператор присваивания
Обращение Тип параметра Тип результата Примечание
Abs (x) Real, Integer Тип аргумента Real Модуль аргумента
Pi - << =3.141592653...
ArcTan(x)     Арктангенс (значение в радианах)
Cos (x) To же << To же << Косинус, угол в радианах
Exp(x) << << Экспонента
Frac(x) << << Дробная часть числа
Int(x) << << Целая часть числа
Ln(x) << << Логарифм натуральный
Random - << Псевдослучайное число, равномерно распределенное в диапазоне 0...[1]
Random(x) Integer Integer Псевдослучайное целое число, равномерно распределенное в диапазоне 0...(х-1)
Randomize - - Инициация генератора псевдослучайных чисел
Sin (x) Real Real Синус, угол в радианах
Sqr(x) To же To же Квадрат аргумента
Sqrt(x) << << Корень квадратный

Для вычисления логарифма с основанием A используется соотношение

LogA(x)=ln(x)/ln(A).

В Object Pascal нет операции возведения в степень. При необходимости её использования применяют стандартные функции: операции xA соответствует

Exp(A*Ln(x)).

Генератор псевдослучайных чисел представляет собой функцию, которая берет некоторое целое число, называемое базовым, изменяет, его разряды по определенному алгоритму и выдает новое число как результат. Одновременно с этим новое число становится базовым при следующем обращении к функций; и т. д. (Так как алгоритм процедуры не меняется: в ходе ее работы, числа называются псевдослучайными). В системном модуле System, который автоматически доступен любой программе, базовое число хранится в переменной с именем RandSeek и всегда имеет начальное значение 0. Это означает, что при последовательном обращении к Random в разных, программах (или при нескольких прогонах одной программы) будет всегда выдана одна и та же прследовательность псевдослучайных чисел. Избежать этого эффекта можно с помощью процедуры Randomize, благодаря которой в переменную RandSeek помещается численное значение системного времени, что привёдет к генерации, другой последовательности. Обращение к этой процедуре нужно сделать в самом начале обработчика.

Начиная с версии 2 в Delphi включен модуль Match, который существенно расширяет перечисленный в таблице набор встроенных математических функций. Особенностью реализации содержащихся в нем почти 70 функций и процедур является их оптимизация для работы с арифметическим сопроцессором класса Pentium, так что все они производят необходимые вычисления за рекордно малое время.

2.4.5. Строковый тип. Строковый тип данных (тип String) определяет участок памяти переменной длины, каждый байт которого содержит один символ. Для символов в Object Pascal используется тип Char, таким образом, String - это цепочка следующих друг за другом символов Char. Каждый символ в String пронумерован, причем первый символ имеет номер 1. Программист может обращаться к любому символу строки, указывая его порядковый номер в квадратных скобках сразу за именем переменной:

var // Начало раздела описания переменных

S: String; // Объявление переменной строкового типа

Begin // Начало раздела исполняемых операторов

S := ' Строка символов'; // Переменная S содержит

// значение ”Строка символов”

S[6]:= 'и'; // Теперь переменная содержит значение

// ”Строки символов”

end; // Конец раздела исполняемых операторов

Программист обязан объявить любой вводимый им идентификатор. Идентификатор s неизвестен Delphi - он введен для переменной строкового типа. После его объявления в разделе переменных Delphi выделит для него начальную область памяти минимальной длины и будет контролировать использование этого идентификатора в разделе исполняемых операторов. Например, если в этом разделе встретится выражение

2*S-1

компилятор сразу забьет тревогу, так как строка не может быть участником математических вычислений: она предназначена для хранения символов, а не чисел.

Длина строковой переменной в программе меняется автоматически при каждом присваивании переменной нового значения и может составлять от 0 до 2 Гбайт (для версии Delphi 1 тип String соответствует «короткой» строке, длина которой не может превышать 255 байт). Над строковым типом определена операция сцепления (+):

S:= 'Object'+' Pascal';// S содержит “Object Pascal”

Строки можно сравнивать с помощью операций отношения.

Операция Смысл
= Равно
<> Не равно
> Больше
>= Больше или равно
< Меньше
<= Меньше или равно

Символы <>, <= и >= пишутся слитно, их нельзя разделять пробелами иди комментариями.

Результат применения операции сравнения к двум строкам имеет логический тип, который характеризуется двумя возможными значениям: True и False. Строки сравниваются побайтно, слева направо; каждая пара символов сравнивается в соответствии с их внутренней кодировкой.

Все остальные действия над строками осуществляются с помощью нескольких стандартных для Delphi подпрограмм.

Обработка строк. Для обработки текстов в Object Pascal используются следующие типы:

ü короткая строка ShortString или String[n], где n<=255;

ü длинная строка String;

ü широкая строка WideString;

ü нуль-терминальная строка Pchar.

Общим для этих типов является то, что каждая строка трактуется как одномерный массив символов, количество символов в котором может меняться в работающей программе: для String [n] длина строки меняется от 0 до n, для String и Pchar - от 0 до 2 Гбайт.

В стандартном Паскале используются только короткие строки String [n]. В памяти такой строке выделяется n+1 байт, первый байт содержит текущую длину строки, а сами символы располагаются, начиная со 2-го по счету байта. Поскольку для длины строки в этом случае отводится один байт, максимальная длина короткой строки не может превышать 255 символов. Для объявления короткой строки максимальной длины предназначен стандартный тип ShortString (эквивалент String[255]).

В Windows широко используются нуль-терминальные строки, представляющие собой цепочки символов, ограниченные символом #0. Максимальная длина такой строки лимитируется только доступной памятью и может быть очень большой.

В 32-разрядных версиях Delphi введен новый тип String, сочетающий в себе удобства обоих типов. При работе с этим типом память выделяется по мере надобности (динамически) и ограничена имеющейся в распоряжении программы доступной памятью. В Delphi 1 тип String эквивалентен String[255], т. е. определяет короткую строку максимально возможной длины.

Для совместимости с компонентами, основывающимися на OLE -технологии, в Delphi 32 введены также широкие строки, объявляемые стандартным типом WideString. По своим свойствам они идентичны длинным строкам String, но отличаются от них тем, что для представления каждого символа используются не один, а два байта.

Примеры объявлений строковых типов:

Var

ssS: String[250];// Короткая строка длиной до 250 символов

ssMax: ShortString;// Короткая строка

// длиной до 255 символов

stS: String; // Длинная строка

swS: WideString;// Широкая строка

pcS: PChar; // Ссылка на нуль-терминальную строку

acS:array [0..1000] of Char; // Нуль-терминальная строка

// длиной до 1000 символов

При объявлении переменной ssS компилятор выделит для ее размещения 250 + 1 = 251 байт и поместит в первый байт 0 - текущую длину строки.

Типы String и ShortString. Несмотря на разницу во внутреннем представлении, короткие строки ShortString и длинные строки String имеют для программиста одинаковые свойства.

Текущую длину строки можно получить с помощью функции Length. Например, следующий оператор уничтожает все ведомые (хвостовые) пробелы:

while (Length(stS) <> 0) and (stS[Length(stS)] = '') do

SetLentgh(stS, Length (stS) - 1);

В этом примере стандартная процедура SetLength устанавливает новую длину строки.

К строкам можно применять операцию “ + ” - сцепление, например:

stS:= 'а' + 'b'; // stS содержит "ab"

stS:= stS + ' с '; // stS содержит "abc"

Если длина сцепленной строки превысит максимально допустимую длину N короткой строки, то “лишние” символы отбрасываются. Следующая программа, например, выведет символ “1”:

Procedure TfmExamlpe.bbRunClick(Sender: TObject);

Var

ssS: String[1];

Begin

ssS:= '123';

IbOutput.Caption := ssS;

end;

Операции отношения =, <>, >, <, >=, <= выполняются над двумя строками посимвольно, слева направо с учетом внутренней кодировки символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются значением #0.

Следующие операции отношения дадут значение True:

'''' < '.'

'А' > '1'

'Object' < ' Object Pascal'

'Пас' > 'Pascal'

Ниже перечислены некоторые процедуры и функции обработки данных строковых типов.


Дата добавления: 2015-07-10; просмотров: 134 | Нарушение авторских прав


Читайте в этой же книге: Пример 1. | Типы данных. Стандартные функции и процедуры | Пример 2.2. (Задание 2.2) | Листинг 2.3 | Листинг 3.4 | Множественный выбор | Листинг 4.1 | Инструкция For | Листинг 5.2 | Считать верхней границей относительной погрешности, то |
<== предыдущая страница | следующая страница ==>
Вещественные типы| Правила использования операций с операндами различного типа

mybiblioteka.su - 2015-2024 год. (0.011 сек.)