Інтернет Windows Android

Чисельні змінні і типи даних. Типи даних Delphi і робота з ними Тип даних double delphi

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

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

Оголошення типів в Pascal є для компілятора чимось на зразок схем, які він повинен запам'ятати на випадок, якщо раптом зустріне в програмі посилання на той чи інший тип. Само по собі оголошення типу не вносить дане програмне забезпечення.

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

Визначення типів і змінних можуть розміщуватися в декількох місцях компонентів програми. Виглядають вони наступним чином.

type
typel \u003d type definitioni; // Нові типи даних визначаються в розділі "type". кожному новому
// типу присвоюється ім'я, потім він визначається через вже
// існуючі типи.
type2 \u003d type__definition2; // В одному розділі "type" можна оголосити кілька типів.
// Найпростіше визначення типу складається з імені типу,
type3 \u003d typel; // визначеного раніше.
// Нові змінні оголошуються в
var // розділі "var". кожною новою
var1: type definitions; // змінної спочатку присвоюється ім'я, а потім - тип (на основі
// раніше визначених типів).
var2, var3: type definition4; // В одному розділі "var" можна оголосити кілька змінних.
// Кільком змінним можна присвоювати один і той же тип.
var4: typel; // Програму легше читати, якщо змінним присвоєно
// існуючі типи.

Синтаксис Object Pascal дозволяє одночасно конструювати виключно складні типи і визначення змінних. Однак визначення типів в розділах type тих чи інших блоків дає можливість використовувати ці типи в різних частинах програми. Нові типи визначаються з типів наступних категорії.

  • Прості типи для зберігання інформації в формі чисел і інших "упорядкованих" значенні.
  • Строкові типи для зберігання послідовностей символів.
  • Структурні типи для одночасного зберігання інформації різних типів.
  • Вказівні типи для непрямого звернення до змінних заданих типів.
  • Процедурні типи для звернення до процедур і функцій, що розглядаються як змінні.
  • Варіантні типи для зберігання в одній змінної даних різних типів.

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

Функція SizeOf дуже важлива для написання ефективних програм. Багато з визначених у Object Pascal типів мають дуже складну структуру і можуть займати в пам'яті досить багато місця. При цьому елементи таких типів створені скоріше для представлення значень в деякому логічному порядку, а не для того, щоб займати місце в пам'яті. Функція SizeOf позбавляє програміста від необхідності обчислювати обсяг даних в подібних випадках.

Прості типи даних

порядкові типи
Цілі типи
Символьні типи
булеві типи
Рахункова типи
піддіапазонами типи
Дійсні типи

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

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

З простих типів даних порядкові - найпростіші. У цих типах інформація може надаватися у вигляді окремих елементів. Зв'язок між окремими елементами і їх поданням до пам'яті визначає природні відносини порядку між цими елементами. Звідси і назва порядкові.

У Object Pascal визначено три групи порядкових типів і два типи, що визначаються користувачем. Групи - це цілі, символьні і булеві типи. Порядкові типи, що задаються користувачем, - це перерахування і піддіапазони.

Всі значення будь-якого порядкового типу утворюють впорядковану послідовність, і значення змінної порядкового типу визначається його місцем в цій послідовності. За винятком змінних цілих типів, значення яких можуть бути як позитивними, так і негативними, перший елемент будь-якого порядкового типу має номер 0, другий елемент - номер 1 і т.д. Порядковий номер цілого значення дорівнює самому значенню. Ставлення порядку визначає загальні для даних всіх порядкових типів операції. Деякі стандартні функції такого виду вбудовані в Object Pascal. Вони представлені в табл. 1.1.

Для всіх порядкових типів в Object Pascal існує операція завдання типу для перетворення цілих значень в значення відповідних порядкових типів. Якщо Т - ім'я порядкового типу, а Х - ціле вираз, то Т (X) воз-обертає значення Т з порядковим номером X.

Таблиця 1.1. Операції над порядковими типами

операція

опис

Мінімальне значення порядкового типу Т

Максимальне значення порядкового типу Т

Порядковий номер значення виразу порядкового типу. Для цілого виразу - просто його значення. Для інших порядкових типів Ord повертає фізичне уявлення результату виразу, трактуються як ціле число. Значення, що повертається завжди належить одному з цілих типів

Попереднє по порядку значення. Для цілих виразів еквівалентно Х-1

Наступне по порядку значення. Для цілих виразів еквівалентно Х + 1

Зменшує значення змінної на 1. Еквівалентно V: \u003d Pred (V)

Збільшує значення змінної на 1. Еквівалентно V: \u003d Succ (V)

Цілі типи

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

Integer
Shortint
Smallint
Longint
Byte
Word
Cardinal

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

Таблиця 1.2.Фізичні цілі типи

діапазон значенні

фізичний формат

8 біт, зі знаком

16 біт, зі знаком

2 147 483 648-2 147 483 647

32 біт, зі знаком

8 біт, без знака

16 біт, без знака

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

Діапазони значень логічних цілих типів (Integer і Cardinal) визначаються зовсім іншим чином. Як видно з табл. 1.3, вони ніяк не пов'язані з діапазонами відповідних фізичних типів. Зверніть увагу, що в Delphi за замовчуванням задано 32-розрядний уявлення.

Таблиця 1.3.Логічні цілі типи

діапазон значень

фізичний формат

16 біт, зі знаком (SmalIInt)

2 147 483 648-2 147 483 647

32 біт, зі знаком (Longint)

16 біт, без знака (Word)

32 біт, без знака (Longint)

Над цілими даними виконуються всі операції, визначені для порядкових типів, але з ними все ж зручніше працювати як з числами, а не з "необчислювальними порядковими типами". Як і "живі" числа, дані цілих типів можна складати (+), віднімати (-) і множити (*). Однак деякі операції і функції, що застосовуються до даних цілих типів, мають дещо інший сенс.

Символьні типи

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

У реалізаціях мови Pascal для перших мікропроцесорів була застосована 7-бітова схема, названа ASCII (American Standard Code for Information Interchange - Американський стандартний код для обміну інформацією). Ця схема і понині широко поширена, але інформація зберігається, як правило, в 8-бітових ділянках пам'яті. Додатковий біт подвоює число можливих уявлень символів, але реалізації розширеного набору символів ASCII часто бувають далекі від стандарту. У даній версії Delphi визначений набір 8-бітових символів, відомий як розширений (extended) ANSI (American National Standards Institute - Американський національний інститут стандартів). Як би там не було, символьну схему доводиться сприймати так, як її сприймає операційна система. для віконних операційних систем фірми Microsoft це схема ANSI, що включає обмежену кількість призначених для виведення міжнародних знаків. У прагненні ж застосувати більш великий набір міжнародних знаків весь комп'ютерний світ переходить до 16-бітової схемою, іменованої UNICODE, в якій перші 256 знаків збігаються з символами, визначеними в схемі ANSI.

