Тема уроку: "Величини. Типи даних. Стандартні типи даних. Набір функцій і операцій, введених для кожного зі стандартних типів."
дати поняття величини та типів даних, визначити стандартні типи даних, їх опис та набір функцій і операцій для кожного зі стандартних типів.
Лекційний.
В своїй роботі програміст завжди стикається з таким поняттям,
як величина. Що ж таке величина? З точки зору програмування величини - це
дані, що обробляються програмами.
Паскаль інтерпретує дані, як константи або змінні. Як перші,
так і другі визначаються ідентифікаторами (іменами), за допомогою яких можна
звертатися для одержання відповідних значень.
Константами називаються елементи даних, яким присвоюються
значення в описовій частині програми й у процесі виконання програми їх змінювати
заборонено.
Для визначення констант служить зарезервоване слово const.
Формат опису:
Сonst
< ідентифікатор > = < значення константи >;
Приклад:
Соnst
Мах=1000;
Vхоd='сегмент 5';
Є ряд констант, до значень яких можна звертатися без попереднього опису. Наприклад,
Ідентифікатор
|
Тип
|
Значення
|
Опис
|
True
|
boolean
|
True
|
"Істина"
|
False
|
boolean
|
False
|
"Хибність"
|
Maxint
|
integer
|
32767
|
Максимальне ціле
|
, на відміну від констант,
можуть змінювати свої значення в процесі виконання програми.
Кожна змінна і константа належать до визначеного типу даних. Тип констант
визначається компілятором автоматично. Тип змінних обов'язково вказується
перед тим, як їх використати. Для опису змінних призначено зарезервоване слово
var.
Формат опису:
Var
< ідентифікатор> : < тип >;
Приклад:
Var
Sum1, Sum2: real;
Тип даних - це діапазон значень, що можуть приймати об'єкти
програми, і сукупність операцій, які дозволяється виконувати над цими значеннями.
Усі типи даних у мові програмування Паскаль розділяються на дві групи:
Скалярні типи у свою чергу підрозділяються на стандартні
та типи користувача. Стандартні типи пропонуються користувачам розроблювачами
системи Turbo Pascal. Типи користувача - розробляються самим програмістом.
До стандартних скалярних типів відносяться наступні типи:
Величини цілих типів можуть бути подані, як у десятковій,
так і в шістнадцятковій системах. Якщо число представлене в шістнадцятковій
системі, перед ним без проміжку записується знак $. Діапазон зміни шістнадцяткових
чисел від $0000 до $FFFF.
Цілі типи даних являють собою значення, що можуть використовуватися
в арифметичних виразах. Усі стандартні цілі типи зведені в наступну таблицю:
Тип
|
Діапазон
|
Необхідна пам'ять (байт)
|
Byte
|
0...255
|
1
|
Shortint
|
-128...127
|
1
|
Integer
|
-32768...32767
|
2
|
Word
|
0...65535
|
2
|
Longint
|
-2147483648...2147483647
|
4
|
Дійсні типи даних являють собою дійсні значення, що використовуються
в арифметичних виразах і займають у пам'яті від 4 до 10 байт. Паскаль допускає
представлення дійсних значень у вигляді, як із плаваючою, так і з фіксованою
крапкою.
Дійсні десяткові числа з фіксованою крапкою записуються за звичайними
правилами арифметики. Єдине, що відрізняє цей формат від математичного це те,
що ціла частина від дробової відокремлюється десятковою крапкою, а не комою.
Якщо десяткова крапка відсутня, число вважається цілим. Перед числом може знаходитися
знак "+" або "-". Якщо знак відсутній, за замовчуванням
число вважається додатнім.
Дійсні десяткові числа у форматі з плаваючою крапкою подаються в наступному
(експоненціальному) виді:
mЕ+p,
де m - мантиса (ціле або дробове число з фіксованою десятковою крапкою),
Е - означає "десять у степені",
р - порядок (ціле число).
Взагалі мантиса повинна бути нормалізованою, тобто представленою
у вигляді числа, що належить діапазону від 0 до 1 (це означає, що крапка завжди
знаходиться перед першою цифрою числа). Однак програмісту дозволяється писати
мантису у вигляді будь-якого дробового числа з фіксованою крапкою. Нормалізація
при цьому виконується системою автоматично.
Приклад:
Число у форматі з плаваючою крапкою
|
Значення числа
|
0.4500E+02
|
0.45*102=45
|
-2.600E05
|
-2.6*105=-260000
|
+0.45670E-02
|
0.4567*10-2=0.004567
|
Стандартний найбільш часто використовуваний дійсний тип даних представлений у наступній таблиці :
Тип | Діапазон значень | Мантиса | Необхідна пам'ять (байт) |
Real
|
2.9*10E-39...1.7*10E38
|
11-12
|
6
|
Літерний (символьний) тип може набувати значень кодової
таблиці ПЕОМ (дивись таблицю ASCII кодів).
Таблиця ASCII кодів.
Символьній змінній в пам'яті виділяється один байт, тому вона можна зберегти
тільки один символ ASCII таблиці.
Булівський тип подається двома значеннями: True (істина) або False (хибність).
Він широко застосовується в логічних виразах і виразах відношення.
Структуровані типи у своїй основі мають один або декілька скалярних типів
даних. До структурованих типів даних відносяться рядки, масиви, файли, записи
і т.д. Їх ми будемо вивчати пізніше.
Змінні і константи всіх типів використовуються у виразах.
Вираз задає порядок виконання дій над елементами даних і складається
з операндів (констант, змінних, звертань до функцій), круглих дужок і знаків
операцій.
Круглі дужки ставляться, як і в математиці, для керування порядком виконання
операцій. Якщо дужки відсутні, операції виконуються в залежності від їх пріоритетів,
про що буде сказано далі.
Операції в мові Паскаль підрозділяються на:
Операція
|
Дія
|
Типи операндів
|
Тип результату
|
Бінарні
|
|||
+
|
Додавання
|
Цілий Дійсний
|
Цілий Дійсний
|
-
|
Віднімання
|
Цілий Дійсний
|
Цілий Дійсний
|
*
|
Множення
|
Цілий Дійсний
|
Цілий Дійсний
|
/
|
Ділення
|
Цілий Дійсний
|
Цілий Дійсний
|
Div
|
Ділення націло
|
Цілий
|
Цілий
|
mod
|
Залишок від ділення
|
Цілий
|
Цілий
|
Унарні
|
|||
+
|
Збереження знака
|
Цілий Дійсний
|
Цілий Дійсний
|
-
|
Збереження знака
|
Цілий Дійсний
|
Цілий Дійсний
|
Операції відношення виконують порівняння двох операндів і визначають, значення виразу є істинним або хибним. Результат завжди має булівський тип і приймає одне з двох значень: True (істина) або False (хибність). Всі операції відношення зведені в наступну таблицю:
Операції
|
Назва
|
Вираз
|
Результат
|
=
|
Дорівнює
|
А=В
|
True, якщо А дорівнює В
|
<>
|
Не дорівнює
|
А<>В
|
True, якщо А не дорівнює
|
>
|
Більше
|
A>B
|
True, якщо А більше В
|
<
|
Менше
|
A<B
|
True, якщо А менше В
|
>=
|
Більше або дорівнює
|
A>=B
|
True, якщо А більше або дорівнює В
|
<=
|
Менше або дорівнює
|
A<=B
|
True, якщо А менше або дорівнює В
|
Результатом виконання логічного (булівського) виразу є логічне значення True або False. Операндами служать дані тільки булівського типу. Список логічних операцій наведений у таблиці:
Операція
|
Дія
|
Вираз
|
А
|
В
|
Результ.
|
not
|
Логічне заперечення
|
not A
|
True False |
False True |
|
and
|
Логічне "ТА"
|
A and B
|
True True False False |
True False True False
|
True False False False
|
or
|
Логічне "АБО"
|
A or B
|
True True False False
|
True False True False
|
True True True False
|
Виконання кожної операції відбувається з урахуванням її пріоритету. Значення пріоритетів зазначені в наступній таблиці:
Операція
|
Пріоритет
|
Вид операції
|
Not, унарні "-" і "+"
|
Перший (вищий)
|
Унарна операція
|
*, /, div, mod, and
|
Другий
|
Операції типу множення
|
+, -, or
|
Третій
|
Операції типу додавання
|
=, <>, <, >, <=, >=
|
Четвертий (нижчий)
|
Операції відношення
|
Арифметичні вирази у якості операндів можуть містити імена функцій. З поняттям функції ми будемо знайомитись пізніше в курсі програмування, але стандартні функції (cos, sin, x2 та інші) Вам знайомі з курсу математики і їх використання у курсі інформатики відрізняється тільки правилами запису (синтаксису). Так, на відміну від математики, в програмуванні аргумент функції обов'язково береться в круглі дужки. Нижче поданий список цих функцій, де літерами Х та І позначені відповідно: Х - цілі та дійсні типи, І - тільки цілі.
Abs(X) - обчислення абсолютного значення
(модулю) Х. Тип результату збігається з типом параметра.
ArcTan(X) - обчислення кута, тангенс якого дорівнює Х, значення кута
подано в радіанах і може знаходитися в діапазоні від -p/2 до p/2. Для перетворення
значення кута з радіанної міри в градусну необхідно значення кута помножити
на число 180/p. Результат має дійсний тип.
Cos(X) - обчислення косинуса Х, параметр задає значення кута в радіанах.
Для перетворення значення кута з радіанної міри в градусну необхідно значення
кута помножити на число 180/p. Результат має дійсний тип.
Exp(x) - обчислення значення експоненти аргументу (Ex). Результат завжди
має дійсний тип.
Frac(X) - знаходження дробової частини Х. Результат має дійсний тип.
Int(X) - знаходження цілої частини Х (дробова частина відкидається).
Результат має дійсний тип.
Ln(x) - обчислюється натуральний логарифм аргументу. Результат має дійсний
тип. За допомогою функцій Exp та Ln можна обчислити довільну степінь числа наступним
чином: ab=Exp(b*Ln(a)).
Pi - повертає значення числа p (3.1415926).
Sin(X) - обчислення синуса Х. Параметр задає значення кута в радіанах.
Для перетворення значення кута з радіанної міри в градусну необхідно значення
кута помножити на число 180/p. Результат має дійсний тип.
Sqr(X) - піднесення до квадрату значення Х. Тип результату збігається
з типом параметра.
Sqrt(X) - обчислення квадратного кореня з Х. Тип результату дійсний.
Random - генерує значення випадкового числа з діапазону від 0 до 0.99.
Тип результату дійсний.
Random(P) - генерує значення випадкового числа з діапазону від 0 до P.
Тип результату цілий. Щоб випадкові числа були "більш випадковими",
необхідно періодично змінювати базу генерації. Для цього використовується процедура
Randomize, що дозволяє при кожному новому запуску програми отримувати
різні випадкові числа.
Для величин перелічувальних типів (всі цілі, літерний
та булівський) існують також декілька зручних стандартних функцій та процедур,
наведених нижче:
Dec(x,[dx]) - процедура зменшує значення змінної Х на величину DX, а
якщо параметр DX не заданий - на 1.
Inc(x,[dx]) - процедура збільшує значення змінної Х на величину DX, а
якщо параметр DX не заданий - на 1.
Pred(X) - функція, що визначає попереднє значення для даного типа. Наприклад,
Pred(5)=4, Pred(True)=False, Pred('B')='A'.
Succ(X) - функція, що визначає наступне значення для даного типа. Наприклад,
Succ(5)=6, Succ(True)=False, Succ('A')='B'.
Odd(X) - число перевіряється на парність. Аргументом цієї функції може
бути тільки число типу longint, а результат дорівнює true, якщо аргумент парний,
і false - в протилежному випадку.