русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Класифікація типів


Дата додавання: 2015-01-08; переглядів: 1339.


 

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

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

Рис. 2.1. Різні класифікації типів даних С#

 

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

Цілі типи, а також символьний, дійсний і фінансовий типи можна об'єднати під назвою арифметичних типів.

Внутрішнє представлення величини цілого типу - ціле число в двійковому коді. У знакових типах старший біт числа інтерпретується як знаковий (0 додатне число, 1 – від’ємне). Від’ємні числа найчастіше представляються в так званому додатковому коді. Для перетворення числа в додатковий код всі розряди числа, за винятком знакового інвертуються, потім до числа додається одиниця, і знаковому біту теж привласнюється одиниця. Беззнакові типи дозволяють представляти тільки додатні числа, оскільки старший розряд розглядається як частина коду числа.

Для дійсних і фінансового типів в таблиці приведені абсолютні величини мінімальних і максимальних значень. Дійсні типи, або типи даних, з плаваючою крапкою зберігаються в пам'яті комп'ютера інакше, ніж цілочисельні. Внутрішнє представлення дійсного числа складається з двох частин - мантиси і порядку, кожна частина має знак. Довжина мантиси визначає точність числа, а довжина порядку - його діапазон. У першому наближенні це можна уявити собі так: наприклад, для числа 0,381•104 зберігаються цифри мантиси 381 і порядок 4, для числа 560,3•102 - мантиса 5603 і порядок 5 (мантиса нормалізується), а число 0,012 представлено як 12 і -1. Звичайно, в даному прикладі не враховані система числення і інші особливості. Всі дійсні типи можуть бути представлені як додатні, так і від’ємні числа.

Таблиця 2.5.

Вбудовані типи С#

 

Ключове слово Тип .NET Діапазон значень Опис Розмір, бітів
bоо1 Boolean true, false
sbyte SByte От-128 до 127 Із знаком
byte Byte От 0 до 255 Без знаку
short Intl6 От –З2768 до З2767 Із знаком
ushort UIntl6 От 0 до 655З5 Без знаку
int Int32 От -231 до 231 – 1 Із знаком
uint UInt32 От 0 до 232 – 1 Без знаку
long Int64 От -263 до 263 – 1 Із знаком
ulong UInt64 От 0 до 264 – 1 Без знаку
char Char От U+0000 до U+ffff Unicode-символ
float Single От 1.5•10-45 до 3.4•1038 7 цифр
double Double От 5.0•10-324 до 1.7•10308   15-16 цифр
decimal Decimal От 1.0•10-28 до 7.9•1028   28-29 цифр
string String Довжина обмежена об'ємом доступної пам'яті Рядок з Unicode- символів
object Object Можна зберігати все що завгодно Загальний предок

 

Найчастіше в програмах використовується тип double, оскільки його діапазон і точність задовольняють більшість потреб. Цей тип мають дійсні літерали і багато стандартних математичних функцій. При однаковій кількості байтів, що відводяться під величини типу float і int, діапазони їх допустимих значень сильно розрізняються із-за внутрішньої форми уявлення.

Те ж саме відноситься до long і double. Тип decimal призначений для грошових обчислень, в яких критичні помилки округлення. Як видно з таблиці 2.5, тип float дозволяє зберігати одночасно всього 7 значущих десяткових цифр, тип double - 15-16. При обчисленнях помилки округлення накопичуються, і при певному поєднанні значень навіть може привести до результату, в якому не буде жодної вірної значущої цифри! Величини типу decimal дозволяють зберігати 28-29 десяткових розрядів.

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

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

§ double.MaxValue (или System.Doublе.MaxValue) - максимальне число типу double;

§ uint.MinValue (или System.UInt32.MinValue)- мінімальне число типа uint.

 


<== попередня лекція | наступна лекція ==>
Типи даних | Типи-значення і посилальні типи


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн