Тема уроку: "Величини. Типи даних. Стандартні типи даних. Набір функцій і операцій, введених для кожного зі стандартних типів."

Мета уроку: дати поняття величини та типів даних, визначити стандартні типи даних, їх опис та набір функцій і операцій для кожного зі стандартних типів.
Тип уроку: Лекційний.

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

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

    Домашнє завдання: