Чисельні змінні і типи даних

Чисельні змінні і типи даних

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

Ви вже знаєте, як оголошуються змінні цілого і дійсного типу. Крім цих змінних в системі 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;

Схожі статті