Для сумісності з усіма цими уявленнями в Object Pascal визначені два фізичних символьних типу і один логічний.

Фізичні типи перелічені нижче.

Символьні типи об'ємом в подвійне слово (32 біт) відсутні.

Логічний символьний тип іменується char. У класичному мовою Pascal char- єдиний символьний тип. У Delphi char завжди відповідає фізичним типом даних AnsiChar. У американських програмістів асоціація символу з однобайтового осередком пам'яті вкоренилася за довгі роки настільки, що їм часто просто не приходить в голову, що можна використовувати інші схеми кодування. Однак дискусії з інтернаціоналізації програм в Internet і World Wide Web можуть істотно змінити їхнє ставлення до проблеми обсягу символьних даних. застосовуючи логічний тип char, слід робити реалізації для інших мікропроцесорів і операційних систем, в яких char може визначатися як WideChar. При написанні програм, які можуть обробляти рядки будь-якого розміру, для вказівки цього розміру рекомендується застосовувати функцію SizeOf, не ставлячи її жорстко постійною. Функція Ord (С), де С - будь-яка змінна символьного типу, повертає ціле значення, яким символ С представлений в пам'яті.

булеві типи

На ранній стадії навчання програмісти освоюють поняття біта, два стану якого можна використовувати для запису інформації про що-небудь, що представляє собою одне з двох. Біт може позначати 0 або 1, ТАК чи НІ, ВКЛЮЧЕНО або ВИМКНУТО, ВЕРХ або НИЗ, СТОЯТИ або ЙТИ. У Object Pascal інформація про будь-що, що можна уявити як ІСТИНА (True) або БРЕХНЯ (False), зберігається в змінних булевих типів. Всього таких типів че-тире, і вони представлені в табл. 1.4.

Таблиця 1.4.Розміри змінних булевих типів

2 байт (обсяг Word)

4 байт (обсяг Longint)

За аналогією з цілими і символьними типами, що підрозділяється на фізичні і логічні, природно припустити, що ByteBool, WordBool і LongBool - фізичні типи, Boolean - логічний. Але в даному випадку це не зовсім так. Всі чотири типи різні. Для Object Pascal кращий тип Boolean, інші визначені для сумісності з іншими мовами програмування і операційними системами.

Змінним типу Boolean можна привласнювати тільки значення True (істина) і False (брехня). Змінні ByteBool, WordBool і LongBool можуть приймати і інші порядкові значення, що інтерпретуються зазвичай як False в разі нуля і True - при будь-якому ненульове значення.

Рахункова типи

Type enum type \u003d (first value, value2, value3, last value);

Зазвичай дані перелічуваних типів містять дискретні значення, які представляють не числами, а іменами. Тип Boolean- найпростіший перелічувальний тип в Object Pascal. Булеві змінні можуть приймати два значення, що виражаються іменами True і False, а сам тип визначений в Object Pascal так, як ніби він оголошений наступним чином:

Type Boolean \u003d (False, True);

За допомогою типу Boolean в Object Pascal виконуються порівняння, більшість же перелічуваних типів - це просто списки унікальних імен або ідентифікаторів, зарезервованих з конкретною метою. Наприклад, можна створити тип MyColor (мій колір) зі значеннями myRed, myGreen і myBlue (мій червоний, мій зелений, мій синій). Це робиться зовсім просто:

Type MyColor \u003d (myRed, myGreen, myBlue);

У цьому рядку оголошені чотири нових ідентифікатора: MyColor, myRed, myGreen і myBlue. ідентифікатором MyColor позначений порядковий тип, отже, в синтаксисі Object Pascal можна застосовувати цей ідентифікатор всюди, де дозволені перелічуваних типи. Решта три ідентіфікатора- це значення типу MyColor. Подібно символьним і булевим типам Рахункова не є числами, і використовувати їх на зразок чисел не має сенсу. Однак перелічуваних типи відносяться до порядковим, так що значення будь-якого такого типу впорядковані. Ідентифікаторів в списку присвоюються в якості порядкових номерів послідовні числа. Першому імені присвоюється порядковий номер 0, другого - 1 і т.д.

піддіапазонами типи

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

Type subrange type \u003d low value ... high value;

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

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

Дійсні типи

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

Таблиця 1.5. Дійсні типи.

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

Зауважте, саме майже. Незважаючи на назву дійсні, змінні цих типів відрізняються від математичних дійсних чисел. У Object Pascal дійсний тип - це підмножина математичних дійсних чисел, які можна представити у форматі з плаваючою комою і фіксованим числом цифр. Для неуважних програмістів ситуація ускладнюється тим, що в стандартних форматах IEEE (Institute of Electrical and Electronic Engi-neers - Інститут інженерів електриків та електронників), що застосовуються в програмах Delphi і взагалі в більшості програм для Windows, можливо точне уявлення тільки чисел з фіксованим числом біт в дробової частини. Дивно, але таке просте число, як 0,1, записується в розширеному форматі IEEE з деякою погрішністю, нехай дуже невеликий. Через це уявлення з плаваючою комою виявляється кілька незручним для програм, в яких зберігається і виводиться фіксований число десяткових розрядів чисельних значень. Це відноситься і до програм, які працюють з "" живими "грошима.

Для часткового вирішення цієї проблеми в Object Pascal визначені два формати з фіксованою комою. Тип Comp (computational - обчислювальний) містить тільки цілі числа в діапазоні від -2 63 +1 до 2 63 -1, що приблизно відповідає діапазону від -9,2х10 18 до 9,2х10 18. При програмуванні операцій з американською валютою розробникам зазвичай доводиться шукати природний спосіб записи грошових сум, в якому ціла частина числа визначає кількість доларів, подрібнена - центів. Якщо такі значення записувати в змінні типу Comp, доведеться представляти їх у вигляді цілого числа центів. В цьому випадку слід множити значення на 100 для звернення центів в долари, а потім ділити на 100, щоб знову отримати центи.

Цих турбот можна уникнути, якщо скористатися типом Currency. У цьому випадку завдання вибору масштабу візьме на себе компілятор. Фізично значення Currency записуються в пам'ять того ж обсягу, що і Comp, як цілі числа, проте компілятор не забуває вчасно розділити значення на 10 000 (не на 100!) Для його приведення у відповідність з грошовим знаком і помножити на 10 000 перед записом в пам'ять. Це забезпечує абсолютну точність в чотири десяткових знака після коми.

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

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

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

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

типи даних

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

Delphi характеризується розгалуженою структурою типів даних:

Ми розглянемо з вами поки тільки прості типи.

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

Порядкові типи відрізняються тим, що кожен з них має кінцеве кількість можливих значень. Ці значення можна певним чином упорядкувати (звідси і назва типів) і, отже, з кожним з них можна зіставити деяке ціле число - порядковий номер значення.

До порядковим типам ставляться цілі, логічні, символьний, що перераховується і тип-діапазон. До будь-якого з них може бути застосована функція Ord (х), яка повертає порядковий номер значення виразу Х.

Цілі типи

Назва

Довжина, байт

діапазон значень

Cardinal

0. .. 2 147 483 647

Byte

0...255

Shortint

128...+127

Smallint

32 768...+32 767

Word

0...65 535

Integer

Longint

2 147 483 648...+2 147 483 647

Int64

9*10 18 . ..+9*10 18

LongWord

0. . .4 294 967 295

Типи LongWord і Int64 вперше введені у версії 4, а типи Smallint і Cardinal відсутні в Delphi 1. Тип integer для цієї версії займає 2 байта і має діапазон значень від -32768 до +32767, т. Е. Збігається з Smallint.

Стандартні процедури та функції, застосовні до цілим типам

звернення

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

Дія

abs (x)

Повертає модуль x

chr (b)

Char

Повертає символ з його коду

dec (vx [, i])

Зменшує значення vx на i, а при відсутності i - на 1

inc (vx [, i])

Збільшує значення vx на i, а при відсутності i -на 1

Hi (w)

Byte

Повертає старший бант аргументи

Hi (I)

те ж

Повертає третій за рахунком байт

Lo (i)

Повертає молодший байт аргументу

Lo (w)

те ж

odd (l)

Boolean

Повертає True, якщо аргумент-непарне число

Random (w)

Як у параметра

Повертає псевдовипадкове число, рівномірно розподілене в діапазоні 0 ... (w-l)

sqr (x)

Повертає квадрат аргументу

swap (i)

Integer

Міняє місцями байти в слові

swap (w)

Word

теж

Також крім відомих вам арифметичних операцій для цілих чисел існують ще дві: div і mod.

d iv - розподіл цілих чисел з покидьком дробової частини. наприклад:

a div b якщо а \u003d 10 і b \u003d 3, то результат дорівнює 3.

mod - залишок від ділення цілих чисел. наприклад:

a mod b якщо а \u003d 10 і b \u003d 3, то результат дорівнює 1

Подання цілих чисел

У зображенні цілих чисел присутні лише знак і цифри (знак + можна не вказувати). Передбачається десяткова система числення, однак можна використовувати і шістнадцяткову. У цьому випадку перед числом слід поставити знак $.

Тип діапазон

Всі цілі типи відносяться до так званим перераховуються або порядковим типам. У будь-якому порядковому типі можна виділити підмножина значень, в яке входять всі значення вихідного типу. Тип-діапазон задається в розділі оголошення типів зазначенням мінімального і максимального значень, розділений двома точками. Розділ оголошення типів завжди починається службовим словом Type. наприклад:

Type pir \u003d [1..2006];

Перераховуються тип

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

Typecolors \u003d (red, white, blue);

символьний тип

Значеннями символьного типу є безліч всіх символів ПК. Кожному символу приписується ціле число в діапазоні О ... 255. Це число служить кодом внутрішнього уявлення символу, його повертає функція ord.

Для кодування в Windows використовується код ANSI (названий по імені American National Standard Institute - американського інституту стандартизації, який запропонував цей код). Перша половина символів ПК з кодами 0 ... 127 відповідає таблиці 7.3. Друга половина символів з кодами 128 ... 255 змінюється для різних шрифтів. Стандартні Windows-шрифти Arial Cyr, Courier New Cyr і Times New Roman для представлення символів кирилиці (без букв "е" і "Е") використовують останні 64 коду (від 192 до 256): "А" ... "Я" кодуються значеннями 192..223, "а" ... "я "- 224 ... 255. Символи "Е" і "е" мають відповідно коди 168 і 184.

Кодування символів відповідно до стандарту ANSI

код

символ

Код.

символ

Код.

символ

код

символ

ЗОН

ЕТХ

f

-

/

DC 4

f

Символи з кодами 0 ... 31 відносяться до службових кодами. Якщо ці коди використовуються в символьному тексті програми, вони вважаються пробілами.

До типу char застосовні операції відносини, а також вбудовані функції:

СHR (в) - функція типу char; перетворює вираз в типу Byte в символ і повертає його своїм значенням;

UpCase (CH) - функція типу char; повертає прописну букву, якщо сн - рядкова латинська буква, в іншому випадку повертає сам символ сн (для кирилиці повертає вихідний символ).

речові типи

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

речові типи

Довжина, байт

Назва

Кількість значущих цифр

діапазон значень

8

4

8

10

8

8

Real

Single

Double

Extended

Comp

Currency

15…16

7…8

15…16

19…20

19…20

19…20

5.0 * 10e-324 ... 1.7 * 10e308

1.5 * 10e-45 ... 3.4 * 10e38

5.0 * 10e324 ... 1.7 * 10e308

3.4 * 10-4951 ... 1.1 * 10e4932

2e63 ... + 2e63-1

+/-922 337 203 685477,5807

У попередніх версіях Delphi 1 ... 3 тип Real займав 6 байт і мав діапазон значень від 2, 9 * 10 -39 до 1,7 * 10 38. У версіях 4 і 5 цей тип еквівалентний типу Double. Якщо потрібно (в цілях сумісності) використовувати 6-байтньш Real, потрібно вказати директиву компілятора (SREALCOMPATIBILITY ON).

Як видно з попередньої табл. дійсне число Delphi займає від 4 до 10 суміжних байт і має наступну структуру в пам'яті ПК:

S

е

M

Тут s - знаковий розряд числа; е - експоненціальна частина; містить двійковий порядок; m - мантиса числа.

Мантиса m має довжину від 23 (для single) до 63 (для Extended) двійкових розрядів, що і забезпечує точність 7 ... 8 для single і 19 ... 20 для Extended десяткових цифр. Десяткова точка (кома) мається на увазі перед лівим (старшим) розрядом мантиси, але при діях з числом її положення зсувається вліво або вправо відповідно до двійковим порядком числа, що зберігається в експоненційної частини, тому дії над числами називають арифметикою з плаваючою точкою (коми) .

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

Для роботи з речовими даними можуть використовуватися вбудовані математичні функції, представлені в наступній табл. в цій таблиці Real означає будь-який дійсний тип, integer - будь-який цілий тип.

Стандартні математичні функції Delphi

звернення

Тип параметра

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

Примітка

abs (x)

Real, Integer

Тип аргументу Real

модуль аргументу

П \u003d 3.141592653 ...

ArcTan (x)

Арктангенс (значення в радіанах)

cos (x)

To ж<<

To ж<<

Косинус, кут в радіанах

exp (x)

експонента

frac (x)

Дробова частина числа

int (x)

Ціла частина числа

ln (x)

логарифм натуральний

Random

Псевдовипадкове число, рівномірно розподілене в діапазоні 0 ...

Random.fx)

Integer

Integer

Псевдовипадкове ціле число, рівномірно розподілене в діапазоні 0 ... (х-1)

Randomize

Ініціація генератора псевдовипадкових чисел

sin (x)

Real

Real

Синус, кут в радіанах

sqr (x)

To ж

To ж

квадрат аргументу

sqrt (x)

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

На замітку Генератор псевдо випадкових чисел являє собою функцію яка бере деяке ціле число, зване базовим, змінює, його розряди За певним алгоритмом і видає нове число результат. Одночасно з цим нове число стає базовим при наступному зверненні до функцій; і т. д. (Так як алгоритм процедури не змінюється: в ході її роботи, числа називаються псевдовипадковими.) У системному модулі System, який автоматично доступний будь-якій програмі, базове число зберігається в змінної з ім'ям RandSeek і завжди має початкове значення 0. Це означає, при послідовному зверненні до Random в різних, програмах (або при декількох прогонах однієї програми) буде завжди випадати одна і та ж послідовність псевдовипадкових чисел.

Подання дійсних чисел

Речові числа містять в своєму зображенні точку і / або показник ступеня (символ Е або е), наприклад:

X \u003d -0.5;

Y \u003d 1.34;

Z \u003d -1 E -5;

W \u003d 7.5 e +15;

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

Round (x ) - округлення дійсного числа до найближчого цілого. Аргумент функції - величина дійсного типу, а результат - округлена до найближчого цілого числа величина типу Longint. Якщо результат виходить за діапазон значень Longint, то при виконанні програми відбудеться помилка.

Trunc (x ) - отримання цілої частини дійсного числа. Тип результату - Longint. Якщо результат виходить за діапазон значень Longint, то при виконанні програми відбудеться помилка.

Тип дата-час

Тип дата-час визначається стандартним ідентифікатором TDateTime і призначений для одночасного зберігання і дати, і часу. У внутрішньому представленні він займає 8 байт і подібно currency є дійсне число з фіксованою дробової частиною: в цілій частині числа зберігається дата, в дробової - час. Дата визначається як кількість діб, що пройшли з 30 грудня 1899 року, а час - як частину доби, що минули з 0 годин, так що значення 36444,837 відповідає даті 11.10.1999 і часу 20:05. Кількість діб може бути і негативним, проте значення менші -693594 (відповідає даті 00.00.0000 від Різдва Христового) ігноруються функціями перетворення дати до строковому типу.

Над даними типу TDateTime визначені ті ж операції, що і над числами, а в висловах цього типу можуть брати участь константи і змінні цілого і дійсного типів.

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

Підпрограми для роботи з датою і часом

Function Date: TDateTime;

Function DateToStr (D: TDateTime): String;

Function DateTimeToStr (D: TDateTime): String;

Function FormatDateTime (Format: String;

Value (TDateTime): String;

Function Now: TDateTime;

Function Time: TDateTime;

Function TimeToStrfT (TDateTime): String;

Повертає поточну дату

Перетворює дату в рядок символів

Перетворює дату і час в рядок символів

Перетворює дату і час з параметра value в рядок символів відповідно до специфікаторами параметра Format (див. Пояснення в п. 7.3.)

Повертає поточну дату і час

Повертає поточний час

Перетворює час в рядок

До вбудованих типів даних в мові Delphi відносяться типи цілі, дійсні, символи, рядки, покажчики, булеві.

Порядкові типи. Порядковими (ordinal) типами називаються ті, в яких значення впорядковані, і для кожного з них можна вказати попереднє і наступне значення.

Структурні типи. До структурних типів належать безлічі, масиви, записи, файли, класи, інтерфейси.

Цілі типи даних. У змінних цілих типів інформація може надаватися у вигляді цілих чисел, тобто чисел не мають дробової частини.

Таблиця 1 Операції над порядковими типами

операція

опис

Мінімальне значення порядкового типу Т

Максимальне значення порядкового типу Т

Порядковий номер значення виразу порядкового типу. Для цілого виразу - просто його значення. Для інших порядкових типів Ord повертає фізичне уявлення результату виразу, трактуються як ціле число. Значення, що повертається завжди належить одному з цілих типів

Попереднє по порядку значення. Для цілих виразів еквівалентно Х-1

Наступне по порядку значення. Для цілих виразів еквівалентно Х + 1

Зменшує значення змінної на 1. Еквівалентно V: \u003d Pred (V)

Збільшує значення змінної на 1. Еквівалентно V: \u003d Succ (V)

Таблиця 2

діапазон значень

2147483648 -- 2147483647

8 бітів, беззнаковий

16 бітів, беззнаковий

32 біта, беззнаковий

Також існує такий тип, як Integer, який еквівалентний типу LongInt. Його діапазон від -2147483648 до 21474836478. Займає 4 байта в пямяти. Основними є Integer і Cardinal, так що в більшості випадків бажано використовувати ці типи.

Над цілими даними виконуються всі операції, визначені для порядкових типів. Операції над цілими типами:

Таблиця 3

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

Таблиця 4

Основним, що забезпечує максимальну продуктивність, є тип Real, який в даний момент еквівалентний типу Double.

Таблиця 5 Функції дійсних типів

значення, що повертається

Абсолютна величина х

арктангенс х

Косинус х (х виражається в радіанах, а не в градусах)

Експоненціальна функція від х

Дрібна частина х

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

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

Число Пі (3.1416 ...)

Найближче до х ціле значення. Повертає значення цілого типу. Умова "найближчим до х" не працює, якщо верхнє і нижнє значення виявляються рівновіддаленими (наприклад, якщо дрібна частина точно дорівнює 0,5). У цих випадках Delphi перекладає вирішення на операційну систему. Зазвичай процесори Intel вирішують цю задачу відповідно до рекомендації IEEE округляти в бік найближчого парного цілого числа. Іноді такий підхід називають "банкірським округленням"

Квадрат х, тобто X * X

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

Ціла частина х. На відміну від Int, що повертає

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

Таблиця 6

Булеві типи даних. Змінні булевих типів даних представляють логічні значення, наприклад, true (істина) і false (брехня).

Таблиця 7 змінних булевих типів

2 байт (обсяг Word)

4 байт (обсяг Longint)

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

оголошення масиву

Масив, як і будь-яка змінна програми, перед використанням повинен бути оголошений в розділі оголошення змінних. У загальному вигляді інструкція оголошення масиву вигладить наступним чином:

Ім'я: [ніжній_індекс..верхній_індекс] of тип

де: ім'я - ім'я масиву;

array - зарезервоване слово мови Delphi, що означає, що оголошується ім'я є ім'ям масиву;

ніжній_індекс і верхній_індекс - цілі константи, що визначають діапазон зміни індексу елементів масиву і, неявно, кількість елементів (розмір) масиву;

тип - тип елементів масиву.

Про що не пишуть в книгах по Delphi Григор'єв А. Б.

3.2.2. Речові типи Delphi

У Delphi існує чотири речових типу: Single, Double, Extended і Real. Їх загальний формат однаковий (рис. 3.1, а).

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

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

а) загальний вид речового числа

б) Двійкове подання числа типу Single

Мал. 3.1. Зберігання дійсного числа в пам'яті

Мікропроцесор Intel 8086/88 і його поліпшені варіанти - 80286 і 80386 - також не мали апаратної підтримки дійсних чисел. Але у систем на базі цих процесорів була можливість підключення так званого співпроцесора. Ця мікросхема працювала з пам'яттю через шини центрального процесора і забезпечувала апаратну підтримку дійсних чисел. У системах середньої руки гніздо співпроцесора зазвичай було порожнім, т. К. Це зменшувало ціну (зрозуміло, вставити туди співпроцесор не було проблемою). Для кожного центрального процесора випускалися свої співпроцесори, маркованих Intel 8087, 80287 і 80387 відповідно. Були навіть співпроцесори, що випускаються іншими фірмами. Вони працювали швидше, ніж співпроцесори Intel, але з'являлися на ринку пізніше. Тип дійсних чисел, підтримуваний сопроцессорами, не збігається з Real. Він визначається стандартом IEEE (Institute of Electrical and Electronics Engineers).

Щоб забезпечити в своїх системах підтримку типів IEEE, Borland вводить в Turbo Pascal типи Single, Double і Extended. Extended - це основний для співпроцесора тип, a Single і Double виходять з нього дуже простим урізанням. Система команд співпроцесора допускає роботу з цими типами: при завантаженні числа типу Single або Double у внутрішній регістр співпроцесора останній конвертує їх в Extended. Навпаки, під час вивантаження чисел цих типів з регістра в пам'ять співпроцесор усікає їх до потрібного розміру. Внутрішні ж операції завжди виконуються з даними типу Extended (втім, з цього правила є виняток, на якому ми зупинимося пізніше, після детального розгляду формату різних типів). Single і Double дозволяють економити пам'ять. Жоден з них також не збігається з типом Real. У системах з сопроцессорами нові типи обробляються помітно (в 2-3 рази) швидше, ніж Real (це з урахуванням того, що тип Real після відповідного перетворення також оброблявся співпроцесором; якщо ж порівнювати обробку типу Extended на машині з співпроцесором і Real на машині без співпроцесора, то там на окремих операціях досягалася різниця в швидкості приблизно в 100 разів). Щоб програми з цими типами можна було виконувати і в системах без співпроцесора, була передбачена можливість підключати до них програмний емулятор співпроцесора. Обробка цих типів емулятором була повільніше, ніж обробка Real.

Починаючи з 486-ї серії Intel бере курс на інтеграцію процесора і співпроцесора в одній мікросхемі. Відсоток браку в мікросхемах занадто великий, тому Intel йде на хитрість: якщо у мікросхеми шлюб тільки в сопроцессорной частини, то на цьому кристалі пропалює перемички, що блокують співпроцесор, і мікросхема продається як процесор 80486SX, що не має вбудованого співпроцесора (на відміну від повноцінної версії, яку назвали 80486DX). Бували й зворотні ситуації, коли співпроцесор пошкоджень не мав, зате процесор був непрацездатний. Такі мікросхеми перетворювали в "співпроцесор 80487". Але це вже з області екзотики, і, за наявною у нас інформацією, до Росії такий співпроцесор не дійшов.

Процесор Pentium у всіх своїх варіантах мав вбудований блок обчислень з плаваючою точкою (FPU - Floating Point Unit), і окремий співпроцесор йому не був потрібен. Таким чином, з приходом цього процесора тип Real залишився тільки для зворотної сумісності, а на передній план вийшли типи Single, Double і Extended. Починаючи з Delphi 4, тип Real стає синонімом типу Double, а старий 6-байтний тип отримує назву Real48.

Примітка

Існує директива компілятора ($ REALCOMPATIBILITY ON / OFF), при включенні якої (за замовчуванням вона відключена) Real стає синонімом Real48, а не Double.

Розміри полів для різних речових типів вказані в табл. 3.1.

Таблиця 3.1. Розміри полів в речових типах

Тип Розмір типу, байти Розмір мантиси, біти Розмір експоненти, біти
Single 4 23 8
Double 8 52 11
Extended 10 64 15
Real 6 40 7

Інші параметри речових типів, такі як діапазон і точність, можна знайти в довідці Delphi.

З книги Мова програмування С # 2005 і платформа.NET 2.0. автора Троелсен Ендрю

Типи, що характеризуються значеннями, посилальні типи і оператор присвоювання Тепер вивчіть наступний метод Main () і розгляньте його висновок, показаний на рис. 3.12.static void Main (string args) (Console.WriteLine ( "*** Типи, що характеризуються значенням / Довідкові типи ***"); Console.WriteLine (-\u003e Створення p1 "); MyPoint

З книги Поради по Delphi. версія 1.0.6 автора Озеров Валентин

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

З книги Інтернет рішення від доктора Боба автора Сворт Боб

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

З книги Delphi. Трюки і ефекти автора Чіртік Олександр Анатолійович

З книги Фундаментальні алгоритми та структури даних в Delphi автора Бакнелл Джуліан М.

1.3.3. Delphi і CGI У цьому розділі я розповім, як написати просте Дельфі CGI додаток, без використання Web Modules або інших Client / Server модулей.Во перших абревіатура CGI означає Common Gateway Interface, і це тільки ім'я для передачі інформації від клієнта серверу. На стороні клієнта це

З книги Світ InterBase. Архітектура, адміністрування та розробка додатків баз даних в InterBase / FireBird / Yaffil автора Ковязин Олексій Миколайович

2.1.1. Delphi і HTML Мій головний інструмент розробники це Дельфі, і ми напишемо Delphi Database HTML Expert в цьому розділі. Дельфі дозволяє під'єднуватися практично до бази даних будь-якого формату. За допомогою BDE до Парадоксу і dBASE, з допомогою ODBC наприклад до Access, і за допомогою SQL Links до великих DBMS типу

З книги Віртуальна бібліотека Delphi автора

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

З книги Опис мови PascalABC.NET автора колектив РуБоард

Типи масивів в Delphi У Delphi є три типи підтримуваних мовою масивів. Перший - стандартний масив, який оголошується за допомогою ключового слова array. Другий тип був вперше введений в Delphi 4 в якості імітації того, що було давним-давно є в Visual Basic, - динамічний

З книги Мова програмування ABC PASCAL автора Цвєтков Олександр Станіславович

Речові типи даних До речовим типам (їх ще називають типами чисел з плаваючою точкою) відносяться FLOAT і DOUBLE PRECISION. Відразу слід застерегти читача від використання типу FLOAT - його точність недостатня для зберігання більшості дрібних значень. особливим не

З книги автора

Питання по Delphi 2.0 Що нового в Delphi 2.0 за порівняння з Delphi 1.0? Випущена в лютому 1995 року версія Delphi 1.0 стала першим інструментом для Windows, комбінує оптимізуючий компілятор, механізми візуальної розробки Two-Way-Tools і масштабовану архітектуру обробки баз даних.

З книги автора

Що нового в Delphi 2.0 за порівняння з Delphi 1.0? Випущена в лютому 1995 року версія Delphi 1.0 стала першим інструментом для Windows, комбінує оптимізуючий компілятор, механізми візуальної розробки Two-Way-Tools і масштабовану архітектуру обробки баз даних. сьогодні сотні

З книги автора

З книги автора

З книги автора

Речові типи Нижче наводиться таблиця речових типів, що містить їх розмір, кількість значущих цифр і діапазон допустимих значень: Тип Розмір, байт Кількість значущих цифр Діапазон значень real 8 15-16 -1.8? 10308 .. 1.8? 10308 double 8 15-16 -1.8 ? 10308 ..

Текст програми на мові Delphi формується за допомогою букв, цифр і спеціальних символів. Букви - це великі та малі символи латинського алфавіту і символ підкреслення: a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ Цифри представлені стандартної арабської формою записи: 0 1 2 3 4 5 6 7 8 9 Спеціальні символи + - * / \u003d,. :; "() () @ # $ & ^ Застосовуються в основному в якості знаків арифметичних операцій, роздільників, обмежувачів і т. Д. З спеціальних символів формуються складові символи: \u003d.. (..) (* *) //: \u003d Вони служать, зокрема, для позначення операцій типу "не дорівнює", "більше або дорівнює", вказівки діапазонів значень, коментування програми, т. д. Алфавіт

Одне і те ж число можна записати різними способами, наприклад: 15 (ціле) 15. 0 (речовий з фіксованою точкою) 1. 5 E 01 (речовий з плаваючою точкою) $ F (шестнадцатиричное) У мові Delphi є можливість застосовувати всі способи записи, але частіше за все використовують цілі і речові числа. Цілі числа складаються тільки з цифр і знака + або -. Якщо знак опущений і число не дорівнює 0, то воно розглядається як позитивне, наприклад: 0 (0 інтерпретується як ціле число) 17 (позитивне ціле число) -39 (негативне ціле число) Числові типи даних

Речові числа містять цілу і дробову частини, розділені крапкою: 0. 0 (0 інтерпретується як дійсне число) 133. 5 (позитивне дійсне число) -0. 7 (негативне дійсне число) Речові числа можуть бути представлені в двох формах: з фіксованою і плаваючою крапкою. Форма з фіксованою точкою збігається зі звичайною записом чисел: 27800 (точка в кінці числа опущена) 3. 14 Форма з плаваючою крапкою (експонентний вигляд) використовується при роботі з дуже великими або дуже малими числами. У цій формі число, що стоїть перед E, множиться на 10 у степені, зазначеної після E: 7. 13 E + 14 (7. 13 x 1014) 1. 7 E-5 (1. 7 x 10 -5) 3. 14 E 00 (3. 14 x 100 \u003d 3. 14) число, що стоїть перед буквою E, називається мантиссой, а число після букви E - порядком. Числові типи даних

За допомогою коментарів ви можете пояснити логіку роботи своєї програми. Коментар пропускається компілятором і може перебувати в будь-якому місці програми. Коментарем є: (Будь-який текст в фігурних дужках) (* Будь-який текст в дужках із зірочками *) // Будь-який текст від подвійної похилої риси до кінця рядка Якщо за символами (або (* відразу йде знак долара $, то текст в дужках вважається не коментарем, а директивою компілятора. Приклади таких директив: ($ OPTIMIZATION ON) ($ WARNINGS ON) ($ RANGECHECKS OFF) Коментарі

Програма в процесі виконання завжди обробляє какиелибо дані. Дані можуть являти собою цілі і дробові числа, символи, рядки, масиви, множини і ін. Так комп'ютер всього лише машина, для якої дані - це послідовність нулів і одиниць, він повинен абсолютно точно "знати", як їх інтерпретувати. З цієї причини всі дані в мові Delphi поділені на типи. Тип даних показує, які значення приймають дані і які операції можна з ними виконувати. Кожному типу даних відповідає певний обсяг пам'яті, який потрібно для розміщення даних. Наприклад, в мові Delphi існує тип даних Byte. Дані цього типу приймають значення в целочисленном діапазоні від 0 до 255, можуть брати участь в операціях додавання, віднімання, множення, ділення, і займають 1 байт пам'яті. типи даних

Всі типи даних в мові Delphi можна класифікувати наступним чином: прості типи даних. Вони в свою чергу поділяються на порядкові і речові типи даних. До порядковим типам ставляться цілочисельні, символьні, булевские, що перераховуються і ін. Типи; тимчасової тип даних. Служить для представлення значень дати і часу; рядкові типи даних. Служать для представлення послідовностей із символів, наприклад тексту; складові типи даних. Формуються на основі всіх інших типів. До них відносяться масиви, множини, записи, файли, класи і посилання на класи; процедурні типи даних. Дозволяють маніпулювати процедурами і функціями як даними програми; вказівні типи даних. Дані цих типів зберігають адреси інших даних (списки, дерева і т. Д.); тип даних з непостійним типом значень. Служить для представлення значень, тип яких заздалегідь невідомий; з його допомогою легко організовується робота зі списком різнотипних значень; Класифікація типів даних

Розглянемо форму опису змінних, констант і типів. Опис типів: type \u003d; Опис констант: Const: \u003d; Опис змінних: Var:; Форма опису даних

Приклад запису констант: const Delphi. Language \u003d "Object Pascal"; Kylix. Language \u003d Delphi. Language; Yard \u003d 914. 4; Foot \u003d 304. 8; Seconds. In. Minute \u003d 60; Seconds. In. Hour \u003d Seconds. In. Minute * 60; // Задаємо константу Seconds. In. Day \u003d Seconds. In. Hour * 24; // як вираз При оголошенні константи можна вказати її тип: Const Percent: Double \u003d 0. 15; File. Name: string \u003d "HELP. TXT"; Такі константи називаються типізований; їх основне призначення - оголошення константних значень складових типів даних. опис констант

Крім стандартних типів даних мова Delphi підтримує типи, певні програмістом. Новий тип даних визначається за допомогою зарезервованого слова type, за яким йде ідентифікатор типу, знак рівності та опис. Наприклад, можна визначити новий тип: type TUnicode \u003d Wide. Char; TFloat \u003d Double; TDirection \u003d (North, South, East, West); Неважко помітити, що ідентифікатори нових типів в прикладі починаються з великої літери T (перша буква слова type). Така угода про типах програміста прийнято розробниками середовища Delphi, але воно не є строгим. Тим не менш, ми рекомендуємо його дотримуватися, так як воно сприяє більш легкому сприйняттю вихідного тексту програми. опис типів

Цілі тип діапазон Shortint Smallint Integer Longint Cardinal Int 64 Byte Word Longword -128. . 127 знаковий 8 -bit -32768. . 32767 знаковий 16 -bit -2147483648. . 2147483647 знак. 32 -bit 0.. 4294967295 без знака 64 -bit -263. . 263 -1 знаковий 64 -bit 0.. 255 без знака 8 -bit 0.. 65535 без знака 16 -bit 0.. 4294967295 без знака 32 -bit формат Прості типи даних

тип діапазон знач. Real 48 Single Double Extended 5. 0 x 10 -324. . 1. 7 x 10308 15 -16 2. 9 x 10 -39. . 1. 7 x 1038 11 -12 1. 5 x 10 -45. . 3. 4 x 1038 7 -8 5. 0 x 10 -324. . 1. 7 x 10308 15 -16 3. 6 x 10 -4951. . 1. 1 x 104932 19 -20 цифр Comp - 9223372036854775808.. 9223372036854775807 19- 20 Currency - 922337203685477. 5808.. 922337203685477. 5807 19- 20 Речові типи байт 8 6 4 8 10 8 8

Символьні типи застосовуються для опису даних, значенням яких є буква, цифра, розділовий знак та інші символи. Існують два фундаментальних символьних типу даних: Ansi. Char і Wide. Char. Вони відповідають двом різним системам кодування символів. Дані типу Ansi. Char займають один байт пам'яті і кодують один з 256 можливих символів розширеної кодової таблиці ANSI, в той час як дані типу Wide. Char займають два байта пам'яті і кодують один з 65536 символів кодової таблиці Unicode. Кодова таблиця Unicode - це стандарт двобайтового кодування символів. Перші 256 символів таблиці Unicode відповідають таблиці ANSI, тому тип даних Ansi. Char можна розглядати як підмножину Wide. Char Символьний тип

Фундаментальні типи даних: Тип даних Обсяг пам'яті (байт) Ansi. Char 1 Wide. Char 2 Узагальнений тип даних: Тип даних Обсяг пам'яті (байт) Char 1 (але може стати еквівалентом wide) Логічний тип даних Var good_file: boolean; Булевские типи даних Byte. Bool, Word. Bool і Long. Bool введені в мову Delphi спеціально для сумісності з іншими мовами, зокрема з мовами C і C ++. Все булевские типи даних сумісні один з одним. Символьний і логічний тип даних

Приклад. Опис константи і змінної символьного типу. const ch_p \u003d 'a'; // символьні константи ch_l: char \u003d 'f'; ch_k: wide. Char \u003d '5'; var ch_l: char; // символьна змінна У програмі значення змінних і констант символьних типів полягають в апострофи (не плутати з лапками!), Наприклад: Symbol: \u003d "A"; // Symbol присвоюється літера A Приклад символьних типів даних

Рядки - динамічний масив символів. String - довжина не більше 256 символів. Wide. String - довжина понад 256 символів. Інформація вважається рядком, якщо вона закрита в одинарні лапки: 'Mary It Bread' - рядок «Mary It Bread '- не рядки Приклад. Визначити константу і змінну строкового типу. Const С_wether \u003d 'Холодно ...'; Var s 1: C_wether; s 2: string; Строковий тип даних

Перераховуються тип. Перераховуються тип даних являє собою список значень, які може приймати змінна цього типу. Кожному значенню поставлений у відповідність ідентифікатор, який використовується в програмі для вказівки цього значення. Приклад. type TColors \u003d (red, white, blue); TMonth \u003d (jnu, feb, mar, april, may, jun, jul, Agu, sep, oct, nov, dec); TDirection \u003d (North, South, East, West); var Month: TMonth; Direction: TDirection; begin Direction: \u003d North; end. Перечіслімий тип даних

Насправді за ідентифікаторами значень перераховується типу стоять цілочисельні константи. За замовчуванням, перша константа дорівнює 0, друга - 1 і т. Д. Існує можливість явно призначити значення ідентифікатор type TSize. Unit \u003d (Byte \u003d 1, Kilobyte \u003d 1024 * Byte, Megabyte \u003d Kilobyte * 1024, Gigabyte \u003d Megabyte * 1024); Максимальна потужність перераховується типу складає 65536 значень, тому фактично перераховується тип задає деякий підмножина цілого типу word і може розглядатися як компактне оголошення відразу групи цілочисельних констант зі значеннями 0, 1 і т. Д.

Інтервальні типи даних Інтервальний тип даних задається двома константами, що обмежують діапазон значень для змінних даного типу. Обидві константи повинні належати одному зі стандартних порядкових типів (але не вещественному і не строковому). Приклад: type TDigit \u003d 0.. 9; digit \u003d "0". . "9"; dig 2 \u003d 48.. 57; var Digit: TDigit; month: 1.. 12; begin Digit: \u003d 5; Digit: \u003d 10; // Помилка! Вихід за межі діапазону End; Інтервальний або тип-діапазон.

Різниця між таким способом створення типу і звичайним (без слова type) проявиться при вивченні масивів, записів та класів. Забіжимо вперед і наведемо приклад: type TType 1 \u003d array of Integer; TType 2 \u003d type TType 1; var A: TType 1; B: TType 2; begin B: \u003d A; // Помилка! end. У прикладі змінні A і B виявляються несумісні один з одним через слова type в описі типу TType 2. Якщо ж змінні A і B належать простим типам даних, то оператор присвоювання буде працювати. Спеціальні типи даних

Масив - це складовою тип даних, що складається з фіксованого числа елементів одного і того ж типу. Для опису масиву призначене словосполучення array of. Після слова array в квадратних дужках записуються межі масиву, а після слова of - тип елементів масиву: Type TStates \u003d array of string; TCoordinates \u003d array of Integer; const Coordinates: TCoordinates \u003d (10, 20, 5); (3 integers) var States: TStates; (50 strings) Symbols: array of Char; (81 characters - без визначення типу) Щоб отримати доступ до окремого елементу масиву, потрібно в квадратних дужках вказати його індекс, наприклад Symbols: \u003d 'е'; Зверніть увагу, що ініціалізація елементів масиву відбувається в круглих дужках через кому. масиви

Оголошені вище масиви є одновимірними, так як мають тільки один індекс. Одномірні масиви зазвичай використовуються для подання лінійної послідовності елементів. Якщо при описі масиву задано два індексу, масив називається двовимірним, якщо n індексів - n-мірним. Двовимірні масиви використовуються для подання таблиці, а n-мірні - для подання просторів. Ось приклад оголошення таблиці, що складається з 5 колонок і 20 рядків: var Table: array of array of Double; Те ж саме можна записати в більш компактному вигляді: var Table: array of Double; Щоб отримати доступ до окремого елементу багатовимірного масиву, потрібно вказати значення кожного індексу, наприклад Table або в більш компактній записи Багатовимірні масиви Table

Приклад. Опис двовимірного динамічного масиву елементів типу byte в змінної СON. var СON: array of byte; Приклад. Багатовимірні масиви. var Mbon: array of byte; // чотиривимірний Type Tmy_mas \u003d array of byte; // тип - двомірний масив var Mbon 1: array of Tmy_mas; // чотиривимірний (двомірний масив двомірних масивів) C: array of Real; // тривимірний динамічний масив Mbon - елемент масиву Мbon Mbon 1 - елемент масиву Мbon 1 С - // перший елемент динамічного масиву Приклади динамічних масивів

Безліч - це складовою тип даних для подання набору деяких елементів як єдиного цілого. Область значень безлічі - набір всіляких підмножин, складених з його елементів. Всі елементи множини повинні належати однобайтового порядковому типу - базового типу. Для опису множинного типу використовується словосполучення set of, після якого записується базовий тип безлічі: type TLetters \u003d set of "A". . "Z"; var Letters: TLetters; Symbols: set of Char; У виразах значення елементів множини вказуються в квадратних дужках:,, [ "A", "B", "C"]. Якщо безліч не має елементів, воно називається порожнім:. Приклад: const Vowels: TLetters \u003d [ "A", "E", "I", "O", "U"]; Begin Letters: \u003d [ "A", "B", "C"]; Symbols: \u003d; (Порожня множина) End. Кількість елементів множини називається потужністю. Потужність безлічі в мові Delphi не може перевищувати 256. Множини

Src \u003d "https: //сайт/presentation/20070619_133096976/image-25.jpg" alt \u003d "(! LANG: При роботі з множинами допускається використання операцій відносини (\u003d,,\u003e \u003d, При роботі з множинами допускається використання операцій відносини ( \u003d,\u003e \u003d,). Два безлічі вважаються рівними, якщо вони складаються з одних і тих же елементів. Порядок проходження елементів в порівнюваних множинах значення не має. Два безлічі A і B вважаються рівними, якщо вони відрізняються по потужності або за значенням хоча б одного елемента. Вираз Результат True \u003d True \u003d True \u003d True Операції приналежності (\u003e \u003d, \u003d B одно True, якщо всі елементи множини B містяться в безлічі A. Вираз A

Операція in. Використовується для перевірки належності елемента вказаною безлічі. Зазвичай застосовується в умовних операторах. 5 in \u003d True 5 in \u003d False Операція in дозволяє ефективно і наочно виконувати складні перевірки умов, замінюючи іноді десятки інших операцій. Наприклад, оператор if (X \u003d 1) or (X \u003d 2) or (X \u003d 3) or (X \u003d 5) or (X \u003d 7) then можна замінити більш коротким: if X in then Операцію in іноді намагаються записати з запереченням : X not in S. Такий запис є помилковою, так як дві операції слідують підряд. Правильний запис має вигляд: not (X in S). Операція входження in

Об'єднання множин (+). Об'єднанням двох множин є третя безліч, що містить елементи обох множин. + \u003d + \u003d Перетин множин (*). Перетин двох множин - це третє безліч, яке містить елементи, які входять одночасно в обидва безлічі. * \u003d * \u003d Різниця множин (-). Різницею двох множин є третя безліч, яке містить елементи першого безлічі, що не входять в другу безліч. - \u003d - \u003d В мову Delphi введені дві стандартні процедури Include і Exclude, які призначені для роботи з множинами. Процедура Include (S, I) включає в безліч S елемент I. Процедура Exclude (S, I) виключає з безлічі S елемент I. Вони дублює операцію - / + з тією лише різницею, що працюють з одним елементом і роблять це більш ефективно. Об'єднання, перетин, різниця