Лекція 3

 

Лекція 3

 

1. Технологія ООП та її переваги

З розвитком обчислювальної техніки і ускладненні вирішуваних задач виникали різні мови і моделі програмування. Перші компілятори (до них перш за все належить компілятор мови FORTRAN) підтримували процедурну модель програмування, в основі якої лежить використання функцій та процедур. Використовуючи процедурну модель програмування, програмісти могли писати програми довжиною до декількох тисяч рядків.

Наступний етап в розвитку програмування був пов'язаний з переходом до структурної моделі програмування (реалізованої в компіляторах мов ALGOL, Pascal і С). В структурному програмуванні програма розробляється у вигляді сукупності взаємозв'язаних процедур або блоків і тих даних, якими ці процедури або блоки оперують. При цьому широко використовують програмні блоки і допускається лише мінімальне використання операторів goto. Розробка таких програм набагато простіша, ніж розробка процедурно-орієнтованих. Використовуючи структурне програмування, програміст може створювати програми довжиною до декількох десятків тисяч рядків. Для написання більш складних задач потрібен був новий підхід до програмування, який і був реалізований у моделі ООП.

Модель ООП базується на декількох основоположних принципах:

  • Абстракція даних - це можливість визначати нові типи даних, з якими можна працювати майже так само, як із основними. Такі типи даних часто називають абстрактними типами даних, хоча термін "типи даних, визначені користувачем" є більш коректним.
  • Інкапсуляція - це механізм, який об'єднує дані і код, що маніпулює цими даними, а також захищає їх (і дані, і код) від зовнішнього втручання.
  • Наслідування - це принцип ООП, завдяки якому один об'єкт може набувати властивостей іншого. Фактично він означає: якщо ви хочете створити новий клас, який мало в чому відрізняється від існуючого, то зовсім немає необхідності у переписуванні заново вже існуючих полів і методів, натомість ви оголошуєте новий клас потомком (дочірнім класом) старого класу, який називається предком (батьківським класом) і додаєте до нього нові поля, методи, а в Delphi - ще й властивості.
  • Поліморфізм - це властивість коду вести себе по-різному в залежності від ситуації, що виникла в момент виконання. Поліморфізм - це характеристика функцій-членів класу (методів), яка проявляється можливості використання одного імені функції-члена (методу) для функцій, які мають різні типи аргументів і відповідно можуть виконувати різні дії.

В деяких задачах, таких як розробка графічного інтерфейсу додатку, розробка додатків баз даних і комп'ютерної графіки, без ООП важко обійтись. Крім того, методи ООП дозволяють приховати деталі низькорівневих мережевих протоколів. Тому вони широко використовуються при програмуванні додатків, що працюють в комп'ютерних мережах (як локальних, так і глобальних, наприклад, в Internet).

2. Структурний підхід в програмуванні

Перші програми для цифрових обчислювальних машин рідко перевищували об'єм 1 Кбайт. З того часу суттєво змінилася архітектура і технічні характеристики програмуючих засобів обрахунку, знизилась вартість зберігання, пересилки і опрацювання 1 байту інформації. Об'єми використовуючих програм і програмних систем вимірюються не тільки десятками Кбайт, але і сотнями Мбайт. Тому не дивно, що одним із основних факторів, які визначають розвиток технологій програмування, являється зниження вартості проектування та створення програмних продуктів або боротьба із складністю програмування.

Іншими важливими факторами, які впливають на еволюцію проектування і створення ПП, являються:

  • зміна архітектур в інтересах підвищення продуктивності.

надійності та комунікабельності;

  • спрощення взаємодії користувача та інтелектуалізація.

Можна виділити наступні важливі моменти в процесі програмування:

  • розв'язувана задача;
  • мова програмування;
  • засоби виконання програми;
  • технологічний процес колективної розробки і створення ПП;
  • прагнення до універсальності і ефективності алгоритмів і типів даних.

Для подолання таких проблем використовують структуризацію задачі тобто ідея розділення програми на відносно самостійні громіздкі часини, що реалізують визначені процедури і функції, і створюють визначену ієрархію взаємозв'язків.

Подальший розвиток структурного підходу привів до модульного програмування. Воно передбачає декомпозицію прикладної задачі в вигляді ієрархії взаємодіючих модулів або програм. Модуль, що утримує дані і процедури їх обробки, зручний для автономної розробки і створення. Спеціалізація модулів по видам обробки і наявність в них даних визначених типів - це властивості, які відображають генетичний зв'язок модульного програмування і ООП.

Розвитком ідеї модульного програмування являється співставлення об'єктам предметної області (моделюючими об'єктами) програмних конструкцій, які називають об'єктами, об'єктними типами або класами (моделюючими об'єктами).

3. Концепції об'єктно-орієнтованого програмування

ООП є третім великим етапом (після структурного і модульного програмування) в процесі розвитку структурного підходу. Зменшити число помилок та спростити їх знаходження могла дозволити алгоритмічна декомпозиція, що орієнтувалася на "природні" елементи (компоненти або об'єкти) простору розв'язуваної задачі. В цьому випадку на етапі кодування і відладки спрощувались співставлення конструкцій програміста із об'єктами, що моделюються.

Таку декомпозицію будемо називати об'єктно-орієнтованим аналізом простору розв'язуваної задачі або предметної області. Для описання результатів об'єктно-орієнтованого аналізу і наступного програмного синтезу необхідні адекватні засоби мови, котрі побудовані на певних принципах.

Основним поняттям в ООП є об'єкт або клас, який можна розглядати з двох позицій. По-перше, з позиції предметної області: клас відповідає визначеному характерному (типовому) об'єкту цієї області. По- друге, з позиції технології програмування: клас в ООП - це певна програмна структура, котра має три важливі властивості:

  • інкапсуляція;
  • наслідування;
  • поліморфізм.

4. Класи

Потрібно зазначити, що в попереднику Object Pascal - мові Turbo Pascal, об'єктами називаються типи, що мають багато спільного з класами в Object Pascal. Однак істотні доповнення, внесенні в об'єктну модель Object Pascal, примусили розробників мови внести для позначення об'єктів спеціальний термін - "клас", запозичений з мови C++. В Object Pascal збережений тип-об'єкт Object, що підтримує об'єктну модель, тобто слово object є синонімом слова class.

Класами в Object Pascal називаються спеціальні типи даних, які мають поля, методи і властивості. Клас слугує лише зразком для створення конкретних екземплярів реалізації, котрі називаються об'єктами. Важливою відмінністю класів від інших типів даних є те, що пам'ять для об'єктів класу завжди виділяється в кучі, тому об'єкт-змінна фактично представляє собою лише вказівник на динамічну область пам'яті. Однак у відмінності від інших вказівників при посиланні на зміст об'єкту забороняється вказувати символ ^ після імені об'єкту.

5. Основні поняття

Класи — це особливі "винаходи" програмістів, що слугують для спрощення розробки складних програм і покращення їх. В основі класів лежать три фундаментальні принципи - інкапсуляція, наслідування та поліморфізм.

Інкапсуляція.

Клас являє собою єдність трьох сутностей - полів, методів і властивостей. Об'єднання цих сутностей в єдине ціле і називається інкапсуляцією. Інкапсуляція дозволяє в багатьох випадках ізолювати клас від інших частин програми, зробити його "самодостатнім" для розв'язання конкретної задачі. В результаті клас завжди несе в собі деяку функціональність. Інкапсуляція являється потужним засобом обміну готовими до роботи програми заготовками.

Наслідування.

Кожен клас може бути породженим від іншого класу. Для цього при його оголошенні вказується ім'я батьківського класу:

TChildClass = class(TParentClass).

 Породжений клас автоматично наслідує поля, методи і властивості свого батька і може доповнювати їх новими.

Таким чином, принцип наслідування забезпечує поетапне створення складних класів і розробку власних бібліотек класів. Всі класи Object Pascal породжені від єдиного батька - класу TObject. Цей клас не має полів і властивостей, але включає в себе методи самого загального значення, забезпечуючи весь життєвий цикл будь-яких об'єктів - від їх створення до знищення. Програміст не може створити клас, який би не був дочірнім класом класу TObject. Наступні два оголошення ідентичні:

TClass = class(Object)

та

TClass = class.

Принцип наслідування приводить до створення розгалуженого Дерева класів, яке поступово розростається від класу TObject до його нащадків. Кожний нащадок доповнює можливості свого батька новими і передає їх своїм нащадкам.

Поліморфізм.

Поліморфізм — це властивість батьківських класів вирішувати схожі за суттю проблеми різними способами.

В рамках Object Pascal поведінкові властивості класу визначаються набором належних для нього методів. Змінюючи алгоритм того чи іншого методу в нащадках класу, програміст може надавати цим нащадкам відсутні у батька специфічні властивості. Для зміни методу необхідно перекрити його в нащадку, тобто оголосити в нащадку однойменний метод і реалізувати в ньому потрібні дії. В результаті в об'єкті-батьку і об'єкті- нащадку будуть діяти два однойменні методи, маючи різну алгоритмічну основу і, відповідно, надаючи об'єктам різні властивості. Це і називається поліморфізмом об'єктів. В Object Pascal поліморфізм досягається не лише описаним вище механізмом наслідування і перекриття методів батька, але і їх віртуалізацією (див. далі), дозволяючи батьківському методу звертатися до методів своїх нащадків.

Оголошення класу

Кожен знову створений клас може містити секції, визначені зарезервованими словами published (опубліковані), private (закриті), protected (захищенні), public (відкриті) і automated (автоматизування). Усередині кожної секції спочатку описуються поля, потім - методи і властивості. Секції визначають області видимості елементів опису класу.

Секція public не накладає обмежень на область видимості полів, що перелічуються в ній, методів і властивостей — їх можна викликати в будь- якому іншому модулі програми.

Секція published також не обмежує область видимості, однак у ній перелічуються властивості, що повинні бути доступні не тільки на етапі виконання, але і на етапі конструювання програми (тобто у вікні інспектора об'єктів).

Секція published використовується тільки при розробці нестандартних компонентів.

Секція private звужує область видимості до мінімуму: закриті елементи опису доступні тільки всередині методів даного класу і підпрограмах, що знаходяться в тім же модулі, у якому описаний клас.

         Елемент, оголошений у секції private, стає недоступним навіть найближчим нащадкам класу, якщо вони розміщуються в інших модулях.

Секція protected доступна тільки методам самого класу, а також будь-яким його нащадкам незалежно від того, чи знаходяться вони в тому ж модулі чи ні.

Секція automated використовується тільки для оголошення властивостей і методів, що будуть додані до так названого інтерфейсу об'єктів автоматизації; область видимості членів цієї секції не обмежена.

У Object Pascal дозволяється скільки завгодно раз повідомляти секцію, причому порядок продовження секції не має значення. Будь-яка секція може бути порожньою.

6. Коментар

В текстах програм допустимі фрагменти пояснювального характеру - коментар. Коментар є досить зручним засобом, який використовується для пояснення коду програми або при налагоджуванні програми для тимчасового виключення деяких блоків. Основна роль коментарів полягає в тому, що вони забезпечують необхідні пояснення, що в свою чергу дозволяє краще зрозуміти логічну структуру програми і легко пригадати реалізацію програми, яка може бути написана декілька років тому.

В Object Pascal існує три види коментарів:

1) послідовність символів у фігурних дужках {

2) послідовність символів після подвійного "слеша" //

  1. послідовність символів у парі символів (* і *).

Коментарі, що обмежуються з обох боків (фігурними дужками або зірочкою з круглою дужкою), можуть займати будь-яку кількість рядків. Текст коментарю ігнорується при компіляції, якщо це не директиви компілятора, які мають вигляд {$ ... }.

 

7. Деякі функції для стандартних типів даних

 

Таблиця 1

Функції та процедури для порядкових типів

Виклик функції

Призначення функції (процедури)

Тип

аргументу

Тип результату

1.

Ord(x)

порядковий номер значення

порядковий тип

longint

2.

Succ(x)

знаходження наступного елемента

порядковий тип

як у аргумента

3.

Pred(x)

знаходження попереднього елемента до х

порядковий тип

як у аргумента

4.

Low (х)

знаходження мінімально можливе значення

порядковий тип

як у аргумента

5.

High(x)

знаходження максимально можливе значення

порядковий тип

як у аргумента

6.

Іпс(х)

процедура інкремента (збільшує на одиницю порядковий номер

порядковий тип

як у аргумента

7.

Dec(x)

процедура декремента (зменшує на одиницю)

порядковий тип

як у аргумента

 

Цілі типи даних

Цілі типи даних використовуються для представлення цілих чисел. Вони відносяться до цілих порядкових типів. Нижче подана таблиця, в якій перераховані цілі типи даних та їх характеристики.

Цілі типи відрізняються діапазоном значень та розміром памяті, який вонивикористовують. Максимальну продуктивність серед перерахованих забезпечують Integer та Cardinal. Зазначені в таблиці використання пам'яті можуть змінюватися від версії до версії та від системи до системи. Тому, якщо потрібно достовірно знати використання пам'яті, для того чи іншого типу, слід скористатися функцією SizeOf.

Арифметичні операції над цілими числами повертають тип Integer. Тільки, якщо обидва операнди мають тип Int64, то результат також має тип Int64. Більшість стандартних процедур та функцій, що працюють із цілими аргументами, урізають аргументи типу Int64 до 4 байтів. Виключення складають функції High, Low, Succ, Pred, Inc, Dec, IntToStr, IntToHex що повністю підтримують аргументи типу Int64. Функції Round, Trunc, StrToInt64, StrToInt64Def також повертають результат типу Int64. Фукция Ord до типу Int64 застосовуватися не можуть.

Зауваження.

При збільшенні (зменшенні) значення зміної, яка приймає максимальне (мінімальне) для даного типу значення, відбувається циклічний перехід до мінімального (максимального) значення. Якщо ж в опціях проекту встановлено Range Checking та включена директива перевірки діапазону цілочисельних значень {$R+}, то під час виконання буде генеруватися виключення Range Check error.

Серед основних процедур та функій при роботі з цілочисельними типами є:

  • Dec(I) - зменшує І на 1;
  • Dec(I,N) - зменшує І на N;
  • Іпс(І) -збільшує І на 1;
  • Inc(I,N) -збільшує І на N;
  • Odd(X) - повертає значення true, якщо значення X - парне, false, якщо х- непарне;
  • Random - генерує випадкове число із проміжку 0 < X < 1;
  • Random(Range) - генерує випадкове число із промп 0 < х < Range;
  • RandomRange( AFrom, АТо) - генерує випадкове число з проміжку  AFrom < х < АТо;

Символьні типи даних

Символьні типи призначені для зберігання одного символа. Во відносяться до цілих порядкових типів. В таблиці 5.4 подано ти символьних типів.

Таблиця 2

Символьні типи даних

Тип

Розмір в байтах

Що може зберігатися

ANSIChar

1

Один символ ANSI

WideChar

2

Один символ Unicode

Char

1

Зараз еквівалентний ANSIChar. В майбутніх версіях Delphi може бути буде еквівалентний WideChar

Наявність двох різних типів - ANSIChar та WideChar повязано із двома різними множинами символів: ANSI, кожний символ якого займає 1 байт, та Unicode, кожний символ якого займає 2 байти. Перші 256 символів в цих множинах однакові і відповідають символам ASCII від 0 до 255.

Універсальним є тип Char, який на даний момент еквівалентний типу ANSIChar. Саме тип Char варто використовувати у всіх випадках, окрім звернень до функцій, що вимагають іншого типу символьних даних.

Для символьного типу визначена функція Chr(i), що перетворює цілочисельну змінну в символьну змінну типу Char, порядковий номер якої задається параметром і.

Наприклад, Chr(80) повертає букву „Р".

Також визначена функція Ord(ch), де ch - будь-яка змінна символьного типу, що повертає ціле значення, яким символ ch представлений в пам'яті, тобто порядковий номер цього символу в таблиці ANSI. Функція Ord протилежна за змістом функції Chr.

Наприклад, Ord(Chr(80) поверне 80, a Chr(Ord('P')) поверне символ „Р".

Оскільки символьні типи відносяться до порядкових, то для них визначені такі функції та процедури, як: Pred, Succ, Іпс, Dec та інші.

Стрічковий тип

Стрічки - це послідовність символів. В наступній таблиці подано типи стрічок, які використовуються в Delphi.



 

Таблиця 3

Типи стрічок

Тип

стрічки

Максимальна довжина

Призначення

Наявність нульового символу в кінці

AnsiString

~231 (~2Гб)

символів ANSI

є

String

або 255, або до ~2 Гб

символів ANSI або Unicode

є або немає

WideString

~230(-1 Гб)

символів Unicode, в серверах СОМ та інтерфейсах

є

 

 

Коротка стрічка представляє собою стрічку, для якої область пам'яті виділяється статично. Тип ShortString може представляти собою текст довжиною до 255 символів. Змінна цього типу має фіксований розмір 255 байт. Цей тип визначений для забезпечення сумісності з попередніми версіями Delphi і BP. Перший байт (нульовий) відводиться для зберігання Довжини тексту, решта-для символів.

Тип AnsiString (довгі стрічки) призначений для створення змінних, що зберігають тексти довільної довжини, при чому для змінної типу AnsiString пам'ять виділяється динамічно. Максимальна довжина стрічки обмежується тільки доступним об'ємом пам'яті (2 Гбайта). Сама змінна - це є покажчик розміром 4 байта. В нових додатках, написаних на Delphi. рекомендується використовувати виключно довгі стрічки.

Тип WideString складається з Unicode-символів, які визначені як 10- розрядні, тобто кодуються десятьома символами. Пам'ять для змінних цього типу виділяється динамічно. Цей тип використовують, якщо використовується в додатках технологія OLE і ActiveX.

Базовим є тип String, який має різний зміст залежно від директиви компилятора $Н. Директива компілятора $Н визначає, чи представляє зарезервоване слово string коротку або довгу стрічку. Якщо ж включить директиву {$Н-}, то String інтерпретується компілятором як тип ShortString - коротка стрічка без нульового символу в конці.

Якщо в описі типу стрічки після ключового слова String в квадратних дужках вказана кількість символів (наприклад, String[10]), то, незалежно від деректив компілятора, тип трактується як стрічка без нульового символу в кінці із вказаним числом символів.

Стандартна функція Length повертає число символів в стрічці, що передається їй в якості параметра. Процедура SetLength встановлює довжину стрічки. Для стрічок визначені операції порівняння > , <, = і т.п. якщо порівнюються дві стрічки, то більшою вважається стрічка більшої довжини. Якщо порівнюються стрічки однакової довжини, то порівнюються коди символів на однакових позиціях. З стрічками можна оперувати як з індексованими масивами символів. Наприклад, S[i] - це символ, що розташований в стрічці в позиції і (нумерація починається від 1, тобто індекс 1 відповідає першому символу). Для стрічок типу ShortString або AnsiString вираз S[i] має тип AnsiChar, для стрічок типу WideString - WideChar. Конкатенація стрічок здійснюється операцією „+". Наприклад, вираз S1+S2 видає як результат стрічку, в якій після символів стрічки S1 будуть розташовані символи стрічки S2. стрічки різних типів можуть присвоюватися один одному та змішуватися в одному вираз (компілятор при цьому здійснює автоматичне приведення типів). Але стрічки, що передаються як параметри в функції та процедури, повині мати тип, що вказується при описі цих функцій та процедур. В цих випадках при необхідності потрібно використовувати операції явного приведення типів або інші прийоми програмування.

Отже, типи стрічок можна класифікувати за двома ознаками: дові або короткі стрічки та стрічки, що використовують та не використовуют нульовий символ в кінці.

Таблиця 4.

Процедури та функції обробки стрічок

Назва функції

Призначення

Length(s: string): integer

Повертає довжину стрічки S.

SetLength(var s; newlength: integer)

Встановлює довжину стрічки.

Copy(s; index, count: integer): string

Повертає підстрічку або сегмент

динамічного масиву, що містить Count символів або елементів масиву, починаючи з позиції s[indeх]. Якщо значення index більше за довжину стрічки, повертається порожня стрічка. Якщо значення count перевищує кількість символів, що

залишилися, то копіюються всі символи до кінця стрічки.

 

Delete(var s: string; index,

count: integer)

Знищує підстічку довжиною count символів із стрічки 5, починаючи з s[indexj.

 

Insert (si: string; var s: string; index:

integer)

Вставляє стрічку si в стрічку s починаючи із s[index].

 

Str(x f: width [: decimals ]]; var S)

Перетворює числове значення х в стрічку S.

 

StringOfChar(Ch: Char;

Count: Integer): string

Повертає стрічку, яка містить

Count повторень символів Ch.

 

Val(S; var V; var Code: Integer)

Перетворює стрічку S числове

значення.

 

AnsiLowerCase(const S:

string): string

Повертає стрічку ANSI S,перетворену до нижнього регістра.

 

AnsiUpperCase(const S: string): string

Повертає стрічку S, перетворену до верхнього регістра.

 

CompareStr(const S1, S2: string): Integer

Порівнює дві стрічки S1 та S2 з врахуванням регістра; повертає значення <0, якщо S1<S2, 0, якщо S1=S2, та >0, якщо S1>S2.

 

Concat(s1 , s2,.... snj: string): string

Повертає стрічку sj, що є з'єднанням стрічок тобто s1+s2+..+Snj.

Pos(Substr: string; S: string): Integer

Повертає позицію (індекс) першого входження Substr в S, якщо Substr немає в S, то повертається 0.

 

8. Перетворення типів

Функції перетворення типів найчастіше використовуються в інструкціях, що забезпечують введення/виведення інформації. Найбільш часто вживані функції перетворення типів і даних:

Таблиця 5

Функції перетворення типів

Функція

Значення

1

Round(n)

Округлення дробового числа до найближчого цілого

2

Тrипс(п)

Перетворення дісного числа в ціле (відкидання дробової частини числа)

3

IntToStr(n)

Перетворює ціле в стрічку

4

FloatToStr(n)

Перетворює дійсне в стрічку

5

FloatToStrf(n, Format, Precisionl,Digits)

Перетворює дійсне в стрічку в форматному вигляді, використовуючи заданий формат Format (можливі значення формату ffGeneral, ffExponent, ffFixed, ffNumber, ffCurrancy), задану точність Precisionl та число розрядів Digits

6

CurrToStr(n)

Перетворює значення типу Currancy в стрічку

7

IntToHex(n,Digits)

Перетворює ціле у стрічку, що має принаймні Digits шістнадцяткових цифр

8

StrToCurr(s)

Перетворює стрічку символів у число типу Currancy

9

StrToInt(s)

Перетворює стрічку в ціле

10

StrToFloat(s)

Перетворює стрічку в дійсне

11

StrToIntDef(s; Default)

Перетворює стрічку s в ціле число. Якщо стрічка не є допустимим цілим, то повертається значення по замовчуванню Default.

 

9. Стандартні процедури і функції

Бібліотечні модулі Delphi містять стандартні процедури і функції. Найчастіше використовуються такі:

Таблиця 6.

Математичні процедури і функції

Функція

Значення

ceil (х: Extended): Integer

Заокруглює значення параметра х до першого найбільшого цілого.

Ехр(х)

Експонента

round (x: Extended): Int64

Повертає заокруглене значення до найближчого цілого

max (a,b: тип): тип

Повертає найбільше з двох чисел

min (a,b: тип): тип

Повертає найменше з двох чисел

MaxIntValue (const Data: array of Integer): Integer

Знаходить максимальне значення масиву типу Integer

MinlntValue (const Data: array of Integer) .-Integer

Знаходить мінімальне значення масиву типу Integer

Max Value (const Data: array of Double): Double

Найбільше значення з масиву Double

MinValue (const Data: array of Double): Double

Найменше значення з масиву Double

Mean (const Data: array of Double): Double

Середнє значення з масиву

Sum (const Data: array of Double): Double

Знаходить суму елементів масиву Double

Abs(x)

Абсолютне значення

SumOfSquares (const Data: array of Double): Double

Знаходить суму квадратів всіх елементів масиву

CompareVaIue(A, B[,Epsilon])

Порівняння А та В з точністю Epsilon

EnsureRange(A Value,AMin,AMax)

Найближче до AValue із діапазону АМіn-АМах

floor (x: Extended): Integer

Заокруглює значення параметра х до першого найменшого цілого.

Frexp(x, Mantissa,Exponent)

Виділяє мантису та показник степені аргументу x

InRange( A Value, AMin, AMax)

Визначає , чи лежить AValue в діапазоні АМіn — А Мах

Int(x)

Ціла частина аргументу

IntPower (x, E)

Піднесення X до цілого степеня Е

Islnfinite(x)

Перевірка, чи є X нескінченною величиною

IsNan(x)

Перевірка, чи є x нечисловою величиною NaN

Ldexp(x,P)

Множення X на 2 в цілій степені Р

Ln(x)

Натуральний логарифм від X

Log10(x)

Десятковий логарифм від X

Frac(x)

Дробова частина аргументу

Log2(x)

Логарифм від X за основаю 2

LogN(N,x)

Логарифм від X за основою N

Pi

Число:3.1415926535897932385

Роlу(х, С)

Обчислює поліном X із масивом коефіцієнтів С

Power(x, Е)

Піднесення X до довільної степені Е

RoundTo(x, ADigit)

Заокруглення X до ADigit цифр

SameValue(A, B,Epsilon)

Перевірка, чи рівні один одному А і В із точністю Epsilon

Sqr(x)

Квадрат аргумента: Х*Х

Sqrt(X)

Квадратний корінь

Trunc(X)

Повертає цілу частину дійсного виразу

ArcSin(X)

Арксинус

ArcSinh(X)

Арксинус гіперболічний

АгсТап(Х)

Арктангенс

ArcTan2(Y, X)

Арктангенс від Y/X

ArcTanh(X)

Арктангенс гіперболічний

Cos(X)

Косинус

Cosh(X)

Косинус гіперболічний

Cotan(X)

Котангенс

Hypot(X, Y)

Обчислення гіпотенузи за заданими катетами X та Y

Sin(X)

Синус

SinCos(X, S, C)

Синус і косинус; працює у два рази швидше, ніж окремо обчислювати спочатку синус, а потім косинус

Sinh(X)

Синус гіперболічний

Tan(X)

Тангенс

Tanh(X)

Тангенс гіперболічний

ArcCos(X)

Арккосинус

ArcCosh(X)

Арккосинус гіперболічний

 

Зауваження.

У всіх функціях тип аргументу та тип значення, що повертається - Extended. У всіх тригонометричних функціях аргументі- кут в радіанах. Обернені тригонометричні функції повертають значення кута в радіанах. У функціях ArcSin и ArcCos аргумент повинен лежати в межах від -1 до 1. Функції ArcSin та АrсТап повертають результат в межах [-Pi/2 .. Рі/2], ArcCos - в межах [0.. Рі].

Tags: