Цілочисельні типи даних
Типи даних. Введення-виведення даних
- типи даних
- Перелік типів даних в мові Pascal
- Тотожність і сумісність типів
- Вирази, операції і операнди
- Введення-виведення даних
При вирішенні завдань обробляється інформація різного характеру. Це можуть бути цілі і дробові величини, абзацу та ін. Відповідно, константи і змінні повинні бути описані як цілі, дробові, строкові і т. Д.
Для опису безлічі допустимих значень величини і сукупності операцій, в яких може брати участь дана величина, використовується вказівка її типу даних. Тип даних (data type) - це безліч величин, об'єднаних певною сукупністю допустимих операцій.
Кожен тип даних має свій діапазон значень і спеціальне зарезервоване слово для його опису. Наприклад, значення 1 і 2 відносяться до целочисленному типу, їх можна складати, множити і виконувати над ними інші арифметичні операції.
У мові Pascal для опису типу в загальному випадку використовується зарезервоване словоtype.
<Имя типа> = <значения типа>;
Синтаксична діаграма опису типів може бути представлена наступним чином.
Всі типи даних можна розділити на дві групи: скалярні та структуровані (складові). Скалярні типи, в свою чергу, діляться на стандартні і призначені для користувача.
Стандартні типи даних пропонуються користувачам розробниками системи Turbo Pascal. До них відносяться цілочисельні, речові, літерні, булевские типи даних і покажчики.
Призначені для користувача типи даних розробляються користувачами системи програмування Turbo Pascal.
Перелік типів даних в Turbo Pascal
Перелік типів даних в мові Turbo Pascal можна представити у вигляді такої схеми:
1. Прості типи (скалярні типи):
o Процедурні типи.
У Delphi список типів даних відрізняється від наведеного, про що буде розказано в другій частині книги.
Дані цілочисельних типів можуть бути представлені як в десятковій, так і в шістнадцятковій системах числення. Якщо число представлено в шістнадцятковій системі, перед ним без пробілу записується знак $. Діапазон допустимих значень шістнадцятирічних чисел становить від $ 0000 до $ FFFF.
У десятковій системі числа можуть записуватися двома способами: з фіксованою і з плаваючою крапкою.
Речові десяткові числа з фіксованою точкою записуються за звичайними правилами арифметики. Ціла частина від дробової відокремлюється десятковою крапкою. Якщо десяткова крапка відсутня, число вважається цілим. Перед числом може знаходитися знак «+» або «-». Якщо знак відсутній, то за замовчуванням число вважається позитивним.
приклади:
125 - ціле десяткове число;
$ 1FF - шістнадцяткове число;
124.674 - дійсне число;
-12.9 - негативне дійсне число.
Речові десяткові числа в формі з плаваючою крапкою записуються в експоненційному вигляді: mE + p. де m - мантиса (ціле або дробове число з десятковою крапкою), E означає десять у степені, p - порядок (ціле число).
Призначені для користувача типи - перераховується і інтервальний - розробляються самим програмістом.
Структуровані типи у своїй основі мають один або кілька скалярних типів даних. До структурованим типами відносяться рядки, масиви, множини, записи, файли і дані зовсім іншої природи: процедурного типу і типу object.
Скалярні типи даних
До скалярним (scalar - прості) типам даних відносять типи даних таких величин, значення яких не містять складових частин.
Цілочисельні типи даних
Цілочисельні типи даних являють собою значення, які можуть використовуватися в арифметичних виразах і займати в пам'яті від 1 до 4 байт (табл. 3.1).
Таблиця 3.1. Цілочисельні типи даних
Значення цілих типів можуть зображуватися в програмі двома способами: в десятковому вигляді (традиційно, у вигляді послідовності цифр) і в шістнадцятковому вигляді (в цьому випадку число передує знаком $, а цифри старше 9 позначаються латинськими буквами від A до F).
Синтаксична діаграма для цілих чисел виглядає наступним чином.
Для даних цілого типу визначені наступні арифметичні операції: +, -, *, /, div, mod. Результат виконання цих операцій над цілими операндами також має цілий тип.
Для даних цілого типу визначені наступні операції відносини: =, <>, <,>, <=, =>. виробляють результат логічного типу.
Для цілих чисел визначені наступні стандартні функції:
- odd (x) - повертає результат логічного типу: для парного аргументу - false; для непарного - true;
- succ (x) - повертає наступне ціле число (х + 1);
- pred (x) - повертає попереднє ціле число (х - 1);
- ord (x) - повертає аргумент х;
- abs (x) - повертає модуль х;
- chr (x) - повертає символ, ASCII-код якого дорівнює х;
- sqr (x) - повертає квадрат числа х;
- sqrt (x) - повертає значення кореня квадратного з х;
- exp (x) - повертає е в ступені х (експоненту), результат дійсного типу;
- sin (x) - повертає синус х, результат дійсного типу;
- cos (x) - повертає косинус х, результат дійсного типу;
- ln (x) - повертає натуральний логарифм х, результат дійсного типу;
- arctan (x) - повертає арктангенс х, результат дійсного типу.
Для цілих чисел визначені наступні стандартні процедури:
- dec (x, i) - зменшує значення х на i, якщо i не задано, то на 1;
- inc (x, i) - збільшує значення х на i, якщо i не задано, то на 1.
Речові типи даних являють собою дійсні значення, які використовуються в арифметичних виразах і займають в пам'яті від 4 до 6 байт. Pascal допускає подання речових значень і з плаваючою, і з фіксованою точкою (табл. 3.2).
Таблиця 3.2. Речові типи даних
Речові значення можуть зображуватися в формі з фіксованою точкою, наприклад 7,32, 456,721 або 0,015, а також у формі з плаваючою точкою, тобто парою чисел виду <мантисса>E<порядок>.
Числа з попереднього прикладу в формі з плаваючою крапкою будуть записані так: 7,32E + 00, 4,56 721E + 02, 1,5E - 02.
Синтаксичні діаграми для запису дійсного числа будуть виглядати наступним чином.
Для даних дійсного типу визначені наступні арифметичні операції: +, -, *, /. Результат виконання цих операцій також має дійсний тип.
Для даних дійсного типу визначені наступні операції відносини: =, <>, <,>, <=, =>. - виробляють результат логічного типу.
Для дійсних чисел визначено такі стандартні функції:
- abs (x) - повертає модуль х, результат дійсного типу;
- chr (x) - повертає символ, ASCII-код якого дорівнює х;
- sqr (x) - повертає квадрат числа х, результат дійсного типу;
- sqrt (x) - повертає значення кореня квадратного з х, результат дійсного типу;
- exp (x) - повертає е в ступені х (експоненту), результат дійсного типу;
- sin (x) - повертає синус х, результат дійсного типу;
- cos (x) - повертає косинус х, результат дійсного типу;
- ln (x) - повертає натуральний логарифм х, результат дійсного типу;
- arctan (x) - повертає арктангенс х, результат дійсного типу;
- trunc (x) - перетворює матеріальний аргумент х в ціле число шляхом відкидання дробової частини;
- round (x) - перетворює матеріальний аргумент х в ціле число шляхом округлення до найближчого цілого.
Вираз, складений із змінних цілого і дійсного типу, має дійсний тип. Допускається присвоювання змінної дійсного типу значення виразу цілого типу, але не навпаки.
Ефективне використання типів single, double, extended, comp можливо тільки при включеній директиві. За умовчанням вона знаходиться у вимкненому стані.
Root1, Root2: double;
Вправа 3.1. Змініть програму Tutor3 таким чином, щоб в результаті її виконання обчислювалося і виводилося на екран значення приватного двох цілих чисел. Так як результат ділення матиме дійсний тип, в розділ опису змінних даної програми повинно бути додано його опис. Наприклад, якщо ідентифікатор результату ділення позначити як Ratio. то розділ опису змінних в програмі буде виглядати наступним чином: var
Визначення приватного чисел A і B запишеться операцією речового поділу
а висновок на екран результату можна задати наступним чином:
Writeln ( 'Приватне двох чисел дорівнює', Ratio);
Завантажте інтегровану середу програмування, вважайте програму Tutor3 з диска, відредагуйте і перевірте її роботу. При перевірці роботи програми спробуйте задати змінним наступні значення: A = 33 000, B = 33.
Зверніть увагу на те, що в результаті обчислень виходить не тисячі, як ви очікували, а -9,8593939394Е + 02, тобто програма не правильно обчислює результат арифметичної операції. Причина помилки в тому, що ми, вказавши в розділі опису змінних для величин A і B тіпinteger. зарезервували в пам'яті місце тільки для зберігання цілого числа, що приймає значення з інтервалу [-32 768 ... 32 767], а задали для величини A значення 33 000.
Внесіть зміни в програму, вказавши в розділі опису для величин A, B тіпword або longint, перевірте роботу програми на прикладі великих значень чисел A і B. Збережіть програму на диску під ім'ям Tutor4.
Цей приклад наочно демонструє необхідність правильного опису типів величин, що обробляються в програмі.
Літерний (символьний) тип char визначається безліччю значень кодової таблиці комп'ютера. Кожному символу приписується ціле число в діапазоні від 0 до 255. Для кодування використовується код ASCII.
Для розміщення в пам'яті змінної літерного типу потрібно один байт.
Letter, Symbol: char;
У програмі значення змінних і констант типу char повинні бути укладені в апострофи. Наприклад, 'А' позначає букву А, '' - пробіл, ';' - крапку з комою.
Для даних символьного типу визначені наступні операції відносини: =, <>, <,>, <=, =>. виробляють результат логічного типу.
Для даних символьного типу визначені наступні стандартні функції:
- chr (x) - перетворює вираз х типу byte в символ і повертає значення символу;
- ord (ch) - перетворює символ ch в його код типу byte і повертає значення коду;
- pred (ch) - повертає попередній символ;
- succ (ch) - повертає наступний символ.
Булевих типом називають тип даних, який надається двома значеннями: True (істина) іFalse (брехня). Він широко застосовується в логічних виразах і виразах відносини. При описі величин цього типу вказують словоboolean. Для розміщення в пам'яті змінної булевского типу потрібно 1 байт.
Flag, Rezult: boolean;