Чисельні змінні і типи даних
Одним з найголовніших перешкод є обсяг оперативної пам'яті і швидкодія комп'ютера. Програмісту завжди доводиться думати про те, яким чином зменшити потребу програми в пам'яті. Одним із способів вирішення цієї проблеми є обмеження кількості змінних, які використовуються в програмі, або зменшення розміру осередків пам'яті для їх зберігання.
Ви вже знаєте, як оголошуються змінні цілого і дійсного типу. Крім цих змінних в системі Delphi існує ще кілька типів даних. Вони відрізняються один від одного тільки розміром пам'яті, необхідним для їх зберігання, і, відповідно, діапазоном чисел, які можна зберігати в цих змінних. Таким чином програміст може вибрати необхідний чисельний тип, і раціонально використовувати пам'ять. Так що ж таке типи даних.
Будь-які дані, тобто константи, змінні, властивості, значення функцій або виразу в Delphi характеризуються своїми типами. Тип визначає безліч допустимих значень, які може мати той чи інший об'єкт, а також безліч допустимих операцій, які застосовні до нього. Крім того, тип визначає також і формат внутрішнього представлення даних в пам'яті ПК.
Delphi характеризується розгалуженою структурою типів даних:
Ми розглянемо з вами поки тільки прості типи.
Порядкові типи відрізняються тим, що кожен з них має кінцеве кількість можливих значень. Ці значення можна певним чином упорядкувати (звідси і назва типів) і, отже, з кожним з них можна зіставити деяке ціле число - порядковий номер значення.
До порядковим типам ставляться цілі, логічні, символьний, що перераховується і тип-діапазон. До будь-якого з них може бути застосована функція Ord (х), яка повертає порядковий номер значення виразу Х.
Символи з кодами 0. 31 відносяться до службових кодами. Якщо ці коди використовуються в символьному тексті програми, вони вважаються пробілами.
До типу char застосовні операції відносини, а також вбудовані функції:
СHR (в) - функція типу char; перетворює вираз в типу Byte в символ і повертає його своїм значенням;
UpCase (CH) - функція типу char; повертає прописну букву, якщо сн - рядкова латинська буква, в іншому випадку повертає сам символ сн (для кирилиці повертає вихідний символ).
На відміну від порядкових типів, значення яких завжди зіставляються з низкою цілих чисел і, отже, представляються в ПК абсолютно точно, значення речових типів визначають довільне число лише з деякою кінцевою точністю, яка залежить від внутрішнього формату дійсного числа.
Кількість значущих цифр
+/ -922 337 203 +685477,5807
У попередніх версіях Delphi 1. 3 тип Real займав 6 байт і мав діапазон значень від 2, 9 * 10 -39 до 1,7 * 10 38. У версіях 4 і 5 цей тип еквівалентний типу Double. Якщо потрібно (в цілях сумісності) використовувати 6-байтньш Real, потрібно вказати директиву компілятора.
Як видно з попередньої табл. дійсне число Delphi займає від 4 до 10 суміжних байт і має наступну структуру в пам'яті ПК:
Тут s - знаковий розряд числа; е - експоненціальна частина; містить двійковий порядок; m - мантиса числа.
Мантиса m має довжину від 23 (для single) до 63 (для Extended) двійкових розрядів, що і забезпечує точність 7. 8 для single і 19. 20 для Extended десяткових цифр. Десяткова точка (кома) мається на увазі перед лівим (старшим) розрядом мантиси, але при діях з числом її положення зсувається вліво або вправо відповідно до двійковим порядком числа, що зберігається в експоненційної частини, тому дії над числами називають арифметикою з плаваючою точкою (коми) .
Відзначимо, що арифметичний співпроцесор завжди обробляє числа в форматі Extended, а три інших речових типу в цьому випадку виходять простим урізанням результатів до потрібних розмірів і застосовуються в основному для економії пам'яті.
Для роботи з речовими даними можуть використовуватися вбудовані математичні функції, представлені в наступній табл. в цій таблиці Real означає будь-який дійсний тип, integer - будь-який цілий тип.
Стандартні математичні функції Delphi
Тип аргументу Real
Арктангенс (значення в радіанах)
Косинус, кут в радіанах
Дробова частина числа
Ціла частина числа
Псевдовипадкове число, рівномірно розподілене в діапазоні 0. [1]
Псевдовипадкове ціле число, рівномірно розподілене в діапазоні 0. (х-1)
Ініціація генератора псевдовипадкових чисел
Синус, кут в радіанах
На замітку Генератор псевдо випадкових чисел являє собою функцію яка бере деяке ціле число, зване базовим, змінює, його розряди За певним алгоритмом і видає нове число результат. Одночасно з цим нове число стає базовим при наступному зверненні до функцій; і т. д. (Так як алгоритм процедури не змінюється: в ході її роботи, числа називаються псевдовипадковими.) У системному модулі System, який автоматично доступний будь-якій програмі, базове число зберігається в змінної з ім'ям RandSeek і завжди має початкове значення 0. Це означає, при послідовному зверненні до Random в різних, програмах (або при декількох прогонах однієї програми) буде завжди випадати одна і та ж послідовність псевдовипадкових чисел.
Подання дійсних чисел
Речові числа містять в своєму зображенні точку і / або показник ступеня (символ Е або е), наприклад:
Функції перетворення типів даних
Round (x) - округлення дійсного числа до найближчого цілого. Аргумент функції - величина дійсного типу, а результат - округлена до найближчого цілого числа величина типу Longint. Якщо результат виходить за діапазон значень Longint, то при виконанні програми відбудеться помилка.
Trunc (x) - одержання цілої частини дійсного числа. Тип результату - Longint. Якщо результат виходить за діапазон значень Longint, то при виконанні програми відбудеться помилка.
Над даними типу TDateTime визначені ті ж операції, що і над числами, а в висловах цього типу можуть брати участь константи і змінні цілого і дійсного типів.
Для роботи з датою і часом використовуються підпрограми, перераховані в наступній табл.
Підпрограми для роботи з датою і часом
Function Date: TDateTime;
Function DateToStr (D: TDateTime): String;